元件ADOQuery1要接收一段SQL文~如果是不固定條件值~ |
尚未結案
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
請問各位~ 元件ADOQuery1要接收一段SQL文~
其中有個欄位資料是不固定~
它是由Memo來作取值的動作~
比如~
2301
233
234 sele pc001,pc002...
from A
where pc002 like '2301' or pc002 like '233' or pc002 like '234'
紅色標明這段描述該如何去作運用,另外是否要宣告陣列變數~
Memo1.Lines.Count
Memo1.Lines.Strings[i] 但是如在
With ADOQuery1 do
SQL.Clear;
SQL.Add('....');
...
{此處設定if ...endif //似乎無法作執行動作}
Opend;
End 請問大家是否其他好的想法~謝謝 ^^
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
var tmpstr:string; begin tmpstr:='sele pc001,pc002 from A '; With ADOQuery1 do begin close; SQL.Clear; SQL.Add(tmpstr); sql.add(' where pc002 like ' quotedstr('2301*')); sql.add(' or pc002 like ' quotedstr(233*')); Open end; End;發表人 - hahalin 於 2004/12/06 16:36:02 |
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 參考如下試試﹕
procedure TForm1.Button1Click(Sender: TObject); Var I : Integer; Str : String; begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Select pc001, pc002, ... From TableName Where'); For I:=0 to Memo1.Lines.Count-1 do begin Str := Memo1.Lines[0]; ADOQuery1.SQL.Text := ADOQuery1.SQL.Text ' Or pc002 = ' Str; end; ADOQuery1.Open; end;========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟 |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
peterpcc
一般會員 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
SORRY! OR 這兒會出問題,我多補一項判定
procedure TForm1.Button1Click(Sender: TObject); Var I : Integer; Str : String; v_First:boolean; begin v_Start:=True; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Select pc001, pc002, ... From TableName Where'); For I:=0 to Memo1.Lines.Count-1 do begin Str := Memo1.Lines[i]; if not First then v_First:=False else ADOQuery1.SQL.Text := ADOQuery1.SQL.Text ' or '; ADOQuery1.SQL.Text := ADOQuery1.SQL.Text ' pc002 = ' Str; end; ADOQuery1.Open; end; |
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
likush
高階會員 發表:5 回覆:235 積分:103 註冊:2002-10-08 發送簡訊給我 |
提供個人淺見,依您的需求 用IN的方式是否會好處理呢??
Var I : Integer; WhereSQL : String; begin For I:=0 to Memo1.Lines.Count-1 do begin If Trim(WhereSQL) <> '' Then WhereSQL := WHereSQL ',' WhereSQL := ''' Memo1.Lines[I] '''; end; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Select pc001... From TableName Where Pc0002 In (' WhereSQL ' )'); ADOQuery1.Open;========================= 讀萬卷書~不如來K.TOP走一遭 ========================= |
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
謝謝likush~ 我會試試看~
請問cashxin2002一下~
連續異動資料表格~就您所說的~將ADOQuery作關閉再開啟~
但是試著似乎發生錯誤訊息~[ADOQuery2:Command Text does not return set]
另外,目前我需要去連續新增明細資料我該如何去作呢~
for I:=1 to 100 do
With ADOQuery1 do
begin
CLOSE;
OPEN;
SQL.Clear;
SQL.Add('Insert Into COPTD .....');
ExecSQL;
end;
謝謝~ ^^
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
t0288542
中階會員 發表:216 回覆:254 積分:94 註冊:2004-10-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |