Stefan: Durch Datensätze durchblättern

Hallo!

ich möchte gerne per Sql auf Knopfdruck durch mein recordset durchblättern. Meine normale abfrage lautet sql="select blabla from blabla where Nummer=20"

So wenn ich beim vorwärtsblättern nun das Feld wieder auslese in dem die Nummer 20 steht und einfach ein +1 hinhänge funktiuoniert das auch bis einmal ein Datenstz fehlt. Dann springt er nicht zum nächsten, sondern bring den Fehler Datensatz nicht vorhanden. Wie könnte eine gute SQL Abfrage aussehen? Hilfe!

  1. Halihallo Stefan

    ich möchte gerne per Sql auf Knopfdruck durch mein recordset durchblättern. Meine normale abfrage lautet sql="select blabla from blabla where Nummer=20"

    Für welche Datenbank? - Verwendest du ADO für die DB-Anbindung?

    Viele Grüsse

    Philipp

    1. Hallo Philipp!

      Ja ich benutze ADO für die DB-Anbindung. Datenbank ist leider Access

      1. Hallo Stefan,

        leider kann ich dir nicht helfen, aber ich würde die Lösung auch gerne wissen!

      2. yo,

        Ja ich benutze ADO für die DB-Anbindung. Datenbank ist leider Access

        bei mysql geht das über das LIMIT konstrukt. die abfrage ist so gestalltet, dass am ende die LIMIT klausel steht und deren anfangspunkt variabel ist und Anzahl angibt, wieviele datensätze auf einmal angezeigt werden sollen. DIe SQL anweisung muss entsprechend so gestaltet werden, dass es alle gewünschten Datensätze erfasst.

        LIMIT $Variabler_Wert, Anzahl

        ob access das limit in gleicher form untersützt, kann ich leider nicht sagen, aber vielleicht gibt es etwas ähnliches.

        Ilja

        1. yo,

          habe noch vergessen anzumerken, falls access nicht die limit klausel unterstützt, kann man es auch mit zwei abfragen (oder einer Unterabfrage) lösen. die erste dient dazu, die nächstmögliche ID herauszubekommen, zum beispiel so, wobei $id die id der letzten seite ist, die von script zu script übergeben werden muss.

          SELECT MIN(ID) from tabelle WHERE id > $id

          Ilja

          1. Keine Ahnung warum, aber bei mir funzt es nicht?

            1. yo,

              Keine Ahnung warum, aber bei mir funzt es nicht?

              wie gesagt, Limit muss nicht von Access untersützt werden. aber was genau geht denn nicht, bzw. gibt es fehlermeldungen ?

              Ilja

              1. Immer irgendwelche syntaxfehler
                was genau geht denn nicht, bzw. gibt es fehlermeldungen ?

                1. yo,

                  Immer irgendwelche syntaxfehler

                  zeigt doch mal dein sql statement und die fehlermeldung dazu ....

                  Ilja

                  1. zeigt doch mal dein sql statement und die fehlermeldung dazu ....

                    Also dieses Steatement funzt, aber nur solange logischerweise keine Nummer fehlt:
                    sql=
                    "select * from patente1 where Nummer LIKE '"&Request("hNummer")&"'+1"

                    So bei allen (guten) Tipps ist entweder ein syntaxfehler gekommen, oder folgendes:

                    ADODB.Recordset (0x800A0E78)
                    Operation is not allowed when the object is closed.

                    Dies kommt glaube ich wegen dem > Zeichen.

                    1. Halihallo Stefan

                      Also dieses Steatement funzt, aber nur solange logischerweise keine Nummer fehlt:
                      sql=
                      "select * from patente1 where Nummer LIKE '"&Request("hNummer")&"'+1"

                      [pref:t=76673&m=442207]

                      SELECT TOP 1 *
                         FROM patente1
                         WHERE Nummer>"&Request(hNummer)&"
                         ORDER BY Nummer ASC

                      Viele Grüsse

                      Philipp

                      1. Hört sich logisch an, aber bei mir kommt dieser Fehler:

                        Error Type:
                        Microsoft JET Database Engine (0x80040E14)
                        Syntax error (missing operator) in query expression 'Nummer>'

                        1. Halihallo Stefan

                          Error Type:
                          Microsoft JET Database Engine (0x80040E14)
                          Syntax error (missing operator) in query expression 'Nummer>'

                          Ich glaube du solltest einfach beginnen deine Fehler selber zu lösen.
                          Denn diese Fehler lassen sich durch einiges Testen und Dokulesen
                          selber lösen (die ursprüngliche Frage zwar auch, aber dort kann ich
                          verstehen, dass man am Anfang einen "Denkansatz" braucht).

                          Viele Grüsse

                          Philipp

                          1. Ich glaube du solltest einfach beginnen deine Fehler selber zu

                            Naja, auch eine Art zu sagen ich kann es selber nicht.

                            Trotzdem Danke für den Versuch.

                            1. Halihallo Stefan

                              Ich glaube du solltest einfach beginnen deine Fehler selber zu
                              Naja, auch eine Art zu sagen ich kann es selber nicht.

                              Falsch. Ich kann noch vieles, was ich nicht weiss, denn das einzige
                              was ich können muss ist lesen, logisch ausschliessen und testen.
                              Genau dazu möchte ich dich auch auffordern. Es stimmt, dass ich auf
                              diese Frage grad keine Antwort parat hatte, aber man dürfte schnell
                              auf die Lösung kommen; zwischen Eigenname und Operand ein Leer-
                              schlag zu platzieren. Man muss nur wollen; was mich stört ist, dass
                              es viele gibt die eben nicht lösen wollen, sondern gleich ins Forum
                              stürmen.

                              Viele Grüsse

                              Philipp

                              1. Hallo Philipp!

                                Sorry für meine plumpe Aussage, aber ich war so genervt von dieser ganzen ASP SQL VBscript schei.e, da ich an diesen Problem nicht mehere Stunden, sondern mehrere Tage gessensen habe. Nun seis drum, letztlich habe ich das Problem gelöst und bin u.a. auch dir sehr sehr dankbar.

                                Gruß Stefan

              2. Naja, wenn du oder irgendjemmand noch eine gute Idee habt, dann postet sie. Ich wäre sehr dankbar.

      3. Halihallo Stefan

        Ja ich benutze ADO für die DB-Anbindung. Datenbank ist leider Access

        Entweder du benutzt einen geeigneten CursorType und bewegst mit
        Hilfe des Cursors über die Datensätze, oder du verwendest die in

        </archiv/2004/2/71916/#m414112>

        beschriebene Möglichkeit, welche IMHO auch auf Access funktioniert.

        Bezgl. des Cursors:
        http://www.activeserverpages.ru/ADO/dadobj01_6.htm

        verwende z.B. den Keyset, Dynamic oder Static Cursor. Alle diese
        können zwischen den verschiedenen Datensätzen innerhalb des
        RecordSets "herumspringen". Es besteht sogar die Möglichkeit eine
        fixe PageSize einzugeben und über AbsolutePage die geforderte zu
        selektieren.

        Viele Grüsse

        Philipp

  2. Hi,

    =============================================

    lastID = 20                '// via POST oder GET übergeben

    objRS_sql = "SELECT * FROM tabelle1
                 WHERE ID =
                       (SELECT MIN(ID) FROM tabelle1
                        WHERE ID > " & lastID & ")"

    ....
    den Rest solltest du ja kennen.

    Auf jeden Fall auch eine Lösung.

    Gruß, Frank

    PS: das SQL Statement ist zwecks der Übersichtlichkeit auf
    mehrere Zeilen verteilt