Пишу в эту конференцию, т.к. вопрос из области .NET,
а yandex на поиск по PromptDataSource выдал использование этого метода только в Delphi.
Наконец-то возникла необходимость динамически формировать строку подключения в приложении на C#.
Использую, MS OLEDB Service Component 1.0 Type Library
В варианте
public string PromptDataSource(IntPtr Handle, string ConnString)
все великолепно работает, но не устраивает использование двух ссылок на 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)?