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;
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;
6条答案
按热度按时间vtwuwzda1#
取决于您与DBGrid链接的数据集。TClientDataset可以。
z6psavjg2#
如果TDBGrid连接到内存数据集,则可以。您将通过ID在数据库中查询所选记录,同时使用您获得的结果(在内存中)修改它(所选记录)。
nxowjjhe3#
DBGrid中的数据源的数据集是什么?
如果您正在使用ADOConnection,并使用ADOTable或ADOQuery作为数据集,则可以尝试以下脚本:
或
上面的那些脚本将刷新整个DBGrid。
据我所知,现在有办法刷新DBGrid中的一条记录。如果我说错了,请纠正我。:)
tf7tbtn24#
您需要在刷新之前保存ID,然后通过将光标定位在旧记录中来定位相同的ID。就像这样:
或依赖于数据集,请查看此函数是否起作用:
xpcnnkqh5#
您可以使用输入框询问特定内容,获取值以查找要编辑的内容,然后使用定位功能进行查找,如果找到,则进行编辑并提交
kkih6yb86#
下面的代码可以在C++Builder中运行,所以一旦转换为Delphi,它就应该可以运行。您将看到对记录数量的测试,这是因为低于500条记录(来自我的数据库的测试),完全刷新实际上比只筛选到当前记录、刷新它、取消筛选然后定位原始记录更快。