找回密码
 加入
搜索
查看: 5177|回复: 10

[系统综合] [已解决]AU3中执行ACCESS SQL不成功

 火.. [复制链接]
发表于 2012-5-25 17:09:30 | 显示全部楼层 |阅读模式
本帖最后由 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中执行是没问题的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-5-25 20:17:54 | 显示全部楼层
本帖最后由 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

评分

参与人数 1金钱 +30 收起 理由
cxm23 + 30

查看全部评分

发表于 2012-5-26 13:27:33 | 显示全部楼层
功能还少~~~多+一些共嫩一定有人要的
发表于 2012-5-26 14:43:11 | 显示全部楼层
学习 学习~!
发表于 2012-5-27 00:22:09 | 显示全部楼层
試試看

$sql2 = "INSERT INTO TempTable([姓名],[年龄]) SELECT [姓名],[年龄] FROM table1 WHERE [姓名] LIKE '*陈*'"
发表于 2012-5-27 12:02:24 | 显示全部楼层
嗯 sql语句错误 是%不是*
 楼主| 发表于 2012-5-28 09:49:16 | 显示全部楼层
确实是把*改成%就可以了,不过奇怪,ACCESS中的匹配任意字符不是应该用*吗?为什么在AU3中又要用%
发表于 2012-5-28 14:50:44 | 显示全部楼层
一直都是%,这是模糊搜索!必须的。

打个比方,我需要搜索所有数据里面都包含陈的,那我可以%陈%,如果我需要搜索陈为第一个关键字的,可以陈%。
 楼主| 发表于 2012-5-28 19:50:34 | 显示全部楼层
可是在ACCESS中直接执行SQL的话,必须用*才行,用%匹配不了的
发表于 2012-6-4 14:20:14 | 显示全部楼层
确实:
Ado组件执行的SQL通配符是以%代表任意多个,_代表任意单个,这点与SQL SERVER好像是一致的
而在ACCESS执行的通配符则以*和?代表上述含义
以后做代码时,需要区分以上区别!
 楼主| 发表于 2012-6-6 19:10:53 | 显示全部楼层
这样,学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-1 13:35 , Processed in 0.082465 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表