Announcement

Collapse
No announcement yet.

Access-Version herausfinden

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

  • Access-Version herausfinden

    Liebe Delphi-Gemeinde,

    ADO funktioniert reibungslos mit den Datenbanken aller Access-Versionen (97/200/XP/2003), aber gibt es eigentlich eine Möglichkeit per Programmcode herauszufinden, an welche Version sich der Anwender gerade mit einem Delphiprogramm hängt?

    Vielen Dank im Voraus<br>
    Alex

  • #2
    Hallo,<br />
    <br />
    über die Properteries der ADO-Connection kannst Du herausfinden, welcher Engine-Typ benutzt wird.
    <pre>
    uses
    ADODB_TLB, SysUtils, Variants;
    &nbsp;<br />
    const
    sCon='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False';
    &nbsp;<br />
    function GetMDBTyp(const aDB:String);
    var aCon:_Connection;
    begin
    aCon:=CoConnection.Create;
    aCon.Open(Format(sCon, [aDB]), '', '', Integer(adConnectUnspecified));
    try
    Result:=StrToInt(VarToStr(aCon.Properties['Jet OLEDB:Engine Type']));
    finally
    aCon:=nil;
    end; // try
    end; // GetMDBTyp
    <br />
    Ergebnis:<br />
    2 = Access 2.0
    5 = Access 2000
    </pre>
    Ich hoffe, Du kannst damit etwas anfangen.<br />
    <br />
    Gruß
    Thoma

    Comment


    • #3
      Hallo,

      entschuldige die verspätete Reaktion, ich war ne Weile unpäßlich.<br>Aber vielen Dank, das war genau das, was ich suchte!

      Was ist nochmal _Connection? Du meinst doch sicher TADOConnection?

      Gruß,
      Ale

      Comment


      • #4
        Hallo,

        &gt;Was ist nochmal _Connection?

        das ist der Typ des Interface-Zeiger für das native Connection-Objekt von ADO, wobei der Name <i>_Connection</i> (mit beginnenden Unterstrich) auf einer Delphi-Eigenheit beruht. Hinter TADOConnection steckt nur eine VCL-Wrapperkomponente für das native Connection-Objekt von ADO. Über die Eigenschaft <b>ConnectionObject</b> liefert TADOConnection den Interface-Zeiger (_Connection) auf das darunterliegende Connection-Objekt zurück

        Comment


        • #5
          Wenn ich das richtig verstehe, ist also _Connection identisch mit der Anweisung TADOConnection.ConnectionObject?<br>Nicht klar ist mir jedoch, wieso ersteres als Deklaration verwendet werden kann, denn<pre><b>var</b><br> aCon : TADOConnection.ConnectionObject;</pre>funktioniert natürlich nicht

          Comment


          • #6
            Hallo Alexander,<br />
            <br />
            so wird das nichts. Du musst zuerst die ADOConnection erzeugen um auf die Eigenschaft ConnectionObject zugreifen zu können. Aber mein Beispiel funktioniert auch mit einer TADOConnection.<br /><br />
            Wenn Du bereits eine Connection besitzt kannst Du mit
            <pre>
            var aVers:String;
            ...
            aVers:=VarToStr(MyConnection.Properties['Jet OLEDB:Engine Type']);
            ShowMessage('Version: '+aVers);
            ...
            </pre>
            ebenfalls die Versionsnummer heraus bekommen.
            <br />
            Gruß Thoma

            Comment


            • #7
              Hallo Thomas,

              alles klar, funktionuckelt.<br>
              Vielen Dank!

              Gruß<br>
              Ale

              Comment

              Working...
              X