Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Вниз

проблема с подключением к БД IB   Найти похожие ветки 

 
manevil   (2006-03-31 09:51) [0]

Собственно такая проблема:
Пытаюсь подключиться к БД вот так:
procedure TForm1.FormCreate(Sender: TObject);
var Ini:TiniFile;
begin
 Ini:=TiniFile.Create(extractfilepath(paramstr(0))+"MyIni.ini");
 IBDatabase1.DatabaseName:=(Ini.ReadString("options","DBPath",""));
 //IBDatabase1.Open;
 if IBDatabase1.Connected then
  begin
  Ini.free;
  IBDatabase1.Open;
  IBDatabase1.Connected:=true;
 end
else
 begin
  showmessage("База данных не найдена!");
  Application.CreateForm(TfrAddIBServer, frAddIBServer);
 {здесь вызывается форма, в которой юзер может выбрать путь к базе}
  frAddIBServer.Show;
 end;
end;

При этом получаю такую ошибку, если в .ini не прописан правильный путь: ...exception class EIBClientError "Cannot perform operation -- DB is currently open"


 
manevil   (2006-03-31 09:53) [1]

помогите, плиз!


 
Сергей М. ©   (2006-03-31 10:04) [2]

Для начала в дизайн-тайм в Инспекторе Объектов установи св-во IBDatabase1.Connected = False


 
manevil   (2006-03-31 10:07) [3]

оно итак false стоит


 
Sergey13 ©   (2006-03-31 10:11) [4]

А у тебя нормальный сервер или Embedded?


 
Сергей М. ©   (2006-03-31 10:12) [5]

Тогда изволь уточнить, при выполнении какой конкретно строчки твоего кода возникает исключение.


 
YK ©   (2006-03-31 10:16) [6]

если в .ini не прописан правильный путь --- то тогда у тебя в IBDatabase1.DatabaseName - пустая строчка??? хммм - я бы тоже сглючила


 
Ярослав   (2006-03-31 10:35) [7]

Стандартный пример
место Fib ставишь IBDatabase1
function login (database: TpFIBDatabase; dbpath,uname,upass,urole:string):Boolean ;
  begin
    if database.Connected then database.Connected:=False ;
    with database.ConnectParams do begin

    UserName:=uname;
    Password:=upass ;
    Rolename:=urole ;
    end ;
    database.DBName:=dbpath ;

    try database.Connected:=true ;
     {
    on e: Exception  do showmessage(e.Message);
    }
    except
        end ;

    result :=database.connected ;
  end ;


 
manevil   (2006-03-31 11:01) [8]

мне не нужно постоянно вызывать эту функцию, для этого создается .ini файл, в который при закрытии проги записывается текущее значение пути к базе:
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+"MyIni.ini");
 Ini.WriteString("Options", "DBPath", IBDatabase1.DatabaseName);
 Ini.Free;


 
manevil   (2006-03-31 11:09) [9]

хорошо, пусть в Object Inspector я укажу DatabaseName какой-нить левый, тогда оно работает нормально, но почему-то не хочет сразу открывать базу, вызывает сначала окошко, где юзер должен указать путь к базе, после этого нормально запускается, но при каждом запуске не может найти базу, приходится постоянно указыавть, при этом в .ini файле прописывается правильный путь к базе. Почему оно не берет оттуда путь?


 
yk ©   (2006-03-31 12:01) [10]

IBDatabase1.DatabaseName:=(Ini.ReadString("options","DBPath",IBDatabase1.Databas eName));

???


 
manevil   (2006-03-31 12:07) [11]

да, отсюда берется путь к базе, в .ini файле он правильный, но вот почему-то оттуда сразу не берет его :(


 
manevil   (2006-03-31 12:10) [12]

э-э, sorry, так тоже не работает :(


 
Сергей М. ©   (2006-03-31 12:37) [13]


> manevil   (31.03.06 12:10) [12]


Ответь на вопрос в [5].
Без этого дальнейшие рассуждения по твоей теме бессмысленны.


 
manevil   (2006-03-31 12:44) [14]

Если забить в Object Inspector какой-нить DatabaseName, тогда такой ошибки не возникает, а если не забивать, то... хм, ща тож не возникает, но из .ini файла она не берет путь к базе почему-то :(


 
Сергей М. ©   (2006-03-31 13:09) [15]


> manevil   (31.03.06 12:44) [14]


Ты русский язык вообще понимаешь ?

Тебе был задан простейший вопрос - какой конкретно оператор в теле приведенного тобой обработчика события OnCreate вызывает исключение ?

Что тут гадать-мудрить-то - "Если забить", "Если заколотить", "берет", "не берет" ?

Ставь брейкпойнт на первую строчку обработчика, лови его, проходи пошагово и выяви ту самую строчку ! А потом уж и разговор более предметным будет)

Неужто все это так страшно сложно ?


 
manevil   (2006-03-31 13:26) [16]

еще раз говорю - ошибки такой щас нету! нужно, чтобы он из .ini файла брал путь к базе!


 
Сергей М. ©   (2006-03-31 13:34) [17]


> ошибки такой щас нету!


Ну так восстанови те самые начальные условия, при которых она устойчиво возникала !

В чем проблема-то ?


 
Annen ©   (2006-03-31 14:05) [18]

manevil
Просто в Object Inspector в  DatabaseName удали запись до запуска проэкта  тогда коннект стане фалсе ивсе запустится сам проверял работает
П.С. а потом подключаешся с ини в FormCreate


 
manevil   (2006-03-31 14:51) [19]

так и делаю, ну, не берет он из .ini файла путь!!!


 
Сокол ©   (2006-03-31 15:30) [20]

Ты пишешь вот это:
 IBDatabase1.Open;
 IBDatabase1.Connected:=true;
,тогда не удивительно, что у тебя такая ошибка вылезает.
Строкой   IBDatabase1.Open; еы открываешь соединение с БД,
а следующей строкой IBDatabase1.Connected:=true, - ты делаешь то же самое, но только другим способом, вот и все.


 
manevil   (2006-03-31 16:03) [21]

ладно, спасибо всем за помощь
только проблема была в передаче параметров:имя и пароль


 
Сергей М. ©   (2006-03-31 16:36) [22]


> проблема была в передаче параметров:имя и пароль


Врешь ведь)


> Cannot perform operation -- DB is currently open


Твоя цитата ?

Переводится она как "Не могу произвести операцию - БД в настоящее время открыта".

Явно имеется ввиду попытка открытия тобой уже открытой на этот момент БД.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.011 c
2-1145820159
Галинка
2006-04-23 23:22
2006.05.21
Шрифты в Дельфи


3-1143122033
anubis
2006-03-23 16:53
2006.05.21
SQL запрос


2-1146478389
Ezorcist
2006-05-01 14:13
2006.05.21
JPEG


2-1146571467
kay
2006-05-02 16:04
2006.05.21
Как сделать скроллинг фрейма? Не получается.


15-1146207067
kaand
2006-04-28 10:51
2006.05.21
Удаление данных с диска без возможности восстановления





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский