![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MIDAS [D7, IB6.x]
изм © (2003-08-19 13:53:00)
Прошу сильно не пинать только учусь
проблема у меня следующая:
Есть сервер приложения на нем DataBase1, Session1 (AutoSesionName = true) и пара таблиц с провайдерами,
есть метод
procedure TSimple.Connect(const UserName, Password: WideString; out DidLogin: HResult);
begin
Database1.Params.Clear;
Database1.Params.Add("PASSWORD="+Password);
Database1.Params.Add("USER NAME="+UserName);
FPassword := Password;
FUserName := UserName;
try
DidLogin := 0;
Database1.Open;
except
DidLogin := 1;
raise;
end;
end;
у клиента
несколько TClientDataSet, FISimple :ISimple;
и процедура
procedure TForm2.btConnectClick(Sender: TObject);
var
R: HRESULT;
begin
FISimple := CoSimple.Create;
FISimple.Connect("SYSDBA", "1", R);
if R = 0 then
begin
cdsCustomer.Open;
cdsVendors.Open;
end;
end;
теперь собственно вопрос почему для одного клиента создается две сессии (на открытие базы и на открытие таблиц) и как это лечить?
изм (2003-08-19 17:04:00) [1]
вопрос решился оказалось что в методе btConnectClick нет необходимости создавать сервер, после того как открывается связь
Connection.Open сервер запускается автоматически, и устанавливает соедитение с базой при cdsCustomer.Open т.е еще раз
вылечил
DBCon.Open;
(DBCon.aPPSERVER AS ISimple).cONNECT();
далее по тексту
Dred2k (2003-08-19 17:00:00) [2]
> изм © (19.08.03 16:55)
В хелп залезь и все увидишь.
изм (2003-08-19 16:55:00) [3]
2 Vlad
на сервере приложени есть метод коннект который вызывается на клиенте, а как еще !?
2 Dred2k в BDE, насколько я понимаю глобальная переменная Session покажывает какая сессия в данный момент отображается в визуальных компонентах
Dred2k (2003-08-19 16:32:00) [4]
Если юзаешь BDE, то есть такая глобальная переменная Session.
Она всегда создается и открывается, уничтожать нельзя (в хелпе все о ней есть).
Vlad (2003-08-19 15:09:00) [5]
Попробуй коннект к базе не с клиента, а с сервера приложений.
Т.е. в начале каждого метода вызывай свой Connect
Возможно в этом причина.
изм (2003-08-19 15:03:00) [6]
а разве не по Connection
кроме того я ставил одну таблицу а сессий было все равно две
Digitman (2003-08-19 14:50:00) [7]
сам же пишешь
> несколько TClientDataSet
при такой схеме сколько объектов TClientDataSet -
столько и сессий получаешь на стороне сервера