标题: [问题求助] 【已解决】VBS如何判断mdb数据库某字段下是否存在指定数据? [打印本页]
作者: 437153 时间: 2014-8-29 18:25 标题: 【已解决】VBS如何判断mdb数据库某字段下是否存在指定数据?
本帖最后由 pcl_test 于 2016-7-27 22:15 编辑
- set cn=WScript.CreateObject("ADODB.Connection")
- set rs=WScript.CreateObject("adodb.recordset")
- cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=\\win-pc\meno\vbs\ceshi.mdb"
- sql="select MacAddress From speed where macaddress = '7'"
- rs.CursorLocation = 3
- rs.open sql,Cn,1,3
- if rs("Macaddress")= "7" Then
- msgbox "有相同数据"
- else
- msgbox "无此数据"
- end if
复制代码
此代码仅可以判断有数据的情况,如果字段下面没有 7 则会运行出错
出错内容为:
脚本:D:\1.vbs
行:8
字符:1
错误:发送意外
代码:80020009
源null)
请问还有什么方法可以判断某字段下是否有我要找的值?
首先很感谢@neorobin @yu2n两位大大的热心帮助。
小弟又遇到麻烦了,搞了半天没做出来,只能不耻再来求助各位。
这一句:sql="select MacAddress From speed where macaddress = '7'"
现在这个7是一个变量,如:
mac=14:CF:92:1B:1D:52
我是这样写的:sql = chr(34)&"select MacAddress From speed where macaddress = '"&mac&"'"&Chr(34)
但是运行之后提示无效的sql语句。然后我就没办法了。我搜索关键字 双引号 变量 论坛也提示找不到资料。
那么这一句应该怎么写才对呢?
作者: neorobin 时间: 2014-8-29 19:36
本帖最后由 neorobin 于 2014-8-29 19:55 编辑
回复 1# 437153
sql 查询式中已经包含了条件, 后面的代码只需判断 not rs.eof 即可
当存在相关数据时, rs 可以得到一个记录集, rs("Macaddress") 也存在;
而不存在相关数据时, rs 得不到结果, rs("Macaddress") 同样不存在, 是无意义的, 故而出错.- if not rs.eof Then
- msgbox "有相同数据"
- else
- msgbox "无此数据"
- end if
复制代码
作者: yu2n 时间: 2014-8-29 20:11
使用 rs.RecordCount- set cn=WScript.CreateObject("ADODB.Connection")
- set rs=WScript.CreateObject("adodb.recordset")
- cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=\\win-pc\meno\vbs\ceshi.mdb"
- sql="select MacAddress From speed where macaddress = '7'"
- rs.CursorLocation = 3
- rs.open sql,Cn,1,3
- if rs.RecordCount > 0 Then
- msgbox "有相同数据"
- else
- msgbox "无此数据"
- end if
复制代码
作者: 437153 时间: 2014-8-29 21:48
回复 2# neorobin
英雄,感谢你的回复。但是我家的电脑是win864位的,不能《catObj.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _》,没办法做测试。不过很感激你的热心回答。感激不尽。
作者: 437153 时间: 2014-8-29 21:49
回复 3# yu2n
好汉,感谢你的回答。但是我家的电脑是win864位的,没办法做测试。不过很感激你的热心回答。感激不尽,真的很感谢。
作者: CrLf 时间: 2014-8-29 22:10
回复 5# 437153
这位大侠请留步,他们代码的关键部分不是来自你顶楼提供的代码吗?
作者: 437153 时间: 2014-8-29 22:55
回复 6# CrLf
那是我在公司的环境下面提问的。家里的系统和公司不一样,所以没办法验证。我是昨天开始捣鼓vbs的,上面的代码全部都随东拼西凑弄出来的。。。。不属于我的。
另外:前辈,win7以上的系统,不能加载《catObj.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _》这个。有办法解决吗?
作者: yu2n 时间: 2014-8-29 23:53
回复 7# 437153
我这里没有这个问题。
(测试环境:win8.1 x64 + office2007)
参考:Win7 上不能用 microsoft.jet.oledb.4.0
http://www.vbgood.com/thread-102510-1-1.html
作者: 437153 时间: 2014-9-1 08:49
回复 8# yu2n
哦,原来是因为我使用的不是 ms office的原因啊。多谢测试。
作者: 437153 时间: 2014-9-1 10:14
回复 8# yu2n
我还能再问你一个问题吗?
我这里的macaddr是一个变量来的。
我如何才能把它加到带双引号的表达式里面呢
Dim MacAddr
MacAddr = 9
sql = "select MacAddress Form speed where MacAddress = MacAddr"
MsgBox sql
我试了半天,结果弄出来了。但是放到程序里面,会提示无效的SQL语句
sql = chr(34)&"select MacAddress Form speed where MacAddress ="&Chr(34)&MacAddr&chr(34)&Chr(34)
作者: yu2n 时间: 2014-9-1 11:17
回复 10# 437153 - sql = "select MacAddress Form speed where MacAddress = '" & MacAddr & "'"
复制代码
附:
VB/VBS语句中,字符串需要用一对英文"双"引号包含起来,例如:复制代码
SQL查询语句中,字符串需要用一对英文'单'引号包含起来,例如:复制代码
作者: 437153 时间: 2014-9-1 11:31
回复 11# yu2n
如果我还需要在语句加一对双引号呢?
比如,我想要的最终结果是:- “select MacAddress From speed where macaddress = 'mac=14:CF:92:1B:1D:52'"
复制代码
作者: yu2n 时间: 2014-9-1 11:45
回复 12# 437153
如果你想要Msgbox弹出如下内容的提示框:- " select MacAddress From speed where macaddress = 'mac=14:CF:92:1B:1D:52' "
复制代码
你可以这么写Msgbox语句(注意英文双引号的写法有3种):- str01 = """ select MacAddress From speed where macaddress = 'mac=14:CF:92:1B:1D:52' """
- str02 = """" & " select MacAddress From speed where macaddress = 'mac=14:CF:92:1B:1D:52' " & """"
- str03 = Chr(34) & " select MacAddress From speed where macaddress = 'mac=14:CF:92:1B:1D:52' " & Chr(34)
- Msgbox str01
- Msgbox str02
- Msgbox str03
复制代码
结果都是同样的。
作者: 437153 时间: 2014-9-1 11:54
回复 13# yu2n
感谢您。真的要称呼您才能表达我心中的感动了。。。不仅解决我的疑问,同事还为我拓展的知识。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |