[已解决]AU3中执行ACCESS SQL不成功
本帖最后由 cxm23 于 2012-6-6 19:11 编辑$mdb_data_path = @ScriptDir & "\db1.mdb"
$mdb = ObjCreate("ADODB.Connection")
$mdb.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
$oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; 建立客户错误处理程序
$sql0 = "DROP TABLE TempTable"
$sql1 = "CREATE TABLE TempTable(序号 AUTOINCREMENT(1,1), 姓名 text(255),年龄 text(255))"
$sql2 = "INSERT INTO TempTable(姓名,年龄) SELECT 姓名,年龄 FROM table1 WHERE 姓名 LIKE '*陈*'"
$sql3 = "INSERT INTO TempTable(姓名,年龄) VALUES('张20','60')"
ClipPut($sql2)
$mdb.Execute($sql0)
$mdb.Execute($sql1)
;~ $mdb.Execute($sql2)
$mdb.Execute($sql3)
;~ $RS.Close
$mdb.Close
Func MyErrFunc()
$HexNumber=hex($oMyError.number,8)
Msgbox(0,"","截获一个 COM 错误 !" & @CRLF & _
"错误代码: " & $HexNumber & @CRLF & _
"错误名称: " & $oMyError.source& @CRLF & _
"错误名称: " & $oMyError.helpfile& @CRLF & _
"错误名称: " & $oMyError.scriptline& @CRLF & _
"错误描述: " & $oMyError.description )
$g_eventerror = 1 ; 函数返回
Endfunc通过AU3执行INSERT INTO 命令,为什么插入一条可以(代码中的$sql3 ),插入多条(代码中的$sql2)就失败呢,$sql2直接在ACCESS中执行是没问题的
本帖最后由 auto 于 2012-5-25 20:19 编辑
$mdb_data_path = @ScriptDir & "\db1.mdb"
$mdb = ObjCreate("ADODB.Connection")
$mdb.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
$oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; 建立客户错误处理程序
$sql0 = "DROP TABLE TempTable"
$sql1 = "CREATE TABLE TempTable(序号 AUTOINCREMENT(1,1), 姓名 text(255),年龄 text(255))"
$sql2 = "INSERT INTO TempTable(姓名,年龄) SELECT 姓名,年龄 FROM TABLE1 WHERE 姓名 LIKE '%陈%'"
$sql3 = "INSERT INTO TempTable(姓名,年龄) VALUES('张20','60')"
ClipPut($sql2)
$mdb.Execute($sql0)
$mdb.Execute($sql1)
$mdb.Execute($sql2)
;~ $mdb.Execute($sql3)
;~ $RS.Close
$mdb.Close
Func MyErrFunc()
$HexNumber=hex($oMyError.number,8)
Msgbox(0,"","截获一个 COM 错误 !" & @CRLF & _
"错误代码: " & $HexNumber & @CRLF & _
"错误名称: " & $oMyError.source& @CRLF & _
"错误名称: " & $oMyError.helpfile& @CRLF & _
"错误名称: " & $oMyError.scriptline& @CRLF & _
"错误描述: " & $oMyError.description )
$g_eventerror = 1 ; 函数返回
Endfunc 功能还少~~~多+一些共嫩一定有人要的 学习 学习~! 試試看
$sql2 = "INSERT INTO TempTable([姓名],[年龄]) SELECT [姓名],[年龄] FROM table1 WHERE [姓名] LIKE '*陈*'" 嗯 sql语句错误 是%不是* 确实是把*改成%就可以了,不过奇怪,ACCESS中的匹配任意字符不是应该用*吗?为什么在AU3中又要用% 一直都是%,这是模糊搜索!必须的。
打个比方,我需要搜索所有数据里面都包含陈的,那我可以%陈%,如果我需要搜索陈为第一个关键字的,可以陈%。 可是在ACCESS中直接执行SQL的话,必须用*才行,用%匹配不了的 确实:
Ado组件执行的SQL通配符是以%代表任意多个,_代表任意单个,这点与SQL SERVER好像是一致的
而在ACCESS执行的通配符则以*和?代表上述含义
以后做代码时,需要区分以上区别! 这样,学习了
页:
[1]