Работа с MS SQL через OLE, ошибка подсоеденения
От: strelok-47  
Дата: 28.04.04 12:12
Оценка:
Если кто в Дельфе (хотя и в билдере наверное тоже самое) пробовал подсоеденится с серверу то может сталкивался что пока когда вызываешь CreateOleObject и через IDispatch возвращенный этим вызовом коннектишься (вызываешь connect) к серверу, то потом при попытке законнектится к другому серверу вылетает что типа вы не можете законнектится к другому серверу, пока вы не законнекчены на этом серваке (you cannot change name? login бла_бла for server object while it is connected). Это означает что нужно все время отсоеденяться/подключаться от сервака к серваку? я попытался обойти это вот так


SQLServer:=CreateOleObject('SQLDMO.SQLServer');
dmo:=CreateOleObject('SQLDMO.SQLServer');
dmo:=SQLServer.Application;
dmo:=dmo.ListAvailableSQLServers;
if dmo.Count > 1 then begin
  for i:= 1 to dmo.Count do begin
    SQLServerN:=CreateOleObject('SQLDMO.SQLServer');
    PSQLServerN := @SQLServerN;
    tvDatabases.Items.AddObject(nil, AnsiUpperCase(dmo.Item(i)), PSQLServerN); 
  end;
end;
// SQLServerN: OleVariant, PSQLServerN: POleVariant, список серверов создается
// tvDatabases - TreeView


а вот при коннекте код такой

var
 dmo : OleVariant;
 pdmo : POleVariant;
begin
   pdmo := tvDatabases.Items.Item[tvDatabases.Selected.Index].Data;
   dmo := pdmo^; //- и во тут ошибка Invalid type cast


может ли кто объяснить в чем трабла, я с указателями плохо, или может кто нить решал сходную траблу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.