線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1716
推到 Plurk!
推到 Facebook!

TADOQuery.DeleteRecord删除所有记录时异常?

尚未結案
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-09 00:23:27 IP:218.2.xxx.xxx 未訂閱
TADOQuery->TDataSource->TDBGrid 请问如何删除网格中的所有记录?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-09 08:35:18 IP:202.39.xxx.xxx 未訂閱
用另一個 TADOQuery 以 Delete From TableName ... 的方式來刪除 --- --<-<-<@
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-09 08:49:05 IP:61.155.xxx.xxx 未訂閱
//删除指定的Tadoquery中所有记录 procedure adodelall(const adoquery:tadoquery); begin if not adoquery.Active then    exit; while adoquery.RecordCount>0 do begin adoquery.First ; adoquery.Delete ; end; end;    //使用如下: procedure TForm1.Button2Click(Sender: TObject); begin adodelall(adoquery1); end;    供参考哦
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-09 19:32:23 IP:218.2.xxx.xxx 未訂閱
有无一个函数就能解决问题?而不要用while?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-09 21:46:17 IP:63.84.xxx.xxx 未訂閱
引言: 有无一个函数就能解决问题?而不要用while?
您好﹒ 您所說的一個函數是指何物﹖hagar版主有提供Delete From的SQL語法﹐這應該就是最直接﹐最簡單的方法了﹒ 比如說你要刪除[客戶]資料表中的所有資料﹐程式碼可下﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'Delete From 客戶';
  ADOQuery1.ExecSQL;
  ADOQuery1.SQL.Text := 'Select * From 客戶';
  ADOQuery1.Open;
  //重新開啟資料表﹐此時[客戶]資料表中已經沒有任何資料了
end;
利用SQL的Delete From...還可以方便地作下需要刪除資料的條件﹐比如說刪除[客戶]資料表中所有[客戶編號]欄位值為'A001'的資料﹐程式碼可下﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'Delete From 客戶 Where 客戶編號='A001'';
  //此處的客戶編號為字串形態﹐若為數字形態的話﹐就不需要左右的引號
  //若[客戶編號]值需要讓使用者自行輸入的話﹐也可將上句改為以下兩句﹕
  //ADOQuery.SQL.Text := 'Delete From 客戶 Where 客戶編號=:NUMBER';
  //ADOQuery1.Parameters.ParamByName('NUMBER') := Edit1.Text;
  ADOQuery1.ExecSQL;
  ADOQuery1.SQL.Text := 'Select * From 客戶';
  ADOQuery1.Open;
  //重新開啟資料表﹐此時[客戶]資料表中已經沒有[客戶編號]為A001的資料了
end;
參考看看﹗ 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/08/09 22:16:55
------
忻晟
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-09 21:56:10 IP:218.2.xxx.xxx 未訂閱
我想将与TADOQuery相连的TDBGrid中的记录全部删除 不知道如何实现? 不要用while,效率比较低
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-09 22:27:48 IP:63.84.xxx.xxx 未訂閱
引言: 我想将与TADOQuery相连的TDBGrid中的记录全部删除 不知道如何实现? 不要用while,效率比较低
您好﹗ DBGrid元件只是一個感知元件﹐負責將對應的資料集元件(如ADOQuery)中的資料顯示出來而已﹐您所指的將与ADOQuery元件相連接的DBGrid中的記錄全部刪除﹐似乎又不是想把資料表中的資料錄刪除﹐我想這個問題可能比較混淆﹐能把您的問題講得具體一些嗎﹖比如說您要這樣做的目的是何﹖ 努力,相信會獲得美麗! 忻晟
------
忻晟
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-10 08:30:02 IP:61.155.xxx.xxx 未訂閱
应该可以用Tadoquery的adoquery1.DeleteRecords(arAll)方法的, 但是不知道是什麼原因,沒有一家 OLE DB Provider 支援 DeleteRecords(arAll) , 在沒有答案之前,最好的方法還是利用 while循环del或SQL 命令來解決。 發表人 - sos_admin 於 2003/08/11 08:26:59
lovelypp
初階會員


發表:122
回覆:111
積分:46
註冊:2003-02-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-10 15:57:36 IP:218.2.xxx.xxx 未訂閱
DBGrid元件只是一個感知元件﹐負責將對應的資料集元件(如ADOQuery)中的資料顯示出來而已﹐您所指的將与ADOQuery元件相連接的DBGrid中的記錄全部刪除﹐似乎又不是想把資料表中的資料錄刪除﹐ ==================================================================== 你说得没错。 我的目的就是这个
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-08-10 16:24:06 IP:63.84.xxx.xxx 未訂閱
引言: DBGrid元件只是一個感知元件﹐負責將對應的資料集元件(如ADOQuery)中的資料顯示出來而已﹐您所指的將与ADOQuery元件相連接的DBGrid中的記錄全部刪除﹐似乎又不是想把資料表中的資料錄刪除﹐ ==================================================================== 你说得没错。 我的目的就是这个
您好﹗ 即然不想刪除資料錄﹐只是使DBGrid元件中不顯示資料的話﹐切斷資料集元件(ADOQuery1)的連線就好啦﹒ 但在斷開連接的時候﹐DBGrid元件中也沒有東西顯示了﹐如果需要在斷開連接的時候﹐DBGrid元件中依然顯示其對應之欄位名稱的話﹐可以在設計時期先在DBGrid元件的編輯器中將各欄位名稱加入﹐這樣的話﹐即使資料集元件(ADOQuery1)已經斷開連接了﹐DBGrid依然是會顯示欄位名稱的﹒ //開啟DBGrid欄位編輯器方法﹕在DBGrid元件中雙擊即可 //加入各位欄位名方法﹕在欄位編輯器中點滑鼠右鍵﹐選擇Add All Fields即可 參考看看﹗ 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/08/10 16:33:43
------
忻晟
系統時間:2024-06-28 13:42:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!