In Endlosformular alle Datensätze

Hallo zusammen,

hab schon wieder ein Problem:
Ich habe ein Endlosformular und darin ein Kontrollkästchen. Ich möchte nun über einen Button alle Datensätze mit Haken drucken (vorher werden sie noch in eine andre tabelle geschrieben und der Druck greift auf die tabelle zurück).Jedenfalls sollen alle markierten datensätze in die neue Tabelle geschrieben werden. Momentan ist es aber so, dass nur die daten des aktuellen datensatzes in die neue Tabelle markiert werden. Welcher VBA- Anweisung ist notwendig, dass alle Datensätze mit haken in die neue tabelle kopiert werden?
Hier mal noch meine momentanen VBA- Anweisungen:

Sub btnWSDrucken_Click()
Dim db As Database
Dim rs As Recordset
Dim I As Integer

Set db = CurrentDb()
Set rs = db.OpenRecordset(„TmpDruck“, dbOpenDynaset)

If Me![Druck] = True Then
DoCmd.Hourglass True
For I = 1 To Me.[Feld7]
rs.AddNew
rs(„Feld1“) = [Feld1]
rs(„Bezeichnung“) = [Bezeichnung]
rs(„Lieferant“) = [Lieferant]
rs(„Lagerort“) = [Lagerort]
rs(„Stk/Beh“) = [Stk/Beh]
rs(„Feld7“) = [Feld7]
rs(„Stellplatz“) = [Stellplatz]
rs(„Zähler“) = I
rs(„Druck“) = [Druck]
rs.Update
Next I
DoCmd.Hourglass False
DoCmd.GoToRecord

'rs.Close
'MsgBox „Artikel für den Ausdruck von“ + _
'Str$(Me.[Feld7]) + _
" Aufklebern in Warteschlange gestellt!", vbOKOnly

Else
DoCmd.GoToRecord

End If

'DoCmd.OpenReport „Pendelbehälter 102x72_neu“, acViewPreview

Exit_btnWSDrucken_Click:
Exit Sub

Err_btnWSDrucken_Click:
MsgBox Err.Description
Resume Exit_btnWSDrucken_Click
End Sub

Für Eure Hilfe wäre ich sehr dankbar.
Viele Grüße von Beate

Hallo,

ich würde zunächst ein Me.Requery einfügen, was dazu führt, dass alle Markierungen in die Datenquelle (Tabelle oder Abfrage) Deines Formulars eingetragen werden. Dann diese Datenquelle als zweites Recordset öffnen und mit einer Do Until rs2.EOF = True/Loop-Scheife durch die Datensätze gehen und bei Häkchen gesetzt übertragen.

ujk

Hallo,

oder gleich eine Abfrage mit where Häkchen = True als Datenbasis für den Ausdruck nehmen.

ujk

Also so richtig komm ich noch nicht klar. hab noch nicht mit so einer Schleife gearbeitet. Meine VBA sieht jetzt so aus:
Sub btnWSDrucken_Click()
Dim db As Database
Dim rs As Recordset
Dim rs2 As Recordset
Dim I As Integer

Set db = CurrentDb()
Set rs = db.OpenRecordset(„TmpDruck“, dbOpenDynaset)

Do Until rs2.EOF = True
If Me![Druck] = True Then
DoCmd.Hourglass True
For I = 1 To Me.[Feld7]
rs.AddNew
rs(„Feld1“) = [Feld1]
rs(„Bezeichnung“) = [Bezeichnung]
rs(„Lieferant“) = [Lieferant]
rs(„Lagerort“) = [Lagerort]
rs(„Stk/Beh“) = [Stk/Beh]
rs(„Feld7“) = [Feld7]
rs(„Stellplatz“) = [Stellplatz]
rs(„Zähler“) = I
rs(„Druck“) = [Druck]
rs.Update
Next I
DoCmd.Hourglass False
End If

Loop

'rs.Close
'MsgBox „Artikel für den Ausdruck von“ + _
'Str$(Me.[Feld7]) + _
" Aufklebern in Warteschlange gestellt!", vbOKOnly

'DoCmd.OpenReport „Pendelbehälter 102x72_neu“, acViewPreview

Exit_btnWSDrucken_Click:
Exit Sub

Err_btnWSDrucken_Click:
MsgBox Err.Description
Resume Exit_btnWSDrucken_Click
End Sub

Wie ist es aber richtig?

Gruß, Beate

Hallo,

probier es mal so:

Sub btnWSDrucken_Click()
Dim db As Database
Dim rs As Recordset
Dim rs2 As Recordset

Me.Requery

Set db = CurrentDb()
Set rs = db.OpenRecordset(„TmpDruck“, dbOpenDynaset)

Set rs2 = db.OpenRecordset(„Name der Datenquelle des Formulars“, dbOpenDynaset)
rs2.MoveFirst

Do Until rs2.EOF = True

If rs2![Druck] = True Then

rs.AddNew

rs![Feld1] = rs2![Feld1]
… etc., die anderen Felder übertragen …

rs.Update
End If

rs2.MoveNext

Loop

'rs.Close

rs2.Close

'MsgBox „Artikel für den Ausdruck von“ + _
'Str$(Me.[Feld7]) + _
" Aufklebern in Warteschlange gestellt!", vbOKOnly

'DoCmd.OpenReport „Pendelbehälter 102x72_neu“,
acViewPreview

Exit_btnWSDrucken_Click:
Exit Sub

Err_btnWSDrucken_Click:
MsgBox Err.Description
Resume Exit_btnWSDrucken_Click
End Sub

Wie ist es aber richtig?

Gruß, Beate

Hallo,

DANKE, DANKE, DANKE - es funktioniert :smile:

Viele Grüße Beate