Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Recordset spring immer zum letzten Datensatz

Begonnen von herb54, Februar 16, 2016, 14:25:41

⏪ vorheriges - nächstes ⏩

herb54

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

herb54

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).

MzKlMu

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.
Gruß Klaus

herb54

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

MzKlMu

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.
Gruß Klaus

MaggieMay

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.
Freundliche Grüße
MaggieMay

MzKlMu

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 ?
Gruß Klaus

MaggieMay

...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.
Freundliche Grüße
MaggieMay

MzKlMu

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.
Gruß Klaus

herb54

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

DF6GL

Hallo,

benutz doch einfach statt des Tabellenamen einen SQL-String , in dem Du sortieren kannst, wie Du willst.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

herb54

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