10 / 10 / 4
Регистрация: 10.09.2010
Сообщений: 197

Ошибка при работе с компонентами IBX

22.09.2010, 14:27. Показов 2232. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
использую компоненты IBX для работы с БД. Есть проблема: подключась к БД, все работает, пробую подключиться к другой БД, используя теже компоненты и получаю ошибку
Cannot perform operation -- DB is currently open.
C++
1
2
3
4
5
6
7
IBDatabase1->DatabaseName = ListBox1->Items->Strings[i];
IBDatabase1->Params->Add("user_name=SYSDBA");
IBDatabase1->Params->Add("password=masterkey");
IBDatabase1->Params->Add("lc_ctype=WIN1251");
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("SELECT * FROM TABLE;");
IBQuery1->Open();
Если я правильно понимаю, то нужно составить условие и проверять используется ли БД, если да - отключиться, если нет, продолжить. Пробовал шаманить со свойствами - не вышло. Подскажите, пожалуйста, как лучше сделать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2010, 14:27
Ответы с готовыми решениями:

Ошибка при работе с динамическими компонентами
Делаю менюшку для игры. Пункты меню - Label и Image. При нажатии на какой либо пункт меню - очищаю форму от всего и создаю новые пункты...

Ошибка при работе с экселем
Всем привет!!!!! Подскажите помогите пж разобраться с ошибкой. База ацесовская, конект посредством адо, билдер 2009 Есть экселевский...

Ошибка при работе с TServerSocket
Написал клиент - сервер приложения. клиент работает очень просто и не имеет нареканий, а вот сервер раз в 2 дня выкидывает ошибку но...

4
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
22.09.2010, 14:37
C++
1
if (IBDatabase1->Connected) IBDatabase1->Connected = false;
ну а дальше меняешь настройки и снова открываешь соединение
1
10 / 10 / 4
Регистрация: 10.09.2010
Сообщений: 197
22.09.2010, 15:00  [ТС]
Туплю, наверное, но не выходит сделать...

Делаю так:

C++
1
2
3
4
5
6
7
8
9
10
11
if (IBDatabase1->Connected) {
IBDatabase1->Connected = false;
} else {
IBDatabase1->DatabaseName = ListBox1->Items->Strings[i];
IBDatabase1->Params->Add("user_name=SYSDBA");
IBDatabase1->Params->Add("password=masterkey");
IBDatabase1->Params->Add("lc_ctype=WIN1251");
IBQuery1->SQL->Clear();
IBQuery1->SQL->Add("SELECT * FROM TABLE;");
IBQuery1->Open();
}
Ложу этот код в кнопку. Ошибка

Cannot perform operation -- DB is currently open.
больше не отображается, но если есть вывод в DBGrid и я нажимаю на кнопку, то DBGrid чистится, после второго клика отображается новый вывод в DBGrid, а иногда появляется ошибка:

Dynamic SQL Error
SQL Error code = -104
Token unknown - line 2, char 1
SELECT.
, но при этом данные выводятся в DBGrid...
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
22.09.2010, 15:06
C++
1
2
3
4
5
6
7
8
9
10
11
12
    if (IBDatabase1->Connected) IBDatabase1->Connected = false;
    IBDatabase1->Params->Clear();
    IBDatabase1->DatabaseName = ListBox1->Items->Strings[i];
    IBDatabase1->Params->Add("user_name=SYSDBA");
    IBDatabase1->Params->Add("password=masterkey");
    IBDatabase1->Params->Add("lc_ctype=WIN1251");
        IBDatabase1->Connected = true;
    if (IBQuery1->Active) IBQuery1->Close();
    IBQuery1->SQL->Clear();
    IBQuery1->SQL->Add("SELECT * FROM TABLE;");
 
    IBQuery1->Open();
не надо тут else, а то получается если соединение было то при нажатии на кнопку ты просто его закрываешь, в если же неактивно то ты открываешь новое соединение причем параметры соединения не чистишь
1
10 / 10 / 4
Регистрация: 10.09.2010
Сообщений: 197
22.09.2010, 15:40  [ТС]
Цитата Сообщение от Larsus Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
    if (IBDatabase1->Connected) IBDatabase1->Connected = false;
    IBDatabase1->Params->Clear();
    IBDatabase1->DatabaseName = ListBox1->Items->Strings[i];
    IBDatabase1->Params->Add("user_name=SYSDBA");
    IBDatabase1->Params->Add("password=masterkey");
    IBDatabase1->Params->Add("lc_ctype=WIN1251");
        IBDatabase1->Connected = true;
    if (IBQuery1->Active) IBQuery1->Close();
    IBQuery1->SQL->Clear();
    IBQuery1->SQL->Add("SELECT * FROM TABLE;");
 
    IBQuery1->Open();
не надо тут else, а то получается если соединение было то при нажатии на кнопку ты просто его закрываешь, в если же неактивно то ты открываешь новое соединение причем параметры соединения не чистишь
Учел, лучше, но ошибка

C++
1
2
3
4
Dynamic SQL Error
SQL Error code = -104
Token unknown - line 2, char 1
SELECT.
все равно появляется. После наблюдений заметил если вывести данные, а потом снова попытаться вывести их же, то возникает выше указанная ошибка, смею преположить, что дело в кеширование или в запросе, тобишь нужно апдэйт указать чтоли...

Добавлено через 10 минут
Разобрался, оказалось, что IBQuery2 и IBQuery3 я не чистил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.09.2010, 15:40
Помогаю со студенческими работами здесь

Ошибка при работе с DBGrid
Помогите, пожалуйста! Поместила на форму DBGrid, прописываю колонки. При попытке заполнить FieldName выдается ошибка "Неправильная...

Ошибка при работе с потоками
void __fastcall TForm1::FormCreate(TObject *Sender) { haha *Thr = new haha(true); Thr->Priority=tpTimeCritical; Thr->Resume(); } ...

Ошибка в C++ Builder 10 при работе с файлами
ошибка: Unit3.cpp(57): E2094 'operator<<' not implemented in type 'fstream' for arguments of type 'AnsiString' Код: #include...

В чем ошибка при работе с Firebird?
Здравствуйте. В баттоне код: Form1->IBQuery1->SQL->Clear(); Form1->IBQuery1->SQL->Add("SELECT * FROM TABLENAME"); ...

Странная ошибка при работе с Excel
Пытаюсь создать Excel файл и записать в него ячейки но при компиляции программы получаю совершенно не понятную мне ошибку int i; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru