Попросил знакомый вот что...
Пишет прогу на Делфи с компонентом DBGrid. После изменения какой-либо записи в DBGrid не получается внести изменения сразу в БД, только при закрытиии приложения. Говорит, все методы попробовал. Post() не помогает.
Каким образом внести изменения. Хотя бы при нажатии на кнопку.
Здравствуйте, FireShock, Вы писали:
FS>Попросил знакомый вот что... FS>Пишет прогу на Делфи с компонентом DBGrid. После изменения какой-либо записи в DBGrid не получается внести изменения сразу в БД, только при закрытиии приложения. Говорит, все методы попробовал. Post() не помогает. FS>Каким образом внести изменения. Хотя бы при нажатии на кнопку.
Либо CashedUpdates := False и Post будет работать, либо ApplyUpdates;
Здравствуйте, Softwarer, Вы писали:
S>Есть подозрение, что твоему знакомому следует ознакомиться с понятием "транзакция", в частности, с оператором commit и его реализацией в Delphi.
Так ему и передал. Ждем ответа
Здравствуйте, Softwarer, Вы писали:
S>Здравствуйте, FireShock, Вы писали:
FS>>Каким образом внести изменения. Хотя бы при нажатии на кнопку.
S>Есть подозрение, что твоему знакомому следует ознакомиться с понятием "транзакция", в частности, с оператором commit и его реализацией в Delphi.
Дело в том, что база в DBF, A Query выполняет роль Table.
Пользователь вводит в MaskEdit1 номер и при нажатии на кнопку в DBGrid1 отображается одна соответствующая запись
procedure TForm1.Button1Click(Sender: TObject); //поиск телефона
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM KSN WHERE priglas IS NULL');
Query1.Open;
Label2.Caption:='Не приглашено '+IntToStr(Query1.RecordCount)+' человек';
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM KSN WHERE priglas IS NOT NULL');
Query1.Open;
Label3.Caption:='Приглашено '+IntToStr(Query1.RecordCount)+' человек';
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM KSN WHERE (NOMER=:A1)');
Query1.Params[0].AsFloat:=StrToFloat(MaskEdit1.Text);
Query1.Open;
Button2.Enabled:=True;
Label1.Caption:='Отобрано '+IntToStr(Query1.RecordCount)+' записей';
end;
Пользователь вводит данные в столбец DBGrid-а, и нужно, чтобы при переходе в другую ячейку или при нажатии кнопки данные сохранялись. На самом же деле они сохраняются только при выходе из прилодения.
Здравствуйте, MishaMW, Вы писали:
MMW>Пользователь вводит данные в столбец DBGrid-а, и нужно, чтобы при переходе в другую ячейку или при нажатии кнопки данные сохранялись. На самом же деле они сохраняются только при выходе из прилодения.
По умолчанию данные сохраняются при переходе на другую строку. Для принудительного сохранения по кнопке сделай так:
procedure TForm1.ButtonSaveClick(Sender: TObject);
begin
if Query1.State = dsEdit then Query1.Post;
end;
BTW: Проще узнать число приглашенных и неприглашенных можно так:
SELECT count(priglas) as Invited, count(*)-count(priglas) as Not_Invited FROM KSN