2009-09-25 9 views
5

Zastanawiam się nad dodaniem połączenia z bazą ODBC do aplikacji.Delphi ODBC Connection Dialog Component?

Użytkownik w czasie wykonywania skonfiguruje i wybierze połączenie ODBC z bazą danych.

Czy są jakieś elementy, które dadzą mi wymaganą serię dialogów?

pozwalając użytkownikowi wybrać typ źródła danych wybierz kierowców, przeglądać już zdefiniowane połączenia ODBC itp

Cheers Sam

+0

Postaram sugerowanych rozwiązań i wrócić jak najszybciej. – SamH

Odpowiedz

9

można spróbować tego, czy używasz ADO komponentów.

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

Wariant 2

Uses 
ADODB; 

PromptDataSource(Self.Handle, InitialString); 

Wariant 3

Uses 
ADODB, 
AdoConEd; 

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

Musisz wybrać "Dostawca Microsoft OLE DB dla sterowników ODBC"

Pa.

0

Funkcja PromptDataSource z jednostki ADODB. są wymagane dwa parametry: uchwyt

  1. postaci wywołującego
  2. ciąg połączenia. Jeśli nie chcesz ciąg domyślne połączenie prostu przekazać pusty ciąg jako:

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