Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > Ошибка read-only datase


Автор: VasRip 13.6.2013, 08:56
при выполнении стандартный функций типа IBQuery1->Insert(); IBQuery1->Delete(); IBQuery1->Edit(); вылетает такая ошибка http://s1.ipicture.ru/uploads/20130613/cp3Gy5JW.jpg

http://s1.ipicture.ru/

Но при выполнении IBQuery1->SQL->Text="INSERT INTO LIST_OBJECTS.....тарам тарам    
все работает четко.
 Я использую подключение через gds32.dll к БД .GDB

Может кто знает как можно это вылечить


если что подключение проходит по этому типу
http://www.fancydev.ru/content/embedded-firebird-vstraivaemaya-baza-dannyh-chast-2


http://s1.ipicture.ru/

Автор: Riviero 13.6.2013, 17:22
Цитата(VasRip @  13.6.2013,  08:56 Найти цитируемый пост)
IBQuery1->Insert(); IBQuery1->Delete(); IBQuery1->Edit()


Я бы этими функциями не пользовался...

Можно так:

Для внесения изменений в базу:

Код

  IBQuery1->SQL->Close();
  IBQuery1->SQL->Clear();
  IBQuery1->SQL->Add("INSERT INTO LIST_OBJECTS....");
  IBQuery1->ExecSQL();


Для выборки:

Код

  IBQuery1->SQL->Close();
  IBQuery1->SQL->Clear();
  IBQuery1->SQL->Add("select * from INTO LIST_OBJECTS....");
  IBQuery1->Open();

Автор: Данкинг 13.6.2013, 19:57
Правильно, с IB только запросы работают, а ->Edit не катит.

Автор: VasRip 14.6.2013, 07:41
по совету хорошей программистки стал использовать IBDataSet1 в место ADOQuery1  и  вся проблема сразу решилась. Походу у ADOQuery1 нет таких прав как у IBDataSet1.  ))))
писать код стало в 10 раз проще и удобней. IBDataSet1 удобней чем  ADOQuery1

Автор: Данкинг 14.6.2013, 10:11
Цитата(VasRip @  14.6.2013,  08:41 Найти цитируемый пост)
IBDataSet1 удобней чем  ADOQuery1

Надо уточнять: для работы с IB. Хотя я для IB всегда соответствующие компоненты (IB) и использовал.

Автор: Riviero 14.6.2013, 10:38
А какие проблемы возникают с ADOQuery и решаются с IBDataSet1? smile 

Автор: Данкинг 14.6.2013, 10:49
Riviero, ну, из этой темы я узнал, что можно делать IBDataSet1->Edit...IBDataSet1->Post, хотя мне это ни разу не требовалось, т.к. было достаточно обычного запроса на обновление при помощи IBQuery.

Автор: VasRip 17.6.2013, 07:27
IBDataSet1 гораздо удобней чем IBQuery. Приятней один раз написать запрос в параметрах IBDataSet1 чем каждый раз переписывать запрос в IBQuery.  При использовании IBQuery приходится каждый раз перезапускать соединение в IBTransaction1 и IBQuery перезапускать,  чтобы обновить данные во всех Гидах всего такого. А в IBDataSet1 только перезапустить и то где чтото делалось остальные сами обновляются сразу. В моем случае код уменьшился 5% + гораздо удобней. А приятный код это всегда приятный код и удобство работы)   

Riviero А пример вот сразу в начале теме проблем с IBQuery к доступу к данным. мне лично удобней и приятней и проще его использовать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)