Announcement

Collapse
No announcement yet.

Falsche Reihenfolge von Datensätzen in Access DB

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

  • Falsche Reihenfolge von Datensätzen in Access DB

    Moin,

    habe ein Probleme mit einer Access Datenbank.
    Ich habe eine Anwendung unter Visual Studio 2008 geschrieben, die auf eine Access Datenbank zugreift.
    Nun tritt es gelegentlich auf das ein neuer Datensatz zwar den richtigen nächsten AutoIndex erhält, in einem DataGridView jedoch an einer falschen Stelle angezeigt wird, also irgendwo mitten drin. Alle darauf folgenden neuen Datensätze werden dem Letzten folgend, also auch mitten drin, angezeigt. Auch bei Neustart der VB-Anwendung bleibt die falsche Reihenfolge erhalten. Unter Access wird die Tabelle allerdings in der richtigen Reihenfolge dargestellt.

    Wenn ich jetzt in Access unter Extras > Datenbank Dienstprogramme > Datenbank komprimieren und reparieren anklicke ändert sich unter Access augenscheinlich erstmal nichts, aber in der VB-Anwendung werden die Datensätze jetzt in der richtigen Reihenfolge angezeigt, und die nächsten neuen Datensätze werden korrekt hinzugefügt, bis dieser Fehler erneut auftritt. Meist erst nach 100 oder mehr Datensätzen.

    Ich habe keine Ahnung wie das passiert. Vielleicht kann ja jemand helfen.

    Gruß
    ulf

  • #2
    Es kann dir völlig egal sein, in welcher Reihenfolge Datensätze in einer DB stehen. Auch der Autoindex o.a. ist kein Sortierkriterium.

    Vielmehr werden die Datensätze beim auslesen aus der DB sortiert (Order by) oder später durch die Anwendung selbst. Eine Sortierung erfolgt nicht innerhalb der DB
    Christian

    Comment


    • #3
      Hallo Christian,

      das ist ein guter Vorschlag mit den ORDER BY Befehl. Habe ich gar nicht drüber nachgedacht beim Einlesen zu sortieren. Habe aber auch noch nicht so lang mit DB zu tun. Die Drag & Drop Funktion von Visual Studio zur Einbindung von DB-Tabellen generiert automatisch auch keinen SQL-Befehl mit ORDER BY Anweisung.
      Ob's wirklich geht kann ich aber erst prüfen wenn wieder dieser Fehler auftritt. Passiert ja nicht so häufig.
      Dennoch wundert's mich, das die Reihenfolge manchmal nicht eingehalten wird. Ich hätte es mir so vorgestellt, dass jeder neue Datensatz einfach hinten angehängt wird. Außerdem kann die DB ja offensichtlich auch wieder repariert (oder was auch immer) werden.

      Vielen Dank erstmal für die schnelle Unterstützung. Werde mit ORDER BY experimentieren, wenn der Fehler wieder auftritt.

      gruß
      ulf

      Comment


      • #4
        Hallo Ulf,
        Originally posted by Achilles73 View Post
        Dennoch wundert's mich, das die Reihenfolge manchmal nicht eingehalten wird. Ich hätte es mir so vorgestellt, dass jeder neue Datensatz einfach hinten angehängt wird. Außerdem kann die DB ja offensichtlich auch wieder repariert (oder was auch immer) werden.
        Das ist eine falsche Vorstellung. Eine Datenbank hat immer auch eine "Freispeicherverwaltung", neue Datensätze können also irgendwo gespeichert werden; das passiert beim Reparieren erst recht. Wenn nicht mit einem AutoInc-PrimaryKey gearbeitet wird (was äußerst unschön wäre, aber denkbar), können dessen Werte sowieso "wild durcheinander" in der DB landen.

        Merke: Eine Datenbank enthält die Daten grundsätzlich als ungeordnete Datenmenge. Auch jede Abfrage liefert die Daten ungeordnet - es sei denn, dass ORDER BY verwendet wird.

        Jürgen

        Comment


        • #5
          Hallo Jürgen,

          aha, das sind ganz neue Erkenntnisse für mich.
          Habe mich auch nur autodidaktisch in das DB Thema eingearbeitet.
          So lernt man stets dazu. Denn sollte man ja eigentlich stets ein ORDER BY verwenden.

          Danke für die Hinweise. Werde ich die Anwendung jetzt mal verbessern.
          Beste Grüße
          ulf

          Comment

          Working...
          X