Конференция ".Net" » MS OLEDB Service Component 1.0 Type Library и .NET(C#) [C#, WinXP]
 
  • isasa © (13.02.06 13:10) [0]
    Пишу в эту конференцию, т.к. вопрос из области .NET,
    а yandex на поиск по PromptDataSource выдал использование этого метода только в Delphi.

    Наконец-то возникла необходимость динамически формировать строку подключения в приложении на C#.
    Использую, MS OLEDB Service Component 1.0 Type Library
    В варианте

    public string PromptDataSource(IntPtr Handle, string ConnString)
    {
     ADODB.Connection cn = new ADODB.Connection();
     cn.ConnectionString = ConnString;
     object o = (object)cn;
     MSDASC.DataLinks dataLink = new MSDASC.DataLinks();
     dataLink.hWnd = Handle.ToInt32();
     dataLink.PromptEdit(ref o);
     return cn.ConnectionString;
    }



    все великолепно работает, но не устраивает использование двух ссылок на COM объекты, в частности на ADODB.
    В варианте

    ...
    object DataSource = new object();   //  <- какой класс брать в качестве источника данных
    System.Guid riid = new System.Guid(typeDataSource.GUID.ToString(DataSource.GetType()));
    object pDataSource = (object)DataSource;
    ...
    MSDASC.DataLinksClass DBPrompt = new MSDASC.DataLinksClass();
    MSDASC.IDBPromptInitialize IDBPrompt = (MSDASC.IDBPromptInitialize)DBPrompt;
    IDBPrompt.PromptDataSource(null, ref hndl,
     DBPROMPTOPTIONS_PROPERTYSHEET, 0, ref i, null, ref riid, ref pDataSource);  
    ...


    Имеем сообщение
    Не удается использовать источник данных, поскольку он не поддерживает IID_IPersist. Интерфейс не поддерживается.

    Буду признателен если просветите - какой класс брать в качестве источника данных (DataSource)?
 
Конференция ".Net" » MS OLEDB Service Component 1.0 Type Library и .NET(C#) [C#, WinXP]
Есть новые Нет новых   [120086   +39][b:0][p:0.001]