закрытие транзакций в lazarus

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: закрытие транзакций в lazarus

Re: закрытие транзакций в lazarus

Игорь Акопян » 09 мар 2010, 12:41

ancia, судя по приведённому коду, у вас в голове всё перемешалось ;)

почитайте справку по разделу "Cached Updates"
вот пример из хелпа

[syntax='Delphi']
procedure TForm1.ApplyButtonClick(Sender: TObject)
begin
Database1.StartTransaction;
try
if not (Database1.IsSQLBased) and not (Database1.TransIsolation = tiDirtyRead) then
Database1.TransIsolation := tiDirtyRead;
CustomerQuery.ApplyUpdates; { try to write the updates to the database }
Database1.Commit; { on success, commit the changes }
except
Database1.Rollback; { on failure, undo any changes }
raise; { raise the exception again to prevent a call to CommitUpdates }
end;
CustomerQuery.CommitUpdates; { on success, clear the internal cache }
end;
[/syntax]

по второму вопросу - решение создание связи мастер-дитейл

Re: закрытие транзакций в lazarus

Duncon » 03 мар 2010, 20:06

Во первых вопрос телепатического плана, во вторых он как бы простой..

Re: закрытие транзакций в lazarus

ancia » 03 мар 2010, 19:16

прочитала уже много всего, врежде чем сюда обратиться... Но видимо и тут никто даже попытаться помочь не хочет :( жаль....

Re: закрытие транзакций в lazarus

Duncon » 03 мар 2010, 18:28

Нужно почитать про транзакции и прочие непонятности - материала в сети навалом.

Re: закрытие транзакций в lazarus

ancia » 03 мар 2010, 15:06

опишите, подалуйста, поподробнее- где и что тогда надо прописать?
я привела как раз продедуру сохранения... видимо она неправильная? как сделать надо?

Re: закрытие транзакций в lazarus

Duncon » 02 мар 2010, 18:23

По идее должно быть открытие закрытие, вполне вероятно поэтому и не закрывается, кусок кода ни о чём не говорит.

Re: закрытие транзакций в lazarus

ancia » 02 мар 2010, 13:14

в куске кода, который я привела как раз и происходит закрытие и повторное открытие транзакций....
если я вас не так поняла, опишите поподробнее пожалейства =) я чайник в этом деле....

Re: закрытие транзакций в lazarus

Duncon » 02 мар 2010, 09:37

Ну по логике нужно послать некий запрос что-то типа этого.
START TRANSACTION;
UPDATE ....
COMMIT;

2 вопрос - на onchange вешаем событие - берём значение ячейки и отправляем в функцию обрабатывающую запрос, результат выводим в 2 грид. Вопрос нагугливается быстро.

закрытие транзакций в lazarus

ancia » 02 мар 2010, 00:59

есть проблема :( : закрытие транзакций происходит только при закрытии самой программы.
база на 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.

заранее спасибо =)

Вернуться к началу