1

可能吗?如何?

4

5 回答 5

0

取决于您与 DBGrid 链接的数据集。TClientDataset 可以。

于 2010-02-22T14:40:57.563 回答
0

DBGrid 中 DataSource 的 DataSet 是什么?

如果您使用 ADOConnection,并使用 ADOTable 或 ADOQuery 作为数据集,那么您可以尝试以下脚本:

ADOTable1.close;
ADOTable1.open;

或者

ADOQuery1.close;
ADOQuery1.open;

上面的那些脚本将刷新整个 DBGrid。

据我所知,现在有办法刷新 DBGrid 中的一条记录。如我错了请纠正我。:)

于 2013-10-25T22:43:26.737 回答
0

如果 TDBGrid 连接到内存数据集,则可以。您将通过 ID 查询数据库以获取所选记录,同时使用您获得的结果(内存中)修改它(所选记录)。

于 2010-05-24T21:28:24.267 回答
0

您可以使用输入框询问特定内容,获取值以查找您要编辑的内容,然后您可以使用定位功能找到它,如果找到,您可以编辑并发布

Var
    sRegisterNo, sAnswer : string;
Begin
    sAnswer := Inputbox('Registerno', 'Enter the user registerNo you want to edit' , '' );

    With dmName do
    Begin
        sRegisterNo := tblMembers['RegisterNo'];

        If sRegisterNo.locate(sAnswer,  'sRegisterNo') =  True then
        Begin
            tblMembers.edit;
            // Use edits to give the new values 
            // Ex. EdtRegisterno.text := RE001;
            tblMembers.post
        End;
    End;
End;
于 2018-10-28T17:05:37.657 回答
0

刷新前需要保存ID,然后通过将光标定位在旧Record中找到相同的ID。像这样:

procedure TForm1.refreshQuery;
var
   oldID: integer;
begin
   oldID :=query1Id_table.AsInteger;
   query1.Refresh;
   //or if refresh not works
   //query1.close;
   //query1.open;
   query1.Locate('Id_table',oldID,[]);
end; 

或依赖于DataSet,看看这个函数是否有效:

query1.RefreshCurrentRow;
于 2018-10-27T17:03:14.227 回答