Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#13

AW: Adoconnection liest keinen String

  Alt 21. Mär 2012, 18:49
Hast du schon einmal mit UDL-Dateien gearbeitet?
In einer UDL-Datei wird der gesamte ConnectionString gespeichert und kann vom Benutzer leicht (per Doppelklick!) geändert werden.
Dein Programm braucht sich darum überhaupt nicht zu kümmern.
Im Anhang ist eine UDL-Datei zum Testen.

Hier ein Beispiel wie du die Connection herstellen kannst:
Delphi-Quellcode:
  if ADOConnection1.Connected then
    // Prüfung, ob ADOConnection schon aktiv ist
    ShowMessage('Warnung: ADOConnection ist schon aktiv !');
  // ConnectionString aus UDL-Datei zuweisen
  // UDL-Datei heisst genau gleich wie deine EXE; hat aber nur die Endung .udl
  ADOConnectionSetupUDL(ADOConnection1, '');
  ADOConnection1.Connected := True;
Und hier noch die Hilfsfunktionen:

Delphi-Quellcode:
uses ...,ADODB;


resourcestring
  SUDLMissing = 'UDL-Datei "%s" nicht vorhanden !';

// liefert Dateiname inkl. Pfad der Anwendung oder der DLL
function GetModuleName: string;
var
   hi : HINST;
begin
   SetLength(Result, MAX_PATH);
   if IsLibrary then
      hi := HInstance
   else
      hi := 0;
   SetLength(Result, GetModuleFileName(hi, PChar(Result), length(Result)));
end;


procedure ADOConnectionSetupUDL(cn: TADOConnection; const UdlFile: string);
var
   FileName: string;
begin
   cn.Connected := False;

   FileName := UdlFile;

   if FileName='then
      FileName := ChangeFileExt(GetModuleName, '.udl')
   else if ExtractFilePath(FileName) = 'then
      // Wenn kein Pfad übergeben wurde => Pfad der Exe eintragen
      FileName := ExtractFilePath(GetModuleName) + FileName;

   if not FileExists(FileName) then
      raise EADOError.CreateFmt('ADOConnectionSetupUDL(%s,%s) '#13#10+
         SUDLMissing, [cn.Name,UdlFile, filename]);

   cn.ConnectionString := 'FILE NAME=' + FileName;
end;
Angehängte Dateien
Dateityp: zip Test.zip (345 Bytes, 4x aufgerufen)
Andreas
  Mit Zitat antworten Zitat