全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1265
推到 Plurk!
推到 Facebook!

adocom.Execute(i,'')執行結果怪怪的

答題得分者是:只差一步
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-25 14:53:23 IP:61.218.xxx.xxx 訂閱
procedure TForm1.Button4Click(Sender: TObject);
var adocom:tadocommand;
i:integer;
begin
adocom:=tadocommand.Create(self);
adocom.Connection:=adocon;
adocom.CommandText:='update table1 set t1=:t1,t2=:t2 '
'where t3 =:t3';
adocom.Parameters.ParamValues['t1']:='11';
adocom.Parameters.ParamValues['t2']:='22';
adocom.Parameters.ParamValues['t3']:='mis';
adocom.Execute(i,'');
//adocom.Execute;
showmessage(inttostr(i));
end;
用adocom.Execute(i,'');去執行時,
t1的結果是null值,
把t2放到t1前面,t2的值會變成null,
固定是set後面第一個欄位會是null
adocom.Execute(i,'');改成adocom.Execute;就不會有問題
用adocom.Execute(i,'');目的是要捉update時修改的資料筆數
請問一下,是什麼地方有問題呢??
還是有其他方法可以捉update時修改的資料筆數???
p.s. sybase delphi 7 windows 2000
資料庫改用ms sql 2000時,t1會變空白
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
只差一步
一般會員


發表:3
回覆:8
積分:7
註冊:2006-12-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-27 17:04:48 IP:220.196.xxx.xxx 訂閱
adocom.Execute等同
i:=0
adocom.Execute(i,EmptyParam)

if EmptyParam<>nil 则通过影像第一列的value来统计所影响的行数,行数通过i返回

建议:利用TADOQuery来执行,result :=qry1.ExecSQL 或 result := qry1.RowsAffected来获取影响数
===================引 用 jackiemi2_seed 文 章===================
procedure TForm1.Button4Click(Sender: TObject);
var adocom:tadocommand;
i:integer;
begin
adocom:=tadocommand.Create(self);
adocom.Connection:=adocon;
adocom.CommandText:='update table1 set t1=:t1,t2=:t2 '
'where t3 =:t3';
adocom.Parameters.ParamValues['t1']:='11';
adocom.Parameters.ParamValues['t2']:='22';
adocom.Parameters.ParamValues['t3']:='mis';
adocom.Execute(i,'');
//adocom.Execute;
showmessage(inttostr(i));
end;
用adocom.Execute(i,'');去執行時,
t1的結果是null值,
把t2放到t1前面,t2的值會變成null,
固定是set後面第一個欄位會是null
adocom.Execute(i,'');改成adocom.Execute;就不會有問題
用adocom.Execute(i,'');目的是要捉update時修改的資料筆數
請問一下,是什麼地方有問題呢??
還是有其他方法可以捉update時修改的資料筆數???
p.s. sybase delphi 7 windows 2000
資料庫改用ms sql 2000時,t1會變空白
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-29 20:54:51 IP:203.67.xxx.xxx 訂閱
把adocom.Execute(i,'');改成adocom.Execute(i,EmptyParam)就可以了
感謝 只差一步 兄的幫忙
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
系統時間:2024-05-06 4:58:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!