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

[AU3基础] 大家帮我看下我段代码哪里错了?

  [复制链接]
发表于 2011-7-16 18:13:45 | 显示全部楼层 |阅读模式
$ran=Random(1,124,1)
$hm='010203040506'
$gx="UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID="& $hm (这句没有问题,用msgbox(0, "错误", $gx)可以显示)MsgBox(0, "错误", $gx)


$conn.Execute ($gx)  (这三句都出错,但我不知道错在哪儿了,真的无语了,请高手指教)
$conn.Execute ("UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID="& $hm)
$conn.Execute (""UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID="& $hm")
 楼主| 发表于 2011-7-16 18:47:58 | 显示全部楼层
难道没有人知道吗?
发表于 2011-7-16 19:30:18 | 显示全部楼层
本帖最后由 飘云 于 2011-7-16 19:32 编辑

最后两句不是一样吗?最后一句比前一句多出对引号而已=。=
哦,最后一句的引号使用不正确,如果里面有双引号,那么最外边用单引号
发表于 2011-7-16 19:35:02 | 显示全部楼层
检测字段类型,贴出表结构或建表语句
 楼主| 发表于 2011-7-16 21:21:24 | 显示全部楼层
$conn.Execute ()这句语句里面没有办法直接用变量吗?
发表于 2011-7-17 11:59:33 | 显示全部楼层
你那个$conn是什么对象
 楼主| 发表于 2011-7-17 15:01:45 | 显示全部楼层
这是操作SQL数据库的上面几句代码是这样的.
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open ("driver={SQL Server};server=127.0.0.1;uid=XXX;pwd=XXX;database=XXX")
$RS.ActiveConnection = $conn
 楼主| 发表于 2011-7-17 15:05:19 | 显示全部楼层
我要达到的目的是:弄一个输入号码的界面,输入号码,然后就根据输入的号码去查询是否有此号码,如果有的话,就更新这个号码的数据,没有就提示此号码不存在.
发表于 2011-7-17 15:08:21 | 显示全部楼层
本帖最后由 tubaba 于 2011-7-17 15:13 编辑

看来您疏忽了sql操作的一个基本常识,首先得确定字段的数据类型,然后才能使用相应的查询,
......SET iState=" & $ran & " ......

如果iState 是char型,那么执行以上语句会出现数据类型不匹配的提示,得写成....SET iState='" & $ran & "' .....


$conn.Execute (""UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID="& $hm")

请不要使用两个双影号
$conn.Execute ("UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID=" & $hm)
如果iState的数据类型是char,那么
$conn.Execute ("UPDATE [aaa].[dbo].[ttu] SET iState='" & $ran & "' WHERE isID='" & $hm & "'")
 楼主| 发表于 2011-7-17 21:41:30 | 显示全部楼层
$conn.Execute ("UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID=" & $hm)  这句同样报错。
iState 是数据类型,那你的意思就是执行上面一句,但是上面就是报错
发表于 2011-7-18 16:24:37 | 显示全部楼层
本帖最后由 tubaba 于 2011-7-18 16:41 编辑

你说iState和 isID的数据类型是int ,你的$hm='xxxxxxxx',这可是字符串类型的,
如果isID是 int型,那么,$hm和isID的数据类型不匹配,
因为你的$hm='010203040506',这个是字符串,前面有零,不能转化为数字,所以你需要修改数据库相应表的isID字段的数据类型为varchar或nvarchar才可以

然后
$conn.Execute ("UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID='"& $hm & "'") 
其实最方便的方法就是把你这个sql查询放到sql查询分析器里去验证,看是否能通过,然后再检查你是否用autoit语句表达清楚了


$ran=Random(1,124,1)
$hm='010203040506'
$gx="UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID="& $hm (这句没有问题,用msgbox(0, "错误", $gx)可以显示)MsgBox(0, "错误", $gx)


$conn.Execute ($gx)  (这三句都出错,但我不知道错在哪儿了,真的无语了,请高手指教)
$conn.Execute ("UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID="& $hm)
$conn.Execute (""UPDATE [aaa].[dbo].[ttu] SET iState=" & $ran & " WHERE isID="& $hm")
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 03:16 , Processed in 0.096491 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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