找回密码
 加入
搜索
查看: 3376|回复: 4

[AU3基础] [已解决][access]求助 $RS.close 执行出错?

[复制链接]
发表于 2013-8-4 22:08:28 | 显示全部楼层 |阅读模式
本帖最后由 bnuzjm 于 2013-8-7 16:33 编辑

问题是这样的:(解决思路见四楼)
我通过 $RS.open($sql) 执行数据库插入、更新等操作,但是一旦调用 $RS.close 程序就出错。代码如下,大家知道是怎么回事么?是不是因为数据表被占用了? $RS.open($sql)除了执行查询操作外,还能不能用来执行插入、更新操作?
在 $RS.open("INSERT INTO a (name) values('dd')")   后面加了一句  $RS.open("select * from a"),可以正常关闭了,问题是可以解决,不过其中道理不大懂,只能猜个大概。
Dim $mdb_data_path = @ScriptDir & "\sjcl.mdb"  

_init()

Func _init()
        $addfld = ObjCreate("ADODB.Connection")
        $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
        $RS =ObjCreate("ADODB.Recordset")
        $RS.ActiveConnection =$addfld
        $RS.open("INSERT INTO a (name) values('dd')")
        $RS.close
        $addfld.close

EndFunc
PS:  
这是简化了的sql语句,本来可以用 $addfld.execute($sql) 来执行数据库操作的,但是我那条sql语句用到多次左连接,貌似没办法通过这种方式执行。后面尝试用 $RS.open($sql) 来执行,可以执行,却又出现  $RS.close 出错的问题。顺便把sql语句也贴上来,里面用到了左连接,为什么无法通过  $addfld.execute($sql) 执行呢?
INSERT INTO t_jhk_temp (pcmc, klmc, jhxz, tddwmc, zydh, zymc, jhrs, sfsf)
SELECT td_pcdm.pcmc,
       td_kldm.klmc,
       t_jhk.jhxz,
       t_tddw.tddwmc,
       t_jhk.zydh,
       t_jhk.zymc,
       t_jhk.jhrs,
       t_jhk.sfsf
FROM (((t_jhk
       LEFT JOIN t_tddw ON (t_jhk.kldm=t_tddw.kldm)
       AND (t_jhk.pcdm=t_tddw.pcdm)
       AND (t_jhk.tddw=t_tddw.tddwdm))
      LEFT JOIN td_kldm ON asc(t_jhk.kldm)=asc(td_kldm.kldm))
LEFT JOIN td_pcdm ON t_jhk.pcdm=td_pcdm.pcdm);
 楼主| 发表于 2013-8-5 11:41:27 | 显示全部楼层
木有人知道么。。。
实在不行只能换思路解决了
发表于 2013-8-7 07:35:02 | 显示全部楼层
Func _init()
        $read = GUICtrlRead($Input1)
        $addfld = ObjCreate("ADODB.Connection")
        $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path)
        $RS.ActiveConnection =$addfld
         $addfld.execute("insert into " & $"表名"  & " (name) values('" & $read & "')")
        $addfld.close
EndFunc
 楼主| 发表于 2013-8-7 11:23:49 | 显示全部楼层
回复 3# chzj589


本来可以用 $addfld.execute($sql) 来执行数据库操作的,但是我那条sql语句用到多次左连接,貌似没办法通过这种方式执行。
 楼主| 发表于 2013-8-7 16:32:45 | 显示全部楼层
$addfld.execute($sql)  可以用来执行 left join ,之前应该是因为sql语句写错了,所以没有正确执行。后面直接采用$addfld.execute($sql)  来执行了,问题算是解决了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 21:37 , Processed in 0.088034 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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