Помогите разобраться в приложений с SQLite?
Модератор: Модераторы
Помогите разобраться в приложений с SQLite?
Всем привет,
хочу научиться работать с БД и написал маленькую прогу. Так вроде все получилось, только не получается добавлять, редактировать и удалять записи.
Насколько я понимаю надо прописывать соответствующие команды в InsertSQL, UpdateSQL и DeleteSQL.
Не подскажите, что там прописать?
хочу научиться работать с БД и написал маленькую прогу. Так вроде все получилось, только не получается добавлять, редактировать и удалять записи.
Насколько я понимаю надо прописывать соответствующие команды в InsertSQL, UpdateSQL и DeleteSQL.
Не подскажите, что там прописать?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Смотря какие компоненты вы используете. А вообще-то про SQLite на форуме писалось много раз, воспользуйтесь поиском.
Снег Север писал(а):Смотря какие компоненты вы используете. А вообще-то про SQLite на форуме писалось много раз, воспользуйтесь поиском.
SQLite3Connection1 -> SQLTransaction1 -> SQLQuery1 -> DataSource1 -> (DBGrid1 + DBNavigator1 + DBEdit1)
Все родное.
Да я уже все переискал, до того и дошел, что на скрине... дальше нужна помощь.
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Если у вас в SQLQuery1 стоит типа 'select * from tabel1' и для всех DB компонентов используется один и тот же DataSource1, то можно редактировать и добавлять по кнопкам навигатора, всё должно срабатывать автоматически.
По идей да, но ... вот добавляю в DBGrid запись, нажимаю на галочку, вроде все ок. Прогу закрываю, открываю но ничего нет. А если что то в DBGrid записать, нажать на галочку и потом на Refresh - выдает ошибку
Must apply updates before refreshing data
McLion писал(а):...вот добавляю в DBGrid запись, нажимаю на галочку, вроде все ок. Прогу закрываю, открываю но ничего нет.
Надо перед закрытием проги (или перед закрытием SQLQuery1) написать:
Код: Выделить всё
SQLQuery1.ApplyUpdates;чтобы добавленные в SQLQuery1 данные перенести в саму базу данных, которая на диске.
Добавлено спустя 2 минуты 2 секунды:
McLion писал(а):Must apply updates before refreshing data
А здесь, соответственно, сделать
Код: Выделить всё
SQLQuery1.ApplyUpdates;перед Refresh, потому что Refresh заново считывает данные (добавленные) из файла БД.
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Включите у SQLQuery1 в Options свойство sqoAutoApplyUpdates в true. И тогда программа сама сделает то, что написал товарищ постом выше.
Снег Север писал(а):Включите у SQLQuery1 в Options свойство sqoAutoApplyUpdates в true. И тогда программа сама сделает то, что написал товарищ постом выше.
Прости за банальность, но не нахожу Options...
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Как это? В инспекторе объектов, сразу ниже Name. Еще не встречал такого, чтобы не было...McLion писал(а):Прости за банальность, но не нахожу Options...
Снег Север писал(а):Как это? В инспекторе объектов, сразу ниже Name. Еще не встречал такого, чтобы не было...McLion писал(а):Прости за банальность, но не нахожу Options...
Я загрузил скриншот... нету его, или я слепой.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Снег Север писал(а):В инспекторе объектов, сразу ниже Name. Еще не встречал такого, чтобы не было...
Вы не поверите, но у меня такого тоже нету. И именно в инспекторе объектов. Может быть Вы имели в виду ZQuery?
- Снег Север
- долгожитель
- Сообщения: 3071
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Может, у меня версия свежее в СТ?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
McLion
Можно это дело в событие AfterPost засунуть, если только Вам не надо вносить данные с ужасающей быстротой.
Можно это дело в событие AfterPost засунуть, если только Вам не надо вносить данные с ужасающей быстротой.
Vadim писал(а):Надо перед закрытием проги (или перед закрытием SQLQuery1) написать:Код: Выделить всё
SQLQuery1.ApplyUpdates;
чтобы добавленные в SQLQuery1 данные перенести в саму базу данных, которая на диске.
Ни хочу дураком казаться, но не помогает... вот что я сделал:
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
SQLQuery1.ApplyUpdates;
end;
Снег Север писал(а):Может, у меня версия свежее в СТ?
Не исключено. У меня мартовская - 48187.
Добавлено спустя 2 минуты 16 секунд:
McLion писал(а):но не помогает
А Post предварительно Вы не забыли сделать?
Ещё вариант - поставьте TSQLTransaction.Action в caCommit.
