hallo,
mit folgendem Code versuche ich die Anzahl der Seiten beim Druck zubestimmen.
Dim Colli_Druck As Single
Dim colli_check As Single
Dim kanäle_Check As Single
colli_check = Me.Colli - (Me.Anzahl_Kanäle + Me.ROHRE)
If Me.Anzahl_Kanäle > 1 Then kanäle_Check = 2 Else kanäle_Check = 1
Colli_Druck = colli_check + kanäle_Check
If MsgBox("Möchten Sie " & Colli_Druck & " Label drucken ? ", vbYesNo + vbQuestion, "Abbrechen:") = vbYes Then
DoCmd.OpenReport "Sendungs_Lable", acNormal, , "LfdNr=" & Me!LfdNr
DoCmd.SelectObject acReport, "Sendungs_Lable"
DoCmd.PrintOut , , , , Colli_Druck
Er druckt mir aber immer nur einen Lable aus.
Egal ob Colli_Druck 2 oder 3 oder 4 ergibt.
Wie kann ich die Anzahl auf diese Art und Weise betimmen.
Gruss
Bernie
Hallo,
Du hast einen Druckbefehl mit einer LfdNr, warum sollte da mehrfach gedruckt werden?
Beschreibe das bitte mal ausführlicher. Und zeige die Prozedur vollständig.
Hallo,
Hier die vollständige Prozedur
On Error GoTo Err_Befehl_Bericht_A_Click
If Me!ERFASSUNG_Colli_Matrix.Form.Recordset.RecordCount > 0 Then
Dim Colli_Druck As Single
Dim colli_check As Single
Dim kanäle_Check As Single
colli_check = Me.Colli - (Me.Anzahl_Kanäle + Me.ROHRE)
If Me.Anzahl_Kanäle > 1 Then kanäle_Check = 2 Else kanäle_Check = 1
Colli_Druck = colli_check + kanäle_Check
If MsgBox("Möchten Sie " & Colli_Druck & " Label drucken ? ", vbYesNo + vbQuestion, "Abbrechen:") = vbYes Then
DoCmd.OpenReport "Sendungs_Lable", acNormal, , "LfdNr=" & Me!LfdNr
DoCmd.SelectObject acReport, "Sendungs_Lable"
DoCmd.PrintOut , , , , Colli_Druck
Else
On Error GoTo myFehler
Dim Seitenanzahlausdruck As Single
Seitenanzahlausdruck = InputBox("Bitte geben Sie eine wieviele Label Sie drucken möchten !")
DoCmd.OpenReport "Sendungs_Lable", acNormal, , "LfdNr=" & Me!LfdNr
DoCmd.SelectObject acReport, "Sendungs_Lable"
DoCmd.PrintOut , , , , Seitenanzahlausdruck
myFehler:
If Err.Number = 13 Then
Exit Sub
End If
Exit_Befehl_Bericht_A_Click:
Exit Sub
Err_Befehl_Bericht_A_Click:
'Msgbox "Fehler"
Resume Exit_Befehl_Bericht_A_Click:
End If
End If
Also was möchte ich machen.
Ich hab folgende Packstücke : Beispiel :
2 Europaletten
10 Kanäle
15 Rohre
= 27 Colli ( Packstücke )
Die 2 Europaletten bekommen einen Lable und die Kanäle auch 2 Label.
Das heisst ich brauch 4 Lable
Und die soll er mir drucken :-)
Der 2te Part des Codes ab der Else Bedingung funktioniert einwandfrei.
Gruss
Bernie
Hallo,
prüfe mal ob Colli_Druck gefüllt ist und mit welchem Wert.
Dazu setzt Du mal einen Haltepunkt und lässt Dir mit Debug.Print Colli_Druckden Wert im Direktbereich anzeigen.
Der Openreport Befehl mit acNormal druckt ja bereits eine Seite.
Im Else Teil müsstet Du daher eine Seite zu viel haben.
Ich würde das mit einer Schleife machen:
Dim Seitenanzahlausdruck As Single, i As Integer
Seitenanzahlausdruck = InputBox("Bitte geben Sie eine wieviele Label Sie drucken möchten !")
For i = 1 To Seitenanzahlausdruck
DoCmd.OpenReport "Sendungs_Lable", acNormal, , "LfdNr=" & Me!LfdNr
Next i
Analog dazu der Code vor dem Else.
PS (nur am Rande):
Wieso deklarierst Du Seitenzahlen als Single? Single ist eine Fließkommazahl, oder willst Du 4,33 Seiten drucken.
Integer sollte reichen, mehr als rund 32000 Seiten wirst Du wohl nicht drucken. Alle Deklarationen fasst man unterhalb der 1. Zeile der Sub zusammen.
Hallo,
du hattest die richtige Vermutung. colli_check ist leer und hat keinen Wert.
Me.Colli - (Me.Anzahl_Kanäle + Me.ROHRE) hingegen haben einen Wert
Warum ?
ZitatDer Openreport Befehl mit acNormal druckt ja bereits eine Seite.
Im Else Teil müsstet Du daher eine Seite zu viel haben.
das funktioniert aber richtig. er druckt die anzahl die ich eingebe richtig
ZitatWieso deklarierst Du Seitenzahlen als Single? Single ist eine Fließkommazahl, oder willst Du 4,33 Seiten drucken.
macht keinen Sinn, du hast recht :-)
Hab ich geändert.
Gruss
Bernie
Hallo,
ZitatMe.Colli - (Me.Anzahl_Kanäle + Me.ROHRE)
vermutlich ist einer (oder mehrere) der beteiligten Felder auch leer (Null). Dann ist das Eregbnis auch Null.
Prüfe also alle beteilgten Felder auf den (richtigen) Inhalt.
Und wie gesagt ich würde das mit der Schleife machen.
Hallo,
also wenn alle drei Felder eine Wert haben müsste colli_druck berechnet werden.
Versuche aber mal statt me.Feldname me!Feldname
Gruß
Johann
Sorry Commando zurück.
Alle Felder haben Werte .. ich hab den Haltepunkt falsch gesetzt.
Colli_Druck = 3
Er druckt aber immer noch nur eine Seite.
An was kann das noch liegen ?
Gruss
Bernie
@ Johnny funzt dennoch nicht
Hallo,
verwende mal die vorgeschlagen Schleife
For i = 1 To Colli_Druck
DoCmd.OpenReport "Sendungs_Lable", acNormal, , "LfdNr=" & Me!LfdNr
Next i
Das printout brauchst Du dann nicht, i muss deklariert werden (Integer).
Hallo,
neben der Umstellung auf Datentyp Zahl,Long sollte das so heißen:
DoCmd.OpenReport "Sendungs_Lable", acPreview , , "LfdNr=" & Me!LfdNr
DoCmd.SelectObject acReport, "Sendungs_Lable"
DoCmd.PrintOut , , , , Colli_Druck
Docmd.Close acReport,"Sendungs_Lable"
@ Franz danke jetzt funzt es :)
Hallo,
Zitatdanke jetzt funzt es
dann kann aber der Else Teil auch nicht richtig funktioniert haben, denn der war ja auch nichts anderews als der ander Code, nur 2 unterschiedliche Variable.
Hi,
hmm keine Ahnung, aber es funktioniert.
Meinst du , es könnte zu Problemen kommen ?
Gruss
Bernie
Hallo,
ich wiederhole mich, ich würde das mit der bereits mehrfach vorgeschlagenen Schleife machen.
Unabhängig von der Lösung von Franz.
Das ist für mich einfach übersichtlicher.
Hi,
ok funktioniert auch ..
Danke ! MzKlMu
Gruss
Bernie