2009-09-25 7 views
5

Ich denke darüber nach, ODBC-Datenbankverbindung zu einer Anwendung hinzuzufügen.Delphi ODBC-Verbindungsdialogkomponente?

Der Benutzer wird zur Laufzeit konfigurieren und ihre Datenbank odbc Verbindung auswählen.

Gibt es irgendwelche Komponenten, die mir die erforderliche Reihe von Dialogen geben?

dem Benutzer ermöglicht, den Datenquellentyp, wählen Sie Treiber zu wählen, nach bereits definiert ODBC-Verbindungen usw.

Prost Sam

+0

Ich werde die vorgeschlagenen Lösungen versuchen und kommen so schnell wie möglich zurück. – SamH

Antwort

9

Sie können dies versuchen, wenn Sie ADO-Komponenten verwenden.

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

Option 2

Uses 
ADODB; 

PromptDataSource(Self.Handle, InitialString); 

Option 3

Uses 
ADODB, 
AdoConEd; 

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

Sie müssen "Microsoft OLE DB-Provider für ODBC-Treiber" auswählen

Tschüss.

0

PromptDataSource Funktion von der ADODB-Einheit. Zwei Parameter sind erforderlich:

  1. die anrufenden Form des Griffs
  2. eine Verbindungszeichenfolge. Wenn Sie keine Standard-Verbindungszeichenfolge wollen nur einen leeren String als:

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