While Schleife bricht ab "Kein aktueller Datensatz"

02/07/2009 - 07:36 von Wazlav Gizycki | Report spam
Hallo Group,

ich habe da mal eine Frage. Ich hole mit einem SQL bestimmte Werte aus
zwei Tabellen
und schreibe die in eine temporàre Tabelle, die als Grundlage für ein
Bericht dient

In der ersten Spalte ist ein Bezeichner der zusammengehàngende
Datensàtze auszeichent.
Ich möchte in der temporàren Tabelle erst dann eine Neue Zeile
einfügen,
'wenn sich der Bezeichner geàndert hat. Damit ich pro Bezeichner eine
Zeile mit mehreren Spalten habe.
Das mache ich deshalb, weil manchmal auch Null Werte dabei sind, die
ich im Bericht nicht haben will.

Irgendwie möchte Access das aber nicht machen, wenn ich pro Datensatz
eine Zeile anlege làuft es. Wenn ich versuche in der
gleichen Zeile wieder anzusetzen meldet Access "kein aktueller
Datensatz"! Weiß vielleicht Jemand aus der Group ein Rat?
Danke.

Set rst = cDB.OpenRecordset("SELECT col1, col2, col3, col4 FROM tab2
LEFT JOIN Tab3 ON Tab2.col5 = Tab3.col5")

'Zeiger auf ersten Datensatz bewegen
rst.MoveFirst

'Tabelle mit While für Bericht füllen
Do While Not rst.EOF
'beim ersten Durchlauf auf jeden Fall eine Zeile anlegen
If rst.AbsolutePosition = 0 Then
Tab1.AddNew
Tab1!col1 = rst![col1]
End If

'Vergleichsvariable holen
rst.MovePrevious
If Not (rst.BOF Or rst.EOF) Then
varTemp = rst![col1]
End If
rst.MoveNext

If varTemp = rst![col1] And rst.AbsolutePosition > 0 Then
Tab1.Edit '<- hier wird der Fehler gemeldet: "kein
aktueller Datensatz"

ElseIf varTemp <> rst![col1] And rst.AbsolutePosition > 0 Then
Tab1.AddNew
Tab1!col1 = rst![col1]

End If
'Je nach ŽWert wird die Anzahl in die dazuhehörige _Spalte
geschrieben.
If rst![col3] = 1 Then
Tab1!col2 = rst![col2]

ElseIf rst![col3] = 2 Then
Tab1!col3 = rst![col2]

ElseIf rst![col3] = 3 Then
Tab1!col4 = rst![col2]
End If

'Recordset Zeiger weiter bewegen
Tab1.Update
rst.MoveNext

Loop
Tab1.Close
 

Lesen sie die antworten

#1 Stefan Dase
02/07/2009 - 07:58 | Warnen spam
Hallo Wazlav!

(...)
Irgendwie möchte Access das aber nicht machen, wenn ich pro Datensatz
eine Zeile anlege làuft es. Wenn ich versuche in der
gleichen Zeile wieder anzusetzen meldet Access "kein aktueller
Datensatz"! Weiß vielleicht Jemand aus der Group ein Rat?
Danke.
(...)

If varTemp = rst![col1] And rst.AbsolutePosition > 0 Then
Tab1.Edit '<- hier wird der Fehler gemeldet: "kein
aktueller Datensatz"



Wenn Tab1 - deren Objekttyp du uns vorenthalten hast, ich vermute mal
ein DAO.Recordset? - zuvor keine Datensàtze enthàlt, hat sie auch hier
noch keinen Eintrag. Du erzeugst zwar einen Satz mit .AddNew,
gespeichert wird dieser aber erst viel spàter mittels .Update.

In DAO musst du anders als mit ADO Änderungen explizit speichern, sonst
werden sie verworfen!

HTH,
Stefan

Ähnliche fragen