Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 16

После select через IBDataSet ошибка EIBClientError 'Not in edit mode'

23.11.2009, 18:37. Показов 3803. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Проблема состоит в следующем:
Имеется таблица из которой по запросу через IBDataSet выводятся записи.
Вот текст:
C++
1
2
3
4
5
6
7
8
void __fastcall TForm2::DBComboBox1Change(TObject *Sender)
{
String query;
query="select * from KURORTI where HOTEL like '%"+DBComboBox1->Text+"%'";
IBDataSet1->SelectSQL->Add(query);
IBDataSet1->Open();
DataSource1->DataSet=IBDataSet1;
}
Запрос отрабатывает нормально. Информация выводится в DBGridEh в котором DataSource=DataSource1.
Но после этого при нажатии на любой элемент формы выходит сообщение об ошибке: "EIBClientError 'Not in edit mode'". А если опять в DBComboBox1 выбирать какой либо вариант, то вообще ничего не происходит.
В чем может быть проблема? Я же вроде запрос даю не на редактирование а на SELECT. В таблице ничего не изменяется. Подскажите пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.11.2009, 18:37
Ответы с готовыми решениями:

EIBClientError: Not in Edit Mode, ошибка при записи/редактировании в бд
Возникает ошибка EIBClientError: Not in Edit Mode при попытке добавить запись в бд или отредактировать ее. Как я понимаю стоит запрет на...

EIBClientError 'Not in edit mode'
Здравствуйте. Работаю в Delphi 6 и ReportBuilder 6.02. БД открывается с помощью InterBase 1.01. Использую TppDBPipeline для работы с...

Ошибка: Dataset not in edit or insert mode
Вылезает эта ошибка, хотя я перевёл в режим редактирования. Подскажите, где накосячил? Делаю прогу с помощью BDE, компоненты - Dataset и...

12
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
23.11.2009, 18:39
Нет ли других обработок событий на Set или Grid?
0
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 16
23.11.2009, 18:47  [ТС]
Цитата Сообщение от new_in_net Посмотреть сообщение
Нет ли других обработок событий на Set или Grid?
Других нет
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.11.2009, 11:06
DiMoN2002, убери возможность редактирования в дбгриде, в Options покопаешься, а чтобы перезапустить запрос, надо хотя бы запрос перед этим закрыть и очистить от предыдущего запроса, по-хорошему
0
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 16
24.11.2009, 11:25  [ТС]
DiMoN2002, убери возможность редактирования в дбгриде, в Options покопаешься, а чтобы перезапустить запрос, надо хотя бы запрос перед этим закрыть и очистить от предыдущего запроса, по-хорошему
Исправил код:
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm2::DBComboBox1Change(TObject *Sender)
{
String query;
query="select * from KURORTI where HOTEL like '%"+DBComboBox1->Text+"%'";
IBDataSet1->Close();
IBDataSet1->SelectSQL->Clear();
IBDataSet1->SelectSQL->Add(query);
IBDataSet1->Open();
DataSource1->DataSet=IBDataSet1;
}
В опциях поставил dgEditing=false.
Всё в AlowedOperations(alopInsertEh, alopUpdateEh, alopDeleteEh, alopAppendEh) тоже в false.
Больше про редактирование ничего не нашел. Если ReadOnly ставлю в true, то пишет что сет со свойством Read-Only не может редактироваться.

Помогите люди . Уже вообще не знаю где искать.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.11.2009, 11:43
DiMoN2002, а когда ошибка возникает?
0
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 16
24.11.2009, 12:11  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
DiMoN2002, а когда ошибка возникает?
Ошибка возникает после того, как отработал запрос и я пытаюсь совершить какое-нибудь действие на форме, ну к примеру нажать на кнопку или щелкнуть на какую-нибудь запись в DBGridEh. Если сразу после отработки события ставлю IBDataSet1->Close(); - то программа работает дальше нормально. Но в DBGridEh естественно ничего не выводится. Если ставлю чтоб перед событием TForm2::ButtonClick закрывался DataSet, то ошибка все равно выскакивает.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.11.2009, 12:24
ну про этот дбгрид я не знаю. я его не юзаю... а редактирований нет вообще никаких?
0
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 16
24.11.2009, 12:37  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
ну про этот дбгрид я не знаю. я его не юзаю... а редактирований нет вообще никаких?
Нету редактирований . Они мне и не нужны. Мне чисто для вывода грид нужен.
Попробовал поменять на обычный DBGrid. История та же. Ошибка та же.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.11.2009, 12:44
DiMoN2002, а какой именно компонент ругается? ты прогу трассировал?
1
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 16
24.11.2009, 13:24  [ТС]
В общем разобрался. Проблема была в DBComboBox. В нем DataSource был выбран DataSource1. И при повторном выборе элемента из списка он записывал его в ячейку на которой стоит курсор. Заменил на обычный ComboBox. Все заработало. Всем спасибо за то, что откликнулись.
0
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 16
24.11.2009, 18:42  [ТС]
Возникла еще одна проблемка. Помогите пожалуйста.

Есть такой вод код заполнения combobox-а данными из таблицы:

C++
1
2
3
4
5
6
7
8
9
10
11
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("SELECT DISTINCT HOTEL FROM KURORTI ORDER BY HOTEL");
IBQuery1->Open();
DBEdit1->DataField="HOTEL";
IBQuery1->First();
for(int i=1;i<=Form2->IBQuery1->RecordCount;i++)
 {
   Form2->ComboBox1->Items->Insert(i-1,Form2->DBEdit1->Text);
   Form2->IBQuery1->Next();
 }
Цель выгрузить из определенного поля данные в combobox без повторений.
При выполнении DBEdit1->DataField="HOTEL"; выдает ошибку - 'DBEdit1: Field 'HOTEL' not found'
В чем может быть причина? Поле то такое есть после IBQuery1->Open(). Или может какой другой вариант реализации данной задачи?

Добавлено через 54 минуты
Причем что интересно. Если я выборку делю по всем полям. И в одном цикле заношу во все 8 комбобоксов записи, то все нормально работает. Но тогда DISTINCT не работает.

Добавлено через 18 минут
Т.е. если я делаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
IBQuery1->Close();
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("SELECT DISTINCT HOTEL,KAT,KURORT,TYPE_NUM,TYPE_RAZM,EAT,OPERATOR,CASH FROM KURORTI ORDER BY HOTEL");
IBQuery1->Open();
IBQuery1->First();
DBEdit1->DataField="HOTEL";
DBEdit2->DataField="KAT";
DBEdit3->DataField="KURORT";
DBEdit4->DataField="TYPE_NUM";
DBEdit5->DataField="TYPE_RAZM";
DBEdit6->DataField="EAT";
DBEdit7->DataField="OPERATOR";
DBEdit8->DataField="CASH";
for(int i=1;i<=Form2->IBQuery1->RecordCount;i++)
 {
   Form2->ComboBox1->Items->Insert(i-1,Form2->DBEdit1->Text);
   Form2->ComboBox2->Items->Insert(i-1,Form2->DBEdit2->Text);
   Form2->ComboBox3->Items->Insert(i-1,Form2->DBEdit3->Text);
   Form2->ComboBox4->Items->Insert(i-1,Form2->DBEdit4->Text);
   Form2->ComboBox5->Items->Insert(i-1,Form2->DBEdit5->Text);
   Form2->ComboBox6->Items->Insert(i-1,Form2->DBEdit6->Text);
   Form2->ComboBox7->Items->Insert(i-1,Form2->DBEdit7->Text);
   Form2->ComboBox8->Items->Insert(i-1,Form2->DBEdit8->Text);
   Form2->IBQuery1->Next();
 }
Все работает.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
25.11.2009, 10:16
а чего не использовать FieldByName у запроса, а не через DBEdit
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2009, 10:16
Помогаю со студенческими работами здесь

Ошибка Dataset not in edit or insert mode
Здравствуйте! Нужно в переменную типа стринг, занести значение поля , пробовал разными способами, но всегда получаю один и ту же ошибку. ...

Ошибка : Dataset not in edit or insert mode
При добавлении в таблицу появляется такая ошибка Обработчик клика на кнопку &quot;Добавить&quot;: procedure...

Ошибка: Dataset not in edit or insert mode
Как исправить ошибку Dataset not in edit or insert mode?

Ошибка: Dataset not in edit or insert mode
Здравствуйте! Добавляю данные в таблицу, при нажатии на кнопку &quot;ОК&quot; выскакивает эта ошибка &quot;dataset not in edit or insert...

Ошибка: Dataset not in edit or insert mode
Вообщем такая проблема, задача из одной колонки с количеством (предметов) отнять другую колонку с количеством (тех же предметов), но они в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru