Delphi的變數與SQL指令的用法? |
答題得分者是:Chance36
|
zeke
一般會員 發表:6 回覆:8 積分:2 註冊:2004-02-05 發送簡訊給我 |
程式部分如下
var Temp_i: integer; Temp_qt: integer; procedure Torder_add_form.Button1Click(Sender: TObject);
begin
with ADOQuery2 do
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Select product_qt from Product_store');
ADOQuery2.SQL.Add('Where product_num LIKE ''%' DBLookupComboBox2.Text '%'' ');
ADOQuery2.Open;
Temp_i := strtoint(Edit2.Text);
Temp_qt := ADOQuery2.FieldByName('product_qt').AsInteger;
Temp_qt := Temp_qt - Temp_i;
end; with ADOQuery2 do
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Update Product_store');
ADOQuery2.SQL.Add('Set product_qt = Temp_qt ');
ADOQuery2.SQL.Add('Where product_num LIKE ''%' DBLookupComboBox2.Text '%'' ');
ADOQuery2.Open;
end;
end; 問題一 ADOQuery2.SQL.Add('Set product_qt = Temp_qt ');中,Temp_qt為Dephi的變數要如何指定給SQL中的product_qt??? 問題二 ADOQuery2.SQL.Add('Where product_num LIKE ''%' DBLookupComboBox2.Text '%'' ');中,
其實DBLookupComboBox2.Text的值就是我要收詢的值,並不要用到%,可是把%一拿掉就會出錯,我該如何改呢??? 如程式有其他錯誤,煩請教導,謝謝!!!
|
arvinhsu
一般會員 發表:0 回覆:10 積分:7 註冊:2003-04-03 發送簡訊給我 |
|
zeke
一般會員 發表:6 回覆:8 積分:2 註冊:2004-02-05 發送簡訊給我 |
to arvinhsu: 我要查的的確是一筆不會重複的資料,但是我卻不知道,如何修改
ADOQuery2.SQL.Add('Where product_num LIKE ''%'+DBLookupComboBox2.Text+'%'' '); 我嘗試著用你教的方法將
ADOQuery2.SQL.Add('Set product_qt = Temp_qt '); 改成
ADOQuery2.SQL.Add('Set product_qt = ' + Temp_qt );
但是程式執行後卻出現Where附近語法有錯誤.
引言: 你的程式邏輯有點怪怪的,因為若是照這個SQL 下去有可能會產生多筆資料所以你可能要確定只會查詢到單一筆資料。 若確定只會查出單一筆資料的話那你只需要改下半段的程式: ADOQuery2.SQL.Add('Set product_qt = Temp_qt '); ==> ADOQuery2.SQL.Add('Set product_qt = ' Temp_qt ); |
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: with ADOQuery2 do begin ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('Update Product_store'); ADOQuery2.SQL.Add('Set product_qt = Temp_qt '); ADOQuery2.SQL.Add('Where product_num LIKE ''%' DBLookupComboBox2.Text '%'' '); ADOQuery2.Open; end; end; 若product_num為文字欄位則改成下列: with ADOQuery2 do begin ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('Update Product_store'); ADOQuery2.SQL.Add('Set product_qt = '+IntToStr(Temp_qt)); ADOQuery2.SQL.Add('Where product_num ='''+DBLookupComboBox2.Text+''' '); ADOQuery2.Open; end; end; 若product_num為數值欄位則改成下列: with ADOQuery2 do begin ADOQuery2.Close; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('Update Product_store'); ADOQuery2.SQL.Add('Set product_qt = '+IntToStr(Temp_qt)); ADOQuery2.SQL.Add('Where product_num ='+DBLookupComboBox2.Text); ADOQuery2.Open; end; end;ps:上述+為全形請改半形的 |
zeke
一般會員 發表:6 回覆:8 積分:2 註冊:2004-02-05 發送簡訊給我 |
謝謝兩位的指導!!
我已經會指定數值與字串變數了 但還是遇到令我想破頭的問題,product_qt為數值product_num為文字時 with ADOQuery2 do
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('Update Product_store');
ADOQuery2.SQL.Add('Set product_qt = ' inttostr(Temp_qt));
ADOQuery2.SQL.Add('Where product_num = ''' DBLookupComboBox2.Text ''' ');
ADOQuery2.Open;
end; 執行後出現'ADOQuery2:Command Text does not return a result set' 發表人 - zeke 於 2004/02/06 22:17:38 發表人 - zeke 於 2004/02/06 22:18:15
|
terrychen
尊榮會員 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
zeke
一般會員 發表:6 回覆:8 積分:2 註冊:2004-02-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |