delphi中 dataset容易出錯的地方
最近寫delphi專案,用到的資料集中的dataset,一直修改exception啊,寫下過程。
在對資料集進行任何操作之前,首先要開啟資料集。要開啟資料集,可以把Active屬性設為True,例如:
CustTable.Active := True;
也可以呼叫Open函式,例如:CustQuery.Open;
要關閉資料集,可以把Active屬性設為False或者呼叫Close函式。
其次 如果有exception的話,就要判斷state,下面我列舉下state的值(這樣是我從網上找的)
State屬性是隻讀的,下面列出了State屬性可能的值:
.dsInactive 資料集已關閉,不能訪問它的資料;
.dsBrowse 資料集已開啟,可以瀏覽資料但不能修改資料;
.dsEdit 此時為編輯狀態,可以修改資料;
.dsInsert 此時可以插入一條新的記錄;
.dsSetKey 只適用於TTable和TClientDataSet,此時可以設定範圍和鍵值,並且可以呼叫GotoKey函式;
.dsCalcFields 正在處理OnCalcFields事件(當欄位需要指定一個值的時候促發的事件),此時不能修改非計算欄位的值;
.dsCurValue 內部使用;
.dsNewValue 內部使用;
.dsOldValue 內部使用;
.dsFilter 正在進行過濾操作。
當我看到我的專案的state為 dsInactive ,被踢我有多高行啦,然後立馬改為dsedit,尼瑪。但是還不管用,然後又看到方法:
如果應用程式要修改資料集的資料,必須首先進入dsEdit狀態。要進入dsEdit狀態,可以呼叫Edit。不過,呼叫Edit並不能保證一定能進入dsEdit狀態,這還取決於CanModify屬性的值。如果這個屬性返回True的話,表示資料集是可以讀和寫的。
終於完成了,尼瑪,就因為這被經理說,效率慢,該錯誤還是比較容易的,但是exception,就不是那麼簡單。下面補充下dataset的其他state的介紹:
下面的功能我是沒用到的::
6.7.2 插入新的記錄 |