2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Редактирование с IBQuery. C++, IBExpert+FireBird.
Сообщение22.11.2009, 12:25 


14/11/09
26
Всем доброго времени суток.
Вопрос состоит в следующем - есть DBGrid, который выводит определенные поля из трех таблиц базы данных при помощи IBQuery.
Скажите пожалуйста, какими способами можно взаимодействовать с подобными таблицами? То есть нужно реализовать удаление, редактирование и добавление записей в БД через этот самый грид.

 Профиль  
                  
 
 Re: Редактирование с IBQuery. C++, IBExpert+FireBird.
Сообщение22.11.2009, 18:42 


14/11/09
26
Вроде бы нашел информацию, что надо для каждого действия (Удаление, Редактирование, Добавление) - создавать отдельный IBQuery, реализующий эти функции. Но я никак не могу найти хоть один пример, где бы это было описано...

 Профиль  
                  
 
 Использование IBDataSet, C++ Builder, IBExpert + FireBird
Сообщение24.11.2009, 11:49 


14/11/09
26
Всем доброго времени суток.

Пробую использовать компонент IBDataSet для взаимодействия с таблицами БД.
Так как работаю с ним первый раз, то ошибки пока не знакомы.

Существует к примеру таблица TOVAR.
Для отображения ее в DBGrid ипользовал стандартную связку: IBDataBase+IBTransaction+IBDataSet+DAtaSource+DBGrid

В EditSQL у IBDataSet прописал select * from TOVAR. Потом сгенерировал запрос на добавление:


insert into TOVAR
(NAME_TOV, TIP_TOV, PRICE_TOV_ZAK, COUNT_TOV, PROIZV_TOV)
values
(:NAME_TOV, :TIP_TOV, :PRICE_TOV_ZAK, :COUNT_TOV, :PROIZV_TOV)
(обычным текстом, так как тег code беспощадно вставлял пути до смайликов
:P -> : P)

Пробую сделать добавление. В обработчике нажатия кнопки "Добавить" пишу следующее:
Код:
IBDataSet1->InsertSQL;
IBDataSet1->FieldByName("NAME_TOV")->AsString = Edit5->Text;
IBDataSet1->FieldByName("TIP_TOV")->AsString = Edit6->Text;
IBDataSet1->FieldByName("PRICE_TOV")->AsString = Edit7->Text;
IBDataSet1->FieldByName("COUNT_TOV")->AsString = Edit8->Text;
IBDataSet1->FieldByName("PROIZV_TOV")->AsString = Edit9->Text;
IBDataSet1->Open();
IBDataSet1->Post();


Чувствую, что где-то может быть ошибка, плюс при попытке добавления появляется ошибка со словами "Not in Edit Mode".

Пожалуйста, помогите разобраться.

-- Вт ноя 24, 2009 12:12:43 --

Немножко продвинулся.
Добавил перед строчку IBDataSet1->Edit(); перед
IBDataSet1->InsertSQL;

Добавляет, но по несколько раз и если перейти в конец DBGrid, то наверх уже почему то подняться нельзя. Хоть свойство UniDirectional у IBDataSet установлено в True.

Что-то с айдишниками упустил наверно??

-- Вт ноя 24, 2009 12:36:10 --

Исправил код добавления:

Код:
IBDataSet1->Open();
IBDataSet1->Insert();
IBDataSet1->FieldByName("NAME_TOV")->AsString = Edit5->Text;
IBDataSet1->FieldByName("TIP_TOV")->AsString = Edit6->Text;
IBDataSet1->FieldByName("PRICE_TOV_ZAK")->AsString = Edit7->Text;
IBDataSet1->FieldByName("COUNT_TOV")->AsString = Edit8->Text;
IBDataSet1->FieldByName("PROIZV_TOV")->AsString = Edit9->Text;
IBDataSet1->Post();


Все добавляет. Только почему то DBGrid стал чудить.
При просмотре до конца таблицы все идет нормально. Записи не дублируются.
Однако если потом попробовать подняться наверх, сам скролл поднимается совсем не намного, после чего опять опускается, то есть подняться нельзя. Плюс все записи становятся многократно дублированными.

Почему это происходит?

 Профиль  
                  
 
 Re: Использование IBDataSet, C++ Builder, IBExpert + FireBird
Сообщение25.11.2009, 20:43 


14/11/09
26
Благодарю за поддержку :| .
В общем свойство UniDirectional надо было как раз в False устанавливать, а не в True.

 Профиль  
                  
 
 Re: Использование IBDataSet, C++ Builder, IBExpert + FireBird
Сообщение25.11.2009, 20:57 
Заслуженный участник


09/08/09
3438
С.Петербург
Striderr в сообщении #265322 писал(а):
Благодарю за поддержку :| .
Насколько я понимаю, здесь совсем немного "практикующих" Delphi/C++Builder - программистов (если вообще такие есть), поэтому и не ответил Вам никто. Такие вопросы лучше на специализированных форумах задавать.
В новых проектах эти продукты редко используются.

 Профиль  
                  
 
 Re: Использование IBDataSet, C++ Builder, IBExpert + FireBird
Сообщение28.11.2009, 22:08 


14/11/09
26
Да, я уже успел это заметить.
Ну да ладно, не страшно.

Кстати, если подскажете хотя бы парочку действительно стоящих форумов (кроме VinGrad и SQL.RU) - буду весьма признателен.

 Профиль  
                  
 
 Re: Использование IBDataSet, C++ Builder, IBExpert + FireBird
Сообщение29.11.2009, 18:38 
Заслуженный участник


28/04/09
1933
Striderr
Striderr в сообщении #266164 писал(а):
Кстати, если подскажете хотя бы парочку действительно стоящих форумов (кроме VinGrad и SQL.RU) - буду весьма признателен.
Есть более-менее активный форум при RSDN (там есть ветка и про базы данных, и про Delphi). Правда, не знаю, насколько он стоящ именно по этим вопросам (т.к. никогда туда не заглядывал). На других ветках хорошие специалисты обретаются.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group