ado的cancelbatch的問題,(20分)

W

wen_one

Unregistered / Unconfirmed
GUEST, unregistred user!
本人用adoquery的緩沖進行數據處理,但當新增一記錄並對其編輯,然後用cancelbatch
時就出錯了。出錯信息如下:
row handle referred to a deleted row or a row marked for deletion.
請不要叫我在cancelbatch之前,作requery。這種方法是不實際的,因為他將定位到首
記錄
 
function ShowListView(ClientDataSet : TClientDataSet; ListView : TListView; ImageIndex : Integer) : Integer;
var
i, j : Integer;
ListItem : TListItem;
begin
ListView.Items.Clear;
with ClientDataSet do
begin
if Active = True
then
First
else
Open;
for i := 0 to RecordCount - 1 do
begin
with ListView.Items do
begin
ListItem := Add ;
for j := 0 to Fields.Count - 1 do
With Item do
begin
if j = 0 then
ListItem.Caption := Fields[j].AsString
else
begin
if Fields[j].DataType = ftDateTime then
begin
if TimeToStr(Fields[j].AsDateTime) = '0:00:00' then
ListItem.SubItems.Add(Fields[j].AsString + ' 0:00:00')
else
ListItem.SubItems.Add(Fields[j].AsString);
end
else
ListItem.SubItems.Add(Fields[j].AsString);
end;
end;
ListItem.ImageIndex := ImageIndex;
Next;
end;
end;
end;
Result := 0;
end;
 
老人家你好厉害哟,一给就是那么一大串
 
不知老人家給的是什麼意思呢?
 
把参数代进去就行了
function ShowListView(ClientDataSet : TClientDataSet;
//数据集
ListView : TListView;
//TListView
ImageIndex : Integer) : Integer;
ImageList中的索引
 
DELPHI的一个BUG,参考
http://web.orbitel.bg/vassil/BUGS.htm#BUG_TCustomADODataSet_CancelBatch
解决方法1.CancelBatch前定位到第一条记录
2.使用TBetterADODataSet
3.修改ADODB.PAS程序,在CancelBatch里加个判断,具体参考上面站点
 
顶部