2009-09-25 15 views
5

Sto pensando di aggiungere la connettività del database ODBC a un'applicazione.Componente di dialogo di connessione ODBC Delphi?

L'utente dovrà configurare e selezionare la connessione odbc del database in fase di runtime.

Esistono componenti che mi forniranno la serie di finestre di dialogo richieste?

Permettendo all'utente di selezionare il tipo di origine dati, selezionare i driver, sfogliare già connessioni ODBC definite ecc

Acclamazioni Sam

+0

cercherò le soluzioni proposte e tornare al più presto. – SamH

risposta

9

Si può provare questo, se si utilizza componenti ADO.

Opzione 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); 

Opzione 2

Uses 
ADODB; 

PromptDataSource(Self.Handle, InitialString); 

Opzione 3

Uses 
ADODB, 
AdoConEd; 

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

È necessario selezionare "Provider Microsoft OLE DB per driver ODBC"

Ciao.

0

Funzione PromptDataSource dall'unità ADODB. Due parametri sono necessari :

  1. del form chiamante maniglia
  2. una stringa di connessione. Se non si desidera stringa di connessione predefinita basta passare una stringa vuota come:

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

Problemi correlati