tudouyuna 发表于 2012-4-28 11:32:45

如何将access数据库查询到的总值赋值给一个变量?

本帖最后由 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

user3000 发表于 2012-4-28 16:11:56

回复 1# tudouyuna
先请教楼主, 你的代码里:
wHERE tech这个 tech 代表什么?
$p 是全局变量吗? back() 没有任何返回值!
为什么先移动查询'光标', $rs.movenext?只获取第2行的数据?

tudouyuna 发表于 2012-5-10 14:36:18

回复 2# user3000


    多谢你的回复~~tech应该是wup,这个代码里我忘记改掉了,$rs.movenext这一句放在哪里有讲究吗?我后来发现问题确实是这句应该放在close前面一行。

kodin 发表于 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
页: [1]
查看完整版本: 如何将access数据库查询到的总值赋值给一个变量?