Office中国论坛/Access中国论坛

标题: 下面的代码在MDB中运行正常,升级到ADP后报错 [打印本页]

作者: msf    时间: 2004-7-3 22:43
标题: 下面的代码在MDB中运行正常,升级到ADP后报错
错误提示:“对数据类型而言运算符无效。运算符为BOOLEAN  AND,类型为VARCHAR。”

出错代码:

bh = Me.客户 & "-" & Me.直径 & IIf(。Len([容量]) < 3, "0" & [容量], [容量]) & Me.版本号

  If IsNull(DLookup("[编号]", "产品信息", "Left([编号],9) & Right([编号],2)like'" & bh & "%'")) Then



其中[编号]为文本,其他是数字类型


作者: yodong    时间: 2004-7-4 03:26
bh = Me.客户 & "-" & Me.直径 & IIf(。Len([容量]) < 3, "0" & [容量], [容量]) & Me.版本号是不是有笔误:改为:bh = Me.客户 & "-" & Me.直径 & IIf(Len([容量]) < 3, "0" & [容量], [容量]) & Me.版本号
作者: 阿罗    时间: 2004-7-4 06:45
正确的应该是If IsNull(DLookup("[编号]", "产品信息", "Left([编号],9) + Right([编号],2) like '" & bh & "%'")) Then...改动的地方是:         Left([编号],9) + Right([编号],2)而不是原来的:         Left([编号],9) & Right([编号],2)原因是:在MS SQLServer中, &是逻辑运算符。必须用“+”来连接字符串。
作者: 阿罗    时间: 2004-7-4 06:51
初次从MDB转ADP的用户需要特别注意这一点。在类似"Left([编号],9) + Right([编号],2) like '" & bh & "%'"这样的组合中,从第一个双引号开始推演,里面的公式是要被送到SQL服务器中去处理的(所以要按照SQL服务器的语法规范),而第一组双引号结束后,& bh & ,是在VBA中处理的,随后第二组双引号里的内容又是要原封不动地送到SQL服务器中去处理的。
作者: msf    时间: 2004-7-5 05:21
谢谢!问题解决!佩服!




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