如何在SQL语句中使自定义的计算函数

zjlsyxf 2000-10-12 06:45:00
我写了一个将汉字转换成拼音的函数,想利用SQL语句将Access数据表中所有汉字转换成拼音,可是运行后系统提示为"表达式中 'PyDmZh' 函数未定义。"语句是这样写的:
SQL="UPDATE 配件表 SET S拼音=PyDmZh(S名称)"
PyDmZh()函数 我是在模块里定义为Public类
请教!请教!请教!请教!请教!


...全文
203 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
applekiller 2000-10-17
  • 打赏
  • 举报
回复
拼音字段是字符型的吧
SQL="set * from 配件表 "
set rs=cn.openresult(sql,rdopendynamic,rdconcurvalues)
do while not rs.eof
rs.edit
rs!s拼音=pydmzh(s名称)
rs.update
rs.movenext
loop
zjlsyxf 2000-10-17
  • 打赏
  • 举报
回复
那如何为SQL语句添加函数??
foolishtiger 2000-10-15
  • 打赏
  • 举报
回复
SQL语句写法有错误,不能将自已定义的函数写到SQL语句里边。


  • 打赏
  • 举报
回复
可以用
方法1:
SQL="UPDATE 配件表 SET S拼音='" & PyDmZh(sName)& "' WHERE 你所要加的条件"
方法2:

Public Function SaveObject(rsDB As ADODB.Recordset) As Boolean
Dim flag As Boolean
SaveObject = False
flag = False
rsDB.Requery
If Not rsDB Is Nothing Then
If rsDB.RecordCount > 0 Then
On Error GoTo ErrHandle
rsDB.MoveFirst
rsDB.Find "[主键]='" & mstrKey & "'"
If rsDB.EOF Then
flag = True
rsDB.AddNew
End If
Else
rsDB.AddNew
End If
rsDB![标题] = mstrCaption
' rsDB![分类] = mstrFullPath
rsDB![主键] = mstrKey
rsDB![父键] = mstrParentKey
rsDB![类别] = ObjType
rsDB![文件类型] = mlngFileType
rsDB![描述] = IIf(mstrDescription = "", "无", mstrDescription)
rsDB![GUID] = mstrGUID
rsDB![文件大小] = mlngFileSize
rsDB![日期] = IIf(IsNull(mstrDate), Date, mstrDate)
rsDB![外部键] = mstrForeignKey
'rsDB![分类] = "d"
rsDB![删除否] = DeletedFlag '+ Attach a deleted flag
rsDB![所有者] = glngUserID
rsDB![状态] = mvarStatue
'rsDB![属性] = glngUserPower
rsDB![根键] = glngNodeRoot
If Not Trim(mstrFBackupKey) = "" Then
rsDB![外备份键] = mstrFBackupKey
Else
rsDB![外备份键] = GUID_NULL
End If
If Not Trim(mstrPBackupkey) = "" Then
rsDB![父备份键] = mstrPBackupkey
Else
rsDB![父备份键] = GUID_NULL
End If
' If IsNull(rsDB![外备份键]) Then
' rsDB![外备份键] = "无"
' End If
' If IsNull(rsDB![父备份键]) Then
' rsDB![父备份键] = "无"
' End If
rsDB.Update
If rsDB.Status = adRecOK Then
SaveObject = True
End If
End If
Exit Function
ErrHandle:
MsgBox Err.Number & "======" & Err.Description
If Err.Number = -2147217887 Or Err.Number = -2147217864 Then
MsgBox "系统错误,请重新打开数据库", , "错误"

Exit Function

End If

rsDB.Requery
Resume
End Function


zjlsyxf 2000-10-12
  • 打赏
  • 举报
回复
这样我的所有S拼音字段都成了同一值了,能不能每一个S拼音字段对应一个S名称字段值
  • 打赏
  • 举报
回复
那只能先查询出现S名称的值,放到一个变量中比如sName
然后再用
SQL="UPDATE 配件表 SET S拼音='" & PyDmZh(sName)& "'"
就可以了
zjlsyxf 2000-10-12
  • 打赏
  • 举报
回复
S拼音字段是字符型的
  • 打赏
  • 举报
回复
S拼音字段是字符型的吧
SQL="UPDATE 配件表 SET S拼音='" & PyDmZh(S名称)& "'"
为什么发两次?

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧