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

比較兩個TAdoQuery 的 Insert into

 
jjyeah
一般會員


發表:10
回覆:11
積分:4
註冊:2002-06-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-07-08 11:49:51 IP:61.64.xxx.xxx 未訂閱
各位高手: 我使用AdoQuery在資料庫中插入一筆記錄,這筆記錄有4個欄位,資料型態分別為 ftstring,ftinteger,ftinteger,ftstring 我試過以下兩種方法 1. Adoqry.SQL.Clear; Adoqry.SQL.Add('insert into table1 values('123',null,20,null)'); AdoQry.ExecSql; 2.Cds 為ClientDatset 動態建立的dataset Adoqry.SQL.Clear ; Adoqry.SQL.Add('Insert into table1 values(:v1,:v2,:v3,:v4)'); Aq2.Parameters[0].Value :=Cds.fieldbyname('Field1').AsString ; Aq2.Parameters[1].Value :=NULL; Aq2.Parameters[2].Value :=cds.fieldbyname('Field2').AsInteger ; Aq2.Parameters[3].Value :=cds.fieldbyname('Field3').AsString ; Adoqry.ExecSql; 第一個方法可以過,但第二個方法一直出現下列問題: (1).:v2的值設為Null時,會出現"提供不一致或不完全的資訊導致參數不適當被 拒. (2).若將v2:=0,則出現[ODBC Microsoft Access驅動程式]無效的精確度數值! (要將v2設為null or 0是因為在cds中沒有v2這個欄位的資料) (3).當field3為空字串時,亦會發生(1)型態的錯誤. (4).我也曾嘗試只插入三個欄位的資料,但會出現參數不足的錯誤. 以上就是我遇到的問題,覺得很迷惑,為什麼直接指定參數數值時沒問題,動態給定確會遇到那麼多的問題,還是說AdoQuery中還有其他參數要設定?希望各高手不吝指教,thanks.
Diviner
初階會員


發表:36
回覆:112
積分:34
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-07-08 13:06:23 IP:202.123.xxx.xxx 未訂閱
引言: 2.Cds 為ClientDatset 動態建立的dataset Adoqry.SQL.Clear ; Adoqry.SQL.Add('Insert into table1 values(:v1,:v2,:v3,:v4)'); Aq2.Parameters[0].Value :=Cds.fieldbyname('Field1').AsString ; Aq2.Parameters[1].Value :=NULL; Aq2.Parameters[2].Value :=cds.fieldbyname('Field2').AsInteger ; Aq2.Parameters[3].Value :=cds.fieldbyname('Field3').AsString ; Adoqry.ExecSql;
你不如直接用常數試試放入 Parameters 中, 看看會不會有同樣錯誤, 以上句子我沒問題啊。 奇怪的是, Aq2 是如何走出來的, 一開始不是用 Adoqry 嗎? -- 小卜子 發表人 - diviner 於 2002/07/08 13:06:57
------
--
小卜子
jjyeah
一般會員


發表:10
回覆:11
積分:4
註冊:2002-06-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-07-08 20:02:09 IP:61.64.xxx.xxx 未訂閱
sorry!!程式碼copy過來時忘了改 aq2=Adoqry
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-07-09 00:11:34 IP:211.23.xxx.xxx 未訂閱
引言: 各位高手: 我使用AdoQuery在資料庫中插入一筆記錄,這筆記錄有4個欄位,資料型態分別為 ftstring,ftinteger,ftinteger,ftstring 我試過以下兩種方法 1. Adoqry.SQL.Clear; Adoqry.SQL.Add('insert into table1 values('123',null,20,null)'); AdoQry.ExecSql; 2.Cds 為ClientDatset 動態建立的dataset Adoqry.SQL.Clear ; Adoqry.SQL.Add('Insert into table1 values(:v1,:v2,:v3,:v4)'); Aq2.Parameters[0].Value :=Cds.fieldbyname('Field1').AsString ; Aq2.Parameters[1].Value :=NULL;-- Aq2.Parameters[2].Value :=cds.fieldbyname('Field2').AsInteger ; Aq2.Parameters[3].Value :=cds.fieldbyname('Field3').AsString ; Adoqry.ExecSql; 第一個方法可以過,但第二個方法一直出現下列問題: (1).:v2的值設為Null時,會出現"提供不一致或不完全的資訊導致參數不適當被 拒. (2).若將v2:=0,則出現[ODBC Microsoft Access驅動程式]無效的精確度數值! (要將v2設為null or 0是因為在cds中沒有v2這個欄位的資料) (3).當field3為空字串時,亦會發生(1)型態的錯誤. (4).我也曾嘗試只插入三個欄位的資料,但會出現參數不足的錯誤. 以上就是我遇到的問題,覺得很迷惑,為什麼直接指定參數數值時沒問題,動態給定確會遇到那麼多的問題,還是說AdoQuery中還有其他參數要設定?希望各高手不吝指教,thanks.
此行改成如下試試 Aq2.Parameters[1].Value :=NULL; Aq2.Parameters[1].clear; @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
jjyeah
一般會員


發表:10
回覆:11
積分:4
註冊:2002-06-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-07-09 13:10:05 IP:61.64.xxx.xxx 未訂閱
我試過了 Clear這個function ,但出現variant dose not reference an automation object的錯誤耶.
系統時間:2024-05-15 14:23:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!