C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Firebird + FIBPlus, редактирование данных, Вопрос начинающего
serg21220
Отправлено: 14.11.2006, 18:09


Ученик-кочегар

Группа: Участник
Сообщений: 3



Помогите plz, тем более, вопрос не сложной (наверное).

Поставил себе fibPlus. Стоит Билдер 6й. С БД раньше не работал.

Сейчас на firebird нужно базу сделать. Саму базу сделал. Теперь пишу приложение в билдере.

Тупой вопрос: как вносить данные в базу. Все испробовал. Не хочет работать и все... Базу видно, данные в ней менять можно, а вот ввести данные НИКАК не получается....

ПЛЗ, напишите код для добавления строки с данными в произвольную таблицу БД. Пусть, например, база — base.fdb, таблица — pers_data со столбцами: id (int, первичный ключ, генерируется автоматически, вносить не надо), first_name (varchar, фамилия), last_name (varchar, имя), passport (int), tel (varchar).

P.S. Приложение пишется в билдере, как уже говорил, использую компоненты fibplus — но можно и без них: мне главное увидеть РАБОТАЮЩИЙ кусок, который добавляет строку с данными в таблицу моей (или любой другой) БД...

Заранее благодарен...

Давай темам осмысленное название angry2.gif
Valdemar
Отправлено: 15.11.2006, 08:27


Мастер участка

Группа: Участник
Сообщений: 433



Для компонента TpFIBDataSet надо написать запросы на выборку (SelectSQL), вставку (InsertSQL), обновление (UpdateSQL) и удаление данных (DeleteSQL).
А дальше используете методы Insert, Delete и т.п.
Почитайте документацию по fibPlus и купите книгу "Мир Interbase".
Tantos
Отправлено: 15.11.2006, 13:18


Станционный диспетчер

Группа: Участник
Сообщений: 108



Желательно так же приобрести книгу "Firebird. Руководство разработчика баз данных". А код будет выглядеть приблизительно так:
CODE

//fdsMain — TpFIBDataSet
fdsMain->Append();
fdsMain->FBN("first_name")->Value = "ИМЯ";
fdsMain->FBN("last_name")->Value = "ФАМИЛИЯ";
fdsMain->FBN("passport")->Value   = "ПАСПОРТ";
fdsMain->FBN("tel")->Value             = 745530;
fdsMain->Post();

Естественно, что такие "мелочи", как настройка подключения, конфигурирование транзакция и т.п. остались за кадром.

P.S. Датасет, естественно, должен быть открыт.
serg21220
Отправлено: 15.11.2006, 16:25


Ученик-кочегар

Группа: Участник
Сообщений: 3



QUOTE (Tantos @ 15.11.2006, 13:18)
Желательно так же приобрести книгу "Firebird. Руководство разработчика баз данных". А код будет выглядеть приблизительно так:

Спасибо. Теперь все работает.

Если не составит труда, прошу подсказать код для удаления записи.

Если делать так:

fdsMain->Delete();
fdsMain->FBN("id")->Value = 1; // например
fdsMain->Post();

то он выдает ошибку "ДатаСет не в режиме обновления или редактирования".

Также нужно заполнить какой-нибудь компонент label (скажем, label1) полем, ну например, First_name, соответствующим значению id = 1 (тоже как пример). id — это первичный ключ. Как такую вещь можно сделать?

P.S. Книга "Firebird: Руководство разработчика баз данных" есть.

А вот где можно взять путную документацию по FIBPlus не подскажите ли?

И еще лучше рабочие примеры на билдере 6м.... Без них и без путной документации тяжко разбираться во всем этом....

P.P.S. Еще раз СПАСИБО!
Valdemar
Отправлено: 16.11.2006, 12:53


Мастер участка

Группа: Участник
Сообщений: 433



Документация есть на сайте разработика, а с компонентами ведь идет хелп и примеры.
Tantos
Отправлено: 16.11.2006, 16:51


Станционный диспетчер

Группа: Участник
Сообщений: 108



Заносишь этот запрос в design-time в fdsMain->DeleteSQL:
CODE

delete from pers_data where id=:old_id

Ну а потом пишешь:
CODE

fdsMain->Edit();
fdsMain->Delete();
fdsMain->Post();

Насчет последнего не уверен. Все проекты на работе.
serg21220
Отправлено: 16.11.2006, 22:19


Ученик-кочегар

Группа: Участник
Сообщений: 3



QUOTE (Tantos @ 16.11.2006, 16:51)
Ну а потом пишешь:
CODE

fdsMain->Edit();
fdsMain->Delete();
fdsMain->Post();

Насчет последнего не уверен. Все проекты на работе.

Если писать

fdsMain->Edit();
fdsMain->Delete();
fdsMain->Post();

то он будет ведь удалять текущую запись...

Какой метод отвечает за выбор записи? Т.е. как выбрать запись, которую он будет удалять этим кодом?
Tantos
Отправлено: 17.11.2006, 18:02


Станционный диспетчер

Группа: Участник
Сообщений: 108



Обращайся к параметру через метод ParamByName.

Вернуться в Работа с базами данных в C++Builder