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 — но можно и без них: мне главное увидеть РАБОТАЮЩИЙ кусок, который добавляет строку с данными в таблицу моей (или любой другой) БД...
Заранее благодарен...
Давай темам осмысленное название |
|
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.
|
|