cfs43210 发表于 2014-7-17 21:11:28

回复 16# kk_lee69
谢谢你!有点不明白!

$RS.open ("SELECT * FROM表一");
;$ListArray=$conn.Execute ("SELECT ClassID,ClassName FROM comFundStyle").GetRows
While (Not $RS.eof And Not $RS.bof);迴圈讀表
      MsgBox(0, "欄位一", $RS.Fields (0).value,5);顯示第一個欄位 資料

      $RS.movenext;跳出迴圈
WEnd;結束迴圈讀表
$RS.close;關閉數據分表
上面没建立預存程序查询

$conn.Execute("EXECPROGRAM1");建立預存程序.这个是怎么查询数据,如果有条件查询,语句要怎么写,谢谢!

kk_lee69 发表于 2014-7-17 21:20:05

回复 17# cfs43210

我只是舉例子   我並沒有全部寫給你看
你自己也要學呀別的不說 先別 說 AU3

你先隨便寫個 SQL 語法建立預存程序 給我看 可以嗎

寫好了 我就寫 AU3 的建立給你看

cfs43210 发表于 2014-7-17 21:44:24

回复 18# kk_lee69
Dim $sServer = '192.168.0.168', $sUsername = 'sa', $sPassword = '', $sDatabase = 'hz_Pers' ;四个变量分别是连接数据库用的地址、账号、密码及所使用数据库名

$Comm = ObjCreate("ADODB.Command") ;建一个command对象

With $Comm
        .ActiveConnection = "DRIVER={SQL Server};SERVER=" & $sServer & ";UID=" & $sUsername & ";PWD=" & $sPassword & ";Database=" & $sDatabase & "" ;建立连结
        .CommandText = 'getPers' ;定义command 对象调用名称,即存储过程名称
        .CommandType = 4 ;设置command调用类型是存储过程
        .Prepared = True ;将SQL命令先行编译
EndWith


$Rs = $Comm.Execute ;存储过程取得的记录集赋给$Rs
MsgBox(0,0,$Rs.Fields (2).value)
$Rs.Close;关闭记录集对象
这个是我参考别人的,已建军立了存储过程getPers,$Rs.Fields (2).value可以读取,但是我要有条件查询,语句不知道怎么写

kk_lee69 发表于 2014-7-17 22:08:48

回复 19# cfs43210

請參考一下我寫的教學~~~

http://www.autoitx.com/thread-30083-1-1.html


理論上我的用法 都不用到 UDF而你剛剛上面的用法是人家的 有使用 UDF 的操作方法

我覺得哪種方法 有點難以理解~~~

看看我的文章 就可以 知道~~ 連接數據庫 不需要任何的UDF 就可以直接連接

置於 你的問題~~~ 我想 你應該先告訴我怎麼在SQL下面 建立 預存程序

我就能告訴你 建立預存程序 這段 AU3 怎麼寫

kk_lee69 发表于 2014-7-17 22:14:47

回复 19# cfs43210

或者 你把你的需求說清楚點順便把你要查詢的東西 寫出來

說的清楚 我就寫個範例給你

我覺得你應該不是要 操作預存程序

cfs43210 发表于 2014-7-17 22:29:19

本帖最后由 cfs43210 于 2014-7-17 22:30 编辑

回复 20# kk_lee69

我是没用UDF,是直接连接的,现在用你的法方建的

Dim $sServer = '192.168.0.168', $sUsername = 'sa', $sPassword = '', $sDatabase = 'hz_Pers';四个变量分别是连接数据库用的地址、账号、密码及所使用数据库名

$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")

$conn.Open ("driver={SQL Server};server="&$sServer&";uid="&$sUsername&";pwd="&$sPassword&";database=" & $sDatabase & "");主机名IP127.0.0.1,UID=用户,PWD=密码,database=数据库名
$RS.ActiveConnection = $conn ; 设定RS 是 conn 的集合 重要的部份


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

        $RS.movenext;跳出迴圈
WEnd;結束迴圈讀表
$RS.close;關閉數據分表

上面可以读取表 Pers
预存已建名为:getPers

$Rs.Open("Select * from Pers where PERSID='44130' and Name='张三2000000'")
MsgBox(0, 0, $Rs.Fields(2).value);这是条件查询的如果用预存名查询怎么写

kk_lee69 发表于 2014-7-17 22:35:10

回复 22# cfs43210

预存已建名为:getPers

請問這個的內容是什麼告訴我因為 執行結果的返回 會關乎到 使用的語法

cfs43210 发表于 2014-7-17 22:39:54

本帖最后由 cfs43210 于 2014-7-17 22:41 编辑

回复 23# kk_lee69

CREATE PROCEDURE getPers
    as
    set nocount on
    begin
       select * from Pers
    end
    go
   
预存名getPers 在SQL查询分析器用上面语句,Pers是表,

cfs43210 发表于 2014-7-17 22:46:28

回复 23# kk_lee69

getPers是Pers表,有编码,姓名等...

kk_lee69 发表于 2014-7-17 22:48:50

回复 24# cfs43210

你看看你自己寫的 其實你寫死了~~~這個預存程序 從頭到尾執行後只會秀出

    select * from Pers

所以這個預存程序 是死的這樣寫是不對的我幫你改一下好了


CREATE PROCEDURE getPers (@變數1,@變數2)
    as
宣告@變數1變數類型
宣告@變數2變數類型

    set nocount on
    begin
       select * from Pers where PERSID=@變數一and Name=@變數二
    end
    go

我直接用中文表示句型語法因為 不常用 所以其實要查一下晚點 我可以上個實際的語法

如果 你看的懂我的意思 就應該知道問題在哪了

當你 把 預存程序 變成 上面的樣子

用   $Rs.Open("EXEC getPers( '44130','张三2000000')")

這樣就可以 使用預存程序 查到你要的東西了

cfs43210 发表于 2014-7-17 22:48:58

回复 23# kk_lee69

是不是我建预存名错了

kk_lee69 发表于 2014-7-17 22:51:41

回复 27# cfs43210

不是名稱的問題

預存程序 有沒有建立 在資料庫的管理介面裡面 可以看到 預存程序 存不存在

cfs43210 发表于 2014-7-17 22:55:44

回复 28# kk_lee69

在预存程序有我建的名存在,但你说的这个内容是什么我不明白

kk_lee69 发表于 2014-7-17 22:56:32

回复 29# cfs43210

CREATE PROCEDURE getPers (@變數1,@變數2)
    as
宣告@變數1變數類型
宣告@變數2變數類型

    set nocount on
    begin
       select * from Pers where PERSID=@變數一and Name=@變數二
    end
    go

這段不明白嗎??

kk_lee69 发表于 2014-7-17 23:04:06

回复 29# cfs43210

既然叫做 預存程序顧名思義 就是 是先把程式寫好在 SQL 中
等需要用的時候叫出來用

你原本的 getPers排除建立程序需要的語法你裡面的語法最終只有 select * from Pers

可是這樣的東西是死的 最終不能做任何的應用~~~~ 到目前為止 都只是SQL 的邏輯跟概念

因為你的預存程序 一執行下去就只會 select * from Pers   沒有辦法從外部改變 預存程序的內部

所以你有兩條路第一條修改預存程序 把裡面的select * from Pers改成 Select * from Pers where PERSID='44130' and Name='张三2000000'

第二條路 就是 你把預存程序 變成活的 加兩個參數 進去以便你可以利用這兩個參數 可以隨時更換想查詢的東西

也就是 把 getPers變成 getPers (參數1,參數2)   當你查詢的時候 直接帶入參數

這樣就可以查詢到 你要的東西而不用修改 預存程序
页: 1 [2] 3
查看完整版本: [己解决]SQL2000操作存储过程!