当使用ado类控件的时候,有个重要属性ConnectionString需要填写。在delhpi中可以通过调用“数据链接属性”对话框来建立这个字符串。
现在我的问题是,我如何编程,实现在自己的程序中调用这个对话框来让用户自定义数据库链接?
我现在遇到的困难是,当通过
CreateOleObject('MSDASC.DataLinks');
来建立该对象的时候,总是报错“无效的类别字符串”。
msdn中有些vb,vc的例子,就是这么建立对象,调用其.PromptEdit方法的。deiphi中为何不行?

解决方案 »

  1.   

    delphi已经封装好了
    PromptDataSource
      

  2.   

    超级猛料中的资料
    调用“数据链接属性”对话框?可以使用UDL文件,UDL文件到打开方式是:
    Rundll32.exe C:\PROGRA~1\COMMON~1\System\OLEDB~1\oledb32.dll,OpenDSLFile %1uses ADODB;然后使用函数:PromptDataSource即可,该函数原型如下:uses
      OleDb,ComObj,ActiveX;function PromptDataSource(ParentHandle: THandle; InitialString: WideString): WideString;
    var
      DataInit: IDataInitialize;
      DBPrompt: IDBPromptInitialize;
      DataSource: IUnknown;
      InitStr: PWideChar;
    begin
      Result := InitialString;
      DataInit := CreateComObject(CLSID_DataLinks) as IDataInitialize;
      if InitialString <> '' then
        DataInit.GetDataSource(nil, CLSCTX_INPROC_SERVER,
          PWideChar(InitialString), IUnknown, DataSource);
      DBPrompt := CreateComObject(CLSID_DataLinks) as IDBPromptInitialize;
      if Succeeded(DBPrompt.PromptDataSource(nil, ParentHandle,
        DBPROMPTOPTIONS_PROPERTYSHEET, 0, nil, nil, IUnknown, DataSource)) then
      begin
        InitStr := nil;
        DataInit.GetInitializationString(DataSource, True, InitStr);
        Result := InitStr;
      end;
    end;