Базы Данных и Lazarus

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Базы Данных и Lazarus

Сообщение lLexl » 06.06.2009 20:22:11

Доброго времени суток всем!
Вот, столкнулся с такой проблемой в Лазарусе. Нужно написать нечто вроде коротких уроков по БД (ФБ) в Лазарусе. Сам немного знаю Делфи, поэтому отталкиваюсь от него. В принципе, в уроках нужно упомянуть редактирование БД и запросы. Сразу столкнулся с первой неприятностью. Знакомого класса TTable нету =(. Как аналог использую SQLQuery с запросом "select * from xxx". Прочитал, что необходим метод ApplyUpdates в случае этого запроса для сохранения данных, которые ввел через Лазарус, но он не помогает =( Все данные, которые я ввожу проподают как только я закрываю приложение =( Попробовал поискать другие варианты, самое ближнее это TDbf, но он не годится для ФаерБерда. Насколько понял он даже не может отличить в одной БД несколько таблиц.

Попробовал поставить Датасет уважаемого Alexs'а, но мой Лазарус (запускаю с w7) отказывается устанавливать UIBlaz.

Очень прошу помочь с данной неприятнотностью и заранее благодарю за помощь =)
lLexl
незнакомец
 
Сообщения: 4
Зарегистрирован: 06.06.2009 17:19:42

Re: Базы Данных и Lazarus

Сообщение EmeraldMan » 06.06.2009 21:26:47

К IBConnection подключаем SQLTransaction.
Для сохранения данных в базе требуется две операции
Код: Выделить всё
Query.ApplyUpdates;
SQLTransaction.Commit; 

Вот так должно работать.
Аватара пользователя
EmeraldMan
постоялец
 
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород

Re: Базы Данных и Lazarus

Сообщение lLexl » 06.06.2009 21:54:26

Вы себе даже не представляете, как я вам благодарен, EmeraldMan! =)
Я нечто похожее подозревал, исходя из метода исключений. И как раз начал читать про трансакции, но все равно не дощел бы до этого метода =)
Но это решение о двух концах =) После подтверждения трансакции приложение отконнективается от БД и грид умирает, немного не красиво, но терпимо =)
Еще раз спасибо, EmeraldMan!

Буду надеятся, что последущие вопросы смогу решить сам =)
ЗЫ
А насчет невозможности скомпилировать UIB 1.00 никто не подскажет? =) Скачал, распоковал, указал, а он не ставится, а из-за него все остальное (
Компиляцию останавливает на строчке
SQL_TIMESTAMP : EncodeTimeStamp(Value, PISCTimeStamp(sqldata));
lLexl
незнакомец
 
Сообщения: 4
Зарегистрирован: 06.06.2009 17:19:42

Re: Базы Данных и Lazarus

Сообщение v-t-l » 07.06.2009 17:02:19

lLexl писал(а):После подтверждения трансакции приложение отконнективается от БД и грид умирает, немного не красиво, но терпимо

Код: Выделить всё
SQLTransaction1.CommitRetaining;

вместо
Код: Выделить всё
SQLTransaction1.Commit;


Добавлено спустя 8 минут 24 секунды:
А вообще, как я понимаю
Код: Выделить всё
(Dataset as TSQLQuery).ApplyUpdates;
нужно вписать один раз в обработчик события BeforeClose того же SQLQuery1;
а
Код: Выделить всё
SQLTransaction1.Commit;
в BeforeDisconnect IBConnection1.
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Базы Данных и Lazarus

Сообщение lLexl » 07.06.2009 18:44:00

Насчет SQLTransaction1.CommitRetaining; я уже прочитал, но все равно благодарю за помощь =)
Их я сделал просто как кнопку Save. Довольно удобно получилось )
Сейчас проблема уже в другом =( Лазарус отказывается редактировать из грида значение ячейки. После .ApplyUpdates вылетает ошибка SQL. Насколько понял, ему не нравится то, что я не добовлял новые ячейки, а изменял старые =(
lLexl
незнакомец
 
Сообщения: 4
Зарегистрирован: 06.06.2009 17:19:42

Re: Базы Данных и Lazarus

Сообщение alexs » 07.06.2009 22:11:28

UIB - вот основная страницв проекта http://www.progdigy.com/
отсюда (а ещё лучше из их svn) брать исходники
там давно версия 2.1
1-я уже не скомпилируется
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Базы Данных и Lazarus

Сообщение lLexl » 07.06.2009 23:55:15

Вся проблема в том, что я и скачал оттуда. Версия UIB 2.1, но когда в лазарусе выбираю пакет UIBlaz, там сообщение, пакет UIBlaz 1.0 помечен на установку, хотите пересобрать лазарус? Нажимаю да и он мне выдает ошибку и выделяет ту самую строку кода.
Версия лазаруса lazarus-0.9.26.2-fpc-2.2.2-win32, пробовал ставить 24, там UIB встал, а вот Ваш DataSet_1_28 все равно не захотел =)
lLexl
незнакомец
 
Сообщения: 4
Зарегистрирован: 06.06.2009 17:19:42


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 26

Рейтинг@Mail.ru