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

請問新增數值型態欄位資料,不知那有問題。

尚未結案
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-17 15:47:09 IP:61.221.xxx.xxx 未訂閱
請問各位。 以下sql文,為什麼出現ADOQuery12.Parameter 'Temp2' not found. ADOQuery12.Close; ADOQuery12.SQL.Clear; ADOQuery12.SQL.Add(' Insert Into CBCST '); ADOQuery12.SQL.Add(' (ST001,ST002,ST003,ST004,ST005,ST006,ST007, '); ADOQuery12.SQL.Add(' ST008,ST009,ST010,ST011,ST012,ST013,ST014) '); ADOQuery12.SQL.Add(' Values '); ADOQuery12.SQL.Add(' (''' N6 ''',''' N7 ''',''' SR ''',:Temp2,:Temp3,''' T1 ''',''' T2 ''', '); ADOQuery12.SQL.Add(' ''' T3 ''',''' T4 ''',0,''0'',''原料型態報廢'','''','''') '); ADOQuery12.Parameters.ParamByName('Temp2').Value := T5; ADOQuery12.Parameters.ParamByName('Temp3').Value := T6; ADOQuery12.sql.SaveToFile('c:/Insert.txt'); ADOQuery12.ExecSQL; ADOQuery12.Close; 麻煩大家。我找好久,就是不知道自己錯在那裡。
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-17 16:30:19 IP:210.64.xxx.xxx 未訂閱
你好 類似的問題之前也有人提過了,後來的結論是ADO的BUG,如果真的有需要就直接加入到字串裡面,應該就不會有問題了!!試試看吧!! Pillar Wang
------
Pillar Wang
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-17 17:55:56 IP:220.132.xxx.xxx 未訂閱
t0288542 你好:  
引言: ... .. ADOQuery12.SQL.Add(' Values '); ADOQuery12.SQL.Add(' (''' N6 ''',''' N7 ''',''' SR ''',:Temp2,:Temp3,''' T1 ''',''' T2 ''', '); ADOQuery12.SQL.Add(' ''' T3 ''',''' T4 ''',0,''0'',''原料型態報廢'','''','''') '); ADOQuery12.Parameters.ParamByName('Temp2').Value := T5; ... .. .
ADOQuery12.SQL.Add(' Values '); ADOQuery12.SQL.Add(' (' Quotedstr(N6) ',' Quotedstr(N7) ',' Quotedstr(SR) ',' //:Temp2,:Temp3,' Quotedstr(T5) ',' //* Quotedstr(T6) ',' //* Quotedstr(T1) ',' Quotedstr(T2) ',' Quotedstr(T3) ',' Quotedstr(T4) ',' Quotedstr('0') ',' Quotedstr('0') ',' Quotedstr('原料型態報廢') ',' Quotedstr('') ',' Quotedstr('') ')'); //*ADOQuery12.Parameters.ParamByName('Temp2').Value := T5; //*ADOQuery12.Parameters.ParamByName('Temp3').Value := T6; ADOQuery12.sql.SaveToFile('c:/Insert.txt');
------
======================
昏睡~
不昏睡~
不由昏睡~
Arlung Miao
初階會員


發表:9
回覆:44
積分:25
註冊:2004-08-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-17 20:08:54 IP:219.134.xxx.xxx 未訂閱
我只是大概看了一下。同樣覺得可能是引號的問題。    遇到這類問題,我覺得首先應該將SQL Show出來看看是否符合語法,或者和自己的預期是否一致。我看到了代碼中ADOQuery12.sql.SaveToFile('c:/Insert.txt');但是,應該提前到Para賦值之前。    另外,我也建議使用系統提供的Quotedstr函數。而我自己則是寫了個函數,因爲非常的常用,所以將它命名為Q
function Q(cField: string
         ; lAddComma: Boolean = False): string;
var
  cQuo: string;
  cMiddleQuo: string;
begin
  cQuo := Chr(39);
  cMiddleQuo := cQuo   '   Chr(39)   '   cQuo;
  cField :=  AnsiReplaceStr(cField, cQuo, cMiddleQuo);
  Result := cQuo   cField   cQuo;
  if lAddComma then begin
    Result := Result   ', ';
  end;
end;
所以你之前的程式改寫為:
 
...
ADOQuery12.SQL.Clear;
ADOQuery12.SQL.Add('Insert Into CBCST '
                   '  (ST001,ST002,ST003,ST004'
                   ',  ST005,ST006,ST007,ST008'
                   ',  ST009,ST010,ST011,ST012'
                   ',  ST013,ST014)'
                   '   Values'
                   '   ('
                   '    '   Q(N6);
                   ',   '   Q(N7);
                   ',   '   Q(SR);
                   ',   '   Q(':Temp2');
                   ',   '   Q(':Temp3');
                   ',   '   Q(T1);
                   ',   '   Q(T2);
                   ',   '   Q(T3);
                   ',   '   Q(T4);
                   ',   '   '0';
                   ',   '   Q('0');
                   ',   '   Q('原料型態報廢');
                   ',   '   Q('');
                   ',   '   Q('');
                   '   )'
                   );
ADOQuery12.Parameters.ParamByName('Temp2').Value := T5;
ADOQuery12.Parameters.ParamByName('Temp3').Value := T6;
ADOQuery12.ExecSQL;
...
系統時間:2024-09-11 18:18:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!