Announcement

Collapse
No announcement yet.

Wie kann man in einer *.UDL Datei den Datenbanknamen in Verbindung automatisch ändern?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie kann man in einer *.UDL Datei den Datenbanknamen in Verbindung automatisch ändern?

    Meine Delphi Applikation sammelt Daten in einer ACCESS Datenbank. Ganz nach Belieben kann der Benutzer eine neue Datenbank beginnen (z.B. monatlich). Er will jedoch mit derselben Applikation auch in alten Datenbanken suchen können.

    Meine Applikation hat einen Button „Neue Datenbank“. Bei Betätigung wird an den Namen der aktuellen Datenbank eine Zeichenkette, z.B. das aktuelle Datum, angehängt: Aus „MyDB.gdb“ wird „MyDB20000831.gdb“. Entsprechend kopiere ich „MyDB.udl“ nach „MyDB20000831.udl“. Wie trägt man den geänderten Datenbanknamen unter Verbindung ein?

    Im Voraus vielen Dank
    Rainer

  • #2
    Hallo,

    in diesem Fall würde ich auf die UDL-Datei verzichten und den ConnectionString direkt im Programm zusammenbauen. Über die <b>Format</b>-Funktion kann der Platzhalter <b>%s</b> verwendet werden, um den Datenbanknamen zur Laufzeit variablen in diesen Connection-String einzufügen. Das könnte so aussehen:
    <pre>
    resourcestring
    cCONNECTSTRING = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
    ...
    sDS := aCatalog.Create(Format('%s%s',[cCONNECTSTRING, sDBPath]));
    </pre>
    &#10

    Comment


    • #3
      Vorab vielen Dank, das ist die Lösung!

      Was bedeutet eigentlich die Typ-Nummer? Ich komme leider auch mit MSDN in dieser Frage nicht weiter. In der UDL-Datei steht "Jet OLEDB:Engine Type=0". Beim Erzeugen der Datenbank verwende ich "Jet OLEDB:Engine Type=4". Ein anderes Beispiel in diesem Forum benutzt "Jet OLEDB:Engine Type=5". Welche Auswirkung hat diese unterschiedliche Definition?<br>

      Gruß<br>
      Raine

      Comment


      • #4
        Hallo,

        wenn das <b>Microsoft Platform SDK</b> von der CDROM 6 installiert wird, finden sich diese Informationen im Bereich des <b>MDAC SDK</B> auf der Seite <i>Provider-Defined Properties in DBPROPSET_JETOLEDB_DBINIT</i>:

        <pre>
        An enumeration defining the storage engine currently
        in use to access this database/data store:
        JET_ENGINETYPE_UNKNOWN = 0
        JET_ENGINETYPE_JET10 = 1
        JET_ENGINETYPE_JET11 = 2
        JET_ENGINETYPE_JET2X = 3
        JET_ENGINETYPE_JET3X = 4
        JET_ENGINETYPE_JET4X = 5
        </pre>
        Der Wert legt somit nur fest, welche Version der Microsoft JET ENGINE für den Zugriff auf die MDB-Datei verwendet werden soll. In der Praxis spielt das jedoch nur dann eine Rolle, wenn eine neue MDB-Datei angelegt wird.

        Eine umfassende Auflistung aller Werte ist unter <i>Appendix C: Microsoft Jet 4.0 OLE DB Provider Defined Property Values</i> zu finden.

        &#10

        Comment


        • #5
          Vielen Dank!<br>
          Raine

          Comment

          Working...
          X