Сохранение данных в базу Access

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

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

Ответить
Elena
новенький
Сообщения: 29
Зарегистрирован: 02.05.2012 20:35:37

Сохранение данных в базу Access

Сообщение Elena »

Не могу понять почему не данные не сохраняются в базу.

Делаю все как в делфи

Код: Выделить всё

Form1.SQLQuery1.Insert;  


Потом сохраняю.

Код: Выделить всё

 Form1.SQLQuery1.Post; 


Пока идет выполнение проета данные отображаются на форме измененные, но после завершения в базе ничего не появляется и ничего не изменяется.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

А после:
Elena писал(а):Form1.SQLQuery1.Post;

SQLQuery1.ApplyUpdate не пробовали применить? Там, наверное, дополнительная буферизация.
Elena
новенький
Сообщения: 29
Зарегистрирован: 02.05.2012 20:35:37

Сообщение Elena »

нет не пробовала. Теперь попробовала и все заработало!))
Спасибо!

Добавлено спустя 13 минут 36 секунд:
Это сработало при создании новой записи, а при удалении и редактировании ругается сильно и ничего не сохраняет.
При удалении и редактиоовании что-то другое надо писать?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Elena писал(а):При удалении и редактиоовании что-то другое надо писать?

А не могли бы Вы привести текст ругательства? Обычно этот текст сильно проясняет картину. ;)
Elena
новенький
Сообщения: 29
Зарегистрирован: 02.05.2012 20:35:37

Сообщение Elena »

Проект вызвал класс исключений 'UpdateError' с сообщением:
An error occured while applying the updates in a record: SQLQuety1: No update query specified and failed to generate one. (No Fields for inclusion in where statement found)
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Это говорит о том, что SQLQuery не может произвести команду UPDATE, т.к. соответствующее свойство компонента пусто.

В Дельфи изменением данных в сложных запросах занимался специальный компонент - UpdateSQL, который генерировал специальные запросы для вставки (INSERT), удвления (DELETE) и обновления (UPDATE) данных. У SQLQuery для этого существуют соответствующие свойства - InsertSQL, DeleteSQL и UpdateSQL, в которые нужно записать тексты запросов, которые всё это должны делать с редактируемой строкой данных. Если Вы не знаете, что в эти свойства писать, то сначала посмотрите, что сгенерирует для такого же запроса компонент UpdateSQL и скопируйте сгенерированные команды оттуда в соответствующие свойства SQLQuery.
Elena
новенький
Сообщения: 29
Зарегистрирован: 02.05.2012 20:35:37

Сообщение Elena »

А что за компонент UpdateSQL? Я такого не смогла найти(
Аватара пользователя
Little_Roo
энтузиаст
Сообщения: 639
Зарегистрирован: 27.02.2009 18:56:36
Откуда: Санкт-Петербург

Сообщение Little_Roo »

Elena писал(а):А что за компонент UpdateSQL? Я такого не смогла найти(

В Zeos есть
Elena
новенький
Сообщения: 29
Зарегистрирован: 02.05.2012 20:35:37

Сообщение Elena »

Наконец-то получилось установить Zeos. Нашла там компонент TZUpdateSQL.
Расскажите, пожалуйста, что теперь с ним делать, что бы получить эти самые сгенерированные коменды?
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Код: Выделить всё

ZQuery1.SQL.Text:='select id,str_ from new_table1'
ZQuery1.UpdateObject:=ZUpdateSQL1
ZUpdateSQL1.ModifySQL:='update new_table1 set str_=:str_ where id=:id'
ZUpdateSQL1.InsertSQL:='insert into new_table1 (id,str_) values (:id,:str_)'


:str_ это параметр содержащий значение столбца str_
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

А не проще SQL поучить?
Ответить