Форум: "Базы";
Текущий архив: 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 ставишь IBDatabase1function 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