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

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

DBExpres Открытие и закрытие соединения [D7, IB4.x, IB5.x, IB6.x]


YurikGl ©   (2004-04-07 12:36:00) 

Как  закрыть SQLConnection и открыть в нем новую базу

В ADO проходило

ADOConnection.active:=false;
ADOConnection.Properties.Item['Data Source'].Value:=st;
ADOConnection.active:=true;

На SQLConnection.active:=False  Программа ругается "Adress voilation...."


Плохиш   (2004-04-07 16:56:00) [1]

>YurikGl ©   (07.04.04 16:45) [9]

Хм... Тогда, если в OnBeforeDisconnect или OnAfterDisconnect ничего нет, только build with debug-dll и отладчиком.


YurikGl   (2004-04-07 16:45:00) [2]

В принципе, мне это не горит. Потом опробирую все на нулевой базе и нулевой проге. Если будут проблемы - напишу. Спасибо.


YurikGl   (2004-04-07 16:43:00) [3]

var
I: Integer;
begin
with SQLConnection do
begin
  for I := 0 to DataSetCount - 1 do
    DataSets[I].Close;
end;
end;

проходит без ошибок, а на SQLConnection.Connected := false  вылетает


Плохиш   (2004-04-07 16:34:00) [4]

Тогда делаем перед SQLConnection.Connected := false вот это

var
 I: Integer;
begin
 with SQLConnection do
 begin
   for I := 0 to DataSetCount - 1 do
     DataSets[I].Close;
 end;
end;

и смотрим на каком datasetе вылетает, после этого смотрим, что с этим datasetom делается в программе.


YurikGl   (2004-04-07 16:15:00) [5]

Если SQLConnection.Connected=true?, то оператор SQLConnection.Connected := false делает я "Adress voilation...."


Плохиш   (2004-04-07 16:12:00) [6]

Уже теплее :-)

SQLConnection.Connected := false;
SQLConnection.Params.Values['Database'] := 'newdb';
SQLConnection.LoadParamsOnConnect := false;
SQLConnection.Connected := true;

Что говорит?


YurikGl   (2004-04-07 16:01:00) [7]

re [3]
Еще в Disign установил...

Мне нужно в RunTime подключаться к разным базам. На данный момент, если запускаем программу, она считывает из INI путь и успешно к нему подсоединяется. Если в RunTime изменить путь и попытаться снова выполнить
with SQLConnection.Params do
  begin
    Clear;
    Add('DriverName=Interbase');
    Add('DataBase=' + новое значение из INI);
 ....

SQLConnection.Connected := True;
подсоединенные к SQLConnection SimpleDataSetы.Active:=True

то SQLConnection почему-то использует старое значение параметра 'DataBase'. Передача параметра SQLConnection происходит корректно, проверял через Watch т.е. на момент "SQLConnection.Connected := True;" значение DataModule1.SQLConnection1.Params[1]=" новое значение"

Данные в таблицах соответствуют старому подключению.


Плохиш   (2004-04-07 15:44:00) [8]

>YurikGl ©   (07.04.04 15:25) [2]

А ConnectionName, GetDriverFunc, LibraryName, VendorLibустановил?


YurikGl   (2004-04-07 15:25:00) [9]

Не получилось. SQLConnection использует старый параметр "DataBase".

изменение property LoadParamsOnConnect: Boolean ничего не дало.


Shaman   (2004-04-07 14:36:00) [10]

Сначала нужно установить параметры соединения. Например так:

 with SQLConnection.Params do
   begin
     Clear;
     Add('DriverName=Interbase');
     Add('DataBase=' + DatabaseName);
     Add('User_Name=SYSDBA');
     Add('Password=masterkey');
     Add('SQLDialect=3');
     Add('ServerCharSet=CYRL');
     Add('BlobSize=-1');
     Add('LocaleCode=1251');
     Add('Interbase TransIsolation=ReadCommitted');
     Add('CommitRetain=False');
     Add('WaitOnLocks=True');
     Add('TrimChar=True');
   end;
 SQLConnection.LoginPrompt := False;

Потом просто

SQLConnection.Connected := True;


Наверх

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