You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Delphi中FireDAC实现新增、更新、删除记录的方法求助

嘿,我来帮你搞定Delphi里FireDAC配合TDBGrid的增删改功能!看你已经搞定了下拉框加载和多表查询,剩下这三个功能其实也不难,给你直接上可用的代码,记得根据你实际的塞尔维亚语表结构替换字段名哦:

新增记录功能

这个功能会向protocols表插入一条新记录,关联你已有的Department下拉框值:

procedure TForm1.btnAddClick(Sender: TObject);
begin
  try
    // 让查询进入新增编辑状态
    FDQueryProtocols.Append;
    // 替换成你实际的列名,这里用测试名示例
    FDQueryProtocols.FieldByName('Department').AsString := cbbDepartment.Text;
    FDQueryProtocols.FieldByName('ProtocolNumber').AsString := edtProtocolNumber.Text;
    FDQueryProtocols.FieldByName('CreateDate').AsDateTime := Now;
    // 提交新增到数据库
    FDQueryProtocols.Post;
    // 刷新表格显示新记录
    FDQueryProtocols.Refresh;
    ShowMessage('记录新增成功!');
  except
    on E: Exception do
    begin
      FDQueryProtocols.Cancel; // 出错时取消编辑
      ShowMessage('新增失败:' + E.Message);
    end;
  end;
end;
更新记录功能

先确保TDBGrid选中了要修改的记录,然后更新对应字段:

procedure TForm1.btnUpdateClick(Sender: TObject);
begin
  // 检查是否有选中的记录
  if FDQueryProtocols.Active and not FDQueryProtocols.IsEmpty then
  try
    // 进入编辑模式
    FDQueryProtocols.Edit;
    // 更新字段值,替换为你的实际列名
    FDQueryProtocols.FieldByName('Department').AsString := cbbDepartment.Text;
    FDQueryProtocols.FieldByName('ProtocolNumber').AsString := edtProtocolNumber.Text;
    FDQueryProtocols.FieldByName('UpdateDate').AsDateTime := Now;
    // 提交更新
    FDQueryProtocols.Post;
    FDQueryProtocols.Refresh;
    ShowMessage('记录更新成功!');
  except
    on E: Exception do
    begin
      FDQueryProtocols.Cancel;
      ShowMessage('更新失败:' + E.Message);
    end;
  end
  else
    ShowMessage('请先选中一条要更新的记录!');
end;
删除记录功能

删除前加个确认对话框,避免误删操作:

procedure TForm1.btnDeleteClick(Sender: TObject);
begin
  if FDQueryProtocols.Active and not FDQueryProtocols.IsEmpty then
  begin
    if MessageDlg('确定要删除这条记录吗?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    try
      FDQueryProtocols.Delete;
      // 如果开启了缓存更新,需要提交到数据库
      if FDQueryProtocols.CachedUpdates then
        FDQueryProtocols.ApplyUpdates(0);
      FDQueryProtocols.Refresh;
      ShowMessage('记录删除成功!');
    except
      on E: Exception do
        ShowMessage('删除失败:' + E.Message);
    end;
  end
  else
    ShowMessage('请先选中一条要删除的记录!');
end;

几个关键注意事项:

  • 确保你的TFDConnection已经正确配置并成功连接到数据库
  • 如果你的查询开启了CachedUpdates(缓存更新),增删改之后一定要调用FDQueryProtocols.ApplyUpdates(0)把更改提交到数据库,之后可以用FDQueryProtocols.CommitUpdates清除缓存
  • 所有代码里的字段名(比如DepartmentProtocolNumber)记得替换成你实际的塞尔维亚语表结构列名
  • TDBGrid必须关联到TDataSource,且DataSource的DataSet属性要设置为你的FDQueryProtocols查询组件

内容的提问来源于stack exchange,提问作者user9784250

火山引擎 最新活动