Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Printout Problem

Begonnen von Bernie110, April 11, 2012, 10:17:20

⏪ vorheriges - nächstes ⏩

Bernie110

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


MzKlMu

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.
Gruß Klaus

Bernie110

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

MzKlMu

#3
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.
Gruß Klaus

Bernie110

#4
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

MzKlMu

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.
Gruß Klaus

Jonny

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

Bernie110

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

Bernie110

@ Johnny  funzt dennoch nicht

MzKlMu

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).
Gruß Klaus

DF6GL

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"
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Bernie110

@ Franz  danke jetzt funzt es    :)



MzKlMu

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.
Gruß Klaus

Bernie110

Hi,

hmm keine Ahnung, aber es funktioniert.

Meinst du , es könnte zu Problemen kommen ?

Gruss
Bernie

MzKlMu

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.
Gruß Klaus