PDA

Vollständige Version anzeigen : Ausdruck in verkehrter Reihenfolge


Cuugan
25.01.2008, 15:25
Hallo Leute,

ich habe zwei Berichte die ich zweimal gleichzeitig ausdrucken möchte.
Das erste Blatt aus Bericht 1 ist auf Firmenpapier und somit Schachtnummer1. Die restlichen Blätter aus Bericht2 sind auf Blankopapier und werden aus Schacht 2 geholt.

Damit ich später nicht sortieren muss, habe ich eine Schleife erstellt, so dass die Bericht zweimal ausgedruckt werden.

Drucke ich jetzt, werden erst die beiden mit Firmenpapier aus Schacht1 gedruckt und anschließend die beiden Exemplare aus Schacht2.
Setzte ich einen Haltepunkt und lass ihn Schritt-für-Schritt drucken, funktioniert es wie gewünscht.

Woran kann das liegen?

Hier mein code

antwort = MsgBox("Sollten Sie keinen zweifachen Ausdruck wünschen, klicken Sie bitte auf nein.", vbYesNoCancel, "Anzahl der Drucke")
Select Case antwort
Case vbNo
DoCmd.OpenReport "rptSplit1", , , "qryAlles.auto_id=" & Me.lstAuftraege.Column(0), , Me.lstAuftraege.Column(0)
DoCmd.OpenReport "rptSplit2", , , "qryAlles.auto_id=" & Me.lstAuftraege.Column(0), , Me.lstAuftraege.Column(0)
Case vbYes

Dim anzahlkopien As Integer
anzahlkopien = 2
strSuche = anzahlkopien

Dim i
For i = 0 To anzahlkopien
DoCmd.OpenReport "rptSplit1", , , "qryAlles.auto_id=" & Me.lstAuftraege.Column(0), , Me.lstAuftraege.Column(0)
DoCmd.OpenReport "rptSplit2", , , "qryAlles.auto_id=" & Me.lstAuftraege.Column(0), , Me.lstAuftraege.Column(0)

Next i
Case vbCancel
End Select

Cuugan
25.01.2008, 16:15
hi,

ich hab es gelöst, wenn auch getrickst...
ich hab ne pausierung eingebaut


Public Function fctSleep(Sec As Long)

' ---------------------------------------------------------
' Diese Funktion hält die Verarbeitung für X Sekunden an.
' X wird über das rufende Programm definiert.
'
' Funktion von http://www.access-home.de/
' ---------------------------------------------------------

Dim merk As Long

merk = Int(Timer) + Sec

Do Until Timer >= merk
DoEvents
Loop

End Function


Wenn jedoch jemand weiß warum der Fehler auftritt, bitte melden.
cu
Hansi

Anne Berg
25.01.2008, 21:34
Hast du es schon mal mit DoEvents ausprobiert?

Einfach den Befehl nach jedem OpenReport einfügen.

Cuugan
28.01.2008, 09:47
Hallo Anne,

jetzt ja, allerdings hat das nicht so funktioniert. Nehme ich die sleep-function raus, druckt er erst die beiden deckblätter und dann die beiden exemplare ohne briefbogen.


Case vbYes
Dim anzahlkopien As Integer
anzahlkopien = 1
Dim i
For i = 0 To anzahlkopien
DoEvents
DoCmd.OpenReport "rptSplit1", , , "qryAlles.auto_id=" & Me.lstAuftraege.Column(0), , Me.lstAuftraege.Column(0)
'fctSleep (10)
DoEvents
DoCmd.OpenReport "rptSplit2", , , "qryAlles.auto_id=" & Me.lstAuftraege.Column(0), , Me.lstAuftraege.Column(0)
'fctSleep (10)
Next i

Case vbCancel
End Select


oder meintest du das anders?
gruss
hansi

ps: ich würde es gerne ohne die sleep-funktion machen, da solange das formular geöffnet sein muss. Bei vorzeitigem Schließen, gehen die Daten verloren

Anne Berg
28.01.2008, 10:35
Ich sagte zwar nach dem OpenReport, also am Ende der Schleife und nicht am Anfang, aber das sollte in diesem Fall eigentlich egal sein.

Tja, da ist dann wohl nichts zu machen, der Drucker denkt offensichtlich mit und möchte sich die Arbeit erleichtern. ;)

Cuugan
28.01.2008, 18:29
tja schade....
vielleicht hat ja noch jemand eine idee?