Закрытие транзакций в lazarus DBGrid SQLQuery
Добавлено: 02 мар 2010, 00:59
есть проблема :( : закрытие транзакций происходит только при закрытии самой программы.
база на firebird, интерфейс на lazarus.
Создана форма DataModule, на ней располагаются IBConnection1, Datasource1, SQLQuery1, SQLTransaction1. Для каждой формы программы создан на DataModule свои Datasource, SQLQuery. запросы работат отлично. данные отображаю и изменяю через dbgrid. Но при нажатии кнопки "сохранить" визуально изменения сохраняются, а вот в самой базе это происходит только после закрытия программы.
процедура сохранения:
Это неудобно потому что при заполнении некоторых таблиц используются выпадающие списки из других таблиц. И если данные были внесены только что, а программа еще не была перезапущена, то их соответственно нет в списке.
Получается что при запуске прогруммы подключаемся к базе и данные не обновляются до нового подключения? Но при этом все же сохраняются? как исправить эту ситуацию?
и еще вопрос =)
как уже писала-данные отображаются в dbGrid. как сделать так, чтобы при выборе строки в dgbrid, выполнялся запрос и в другом dbgrid отображался результат этого запроса.
например: таблица с полями N, vid. выбираем определенную строку. надо чтобы прочитал из этой строки только N и выполнил такой запрос 'SELECT N, N_dog, nazv, predm, stoim FROM table1, table2 where N=N_dog '. Надо чтобы отобразились только значения с выбранным N.
заранее спасибо =)
база на firebird, интерфейс на lazarus.
Создана форма DataModule, на ней располагаются IBConnection1, Datasource1, SQLQuery1, SQLTransaction1. Для каждой формы программы создан на DataModule свои Datasource, SQLQuery. запросы работат отлично. данные отображаю и изменяю через dbgrid. Но при нажатии кнопки "сохранить" визуально изменения сохраняются, а вот в самой базе это происходит только после закрытия программы.
процедура сохранения:
Код: Выделить всё
procedure TForm6.Button1Click(Sender: TObject);
begin
dm.SQLQuery6.ApplyUpdates;
dm.sqlquery6.Active:=false;
dm.SQLTransaction1.Commit;
dm.sqltransaction1.StartTransaction;
dm.sqlquery6.Active:=true;
end;
Получается что при запуске прогруммы подключаемся к базе и данные не обновляются до нового подключения? Но при этом все же сохраняются? как исправить эту ситуацию?
и еще вопрос =)
как уже писала-данные отображаются в dbGrid. как сделать так, чтобы при выборе строки в dgbrid, выполнялся запрос и в другом dbgrid отображался результат этого запроса.
например: таблица с полями N, vid. выбираем определенную строку. надо чтобы прочитал из этой строки только N и выполнил такой запрос 'SELECT N, N_dog, nazv, predm, stoim FROM table1, table2 where N=N_dog '. Надо чтобы отобразились только значения с выбранным N.
заранее спасибо =)