2009-09-25 53 views
5

我正在考慮將ODBC數據庫連接添加到應用程序。Delphi ODBC連接對話框組件?

用戶將在運行時配置並選擇他們的數據庫odbc連接。

是否有任何組件會給我所需的一系列對話框?

允許用戶選擇數據源類型,選擇驅動器,瀏覽已經 定義ODBC連接等

乾杯 山姆

+0

我會嘗試建議的解決方案和回來儘快解決。 – SamH 2009-09-25 15:30:10

回答

9

你可以試試這個,如果你正在使用ADO組件。

選項1

Uses 
    OleDB, 
    ComObj, 
    ActiveX; 

    function Edit_ADO_ODBC_ConnectionString(ParentHandle: THandle; InitialString: WideString;out NewString: string): Boolean; 
    var 
     DataInit : IDataInitialize; 
     DBPrompt : IDBPromptInitialize; 
     DataSource: IUnknown; 
     InitStr : PWideChar; 
    begin 
     Result := False; 
     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; 

     { 
     DBPROMPTOPTIONS_WIZARDSHEET = $1; 
     DBPROMPTOPTIONS_PROPERTYSHEET = $2; 
     DBPROMPTOPTIONS_BROWSEONLY = $8; 
     DBPROMPTOPTIONS_DISABLE_PROVIDER_SELECTION = $10; 
     } 
     if Succeeded(DBPrompt.PromptDataSource(nil, ParentHandle,DBPROMPTOPTIONS_PROPERTYSHEET, 0, nil, nil, IUnknown, DataSource)) then 
     begin 
     InitStr := nil; 
     DataInit.GetInitializationString(DataSource, True, InitStr); 
     NewString := InitStr; 
     Result := True; 
     end; 
    end; 



Result:=Edit_ADO_ODBC_ConnectionString(0,OldConnectionString,NewString); 

選項2

Uses 
ADODB; 

PromptDataSource(Self.Handle, InitialString); 

選項3

Uses 
ADODB, 
AdoConEd; 

procedure TMainForm.Button2Click(Sender: TObject); 
Var 
ADOConnection1 : TADOConnection; 
begin 
    ADOConnection1:=TADOConnection.Create(Self); 
    EditConnectionString(ADOConnection1); 
end; 

必須選擇「Microsoft OLE DB Provider for ODBC Drivers」

再見。

0

來自ADODB單元的PromptDataSource函數。兩個參數是 要求:

  1. 調用窗體的句柄
  2. 連接字符串。如果你不想要的默認連接字符串 只是傳遞一個空字符串爲:

    var sConn : WideString; begin sConn := PromptDataSource(Form1.Handle, ''); end;