Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

проблема с подключением к БД IB [D6, FB 1.0]


Страницы:   1 2

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 стоит


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо