如何循環下去(數據庫是Access) |
缺席
|
books
一般會員 ![]() ![]() 發表:9 回覆:27 積分:7 註冊:2006-10-27 發送簡訊給我 |
下面這個按鈕的職責是對listbox中的選中的記錄數進行數據庫的批量更新,但是只更新一條,不能循環更新下去(或不能批量更新),請高手指點一下:procedure TF_many_yd.BT_many_addClick(Sender: TObject);
var i:Integer; s1:string; begin if (trim(edit11.text)='') or (trim(MaskEdit2.text)='') then begin showmessage('Sorry~! 沒有異動單號或異動時間為空,請產生異動單號和輸入異動時間!'); exit; end else if listbox1.ItemIndex=-1 then exit; for i := ListBox1.Items.Count - 1 downto 0 do if listbox1.Selected[i] then begin s1:=listbox1.items.Strings[i]; with ADOQuery3 do begin close; sql.Clear; sql.Add(' update gdzc_1 '); sql.Add(' set yd_no =:AA,yd_date =:BB '); sql.Add('where el_no like :CC; '); ADOQuery3.parameters.ParamByName('AA').value:=trim(edit11.text); ADOQuery3.parameters.ParamByName('BB').value:=trim(MaskEdit2.text); ADOQuery3.parameters.ParamByName('CC').value:=trim(s1); ADOQuery3.Active:=True; ADOQuery3.execsql; end; end; application.messagebox('批量異動成功!','提示',0 64); end; end. | |
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
把那兩行刪除試試..
===================引 用 文 章=================== 下面這個按鈕的職責是對listbox中的選中的記錄數進行數據庫的批量更新,但是只更新一條,不能循環更新下去(或不能批量更新),請高手指點一下:procedure TF_many_yd.BT_many_addClick(Sender: TObject); var ? i:Integer; ? s1:string; begin ?if? (trim(edit11.text)='') or (trim(MaskEdit2.text)='') then ? begin ??? showmessage('Sorry~! 沒有異動單號或異動時間為空,請產生異動單號和輸入異動時間!'); ??? exit; ? end else ?if listbox1.ItemIndex=-1 then exit; ?? for i := ListBox1.Items.Count - 1 downto 0 do ?? if listbox1.Selected[i] then ?? begin ???? s1:=listbox1.items.Strings[i]; ??? with ADOQuery3 do ?????? begin ????????????? sql.Clear; ????????????? sql.Add(' update gdzc_1? '); ????????????? sql.Add(' set yd_no =:AA,yd_date =:BB '); ????????????? sql.Add('where el_no like :CC; '); ????????????? ADOQuery3.parameters.ParamByName('AA').value:=trim(edit11.text); ????????????? ADOQuery3.parameters.ParamByName('BB').value:=trim(MaskEdit2.text); ????????????? ADOQuery3.parameters.ParamByName('CC').value:=trim(s1); ????????????? ADOQuery3.execsql; ?????????? end; ????????? end; ???? application.messagebox('批量異動成功!','提示',0 64); ?? end; end. |
|
books
一般會員 ![]() ![]() 發表:9 回覆:27 積分:7 註冊:2006-10-27 發送簡訊給我 |
前輩,你的方法解決了這個問題,先行謝謝,但是我想詢問一下為什麼要刪除兩行呢?
另外上面的那段代碼中可否寫入如下代碼:(因為有用戶提到更新完後,請不要讓我再輸入什麼查詢條件,直接更新完後就顯示結果,所以我想加入如下代碼來實現,但是在where語句就報錯即點完更新按鈕,顯示批量更新後就報DD有錯) // with ADOQuery4 do // begin // close; // sql.Clear; // sql.Add('select yd_no as 異動單號,yd_date as 异動日期,el_no as 資產編號,dep_name as 部門,ymd as 取得日期,'); // sql.Add('el_fin as 帳列類別,el_name as 品名,el_unit as 單位,el_qty as 數量,where as 放置地點,'); // sql.Add('bg_user as 保管人,zl_user as 責任人,memo as 備注, old_dep_name as 申請單位,old_where as 原放置地點 from gdzc_1'); // sql.Add('where yd_no like :DD '); // sql.Add('order by el_no'); // ADOQuery4.parameters.ParamByName('DD').value:=trim(edit11.text); // ADOQuery4.Active:=True; // ADOQuery4.open; // end; |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
||
books
一般會員 ![]() ![]() 發表:9 回覆:27 積分:7 註冊:2006-10-27 發送簡訊給我 |
|
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
||
books
一般會員 ![]() ![]() 發表:9 回覆:27 積分:7 註冊:2006-10-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |