Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Bernie110 am April 11, 2012, 10:17:20

Titel: Printout Problem
Beitrag von: Bernie110 am April 11, 2012, 10:17:20
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

Titel: Re: Printout Problem
Beitrag von: MzKlMu am April 11, 2012, 10:36:32
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.
Titel: Re: Printout Problem
Beitrag von: Bernie110 am April 11, 2012, 10:43:58
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
Titel: Re: Printout Problem
Beitrag von: MzKlMu am April 11, 2012, 10:49:54
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.
Titel: Re: Printout Problem
Beitrag von: Bernie110 am April 11, 2012, 11:32:20
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
Titel: Re: Printout Problem
Beitrag von: MzKlMu am April 11, 2012, 11:38:30
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.
Titel: Re: Printout Problem
Beitrag von: Jonny am April 11, 2012, 11:43:31
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
Titel: Re: Printout Problem
Beitrag von: Bernie110 am April 11, 2012, 12:03:02
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
Titel: Re: Printout Problem
Beitrag von: Bernie110 am April 11, 2012, 12:05:01
@ Johnny  funzt dennoch nicht
Titel: Re: Printout Problem
Beitrag von: MzKlMu am April 11, 2012, 12:21:25
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).
Titel: Re: Printout Problem
Beitrag von: DF6GL am April 11, 2012, 12:21:44
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"
Titel: Re: Printout Problem
Beitrag von: Bernie110 am April 11, 2012, 12:25:23
@ Franz  danke jetzt funzt es    :)


Titel: Re: Printout Problem
Beitrag von: MzKlMu am April 11, 2012, 12:27:59
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.
Titel: Re: Printout Problem
Beitrag von: Bernie110 am April 11, 2012, 13:10:58
Hi,

hmm keine Ahnung, aber es funktioniert.

Meinst du , es könnte zu Problemen kommen ?

Gruss
Bernie
Titel: Re: Printout Problem
Beitrag von: MzKlMu am April 11, 2012, 13:33:49
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.
Titel: Re: Printout Problem
Beitrag von: Bernie110 am April 11, 2012, 14:13:25
Hi,

ok funktioniert auch ..
Danke ! MzKlMu

Gruss
Bernie