Страница 1 из 2
Builder C++ 6.0 + Interbase (клиентское приложение) как?
Добавлено: 29 авг 2006, 10:14
EvilsInterrupt
День, добрый.
Поиск по форуму мне ничего не дал, может действительно никто не писал клиентских прог под Interbase, но я в этом сильно сомневаюсь.
Если тема уже была, дайте линк

Спасибо.
Вобщем, используя Builder C++ 6.0 хочу подключиться к Interbase на локальной машине, как мне это сделать?
Че делал:
1. на форму кинул IBdatabase в его свойстве DatabaseName указал: C:\progra~1\IB\my_file.gdb
2. в Params :
user_name=sysdba
password=masterkey
3. Сделал IBTransaction ему и IBdatabase указал друг друга
4. Диалект сделал 3
5. Поставил IBQuery
6. Пробую :
try {
IBDatabase->connected = true;
mLog->lines->Add("Connect success");
}
catch(...) { mLog->lines->Add("No connect");}
вопрос:
Почему я получаю "No Connect" ?
p.s:
Не хочу флейма, может пнете на хорошую и толковую статью, а то 1 уже качнул, а толку нет!
Добавлено: 29 авг 2006, 10:30
kdv
Пока еще не разобрался
Добавлено: 29 авг 2006, 11:30
EvilsInterrupt
1. Сервак Interbase запущен!
2. Обращаюсь к локальному через localhost:c:\bla-bla-bla
3. 3 SQL диалект и понижения его не возникает!
4. Файла по которому хочу создать базу данных нету, т.е. "уже сущетсвует my_base.gdb" не возникнет
однако создать базу не удается!
Добавлено: 29 авг 2006, 11:58
kdv
1. Сервак Interbase запущен!
какой версии, интересно?
однако создать базу не удается!
обычно из программы базу не создают. ее обычно кладут вместе с программой, пустую или уже с частью данных).
Базу создают, обычно, из IBConsole, IBExpert или хоть isql. Если надо из программы, то
http://www.sql.ru/forum/actualthread.aspx?tid=324692
Добавлено: 29 авг 2006, 12:26
kdv
специально для тебя добавил - еще раз прочитай раздел
www.ibase.ru/devinfo/ibx.htm#ibdatabase
Добавлено: 29 авг 2006, 14:05
EvilsInterrupt
какой версии, интересно?
Я ставил сначала Borland C++ 6.0 поставил к нему ODAC, после поставил Delphi 7.0 и ничего лишнего не ставил.
Так что все по умолчанию!
Но замечу, я не обнаружил IBDatabaseINI ни в билдере не в дельфи!
Добавлено: 29 авг 2006, 14:10
Dimitry Sibiryakov
Ну а с каким сообщением сервер тебя отвергает можешь воспроизвести добровольно или придется пытать?
Добавлено: 29 авг 2006, 14:28
kdv
Но замечу, я не обнаружил IBDatabaseINI ни в билдере не в дельфи!
да и фиг с ним. я уже такого компонента и не помню.
Добавлено: 29 авг 2006, 16:17
CyberMax
А если вывести сообщение исключения? В Delphi это
Код: Выделить всё
except
on E: Exception do
ShowMessage(E.Message);
Добавлено: 29 авг 2006, 16:27
kdv
какие исключения, что вы? не надо, прога сама исключение выдаст, в котором будет все написано. Это уже потом можно исключения в программе обрабатывать. А тут ведь уже каша пошла про какой то IBDatabaseINI, и т.п.
Добавлено: 30 авг 2006, 05:58
stix-s
EvilsInterrupt писал(а):
Я ставил сначала Borland C++ 6.0 поставил к нему ODAC, после поставил Delphi 7.0 и ничего лишнего не ставил.
!
А где сервер IB/FB? Случаем под серверем не имеется в виду клиентская часть, что в комплекте с Delphi идет?
EvilsInterrupt писал(а):
Но замечу, я не обнаружил IBDatabaseINI ни в билдере не в дельфи!
не работал с таким, что за зверь?
Добавлено: 30 авг 2006, 12:10
CyberMax
kdv писал(а):какие исключения, что вы? не надо, прога сама исключение выдаст, в котором будет все написано. Это уже потом можно исключения в программе обрабатывать.
По идее не должна выдать, если это исключение в проге обрабатывается (у него catch стоит). Тогда текст возникшего исключения невозможно будет узнать. Для этого и предложил добавить код вывода текста исключения.
Кстати, по сути я повторил вопрос Сибирякова: "Где текст исключения???".
Добавлено: 30 авг 2006, 12:23
kdv
Для этого и предложил добавить код вывода текста исключения.
а я предложил вообще к чертям убрать обработку исключения. На таком этапе программирования (с IBX) это еще рано.
Добавлено: 31 авг 2006, 11:29
EvilsInterrupt
Соединиться соединился!

Но!
Вобщем в коде:
Код: Выделить всё
Count = IBDataSet->RecordCount;
mLog->Lines->Add(DateToStr(Date())+" $ "+TimeToStr(Time())+
" $ Count Params from Interbase: "+IntToStr(Count));
говорит, что параметров 1 штука!

))
А между тем я в SelectSQL, RefreshSQL закинул:
Код: Выделить всё
select object, item, value0, data_date
from data
where data_date= (select max(data_date) from data)
Такое чувство, что у меня по таймеру не все 210 записей обновляется из Interbase а всего лишь 1.
Буду пробовать!

Добавлено: 31 авг 2006, 12:05
Merlin
EvilsInterrupt писал(а):
Буду пробовать!

Можно и пробовать. Долго, увлечённо, плодотворно. Тоже путь. А ленивые предпочитают нажать F1 и прочитать про RecordCount в IBX. Жалкие, ничтожные люди.
Добавлено: 31 авг 2006, 12:24
WildSery
Merlin писал(а):Жалкие, ничтожные люди.
Канечна! Настоящим героям не нужны документации, получив RecCnt=1 они не будут париться ерундой, а добьются от разработчиков, чтобы они поправили сей досадный баг.
Добавлено: 31 авг 2006, 12:32
stix-s
EvilsInterrupt писал(а):Соединиться соединился!
1
аааааа, ну сознайся, сознайся что у тебя за версия IB/FB, а?
Спать спокойно не могу

2
ежели ты в запросе получил 1 запись, то чтож ты хочешь получить в IntToStr(Count)?
и при чем тут параметры?
Добавлено: 31 авг 2006, 12:44
kdv
Merlin писал(а):А ленивые предпочитают нажать F1 и прочитать про RecordCount в IBX.
в BCB6 таки да, ненажатие на F1 порицаемо и оправданий не имеет.
а вот в BDS 2006 этот дурацкий микрософтовский хелп, там пока докопаешься, состариться можно. Или я пока (за 2 года) им так и не овладел.
p.s. кстати, для экстренных случаев держу под рукой хелп от D7.
Добавлено: 31 авг 2006, 14:58
EvilsInterrupt
Про версию IB 6.0
F1 рулит,но при хорошей доке как MSDN, а там про то как в дельфи работать с Interbase ни слова!!!
Кратко, есть параметры в базе, надо их выдирать каждые 3 мин. для этого я и писал в
А между тем я в SelectSQL, RefreshSQL закинул:
Код:
select object, item, value0, data_date
from data
where data_date= (select max(data_date) from data)
по таймеру каждые 180000 я делаю
IBDataBase->connected = true
IBDataSet->Open
IBDataSet->Refresh
IBDataSet->First
while(!IBDataSet->Eof)
{
IBDataSet->FieldValues[нужное]
IBDataSet->Next;
}
IBDataSet->close
IBDataBase->connected = false
но тот запрос, что выше, дает 1 запись, но цикле while перчисляются все 210 параметров.
Вопрос почему RocordCount дает 1, когда выбралось то 210 записей?
Добавлено: 31 авг 2006, 15:15
Merlin
EvilsInterrupt писал(а):Про версию IB 6.0
Каждый человек имеет неотъемлемое право ходить по граблям.
EvilsInterrupt писал(а):
F1 рулит,но при хорошей доке как MSDN, а там про то как в дельфи работать с Interbase ни слова!!!
Интереснааа... А в моём есть слова... Чудны дела твои, господи... F1 нажимал, жмакнув мышой на какой-нить комбобох поди? Попробуй с TIBSQL например, ну так просто, для разнообразия...
EvilsInterrupt писал(а):
Вопрос почему RocordCount дает 1, когда выбралось то 210 записей?
Раз мы с тобой хелпоненавистники и ползучие эмпирики, предлагаю острый натурный эксперимент - вывод RecordCount внутри цикла в какую-нить мемку адд-ом. И задуматься над нею по окончании процесса.