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

關於動態欄位的SQL語法格式

尚未結案
Paicaso
中階會員


發表:140
回覆:124
積分:52
註冊:2002-09-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-14 10:38:12 IP:61.59.xxx.xxx 未訂閱
請教一下 如果我的欄位分別為A1,A2....A12 我欲用參數來指定,如Fd := 'A' + X;  //由程式中指定X= 1....12 那在下列法中該欄位變數(Fd)部分應改怎麼寫 
(1) Query.ParamByName(''' Fd '''    ).AsInteger
(2) Query.SQL.Add('Update ABC ');
    Query.SQL.Add('SET ');
    Query.SQL.Add('  Fd  = ''' LAMT ''' ');  //??
(3) SQL := SQL   '( wd1 ,wd2 , Fd  )';
    SQL := SQL   ' Values ';
    SQL := SQL   '( :wd1 ,:wd2, ':'  Fd  )';
Paicaso
中階會員


發表:140
回覆:124
積分:52
註冊:2002-09-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-14 11:00:52 IP:61.59.xxx.xxx 未訂閱
(1) Query.ParamByName(''' Fd '''    ).AsInteger
(2) Query.SQL.Add('Update ABC ');    Query.SQL.Add('SET ');    Query.SQL.Add('  Fd  = ''' LAMT ''' ');  
(3) SQL := SQL   '( wd1 ,wd2 , Fd  )';    SQL := SQL   ' Values ';    SQL := SQL   '( :wd1 ,:wd2, : Fd  )';
這樣對吧
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-14 11:28:56 IP:211.74.xxx.xxx 未訂閱
var Fd:string; begin . . Fd := 'A' inttostr(X);//由程式中指定X= 1....12 Query.SQL.Add(' UPDATE ABC ' ' SET ' #39 Fd #39 '=' #39 LAMT #39 ' WHERE XYZ=' #39 XXX #39);//XYZ是你的Key值欄位名稱 Query.ExecSQL; TRY TRY SEE
problemman
一般會員


發表:7
回覆:25
積分:16
註冊:2003-04-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-14 12:29:50 IP:203.198.xxx.xxx 未訂閱
 
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
    lSQL,lTempFieldStr,lTempValueFieldStr:String;
begin
  {先做要出所有'Fd' field}
  for i:=1 to 12 do
  begin
    lTempFieldStr:=lTempFieldStr   'Fd'   inttoStr(i)   '=:Fd'      
                   inttostr(i)   ',';
  end;
  {lTempValueFieldStr='Fd1=:Fd1,Fd2=:Fd2,....,Fd12=:Fd12'}      lSQL:='Update ABC SET wd1=:wd1,wd2=:wd2,'  lTempValueFieldStr;
  Query.close; Query.SQL.Add(lSQL);
  Query.ParamByName('wd1').AsInteger:=???;
  Query.ParamByName('wd2').AsInteger:=???;
  Query.ParamByName('Fd1').AsInteger:=???;
  Query.ParamByName('Fd2').AsInteger:=???;
             .
             .
             .
  Query.ParamByName('Fd12').AsInteger:=???;
  Query.ExecSQL;
End;    試試看
          
  
   
  
end;
《觸不到問題人》 來無影,去無踪, 問題總是一羅羅。
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-14 12:48:03 IP:211.76.xxx.xxx 未訂閱
Hi, 應該是你要的... 看看有沒有問題.    
(1) 
for i:=1 to 12 do
begin
  Query.ParamByName('F'+IntToStr(i)).AsInteger := valuearray[i];
end;
. .
. .
(2)
Query.SQL.Add('Update ABC ');
Query.SQL.Add('SET ');
for i:=1 to 12 do
begin    
    Query.SQL.Add('F'+IntToStr(i)+' = '''+valuearray[i]+''',  ');
end;
. .
. .
(3)
SQL := SQL + '( wd1 ,wd2 ';
for i:=1 to 12 do
begin
  SQL := SQL + ', F'+IntToStr(i)';
end;
SQL := SQL + ') Values ';
SQL := SQL + '( :wd1 ,:wd2';
for i:=1 to 12 do
begin
  SQL := SQL + ', :F'+IntToStr(i)';
end;
SQL := SQL + ') ';
系統時間:2024-03-29 15:40:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!