Hallo,
ich habe folgendes Problem:
Ich habe ein Formular welches sich auf eine Tabelle (tblAbo) bezieht.
In diesem Formular zeige ich das Feld "eingabe" und "RechnungsNr"
an. Das Formular besitzt eine Schaltfläche mit der ich ein
Recordset aufrufe - dieses Recordset soll folgendes tun:
Ich schreibe in mein Feld "eingabe" eine Nummer. Diese Nummer soll sich fortlaufend erhöhen und in das Feld "RechnungsNr" eingetragen werden. Bsp.: eingabe = 58560 -> RechnungsNr = 58561, 58562... usw. Das erste Feld der Tabelle tblAbo ist die IdNr. Ich habe einen Haltepunkt gesetzt um zu sehen auf welchen Datensatz gesprungen wird und das ist merkwürdigerweise immer der letzte (132). Wenn ich mit "xs.MoveNext" weiterspringe ist er im ersten Datensatz. Gebe ich aber nur einen neuen Datensatz ein springt er auf 135. Kann mir da mal jemand helfen?
Vielen Dank im Voraus
Private Sub Befehl26_Click()
On Error GoTo Err_Befehl26_Click
Dim xs As DAO.Recordset
Dim z(600) As Variant
Dim RechnungsNr As Variant
Dim ersteNummer As Variant
Dim eingabe As Variant
Dim i As Integer
Dim j As Integer
Set xs = CurrentDb.OpenRecordset("tblAbo")
' xs.MoveNext
(Haltepunkt) z(1) = xs!IDNr
If xs.RecordCount > 0 Then
Do Until xs.EOF
xs.Edit
xs!RechnungsNr = False
xs.Update
xs.MoveNext
Loop
End If
xs.Close
Set xs = Nothing
Set xs = CurrentDb.OpenRecordset("tblAbo")
i = 1
xs.MoveFirst
xs.MoveNext
xs.Edit
z(1) = xs!IDNr
z(1) = xs!eingabe
xs!RechnungsNr = z(1)
xs.Update
If xs.RecordCount > 0 Then
Do Until xs.EOF '***********************************
'MsgBox (z(1))
xs.Edit
z(i) = z(1) + i
xs!RechnungsNr = z(i)
xs.Update
xs.MoveNext
Loop
End If
xs.Close
Set xs = Nothing
Exit_Befehl26_Click:
Exit Sub
Err_Befehl26_Click:
MsgBox Err.Description
Resume Exit_Befehl26_Click
End Sub
Hallo,
den Sprung auf den letzten Datensatz sehe ich nicht, wo findet der statt?
Aber die Laufvariable i verändert sich nicht, bleibt also immer auf 1 stehen.
Hallo, dass ist ja das was ich auch nicht verstehe, warum hier zum letzten Datensatz gesprungen wird. Was ich nicht erwähnt hatte ist, dass ich die Tabelle ein paar mal vorher sortiert habe. Die Sortierungen wurden jedoch immer wieder entfernt.
Zur Laufvariablen: i ist eine Konstante Zahl =1 und verändert sich nicht sondern wird immer zum ersten Wert (z(1) hinzugezählt (das funktioniert übrigens einwandfrei).
Hallo,
ZitatWas ich nicht erwähnt hatte ist, dass ich die Tabelle ein paar mal vorher sortiert habe.
die Sortierung einer Tabelle ist bedeutungslos, bez. richtet sich nach der Sortierung des Primärschlüssels. Neue Datensätze werden nicht zwangsläufig hinten an die Tabelle angehängt.
Für eine zuverlässige Sortierung der Datensätze solltest Du eine Abfrage erstellen die wie gewünscht sortiert. Diese Abfrage wird dann statt der Tabelle verwendet.
Hallo,
ich hatte die Sortierung nur kurzzeitig zum Auffinden von Adressen verwendet. Trotzdem frage ich mich: Warum wird hier auf den letzten Datensatz gesprungen - ich kappiers ehrlich gesagt nicht!
Gruß
Herbert
Hallo,
die Reihenfolge der Datensätze einer Tabelle ist unbestimmt. Die Datensätze werden abgelegt wie gerade Platz ist. Versuche bitte mal die Verwendung einer Abfrage und nicht die Tabelle.
Hallo,
kannst du bitte eine Beispiel-DB dazu hochladen? Das würde ich mir gern mal genauer ansehen.
Und was das betrifft:
Zitatdie Reihenfolge der Datensätze einer Tabelle ist unbestimmt.
so werden mEn die Datensätze einer Tabelle standardmäßig in der Sortierfolge des (Primär-) Index angezeigt.
Hallo,
Zitatstandardmäßig in der Sortierfolge des (Primär-) Index angezeigt.
eben, angezeigt. Das mit dem PS weis ich auch, hatte ich weiter oben auch geschrieben.
Aber ob die DS in dieser Reihenfolge auch im
Recordset stehen ?
...davon würde ich mal ausgehen, eine geöffnete Tabelle ist doch nichts anderes, oder?
Nichts desto trotz, sollte man wohl besser sortieren, wenn eine bestimmte Reihenfolge zwingend erforderlich ist.
Hallo,
Zitateine geöffnete Tabelle ist doch nichts anderes, oder?
ja, aber das Recordset ist ja möglicherweise der Rohzustand der Tabelle und ob der Rohzustand wirklich sortiert ist, ist ja die Frage.
Ich werde heute Abend mal ein paar Experimente machen.
Hallo,
vielen Dank für Eure Antworten. Ich versuche das Ganze jetzt mal über FindFirst und dann evtl. durch Abfragen des Primärindexes (IdNr). Ich dachte immer, dass die Reihenfolge des Primärindexes gleichzeitig die Reihenfolge der Datensätze ist - man kann sich täuschen!
Grüße
Herbert
Hallo,
benutz doch einfach statt des Tabellenamen einen SQL-String , in dem Du sortieren kannst, wie Du willst.
Hallo,
vielen Dank für Eure Antworten! Ich habe jetzt das Ganze auf ein ADODB Recordset umgestellt und der Käse war gegessen! Springt sofort auf den ersten Datensatz - keinerlei Probleme bei der Ausführung - macht genau das was ich will!
Nochmals vielen Dank!
Gruß Herbert