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

用ADO连接.dbf数据库时,为何不能执行删除指令?

尚未結案
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-03 09:21:40 IP:218.16.xxx.xxx 未訂閱
我在用ADO连接.dbf数据库时,使用Adoquery1.delete指令删除记录后重新进入系统,删除的数据又出现了,后来我加了ADOQuery1.UpdateBatch语句还是不行,请教各位大侠该如何做。谢谢! 努力,相信会做的更好!
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-03 09:53:04 IP:63.84.xxx.xxx 未訂閱
您好﹗    在ADOQuery1.Delete方法之后﹐加上ADOQuery1.Close & ADOQuery1.Open方法驗証一下此筆資料是否已正常刪除﹒    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-03 10:04:49 IP:218.16.xxx.xxx 未訂閱
引言: 您好﹗ 在ADOQuery1.Delete方法之后﹐加上ADOQuery1.Close & ADOQuery1.Open方法驗証一下此筆資料是否已正常刪除﹒ ===================== 努力,相信會獲得美麗! 忻晟
驗証了,没有被删除! 努力,相信会做的更好!
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-03 10:28:22 IP:63.84.xxx.xxx 未訂閱
您好﹗    請确認如下幾點事項﹕    1. 您是否將ADOQuery元件的LockType屬性值設為ItBatchOptimistic﹐如果是設定成這樣﹐即使用批次更新鎖定方法﹐必須以ADOQuery1.UpdateBatch的方法來真正更新資料﹒    2. 您是否有使用ADOConnection元件的控制交易功能﹐如果有使用這種功能﹐則ADOQuery元件對資料庫的異動并沒有直接生效﹐需要下ADOConnection1.CommitTrans的方法才對資料庫的更新做确認動作﹐即達到真正的更新目的(ADOConnection1.RollbackTrans == 取消交易; ADOConnection1.BeginTrans == 開始一筆交易)﹒    3. 檢查一下ADOQuery元件和其它資料感知元件(如DBGrid等)的屬性中對應的資料表設定是否正确﹐是否有出現不同資料表設定的錯誤等等﹒    能否貼出相關程式碼﹐以便判斷之用﹒    參考看看﹗    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-03 10:54:37 IP:218.16.xxx.xxx 未訂閱
引言: 您好﹗ 請确認如下幾點事項﹕ 1. 您是否將ADOQuery元件的LockType屬性值設為ItBatchOptimistic﹐如果是設定成這樣﹐即使用批次更新鎖定方法﹐必須以ADOQuery1.UpdateBatch的方法來真正更新資料﹒ 2. 您是否有使用ADOConnection元件的控制交易功能﹐如果有使用這種功能﹐則ADOQuery元件對資料庫的異動并沒有直接生效﹐需要下ADOConnection1.CommitTrans的方法才對資料庫的更新做确認動作﹐即達到真正的更新目的(ADOConnection1.RollbackTrans == 取消交易; ADOConnection1.BeginTrans == 開始一筆交易)﹒ 3. 檢查一下ADOQuery元件和其它資料感知元件(如DBGrid等)的屬性中對應的資料表設定是否正确﹐是否有出現不同資料表設定的錯誤等等﹒ 能否貼出相關程式碼﹐以便判斷之用﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
您好,针对您的三点,我检查过,如下: 1:ADOQuery元件的LockType屬性值設為ltOptimistic;所以应该不需要ADOQuery1.UpdateBatch; 2:没有使用ADOConnection元件的控制交易功能; 以下是我的程序文本: object Form3: TForm3 Left = 192 Top = 107 Width = 544 Height = 375 Caption = 'Form3' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object DBGrid1: TDBGrid Left = 48 Top = 32 Width = 320 Height = 120 DataSource = DataSource1 TabOrder = 0 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'MS Sans Serif' TitleFont.Style = [] end object Button1: TButton Left = 136 Top = 184 Width = 75 Height = 25 Caption = 'Button1' TabOrder = 1 OnClick = Button1Click end object ADOConnection1: TADOConnection Connected = True ConnectionString = 'Provider=MSDASQL.1;Persist Security Info=False;Mode=ReadWrite;Ex' 'tended Properties="CollatingSequence=ASCII;DBQ=G:\PROGRAM FILES\' 'COMMON FILES\BORLAND SHARED\DATA;DefaultDir=G:\PROGRAM FILES\COM' 'MON FILES\BORLAND SHARED\DATA;Deleted=0;Driver={Driver do Micros' 'oft dBase (*.dbf)};DriverId=533;FIL=dBase 5.0;FILEDSN=G:\Program' ' Files\Common Files\ODBC\Data Sources\xx.dsn;MaxBufferSize=2048;' 'MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Statistics=0;Thre' 'ads=3;UID=admin;UserCommitSync=Yes;"' LoginPrompt = False Mode = cmReadWrite Left = 112 Top = 80 end object ADOTable1: TADOTable Active = True Connection = ADOConnection1 CursorType = ctStatic TableName = 'animals' Left = 176 Top = 88 end object DataSource1: TDataSource DataSet = ADOTable1 Left = 144 Top = 48 end end 谢谢。 努力,相信会做的更好!
cashxin2002
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-03 12:49:54 IP:63.84.xxx.xxx 未訂閱
您好﹗    您上貼的程式碼部分是Project專案的部分﹐能否貼出ADOQuery做刪除動作的部分程式碼用于測試﹒    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-03 15:31:40 IP:218.16.xxx.xxx 未訂閱
引言: 您好﹗ 您上貼的程式碼部分是Project專案的部分﹐能否貼出ADOQuery做刪除動作的部分程式碼用于測試﹒ ===================== 努力,相信會獲得美麗! 忻晟
Adoquery的删除动作就是: Adoquery.delete; 删除当前记录。 努力,相信会做的更好!
cashxin2002
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-03 15:55:37 IP:63.84.xxx.xxx 未訂閱
您好﹗    剛才檢查了一下您貼出的Project部分程式碼﹐發現有這樣一個問題﹕ object DataSource1: TDataSource DataSet = ADOTable1 Left = 144 Top = 48 end 此處說明您使用的DataSet資料集元件是ADOTable1﹐而您的問題中敘述到的是ADOQuery1﹐請檢查一下此部分﹐可能是筆誤而造成刪除到其它資料表﹐而不是ADOTable1元件對應之資料表的現象﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-12-03 20:07:17 IP:218.16.xxx.xxx 未訂閱
引言: 您好﹗ 剛才檢查了一下您貼出的Project部分程式碼﹐發現有這樣一個問題﹕ object DataSource1: TDataSource DataSet = ADOTable1 Left = 144 Top = 48 end 此處說明您使用的DataSet資料集元件是ADOTable1﹐而您的問題中敘述到的是ADOQuery1﹐請檢查一下此部分﹐可能是筆誤而造成刪除到其它資料表﹐而不是ADOTable1元件對應之資料表的現象﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
不好意思,是我贴错了 应该是Adotable1.delete; 我个人认为,代码应该没问题,我查看过一些资料,提到此条指令只是在该记录上做了删除标志,并未删除,不知该如何把把这些有删除标志的记录删除,谢谢。 努力,相信会做的更好!
cashxin2002
版主


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-12-03 20:25:44 IP:63.84.xxx.xxx 未訂閱
您好!    資料的刪除, 在實際意義上如您所說, 并沒有將資料真正的刪除, 而是對被刪除資料加上刪除記號, 但資料庫在資料集元件的連接和資料感知元件的顯示上, 應該不能看到被刪除資料, 因為加有刪除記號的資料不會經此連接被擷取, 其只是影響資料庫檔案的Size而已, 所以小弟覺得問題應不是在此. 您可利用K.Top查尋功能找一下相關的問題, 印象中已有好幾篇的類似提問.    針對刪除記號的問題, 您使用的是DBF(Foxpro)資料庫形態, 小弟尚不熟悉, 用Access資料庫形態舉例來講, 可用其工具下拉式選單的壓縮和修愎資料庫的功能來真正刪除帶有刪除記錄的資料, 以達到減小檔案Size和修愎資料庫錯誤的目的. 以下是使用Access資料庫形態時, 程式處理壓縮和修愎資料庫的範例連接: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=17920    參考看看!    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
stonys
初階會員


發表:64
回覆:111
積分:38
註冊:2002-09-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-12-04 00:30:06 IP:211.74.xxx.xxx 未訂閱
引言:
引言: 您好﹗ 剛才檢查了一下您貼出的Project部分程式碼﹐發現有這樣一個問題﹕ object DataSource1: TDataSource DataSet = ADOTable1 Left = 144 Top = 48 end 此處說明您使用的DataSet資料集元件是ADOTable1﹐而您的問題中敘述到的是ADOQuery1﹐請檢查一下此部分﹐可能是筆誤而造成刪除到其它資料表﹐而不是ADOTable1元件對應之資料表的現象﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
不好意思,是我贴错了 应该是Adotable1.delete; 我个人认为,代码应该没问题,我查看过一些资料,提到此条指令只是在该记录上做了删除标志,并未删除,不知该如何把把这些有删除标志的记录删除,谢谢。 努力,相信会做的更好!
您好 請您試試看下以下的指令 Adotable1.delete; Adotable1.UpdateBatch; 我有試過,應該可以才對~
系統時間:2024-11-25 12:30:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!