Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

DBExpres Открытие и закрытие соединения   Найти похожие ветки 

 
YurikGl ©   (2004-04-07 12:36) [0]

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

В ADO проходило

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

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


 
Shaman ©   (2004-04-07 14:36) [1]

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

 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;


 
YurikGl ©   (2004-04-07 15:25) [2]

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

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


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

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

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


 
YurikGl ©   (2004-04-07 16:01) [4]

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 16:12) [5]

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

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

Что говорит?


 
YurikGl ©   (2004-04-07 16:15) [6]

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


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

Тогда делаем перед 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:43) [8]

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

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


 
YurikGl ©   (2004-04-07 16:45) [9]

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


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

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

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



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

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
3-1081214753
makz
2004-04-06 05:25
2004.05.02
combobox и dataset


14-1081585266
DoG
2004-04-10 12:21
2004.05.02
CreateThread !


3-1081073444
Артем К.
2004-04-04 14:10
2004.05.02
Как в Query определить таблицу Master для таблицы Detail


3-1081422620
Zn
2004-04-08 15:10
2004.05.02
Глюки с кодовой страницей - кто виноват?


1-1081844252
Dimerol
2004-04-13 12:17
2004.05.02
Management памяти.