Board logo

标题: [问题求助] [已解决]请教VBS如何排除无效的SQL语句? [打印本页]

作者: 437153    时间: 2014-9-1 15:27     标题: [已解决]请教VBS如何排除无效的SQL语句?

  1. Dim MacAddr
  2. Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
  3. Set colItems = WMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled='TRUE'")
  4. For Each objItem In colItems
  5.     NetName =  Replace(objItem.Description,"/","_")
  6.     MacAddr = objItem.MacAddress
  7. Next
  8. Set colItems = Nothing
  9. sql = """"&"select MacAddress From speed where macaddress = '" & Macaddr &"'"&""""
  10. Set cn=WScript.CreateObject("ADODB.Connection")
  11. Set rs=WScript.CreateObject("adodb.recordset")
  12. cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=\\win-pc\meno\vbs\ceshi.mdb"
  13. rs.CursorLocation = 3
  14. rs.open sql,cn,1,3
  15. If Not rs.EOF Then
  16. MsgBox "有"
  17. Else
  18. MsgBox "没有"
  19. End If
复制代码
我想获取本机的mac地址,再与数据库中的macaddress字段查找一下是否已经有记录了。
但是脚本在这一句出现问题了。
  1. sql = """"&"select MacAddress From speed where macaddress = '" & Macaddr &"'"&""""
复制代码
在这里改为使用变量后就运行出错。
错误提示:
脚本:  z:\3.vbs
行::   17
字符:  1
错误:  无效的SQL语句;期待'''DELETE、'INSERT'、'PROCEDURE'、'SELECT'、或'UPDATE'
代码:  80040E14
源:     Microsoft JET Database Engine

而我将变量取消调试的时候:
  1. sql = "select MacAddress From speed where macaddress = '00-0C-29-50-37-D3'"
复制代码
这样又是正确的。

小弟初学,实在没辙,试过了好多方法,都没办法解决。特此诚心向各位高手、好汉、英雄们讨教应该如果加入变量?
作者: neorobin    时间: 2014-9-1 15:36

  1. sql = """"&"select MacAddress From speed where macaddress = '" & Macaddr &"'"&""""
复制代码
回复 1# 437153
修改为
  1. sql = "select MacAddress From speed where macaddress = '" & Macaddr & "'"
复制代码

作者: 437153    时间: 2014-9-1 15:45

回复 2# neorobin


    原来如此,原来是我想偏了。原来那么简单啊。多谢您,您都帮了我两次了。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2