![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема с подключением к БД IB [D6, FB 1.0]
manevil © (2006-03-31 09:51:00)Собственно такая проблема:
Пытаюсь подключиться к БД вот так:
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'
Сергей М. (2006-03-31 16:36:00) [1]
> проблема была в передаче параметров:имя и пароль
Врешь ведь)
> Cannot perform operation -- DB is currently open
Твоя цитата ?
Переводится она как "Не могу произвести операцию - БД в настоящее время открыта".
Явно имеется ввиду попытка открытия тобой уже открытой на этот момент БД.
manevil (2006-03-31 16:03:00) [2]ладно, спасибо всем за помощь
только проблема была в передаче параметров:имя и пароль
Сокол (2006-03-31 15:30:00) [3]Ты пишешь вот это:
IBDatabase1.Open;
IBDatabase1.Connected:=true;
,тогда не удивительно, что у тебя такая ошибка вылезает.
Строкой IBDatabase1.Open; еы открываешь соединение с БД,
а следующей строкой IBDatabase1.Connected:=true, - ты делаешь то же самое, но только другим способом, вот и все.
manevil (2006-03-31 14:51:00) [4]так и делаю, ну, не берет он из .ini файла путь!!!
Annen (2006-03-31 14:05:00) [5]manevil
Просто в Object Inspector в DatabaseName удали запись до запуска проэкта тогда коннект стане фалсе ивсе запустится сам проверял работает
П.С. а потом подключаешся с ини в FormCreate
Сергей М. (2006-03-31 13:34:00) [6]
> ошибки такой щас нету!
Ну так восстанови те самые начальные условия, при которых она устойчиво возникала !
В чем проблема-то ?
manevil (2006-03-31 13:26:00) [7]еще раз говорю - ошибки такой щас нету! нужно, чтобы он из .ini файла брал путь к базе!
Сергей М. (2006-03-31 13:09:00) [8]
> manevil (31.03.06 12:44) [14]
Ты русский язык вообще понимаешь ?
Тебе был задан простейший вопрос - какой конкретно оператор в теле приведенного тобой обработчика события OnCreate вызывает исключение ?
Что тут гадать-мудрить-то - "Если забить", "Если заколотить", "берет", "не берет" ?
Ставь брейкпойнт на первую строчку обработчика, лови его, проходи пошагово и выяви ту самую строчку ! А потом уж и разговор более предметным будет)
Неужто все это так страшно сложно ?
manevil (2006-03-31 12:44:00) [9]Если забить в Object Inspector какой-нить DatabaseName, тогда такой ошибки не возникает, а если не забивать, то... хм, ща тож не возникает, но из .ini файла она не берет путь к базе почему-то :(
Сергей М. (2006-03-31 12:37:00) [10]
> manevil (31.03.06 12:10) [12]
Ответь на вопрос в [5].
Без этого дальнейшие рассуждения по твоей теме бессмысленны.
manevil (2006-03-31 12:10:00) [11]э-э, sorry, так тоже не работает :(
manevil (2006-03-31 12:07:00) [12]да, отсюда берется путь к базе, в .ini файле он правильный, но вот почему-то оттуда сразу не берет его :(
yk (2006-03-31 12:01:00) [13]IBDatabase1.DatabaseName:=(Ini.ReadString('options','DBPath',IBDatabase1.Databas eName));
???
manevil (2006-03-31 11:09:00) [14]хорошо, пусть в Object Inspector я укажу DatabaseName какой-нить левый, тогда оно работает нормально, но почему-то не хочет сразу открывать базу, вызывает сначала окошко, где юзер должен указать путь к базе, после этого нормально запускается, но при каждом запуске не может найти базу, приходится постоянно указыавть, при этом в .ini файле прописывается правильный путь к базе. Почему оно не берет оттуда путь?
manevil (2006-03-31 11:01:00) [15]мне не нужно постоянно вызывать эту функцию, для этого создается .ini файл, в который при закрытии проги записывается текущее значение пути к базе:
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'MyIni.ini');
Ini.WriteString('Options', 'DBPath', IBDatabase1.DatabaseName);
Ini.Free;
Ярослав (2006-03-31 10:35:00) [16]Стандартный пример
место 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 ;
YK (2006-03-31 10:16:00) [17]если в .ini не прописан правильный путь --- то тогда у тебя в IBDatabase1.DatabaseName - пустая строчка??? хммм - я бы тоже сглючила
Сергей М. (2006-03-31 10:12:00) [18]Тогда изволь уточнить, при выполнении какой конкретно строчки твоего кода возникает исключение.
Sergey13 (2006-03-31 10:11:00) [19]А у тебя нормальный сервер или Embedded?
manevil (2006-03-31 10:07:00) [20]оно итак false стоит