ac5474012 发表于 2012-1-6 10:32:28

【求助】对于SQL的操作有个问题

$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("driver={SQL Server};server=10.1.56.220;uid=sa;pwd=123456;database=ceshi")
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open("Select * From 测试库")

$nid=$RS.Fields(0).value
MsgBox(4096, "yes", $nid)
      
$RS.close
$addfld.Close

这样只能返回第一行的数据,请问怎么返回第二三四行的?

hzxymkb 发表于 2012-1-6 11:04:35

回复 1# ac5474012


    循环啊!

ac5474012 发表于 2012-1-6 11:08:52

回复 2# hzxymkb

能给个例子吗?

kk_lee69 发表于 2012-1-6 11:31:17

回复 4# ac5474012

                        $RS.open ("select * from SMA");
                       
                        While (Not $RS.eof And Not $RS.bof);迴圈讀表
                                MsgBox(0, "欄位一", $RS.Fields (0).value,5);顯示第一個欄位 資料
                                MsgBox(0, "欄位二", $RS.Fields (1).value);顯示第二個欄位 資料

                                $RS.movenext;下一筆
                        WEnd;結束迴圈讀表
                        $RS.close;關閉數據分表

tsys 发表于 2012-1-6 11:31:37

本帖最后由 tsys 于 2012-1-6 11:32 编辑

回复 4# ac5474012

以下代码根据此贴修改http://www.autoitx.com/forum.php?mod=viewthread&tid=27079&highlight=access
由于本例用于access数据库,不当之处自行修改
使用while循环逐个读取Func _SQL_to_Array($mdb_data_path,$mdb_data_pwd,$tblname)
                Local $aArray,$P = 1,$i = 0
                $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.Open ("Select "&$T & " From " & $tblname )
                while Not $RS.eof And Not $RS.bof
                        if @error =1 Then ExitLoop
                        $aArray[$i] = $RS.Fields (0).value
                        $aArray[$i] = $RS.Fields (1).value
                        $i += 1
                        $P += 1
                        ReDim $aArray[$P]
                        $rs.movenext
                WEnd
                $rs.close
                $addfld.Close
                Return $aArray
EndFunc    还有一种方法就是先获取列内的数据总数,然后使用循环读取就可以了:$RS.Open ("Select count("&$FieldName&") From "&$tblname)

hzxymkb 发表于 2012-1-6 13:11:06

回复 4# ac5474012


   楼上的例子都正确的!

ac5474012 发表于 2012-1-6 14:32:25

回复 5# kk_lee69
回复ac5474012
kk_lee69 发表于 2012-1-6 11:31 http://www.autoitx.com/images/common/back.gif

请问我要是想直接返回第2行的数据要怎么写?

kk_lee69 发表于 2012-1-6 15:51:15

回复 8# ac5474012


    第二行還是第二筆資料

$RS.Fields (0).value表示第一行資料
$RS.Fields (1).value 表示第二行資料


第二筆資料就得跑循環了.....

auto 发表于 2012-1-6 19:35:43

$RS.Open ("Select count("&$FieldName&") From "&$tblname)
这个能行吗??

hzxymkb 发表于 2012-1-6 20:29:37

回复 8# ac5474012


    我没有技术啊,只会说正解!
页: [1]
查看完整版本: 【求助】对于SQL的操作有个问题