Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2010, 13:20   #1
ancia
Новичок
Джуниор
 
Регистрация: 17.02.2010
Сообщений: 2
По умолчанию закрытие транзакций

доброго времени суток =)
есть несколько вопросов, помогите пожалуйста.
база на firebird, интерфейс на lazarus.
связь с базой через IBConnection, Datasource, SQLTransaction, SQLQuery. Данные вывожу через dbgrid.
вопросы:
1)заполняю таблицу, сохраняю изменения, но эти изменения отображаются только в редактируемой таблице. это неудобно тем, что есть еще таблицы в которых задействован выпадающий список. Вновь внесенные данные не отображаются в этом списке, пока не выйду полностью из программы и не открою ее снова. Получается транзакции закрываются полностью только при завершнии работы с программой? как сделать, чтобы они закрывались при сохранении? Переподключение к базе не помогает
код сохранения:
Код:
procedure TForm5.Button1Click(Sender: TObject);
begin
  dm.SQLQuery5.ApplyUpdates;
  dm.sqlquery5.Active:=false;
  dm.SQLtransaction1.Commit;
  dm.sqltransaction1.StartTransaction;
  dm.sqlquery5.Active:=true;
  end;
2) dbgrid отображает table1 (поля: id, n, nazv). Есть вторая таблица table2 (n_dog, isp, podr). Надо чтобы при клике по строке забирались данные из поля n и выполнялся запрос 'select table1.n, table2.isp, table2.podr from table1, table2 where n=n_dog'. Результат запросы выводился в другой dbgrid.

заранее спасибо за любую помощь =)
ancia вне форума Ответить с цитированием
Старый 10.03.2010, 13:43   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

1. dm.sqltransaction1.StartTransaction ; - совершенно лишняя строка.
2.
Цитата:
эти изменения отображаются только в редактируемой таблице. это неудобно тем, что есть еще таблицы
А как вы хотели ? Откуда эти таблицы знают, что "где-то сбоку кто-то что-то там у себя" изменил ?
Ничего не поделаешь, нужно все таблицы либо рефрешить (если это тэйблы), либо переоткрывать (если это квэрики).

Второй вопрос - тупой, ибо вы уже сами описали процесс решения.

И последнее.
Вдумчиво читаем правила.
А там чуть ли не первым пунктом идет - "одна тема - один вопрос"...
Намек понятен ?

Последний раз редактировалось mihali4; 10.03.2010 в 13:46.
mihali4 вне форума Ответить с цитированием
Старый 10.03.2010, 15:56   #3
ancia
Новичок
Джуниор
 
Регистрация: 17.02.2010
Сообщений: 2
По умолчанию

насчет первого вопроса. последовательность процедур такая: редактируем таблицу-> сохраняем изменения-> закрываем форму-> открываем другую таблицу и в выпадающих списках уже должны быть изменения. "кверики" переводить в false/true или close/open не помогает. как можно "переобращение" к базе сделать?

насчет второго вопроса: вы опытный программист, может мои вопросы и кажутся вам "тупыми". для меня же нет... как сделать это в теории я понимаю, а реализовать, чтобы был именно необходимый мне результат, не получается. как правило, то что знают- не спрашивают. И чем писать "тупой" - лучше бы дали простой совет. Все-таки создам новую тему со своим "тупым" вопросом, может найдутся добрые люди, которым не сложно будет помочь.
ancia вне форума Ответить с цитированием
Старый 11.03.2010, 16:12   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

У транзакций Firebird есть параметры, в т.ч. влияющие на уровень их изоляции. Если почитать про эти параметры, то можно решить проблему чтения изменений в базе, сделанных другими транзакциями. Не знаю как lazarus обходится с параметрами транзакций по умолчанию, но в вашем случае установку параметров надо брать в свои руки.
Скандербег вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие формы.... sergiksergik Microsoft Office Excel 18 22.09.2009 20:23
Закрытие формы RIO Общие вопросы Delphi 2 27.08.2009 17:10
Закрытие вкладки beemoto Общие вопросы Delphi 36 23.07.2009 23:19
Самый типичный пример транзакций - перевод денег с одного счета на другой. аня741 Помощь студентам 1 20.03.2009 00:10
Протокол защищенных электронных транзакций Set Nathan Помощь студентам 3 27.01.2007 16:08