Функция для записи изменений в БД
От: FireShock Россия  
Дата: 15.01.05 05:23
Оценка:
Попросил знакомый вот что...
Пишет прогу на Делфи с компонентом DBGrid. После изменения какой-либо записи в DBGrid не получается внести изменения сразу в БД, только при закрытиии приложения. Говорит, все методы попробовал. Post() не помогает.
Каким образом внести изменения. Хотя бы при нажатии на кнопку.
... << RSDN@Home 1.1.4 beta 3 rev. 273>>
Instagram
Re: Функция для записи изменений в БД
От: AMogil Россия  
Дата: 15.01.05 06:57
Оценка: 2 (1)
Здравствуйте, FireShock, Вы писали:

FS>Попросил знакомый вот что...

FS>Пишет прогу на Делфи с компонентом DBGrid. После изменения какой-либо записи в DBGrid не получается внести изменения сразу в БД, только при закрытиии приложения. Говорит, все методы попробовал. Post() не помогает.
FS>Каким образом внести изменения. Хотя бы при нажатии на кнопку.

Либо CashedUpdates := False и Post будет работать, либо ApplyUpdates;

Алексей.
... << RSDN@Home 1.1.3 stable >>
Re: Функция для записи изменений в БД
От: Softwarer http://softwarer.ru
Дата: 17.01.05 08:36
Оценка:
Здравствуйте, FireShock, Вы писали:

FS>Каким образом внести изменения. Хотя бы при нажатии на кнопку.


Есть подозрение, что твоему знакомому следует ознакомиться с понятием "транзакция", в частности, с оператором commit и его реализацией в Delphi.
Re[2]: Функция для записи изменений в БД
От: FireShock Россия  
Дата: 17.01.05 09:48
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Есть подозрение, что твоему знакомому следует ознакомиться с понятием "транзакция", в частности, с оператором commit и его реализацией в Delphi.

Так ему и передал. Ждем ответа
... << RSDN@Home 1.1.4 beta 3 rev. 285>>
Instagram
Re[2]: Функция для записи изменений в БД
От: MishaMW Россия  
Дата: 17.01.05 15:34
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Здравствуйте, FireShock, Вы писали:


FS>>Каким образом внести изменения. Хотя бы при нажатии на кнопку.


S>Есть подозрение, что твоему знакомому следует ознакомиться с понятием "транзакция", в частности, с оператором commit и его реализацией в Delphi.


Дело в том, что база в DBF, A Query выполняет роль Table.
Re[3]: Функция для записи изменений в БД
От: wildwind Россия  
Дата: 17.01.05 15:45
Оценка:
Здравствуйте, MishaMW, Вы писали:

MMW>Дело в том, что база в DBF, A Query выполняет роль Table.


Вот и давай все подробно и по порядку.
Re[3]: Функция для записи изменений в БД
От: Softwarer http://softwarer.ru
Дата: 17.01.05 15:53
Оценка:
Здравствуйте, MishaMW, Вы писали:

MMW>Дело в том, что база в DBF, A Query выполняет роль Table.


Даже в этом случае версия остается актуальной. Но в любом случае — пока нет описания, что делается, можно только гадать, в чем ошибка.
Re[4]: Функция для записи изменений в БД
От: MishaMW Россия  
Дата: 18.01.05 08:49
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Вот и давай все подробно и по порядку.


на форме соеденены Query1, DataSource1, DBGrid1

Query1.RequestLive:=True;
DBGrid1.ReadOnly:=False;
DBGrid1.Columns[8].ReadOnly:=False;

Пользователь вводит в 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-а, и нужно, чтобы при переходе в другую ячейку или при нажатии кнопки данные сохранялись. На самом же деле они сохраняются только при выходе из прилодения.
Re[5]: Функция для записи изменений в БД
От: wildwind Россия  
Дата: 19.01.05 14:07
Оценка: 2 (1)
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.