Markus: Last record in Access..

Hi Leute,

Möchte in einer Access-Datenbank auf den letzten Eintrag zugreifen...

Wie müßt ich da meine Abfrage gestallten??

Gibts da was wie "last record" od so??

Vl kann mir wer helfen!

Danke
Ciao

Markus

  1. Hallo,
    es gibt 2 Möglichkeiten:
    1. Den SQL-String mit "DESC" "falschrum" sortieren. Dann gehst Du von hinten nach vorne.

    2. RS.MoveLast geht zum letzten Eintrag im Recordset

    MfG
    JankoW

  2. Hallo Markus

    Möchte in einer Access-Datenbank auf den letzten Eintrag zugreifen...

    Gibts da was wie "last record" od so??

    SELECT Last(tabelle.datenfeld) FROM tabelle;

    Damit hast Du dann zwar den letzten hinzugefügten Datensatz, aber dieser kann nicht bearbeitet werden. Also sinnvoll ist das dann nur, um z.B. einen PrimaryKey auszulesen anschließend mit

    SELECT tabelle.datenfeld FROM tabelle WHERE (((tabelle.datenfeld)=" & myVar & "));

    diesen einzelnen Datensatz auszulesen.

    Viele Grüße aus Köln
    Markus

    1. Hi,

      Danke für eure Denkanstöße!

      Brauche das ganze für eine Bestätigungsseite!

      Und Brache daher mehrere Datenbankfelder für die Bestätigung der Eintragung!

      SELECT Last(tabelle.datenfeld) FROM tabelle;

      Damit hast Du dann zwar den letzten hinzugefügten Datensatz, aber dieser kann nicht bearbeitet werden. Also sinnvoll ist das dann nur, um z.B. einen PrimaryKey auszulesen anschließend mit

      Der Datensatz muß ja nicht bearbeitet werden es muß nur online angezeigt werden!

      SELECT tabelle.datenfeld FROM tabelle WHERE (((tabelle.datenfeld)=" & myVar & "));

      Kann ich dafür nicht brauchen oder?

      Danke

      Ciao
      Markus

      1. Hallo,

        Kann ich dafür nicht brauchen oder?

        Doch eigentlich schon:

        1.)
        strSQL = "SELECT Last(tabelle.ID) AS [LastID] FROM news;"
        set rs = db.execute(strSQL)
        myVar = CInt(rs("LastID"))
        strSQL = SELECT tabelle.* FROM tabelle WHERE (((tabelle.ID)=" & myVar & "));"
        _Recordset auslesen_
        db close
        set db = nothing
        set rs = nothing

        Damit hast genau den letzten Datensatz mit allen Datenfeldern und kannst darauf wunderbar zugreifen.

        Oder Du nimmst die Varianten von Janko:

        2.)
        strSQL = "SELECT tabelle.*  FROM tabelle;"
        set rs = db.execute(strSQL)
        rs.MoveLast
        _Recordset auslesen_
        db close
        set db = nothing
        set rs = nothing

        3.)
        strSQL =  "SELECT news.* FROM news ORDER BY news.newsID DESC;"
        set rs = db.execute(strSQL)
        _Recordset auslesen_
        db close
        set db = nothing
        set rs = nothing

        Aus Performancegründen würde ich bei größeren Recordsets am ehesten Variante 1 empfehlen. Am wenigsten Variante 3, da hier (immer vorausgesetzt Du hast viele Datensätze) doch schon einiges hin- und hergeschaufelt werden muß bevor die Abfrage steht.

        Viele Grüße aus Köln
        Markus

        1. Sorry,

          1.)
          strSQL = "SELECT Last(tabelle.ID) AS [LastID] FROM news;"
          set rs = db.execute(strSQL)
          myVar = CInt(rs("LastID"))
          strSQL = SELECT tabelle.* FROM tabelle WHERE (((tabelle.ID)=" & myVar & "));"

          set rs = db.execute(strSQL)

          _Recordset auslesen_
          db close
          set db = nothing
          set rs = nothing

          Gruß
          Markus

          1. Hi,

            Danke für eure Hilfe!

            Habs jetzt lösen können dank deinen Tips!

            Ciao

            Markus

    2. SELECT Last(tabelle.datenfeld) FROM tabelle;

      LAST ???

      Meinst Du Max()?

      1. Guten Tag, (Begrüßung;-)

        SELECT Last(tabelle.datenfeld) FROM tabelle;

        LAST ???

        Meinst Du Max()?

        Nein, es gibt die Funktionen Last und Max.

        Max gibt den Datensatz mit dem höchsten Wert zurück, Last immer den letzten Datensatz innerhalb einer Abfrage. Last hat also die gleiche Funktionalität wie MoveLast bei einem ADODB-Recordset in VBA/VBScript.

        Beispiel: http://www.netbrush.net/pappelweg/admin/test.asp

        Meinst Du Max()?

        Tshüss Max, ach nee das war ja garnicht Dein Name.

        Viele Grüße aus Köln
        Markus