找回密码
 加入
搜索
查看: 3102|回复: 3

[系统综合] 如何将access数据库查询到的总值赋值给一个变量?

[复制链接]
发表于 2012-4-28 11:32:45 | 显示全部楼层 |阅读模式
本帖最后由 tudouyuna 于 2012-5-10 14:38 编辑

表格是test1,变量是$p,然后我们需要查询比如wup=饼干的队赢得jiage的总和:SUM(jiage)       
可是代码运行总是报错,说传不了值,为啥会这样呢??表格如下:
id        wup        jiage       
1        饼干        0.11       
2        水果        0.22       
3        沙发        0.33       
4        水果        0.44       
5        饼干        0.55       
6        沙发        0.66
代码如下:
$SUM="SUM(jiage)"
$binggan="饼干"
$tblname="test1"
Func back()        

                $addfld = ObjCreate("ADODB.Connection")
                $addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &$mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
                                $RS =ObjCreate("ADODB.Recordset")
                                $RS.ActiveConnection = $addfld
                                $RS.cursorType=1
                                $RS.LockType=1
                                $RS.Open ("Select "&$SUM &" From " & $tblname &  " WHERE tech" & " = " &$binggan);查询语句  
                                           $rs.movenext
                                $p=$RS.Fields (1).value
                                                                $RS.close
                                $addfld.close

EndFunc
发表于 2012-4-28 16:11:56 | 显示全部楼层
回复 1# tudouyuna
先请教楼主, 你的代码里:
wHERE tech  这个 tech 代表什么?
$p 是全局变量吗? back() 没有任何返回值!
为什么先移动查询'光标', $rs.movenext?  只获取第2行的数据?
 楼主| 发表于 2012-5-10 14:36:18 | 显示全部楼层
回复 2# user3000


    多谢你的回复~~tech应该是wup,这个代码里我忘记改掉了,$rs.movenext这一句放在哪里有讲究吗?我后来发现问题确实是这句应该放在close前面一行。
发表于 2012-5-10 23:16:12 | 显示全部楼层
本帖最后由 kodin 于 2012-5-10 23:36 编辑
#AutoIt3Wrapper_UseX64 = n
$adSource = @ScriptDir & "\DB1.mdb"
$adTable = "Table1"
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open("Select * From " & $adTable & " WHERE wup='饼干'")
$DATA = ''
While Not $RS.eof And Not $RS.bof
        If @error = 1 Then ExitLoop
        $DATA+= $RS.Fields(2).value
        $RS.movenext
WEnd
MsgBox(0,0,$DATA)
$RS.close
$addfld.Close
或者可以用这个方法直接查询。
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $adSource)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open("SELECT SUM(jiage) AS OrderTotal FROM " & $adTable & " WHERE wup='饼干'")
MsgBox(0,0,$RS.Fields(0).value)
$RS.close
$addfld.Close
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-28 19:58 , Processed in 0.076389 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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