tempad
ReadyGo!技术成就梦想 >>PHP技术 >> 提问了好几次,都没有结果,帮帮我吧!

提问了好几次,都没有结果,帮帮我吧!

ReadyGo!技术成就梦想 网络搜索 efish 2008-1-14 16:26:16

提问了好几次,都没有结果,帮帮我吧!

楼主hhdick(kjk)2002-07-21 19:34:49 在 C++ Builder / 基础类 提问

在数据库查询中,例如要查询“中国”这条记录,则在文本框中输入“中国”就可以查询,现在要实现在文本框中输入“zg”(即这两个字的拼音第一个字母)也要可以进行查询。  
  谁能帮帮我! 问题点数:0、回复次数:11Top

1 楼codecb(阿星)回复于 2002-07-21 19:37:45 得分 0

 
   
  gz  
  up  
   
  Top

2 楼POLOM(北岸)回复于 2002-07-21 19:52:26 得分 0

如果要求达到自动的目的,则我想这不是一个简单的问题,有相当的难度。  
   
  如果允许记录录入员配合,则提供个思路,首先在给表中添加一个字段,存储需要查询字段对应的拼音声母,然后记录录入时给相应的中文录入拼音声母。Top

3 楼airspace(笨鸟)回复于 2002-07-21 20:11:57 得分 0

找个拼音组件!Top

4 楼jishiping(JSP 季世平)回复于 2002-07-21 20:16:26 得分 0

已经在另一个贴子回答了,这儿复制一遍:  
  这个问题不容易啊。但是对搞拼音输入法的人来说,是小菜一碟。我们不要  
  像拼音输入法那么复杂,简单一点的方法就是:生成每个汉字的第一个拼音  
  字母的对照表,这个对照表可以用一个文件保存,同时,在数据库增加一个  
  字段,字段的值就是对应的中文字段的第一个拼音组成。在往数据库添加纪  
  录时,中文名可以由用户输入,对应的拼音字段的值通过查找前面说到的对  
  照表由程序自动生成,再添加到数据库。查找时,如果用户输入字母,在数  
  据库里查找字母字段,如果用户输入中文,在数据库里查找中文字段。所以,  
  最烦人的是生成每一个汉字的拼音的第一个字母对照表。这个工作不难,但  
  是很烦,需要由人慢慢做出。当然了,如果你知道Windows的输入法的数据格  
  式,这个就很简单了,否则的话,只能人工慢慢生成这个对照表了。不过,  
  我自己估计,应该两三天就应该可以做好了,但还是那个字:烦。Top

5 楼wwxc18(蝸牛小混混)回复于 2002-07-21 20:18:44 得分 0

就用一個if語句不行嗎  
        Ansitring   d;  
      if   (Edit1->Text=="zg")  
        d="中國";  
  select....  
  from....  
  where       ...=dTop

6 楼ouyang75928(Thinking in Pascal)回复于 2002-07-21 20:25:46 得分 0

你可以写入数据表中一一对应,但是你有一个难点,你得从中文中取出拼音这是一个难点。我正在整理这个接口呢?Top

7 楼nzymail(编程浪子)回复于 2002-07-21 20:28:53 得分 0

天哪!!!!这是一个应该问上帝的问题!!!!  
  也许上帝也没有办法解决多音字的问题!!!!!  
  痛苦!!!!!Top

8 楼kingcaiyao(aking)回复于 2002-07-21 21:27:45 得分 0

有一种想法,大家可以考虑一下。  
  首先,正如楼上各位所讲我们在要操作的表中新建一字(当然,如果你已创建了很多关于此表的视图,你可以考虑新建一表与该表对应)来存储拼音码,关于取拼音码:  
  我们可以这样:  
  假设我的名字叫"小蔡":  
  下面的一段程序代码或许可以帮到你:  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
        unsigned   char   *s="小蔡";  
        AnsiString   Str("");  
        int   ch1,ch2,ch3,ch4;  
        ch1=*s;  
        ch2=*(s+1);  
        ch3=*(s+2);  
        ch4=*(s+3);  
        //将上述全部转换成十六进制:  
        Str+=IntToHex(ch1,2)+IntToHex(ch2,2)+IntToHex(ch3,2)+IntToHex(ch4,2);  
      //那么我们最后得到的结果是:Str="D0A1B2CC"  
      //我们将此码存储到数据表中,然后当用户输入小蔡时,我们就对它进行转换与此码比较看看是否一致。  
  }  
  Top

9 楼runnerrunning(千寻失业ing&那是我所不能了解的事)回复于 2002-07-22 09:09:18 得分 0

//我和AKing的源程序:  
  ///.h      
  String   of_Common_GetHZFirstPY(String   ss);   //得到一个汉字的首拼音字母  
  String   of_Common_GetHZQWM(String   ss);//得到汉字的区位码  
  String   of_Common_GetHZNM(String   ss);//汉字内码  
  String   of_Common_OutPutFirstPY(String   ss);//得到一窜汉字的首拼音字母  
  //.cpp  
  String   of_Common_GetHZFirstPY(String   ss)  
  {  
                  AnsiString   sHEX   =   of_Common_GetHZNM(ss);  
                  if   (sHEX   >=   "B0A1"   &&   sHEX   <=   "B0C4"   )   return   "A";  
                  if   (sHEX   >=   "B0C5"   &&   sHEX   <=   "B2C0"   )   return   "B";  
                  if   (sHEX   >=   "B2C1"   &&   sHEX   <=   "B4ED"   )   return   "C";  
                  if   (sHEX   >=   "B4EE"   &&   sHEX   <=   "B6E9"   )   return   "D";  
                  if   (sHEX   >=   "B6EA"   &&   sHEX   <=   "B7A1"   )   return   "E";  
                  if   (sHEX   >=   "B7A2"   &&   sHEX   <=   "B8C0"   )   return   "F";  
                  if   (sHEX   >=   "B8C1"   &&   sHEX   <=   "B9FD"   )   return   "G";  
                  if   (sHEX   >=   "B9FE"   &&   sHEX   <=   "BBF6"   )   return   "H";  
                  if   (sHEX   >=   "BBF7"   &&   sHEX   <=   "BFA5"   )   return   "J";  
                  if   (sHEX   >=   "BFA6"   &&   sHEX   <=   "C0AB"   )   return   "K";  
                  if   (sHEX   >=   "C0AC"   &&   sHEX   <=   "C2E7"   )   return   "L";  
                  if   (sHEX   >=   "C2E8"   &&   sHEX   <=   "C4C2"   )   return   "M";  
                  if   (sHEX   >=   "C4C3"   &&   sHEX   <=   "C5B5"   )   return   "N";  
                  if   (sHEX   >=   "C5B6"   &&   sHEX   <=   "C5BD"   )   return   "O";  
                  if   (sHEX   >=   "C5BE"   &&   sHEX   <=   "C6D9"   )   return   "P";  
                  if   (sHEX   >=   "C6DA"   &&   sHEX   <=   "C8BA"   )   return   "Q";  
                  if   (sHEX   >=   "C8BB"   &&   sHEX   <=   "C8F5"   )   return   "R";  
                  if   (sHEX   >=   "C8F6"   &&   sHEX   <=   "CBF9"   )   return   "S";  
                  if   (sHEX   >=   "CBFA"   &&   sHEX   <=   "CDD9"   )   return   "T";  
                  if   (sHEX   >=   "CDDA"   &&   sHEX   <=   "CEF3"   )   return   "W";  
                  if   (sHEX   >=   "CEF4"   &&   sHEX   <=   "D188"   )   return   "X";  
                  if   (sHEX   >=   "D1B9"   &&   sHEX   <=   "D4D0"   )   return   "Y";  
                  if   (sHEX   >=   "D4D1"   &&   sHEX   <=   "D7F9"   )   return   "Z";  
  //                 if   (sHEX   >=   ""   &&   sHEX   <=   ""   )   return   "";  
                  return   "";  
  }  
  //----------------------------------------------------------------------------------------------  
  String   of_Common_GetHZQWM(String   ss)  
  {  
                  unsigned   char   *s   ;  
                  String   sReturn   =   "";  
                  s   =   ss.c_str();  
                  UINT   aa;  
                  String   sTemp,sf;  
                  String   s2   =   "0";  
                  for   (int   i   =   0;i   <   ss.Length();i++)  
                  {  
                                  aa=   *(s   +   i   )   -   160;  
   
                                  if   (aa   <   10)  
                                                  sTemp   =   s2   +   IntToStr(aa);  
                                  else  
                                                  sTemp   =   IntToStr(aa);  
                                  sf   =   "";  
                                  if   (i%2   !=   0   &&   i   >   0)  
                                      sf   =   "   ";  
                                  sReturn   =   sReturn   +   sTemp   +   sf;  
                  }  
                  return   sReturn;  
  }  
  //-------------------------------------------------  
  String   of_Common_GetHZNM(String   ss)  
  {  
                  unsigned   char   *s   ;  
                  String   sReturn   =   "";  
                  s   =   ss.c_str();  
                  UINT   aa;  
                  String   sTemp;  
                  String   s2   =   "0";  
                  int   j;  
                  for   (int   i   =   0;i   <   ss.Length();i++)  
                  {  
                                  aa=   *(s   +   i   );  
                                  j   =   aa;  
                                  sTemp   =   IntToHex(j,2);  
                                  sReturn   =   sReturn   +   sTemp;  
                  }  
                  return   sReturn;  
  }  
  //-------------------------------------------------  
  String   of_Common_OutPutFirstPY(String   ss)  
  {  
      int   i   =   1;  
      AnsiString   s;  
      AnsiString   sReturn;  
      while(i   <=   ss.Length())  
      {  
          s   =   ss.SubString(i,2);  
          if   (s.IsLeadByte(1))  
          {  
                  s   =   ss.SubString(i,2);  
                  sReturn   =   sReturn   +   of_Common_GetHZFirstPY(s);  
                  i   =   i   +   2;  
          }  
          else  
          {  
                  s   =   ss.SubString(i,1);  
                  sReturn   =   sReturn   +   s;  
                  i++;  
          }  
      }  
      return   sReturn;  
  }  
   
  Top

10 楼runnerrunning(千寻失业ing&那是我所不能了解的事)回复于 2002-07-22 09:14:57 得分 0

给分吧Top

责任编辑: efish 参与评论 查找更多:
相关文章
谁有磁性窗体的VB源码(50相送) 谁有磁性窗体的VB源码(50相送)
null.htw漏洞 null.htw漏洞
如何屏蔽掉我指定的目录的右键菜单,例如:C:\ABC,… 如何屏蔽掉我指定的目录的右键菜单,例如:C:\ABC,又怎么防止它被删除呢?一定要用文件系统驱动吗
为什么我的触发器只触发第一次??? 为什么我的触发器只触发第一次???
c#中socket的问题。--如何获得一些socket的信息 c#中socket的问题。--如何获得一些socket的信息
如何利用客户端脚本语言(vbscript,javascript)直… 如何利用客户端脚本语言(vbscript,javascript)直接访问数据库?
菜鸟问题,来者有分!!!! 菜鸟问题,来者有分!!!!
问一个数据库输入界面的技巧问题,欢迎大家多多讨论… 问一个数据库输入界面的技巧问题,欢迎大家多多讨论(一定给分)
大侠呀,请问cloudscape数据库有没有cloudscape.db文… 大侠呀,请问cloudscape数据库有没有cloudscape.db文件啊,若有,哪儿有的下???急,在线等待,谢谢
急!!!:怎样解析出<%now()%>中的年份、月份… 急!!!:怎样解析出<%now()%>中的年份、月份、天以及时段?在线等待中……
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想