【问题标题】:Deleting Records in a dbGrid Delphi 2010在 dbGrid Delphi 2010 中删除记录
【发布时间】:2017-03-09 22:54:03
【问题描述】:

我正在为我面临的一个相当严重的问题寻找解决方案; 我想删除 dbGrid 中的记录,但是当我单击我的编码按钮并确认“删除”时,我没有立即找到结果。为了找到删除记录的结果,我必须关闭程序并重新运行它。只有这样我才能看到记录被删除。

我的代码基本如下

procedure TfrmPunte.btnDeleteClick(Sender: TObject);
var
sName, sLeerderNo : string;
begin
with dmPunte do
  begin
    sLeerderNo := tblLeerder['LeerderNr'];
    sName := tblLeerder['NaamVan']; 
    if MessageDlg('Is jy seker dat jy ' + sName + ' met Leerder Nommer ' + sLeerderNo + ' wil wis van die rekords? Neem kennis dat al die rekords van sy/haar aktiwiteite ook uitgevee sal word!', mtWarning, [mbOk, mbCancel],0) = mrOK then
      tblDeelname.Open;
      tblDeelname.First; 
       while NOT tblDeelname.Eof do
        begin
          if tblDeelname['LeerderNr'] = sLeerderNo then
          tblDeelname.Delete;
          tblDeelname.Next;
        end;
      tblLeerder.Delete;
      tblLeerder.Active := False;
      tblLeerder.Active := True;
  end;
end;

我正在使用连接到 ADO 连接的 ADO 表连接到 ACCESS 数据库。我很抱歉,一些变量名称是南非荷兰语。 我该怎么办?

【问题讨论】:

  • 应该删除的记录仍然显示在 db Grid 中,我正在使用带有 ADO 连接的 ADO 表。
  • 快速查看:删除一条记录后,next after delete 将跳过一条记录。你必须在下一个之前插入 else
  • 我唯一能想到的是,你的 dbgrid 连接到其他数据集
  • 哦,请停止对这个问题投反对票。他是一个非常新的成员。你会这样说欢迎吗?请提供帮助。
  • 您似乎在if MessageDlg() then 行之后的行周围缺少begin - end 对。

标签: delphi ms-access ado dbgrid


【解决方案1】:

Table.refresh 并不适用于所有环境。安全的方法是

Table.Active := False; 
Table.Active := True; 

请注意实际数据集丢失的问题。您可以存储它并找回定位。

【讨论】:

  • 感谢克里斯汀的建议,我试过了,但不幸的是还是不行......
  • 比你必须更具体。请向我们展示完整的代码(表格是什么类型?)。在 dbgrid 中删除是什么意思?我会明白:删除数据集中的记录并刷新 dbgrid???
  • 我在答案中添加了我的代码 Christine,非常感谢您迄今为止的所有帮助。
  • @David Heffernan 好问题;也许我要快速从我的经验。为了确保它应该是这样的:DBGrid.DataSource.Dataset.active:=false
  • @ChristineRoss “实际数据集丢失”是什么意思。意思是?还有“你可以存储它并找回定位[原文如此]。”您的意思是“使用 SaveToFile 和 .LoadFromFile 在本地保存”还是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多