Office中国论坛/Access中国论坛

标题: 请各位老师看看下面的例子如何批量生成没有音标的拼音 [打印本页]

作者: yanwei82123300    时间: 2017-6-11 13:47
标题: 请各位老师看看下面的例子如何批量生成没有音标的拼音
请各位老师看看下面的例子如何批量生成没有音标的拼音
我想将表1中的词语批量添加没有音标的拼音,请问帮助看看,谢谢

作者: fan0217    时间: 2017-6-11 14:45
这个或许有帮助
作者: yanwei82123300    时间: 2017-6-11 15:59
fan0217 老师能给修改一下例子吗?谢谢
作者: yanwei82123300    时间: 2017-6-11 16:54
在论坛里找了个例子,在查询里使用这个自定义函数
例子: aa:HzTPy([词语])
查询运行结果是这样:
姓名        aa
张晔        zhangye
华朵        huaduo
九牛一毛        jiuniuyimao

如何将拼音进行“”分隔开,谢谢
'调用方法:
'HzTPy(Hz As String, Optional Sep As String = "", Optional ShowNotation As Boolean = True, Optional ShowInitialOnly As Boolean, Optional ShowOnlyOneChar As Boolean = True) As String
'                     参数名                       参数类型            说明
'第1个参数   Hz                                字符型              为汉字字符串
'第2个参数   Sep                             字符型,可选    设定拼音间隔字符,默认为空("")
'第3个参数   ShowNotation              布尔型,可选    设定是否显示注音符号,默认显示          注意如果值为TRUE,带音标,false不带音标
'第4个参数   ShowInitialOnly            布尔型,可选    设定是否仅显示拼音首字,默认显示全部
'第5个参数   ShowOnlyOneChar     布尔型,可选    设定是否仅显示拼音首字母("zh"显示为"z"),默认只显示首字母

Public Function HzTPy( _
        Hz As String, _
        Optional Sep As String = "", _
        Optional ShowNotation As Boolean = False, _
        Optional ShowInitialOnly As Boolean, _
        Optional ShowOnlyOneChar As Boolean = True) As String
    Dim MyCls As sgr
    Set MyCls = New sgr          '创建类
    If Sep <> "" Then
        MyCls.Seperator = Sep
        MyCls.UseSeperator = True
    End If
    MyCls.InitialOnly = ShowInitialOnly
    MyCls.OnlyOneChar = ShowOnlyOneChar
    HzTPy = MyCls.GetPinYin(Hz)
    If Not ShowNotation Then HzTPy = MyCls.AdjustPhoneticNotation(HzTPy, pnNoNotation)
    Set MyCls = Nothing            '释放类
End Function

作者: fan0217    时间: 2017-6-11 17:00
yanwei82123300 发表于 2017-6-11 15:59
fan0217 老师能给修改一下例子吗?谢谢

尝试了下,不大会写VBA代码了。
作者: yanwei82123300    时间: 2017-6-12 06:00
请各位老师帮助看一下,谢谢了
作者: yanwei82123300    时间: 2017-6-12 08:02
请各位老师给看看谢谢!
作者: Henry D. Sy    时间: 2017-6-12 11:41
yanwei82123300 发表于 2017-6-12 08:02
请各位老师给看看谢谢!

试试这样看看
增加自定义函数Adj
  1. <div><font style="background-color: rgb(255, 255, 255);">Public Function Adj(py As String) As String</font></div><div><font style="background-color: rgb(255, 255, 255);">    Dim CNChr As New Charter</font></div><div><font style="background-color: rgb(255, 255, 255);">    CNChr.UseSeperator = True
  2.     CNChr.Seperator = " "</font></div><div><font style="background-color: rgb(255, 255, 255);">    If Not IsNull(py) Then
  3.         Adj = CNChr.GetPinYin(py)
  4.         Adj = CNChr.AdjustPhoneticNotation(Adj, False)
  5.     Else
  6.         Adj = ""
  7.     End If</font></div><div><font style="background-color: rgb(255, 255, 255);">End Function</font></div>
复制代码
查询中直接调用
  1. SELECT 表1.姓名, Adj([姓名]) AS aa
  2. FROM 表1;

复制代码
[attach]61568[/attach]



作者: Henry D. Sy    时间: 2017-6-12 11:42
重发一下(上面乱了)
  1. Public Function Adj(py As String) As String

  2.     Dim CNChr As New Charter

  3.     CNChr.UseSeperator = True
  4.     CNChr.Seperator = " "

  5.     If Not IsNull(py) Then
  6.         Adj = CNChr.GetPinYin(py)
  7.         Adj = CNChr.AdjustPhoneticNotation(Adj, False)
  8.     Else
  9.         Adj = ""
  10.     End If

  11. End Function
复制代码

作者: yanwei82123300    时间: 2017-6-12 12:09
运行查询显示系统错误"run-time error '13'" type mismatch
作者: Henry D. Sy    时间: 2017-6-12 12:35
yanwei82123300 发表于 2017-6-12 12:09
运行查询显示系统错误"run-time error '13'" type mismatch

[attach]61571[/attach]
奇怪了,我这里正常呀!

作者: yanwei82123300    时间: 2017-6-12 13:13
您看看这个错误





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3