回 帖 发 新 帖 刷新版面

主题:求教:如何做拼音查询?

各位老师好:
我想做个查询,以拼音查询,音同的在表中列出来。如查中国:第一个字母 z 是 z为字首的在表格上列出,第二个字母为 g 的,是 g 的都在表格上显示,不是的就排除乐,哪位老师指点我

回复列表 (共10个回复)

沙发

用一个字段来存储拼音简码。
如何获得拼音简码,请参考:
http://bbs.pfan.cn/post-289007.html

板凳

wzxc老师好:我现在有一个字段存储拼音,另一个字段存储要查询的汉字,我试了这个代码后,提示程序或事件不能含有嵌套的过程或类定义。请老师指教,谢谢

3 楼

我有个做在这儿,在用于路名拼音查询的,源码不好弄,因为有输入框和表格两个控件,还有两个数据表,要的话,留个邮箱,一个讨论讨论,我有源码实在是太烂!

4 楼

好呀,我要
我的邮箱是yin_jianj@126.com

5 楼

那个例子是个自定义函数,要存成*.prg形式,不能放到事件或方法中去。
你可存为“pyjm.prg”。
调用 时:
=pyjm('试试看')
返回结果
ssk

6 楼

Parameter cHzchr
local cPychr,i,j,C,Hz
cPychr=""
set collate to "PINYIN"
PYcode="八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗"
for i=1 to len(cHzchr)
    if asc(substr(cHzchr,i,1))>160
       Hz=substr(cHzchr,i,2)
       C=""
       for j=1 to 26
           if substrC(Hz,1,1)<substrc(PYcode,j,1)
              C=chr(96+j)
              exit
           endif
       endfor
       cPYchr=cPYchr+upper(C)
       i=i+1
    else
       cPYchr=cPYchr+upper(substr(cHZchr,i,1))
    endif
endfor
return cPYchr

7 楼

wzxc老师:=pyjm ssk在那加呢?我在文本框代码里加了后,提示找不见pyjm的变量.moz老师的代码为什么能在文本框的代码里加呢?但提示函数的值与类型无效。请老师们指教我。谢谢

8 楼

是这样,要想进行汉字拼音检索,就要事先提取汉字的拼音简码并存入一个字段。在检索时以这个字段定位记录,从而达到简化查找。提取汉字拼音简码的代码我们做成自定义函数的形式,新建一个程序,输入以下代码:
Parameter cHzchr
local cPychr,i,j,C,Hz
cPychr=""
set collate to "PINYIN"
PYcode="八嚓咑妸发旮铪讥讥咔垃呣拿讴趴七呥仨他哇哇哇夕丫匝咗"
for i=1 to len(cHzchr)
    if asc(substr(cHzchr,i,1))>160
       Hz=substr(cHzchr,i,2)
       C=""
       for j=1 to 26
           if substrC(Hz,1,1)<substrc(PYcode,j,1)
              C=chr(96+j)
              exit
           endif
       endfor
       cPYchr=cPYchr+upper(C)
       i=i+1
    else
       cPYchr=cPYchr+upper(substr(cHZchr,i,1))
    endif
endfor
return cPYchr
保存文件名为“pyjm.prg”

假设有个表的两个字段,pinyin和hanzi。
在起初输入汉字时,我们输入一个汉字串“努力学习”,在其文本框的lostfocus事件中:
replace pinyin with pyjm(“努力学习”)

这样通过这个自定义函数将“努力学习”提取其简码“nlxx”并赋给字段pinyin。
以后再做查询时,以pinyin字段进行查找,定位纪录后,显示hanzi字段内容。
比如:
locate for pinyin=‘nlxx’
if found()
?hanzi
endif

事件、方法、类、过程、函数、自定义方法、自定义函数、自定义类。这些概念很重要。
上述自定义函数也可以做成自定义方法,写在表单里(只能本表单使用,不通用)。或者类。

9 楼

给你的邮件没收到吗?????????

10 楼

fyren老师,你的邮件我刚收到,非常谢谢你,你做的太高深,我需要慢慢的学习,领会。再次感谢你

我来回复

您尚未登录,请登录后再回复。点此登录或注册