Есть ли способ обновить / обновить только одну запись в delphi dbgrid? - PullRequest
1 голос
/ 22 февраля 2010

Возможно ли это? Как?

Ответы [ 5 ]

0 голосов
/ 28 октября 2018

Вы можете использовать поле ввода, запрашивая что-то конкретное, чтобы получить значение для поиска того, которое вы хотите отредактировать, затем вы можете использовать функцию locate, чтобы найти его, и если оно будет найдено, вы редактируете и публикуете

Var
    sRegisterNo, sAnswer : string;
Begin
    sAnswer := Inputbox('Registerno', 'Enter the user's 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;
0 голосов
/ 27 октября 2018

Вам необходимо сохранить идентификатор перед обновлением, а затем найти этот идентификатор, поместив курсор в старую запись. Как это:

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;
0 голосов
/ 25 мая 2010

Если TDBGrid был подключен к набору данных памяти, вы могли бы. Вы будете запрашивать базу данных для выбранной записи по идентификатору, изменяя ее (выбранную запись) с результатами (в памяти), которые вы получили.

0 голосов
/ 26 октября 2013

Какой у вас набор данных для источника данных в DBGrid?

Если вы используете ADOConnection и работаете с ADOTable или ADOQuery в качестве DataSet, то вы можете попробовать следующий скрипт:

ADOTable1.close;
ADOTable1.open;

или

ADOQuery1.close;
ADOQuery1.open;

Эти скрипты выше обновят всю DBGrid.

Насколько я знаю, теперь есть способ обновить одну запись в DBGrid. Поправьте меня если я ошибаюсь. :)

0 голосов
/ 22 февраля 2010

Зависит от того, какой набор данных вы связали с DBGrid.TClientDataset может.

...