Помогите подключиться к FireBird

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

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

Помогите подключиться к FireBird

Сообщение ElfElf » 08.08.2010 10:10:59

Подключаюсь с помощью IBConnection, после соеденения данные появляются в DBGrid, но новые данные не вводятся в базу данных.
ElfElf
незнакомец
 
Сообщения: 7
Зарегистрирован: 08.08.2010 10:03:26

Re: Помогите подключиться к FireBird

Сообщение gNEV » 08.08.2010 18:53:09

В TSQLQuery ->UpdateSQL (TStringList), TSQLQuery ->InsertSQL (TStringList), TSQLQuery ->DeleteSQL (TStringList) сами запросы есть? На добавление, обновление, удаление? Если нет, то конечно ничего добавляться, изменяться и удаляться не будет. :roll:
gNEV
новенький
 
Сообщения: 26
Зарегистрирован: 23.07.2010 14:20:06
Откуда: Санкт-Петербург

Re: Помогите подключиться к FireBird

Сообщение alexs » 08.08.2010 22:44:08

ElfElf
Для птицы используй UIB - надёжное и работающее решение. Для обновляемых таблицчных запросов - FBDataSet дополнительно к нему.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Помогите подключиться к FireBird

Сообщение ElfElf » 09.08.2010 01:46:54

Нет этих запросов нет. Есть только запрос в свойстве SQL. Можно уточнить какие ставить запросы в свойствах InsetSQL DeleteSQL UpdeteSQL, что бы интерактивно изменять данные в DBGrid. И вообще как эти свойства работают.
ElfElf
незнакомец
 
Сообщения: 7
Зарегистрирован: 08.08.2010 10:03:26

Re: Помогите подключиться к FireBird

Сообщение Vadim » 09.08.2010 03:06:47

ElfElf
Если у Вас запрос простой, типа "SELECT поле1, поле2 FROM таблица", то то изменения в DBGrid и так будут работать. Если же запрос более сложный, например многотабличный (типа @SELECT т1.поле1, т2.поле2 FROM таблица1 т1 INNER JOIN таблица2 т2 ON условие объединения"), тогда для каждого из действий над данными придётся объявлять свой собственный запрос:
- для удаления строки данных - в свойстве DeleteSQL - "DELETE FROM таблица WHERE id=ключевое значение",
- для изменения строки данных - свойство UpdateSQL - "UPDATE таблица SET конкретное_поле = значение WHERE id=ключевое значение"?
- для добавления новой строки данных - свойство InsertSQL - "INSERT INTO таблица (поле) VALUES (значение поля)"
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Помогите подключиться к FireBird

Сообщение ElfElf » 09.08.2010 13:22:23

М-да... Ни чего не понятно

1) Если в свойстве SQL простой запрос на выборку SELECT * From MyTable, а свойства InsertSQL, UpdateSQL, DeletaSQL оставить пустыми то в DBGrid нтерактивно будут изменяться и добавляться данные в базе данных? У меня не изменяются и не добавляются.
2) Если в свойствах InsertSQL, UpdateSQL, DeletaSQL должны быть запросы, то какие для интерактивного изменения данных в DBGrid и соответственно в базе данных.

Может я чего не понимаю...
ElfElf
незнакомец
 
Сообщения: 7
Зарегистрирован: 08.08.2010 10:03:26

Re: Помогите подключиться к FireBird

Сообщение Vadim » 09.08.2010 14:06:54

ElfElf писал(а):Может я чего не понимаю...

Это заметно. :)
Образование должно быть систематическим и последовательным, как постройка дома. В этом случае есть шанс, что дом будет прочным, а любые данные, которые Вы получаете - понятными. У Вас налицо попытка понять работу с данными, используя SQL-сервер, с помощью программирования. Это неправильно, поэтому Вы ничего не понимаете.
Давайте Вы, для начала (или, говоря иными словами, для прочного фундамента) прочтёте какую-нибудь книжку по работе с SQL базами данных без привязки к языку программирования и только потом уже переключитесь на реализацию работы с данными с помощью языка программирования.
Для начала поизучайте вот это:
- http://www.intuit.ru/department/database/sqlmdintro/
- http://www.intuit.ru/department/database/sql/
Для этого Вам нужен сервер БД (он у Вас уже есть и называется FireBird) и любая программа-клиент, например идущая в комплекте с FireBird программа isql.
После того, как Вы на практике освоите для чего нужны те или иные запросы манипулирующие данными, можно будет приступать к решению Вашей задачи с помощью языка программирования.
------------
А конкретно по Вашей проблеме - вполне возможно, что у Вас не подтверждаются транзакции. Но это всё гадание на кофейной гуще, т.к. что там написано у Вас в программе никто не знает, а Вы об этом сообщать почему-то не торопитесь. ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Помогите подключиться к FireBird

Сообщение ElfElf » 09.08.2010 17:32:05

В моей программе ничего нет - на форме 6 компонентов IBConection DBGrid SQLQuery Datasource SQLTransaction DBNavigator - всё связано друг с другом свойство SQLTransaction.Action - caCommit . Цель программы чисто учебная посмотреть как происходит подключение к базе данных. База данных создана IBExpert одна таблица несколько записей. Я не программист - просто любитель.

Вопрос заданный мной уже встречался на форуме, но ответа (почему и что делать) к сожалению не было...

Спасибо за сылки посмотрю...
ElfElf
незнакомец
 
Сообщения: 7
Зарегистрирован: 08.08.2010 10:03:26

Re: Помогите подключиться к FireBird

Сообщение gNEV » 10.08.2010 00:12:36

Очень кратко, для совсем простых действий.
InsertSQL - вставка записи. Запрос примерно такой ('insert into TABLICA (POLE_A,POLE_B) values (:POLE_A,:POLE_B)') - запросы параметрические. Параметры и будут поля Вашей таблицы, которая проецируется в гриде.
UpdateSQL - обновление записи ('update TABLICA set POLE_A=:POLE_A, POLE_B=:POLE_B where KEY_FIELD=:OLD_KEY_FIELD')
DeleteSQL - удаление записи ('delete from TABLICA where KEY_FIELD=:OLD_KEY_FIELD')
Наименование полей естественно должно быть из Вашей таблицы FB. Транзакция безусловно тоже должна быть подключена. Для запросов на чтение как правило достаточно параметров транзакции
'read' 'read_committed' 'rec_version' . Для запросов на изменение 'read_committed' 'rec_version' 'nowait' в большинстве случаев тоже достаточно.

Я сам использую ZEOS. Притом только два компонента - компонент подключения и компонент запроса. Считаю,ИМХО, работать непосредственно в таблице с базой это не правильно.
Я все делаю через не DB элементы т.е. (TEdit, TMemo, TComboBox и пр.) и затем, когда мне нужно уже руками пишу соответствующие запросы на добавление, и изменение.
Гриды использую только для просмотра данных, т.е. запросы на выборку (select).
gNEV
новенький
 
Сообщения: 26
Зарегистрирован: 23.07.2010 14:20:06
Откуда: Санкт-Петербург

Re: Помогите подключиться к FireBird

Сообщение ElfElf » 10.08.2010 10:39:37

Ну вот, наконец какая то определенность. Спасибо. Буду эксперементировать с запросами в свойствах
ElfElf
незнакомец
 
Сообщения: 7
Зарегистрирован: 08.08.2010 10:03:26


Вернуться в Lazarus

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54

Рейтинг@Mail.ru