Delphi Dbgrid删除了一条记录

时间:2016-08-24 08:59:51

标签: database delphi dbgrid paradox

我有一个多个标签页。我的PageControl中的每个标签页都包含一个带有一些按钮的Dbgrid来操作这个dbgrid。

有时,当我点击按钮删除时,我的DBGrid不会改变。删除后,我在DBgrid中看到了我的价值。

If MyTable.recordcount > 0 then
begin
 str := 'Value of name field/**' + MyTable.FieldByName('Name').AsString+'**/';
 If Application.MessageBox(PChar(str), PChar('NAME'), MB_OKCANCEL + MB_ICONQUESTION) = IDOK then
 begin
      MyTable.Delete;
 end;
end;

我尝试添加

 MyTable.Refresh;
删除后

但不起作用。 MessageBox中myfield的值是正确的!

当我在MyDBgrid中选择另一个选项卡时,会出现此问题。 这可能是我的DBGrid中焦点的问题?它可能是我的DBGrid(dsBrowser,dsEdit,...)的状态的问题?

=============================================== ==========

我尝试为BeforeDelete事件和AfterDelete事件创建一个日志:

Log(1,'------------------------------------Before Del');
Log(1,Format('DataSet.IsEmpty:%s',[BoolToStr1(DataSet.IsEmpty)]));
Log(1,Format('DataSet.State:%d',[Ord(DataSet.State)]));
Log(1,'--------');
Log(1,Format('DataSet.RecNo:%d',[DataSet.RecNo]));
Log(1,Format('DataSet.TabSheet:%s',[DataSet.FieldByName('TabSheetName').AsString]));
Log(1,Format('DataSet.FieldName:%s',[DataSet.FieldByName('FieldName').AsString]));
Log(1,Format('DataSet.FieldId:%s',[DataSet.FieldByName('FieldId').AsString])); 
在AfterDelete事件上

Log(1,'------------------------------------After Del');
Log(1,Format('DataSet.IsEmpty:%s',[BoolToStr1(DataSet.IsEmpty)]));
Log(1,Format('DataSet.State:%d',[Ord(DataSet.State)]));
Log(1,'--------');
Log(1,Format('DataSet.RecNo:%d',[DataSet.RecNo]));
Log(1,Format('DataSet.TabSheet:%s',[DataSet.FieldByName('TabSheetName').AsString]));
Log(1,Format('DataSet.FieldName:%s',[DataSet.FieldByName('FieldName').AsString]));
Log(1,Format('DataSet.FieldId:%s',[DataSet.FieldByName('FieldId').AsString])); 

我将标签页用作:

enter image description here

我获得此日志

------------------------------------Before Del
DataSet.IsEmpty:False
DataSet.State:1
--------
DataSet.RecNo:7
DataSet.TabSheet:tabsheet_0
DataSet.FieldName:
DataSet.FieldId:03
------------------------------------After Del
DataSet.IsEmpty:False
DataSet.State:1
--------
DataSet.RecNo:6
DataSet.TabSheet:tabsheet_0
DataSet.FieldName:
DataSet.FieldId:03

您可以在我的日志中看到:删除包含03的行后,数据集未更改(filedname和fieldId未更改/ RecNo属性已更改)。

0 个答案:

没有答案