Neuigkeiten:

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

Mobiles Hauptmenü

Seitenzahl nur pro Datensatz - mehrseitiger Bericht

Begonnen von claudia2324, August 08, 2013, 16:21:19

⏪ vorheriges - nächstes ⏩

claudia2324

Hallo,

ich muss in der Kopfzeile eines vierseitigen Berichts die Seitenzahl als Barcode einfügen. Mein Problem ist nun, dass die Seitenzahl nicht fortlaufend ausgegeben werden soll, sondern immer von 1 bis 4 pro Datensatz.

Das dient der Generierung von personalisierten Bewertungsbögen für Auswahlgespräche.

Ich hoffe jemand hat einen Tipp für mich, wie sich das realisieren lässt?  :)

VG

Claudia

DF6GL

#1
Hallo,


wie ist das mit dem 4-seitigen Bericht pro Datensatz zu verstehen?


Hast Du Seitenumbruch-Steuerelemente im Detailbereich, die die 4 Seiten produzieren?


Welchen Sinn hat es, für eine Seitennummer einen Barcode anzuzeigen/auszudrucken?


Um welchen Barcode handelt es sich?



Erstell im Seitenkopf zwei Textfelder, "txtSeitennr" (unsichtbar)  und "txtBarcode"  (sichtbar und auf einen Barcode-Font (Code 39 z. B.) eingestellt)

Im Steuerelement von "txtSeitennr"  kommt  =[Seite]    zu stehen.

Füg zusätzlich diesen Code an (passend) ein:

Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
If Me.Page = 4 Then Me.Page = 0
End Sub

Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)
Me!txtBarcode = "*" & Me!txtSeitennr & "*"
End Sub




Je nach Barcode-Typ sind die Sternchen und/oder auch eine/mehrere Prüfziffer/n, die extra zu berechnen ist/sind , erforderlich.

claudia2324

Vielen Dank, ich habe das wie beschrieben umgesetzt und es klappt.  :)

Der Font ist "3 of 9 Barcode".

Ja, ich habe Seitenumbruch-Steuerelemente verwendet.

Die Bögen werder mit der OMR-Software Remark gescannt. Ich schätze es soll die Seitenzahl mitgescannt werden, da auf den Seiten die Nummerierung der Bewertungen jeweils mit "1)" usw... beginnen. Na ja, ist nicht meine Aufgabe und ich stecke auch zu wenig in der derauffolgenden statistischen Analyse drin. Aber für die Analyse halte ich die Info der Seitenzahl für unsinnig... Aber ok, Aufgabe ausgeführt  ::)

Nächstes seoben erfahrenes Problem ist, dass vor jeden Barcode (sind alles Zahlen) ein Stern soll. Das wäre dann wohl wieder über die Steuerelementeinhalt der Textfelder im Bericht zu lösen, oder?  ???

VG

Claudia


DF6GL

Hallo,


in meinem Beispiel SIND vor und nach der Seitenzahl ein je ein "*" eingebaut....


Wenn bei einem anderen Text auch ein Barcode angezeigt/gedruckt werden soll, kannst Du mein Beispiel als Vorlage nehmen. Es geht aber auch, in einem zusätzlichen Textfeld im Steuerelementinhalt  etwa dies zu schreiben:

="*" & [txtEinBarcodeFeld] & "*"

und dieses Textfeld auf den Barcode-Font einzustellen.

(wobei "ein Stern am Anfang " eher unüblich ist)

claudia2324

#4
Ups... sorry, da hab ich doch noch das mit dem "*" übersehen... :-[

Ja, der Stern soll davor und wenn die anzuzeigende Zahl im Barcode weniger als drei Stellen hat, dann muss durch Nullen aufgefüllt werden z.B. Seite "001"...

Könnte das noch im Steruelementeinhalt des Textfeldes im Bericht direkt geregelt werden?

Leider kriege ich nun doch nicht hin, die Codezeite Me!txtBarcode = "*" & Me!txtSeitennr & "*" in den bereits vorhandenen Code für den Seitenkopf zu integrieren.

Zudem soll bei Zahlen, die weniger als drei Stellen haben mit "0"  entsprechend aufgefüllt werden. Liese sich das in den Steurelementeeigenschaft der Textfelder für den Barcode im Bericht realisieren?

Option Explicit
Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)

If IsNull(Me!AdH_ID) Then
   Me!txtJurorID.Visible = False
   Me!txtJurorID2.Visible = False
   Me!txtLfdNr.Visible = False
   Me!bezLfdNr.Visible = False
   Me!txtBewerbername.Visible = False
   Me!LiNachname.Visible = True
   Me!LiVorname.Visible = True
Else
   Me!LiNachname.Visible = False
   Me!LiVorname.Visible = False
End If

End Sub


Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer) ' Zählung der Seitenzahl pro Datensatz (Wird im Berichtskopf als Barcode angegeben)
If Me.Page = 6 Then Me.Page = 0
End Sub



Private Sub Seitenfußbereich_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me!AdH_ID) Then Me!txtVersion.Caption = "bwb_stat-6_blanko"

End Sub



Ich hoffe auf hilfreiche Tipps  :).

VG

Claudia

DF6GL

Hallo,



wie, Du bekommst das nicht hin??   Kopier sie doch einfach rein und passe die Namen an..


Mit Erweiterung auf 3 Ziffern  und ein Sternchen am Anfang


Me!txtBarcode = "*" & Format(Me!txtSeitennr,"000")


Das Schreiben des Ausdrucks in den Steuerlementinhalt könnte an dieser Stelle Schwierigkeiten ergeben.

claudia2324

#6
Ich meine an welche Stelle im schon vorhandenen Code ?

So?  :-[


Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me!AdH_ID) Then
Me!txtBarcode = "*" & Format(Me!txtSeitennr,"000")
   Me!txtJurorID.Visible = False
   Me!txtJurorID2.Visible = False
   Me!txtLfdNr.Visible = False
   Me!bezLfdNr.Visible = False
   Me!txtBewerbername.Visible = False
   Me!LiNachname.Visible = True
   Me!LiVorname.Visible = True
Else

Me!txtBarcode = "*" & Format(Me!txtSeitennr,"000")
   Me!LiNachname.Visible = False
   Me!LiVorname.Visible = False
End If

End Sub


Klappt nicht... :(

claudia2324

Hmm, im Steuerelementeinhalt des Textfeldes txtBarcode (heißt bei mir auch so) steht aber schon "=[txtSeitennr]". Ist das jetzt problematisch?

DF6GL

Hallo,


"im Steuerelementeinhalt des Textfeldes txtBarcode (heißt bei mir auch so) steht aber schon "=[txtSeitennr]". "



Hast Du den Ausdruck reingeschrieben?

Wenn Du meinen Vorschlag von letzthin übernommen hast, darf da nichts drinstehen..


Un es muss so heißen:


Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me!AdH_ID) Then
    Me!txtJurorID.Visible = False
    Me!txtJurorID2.Visible = False
    Me!txtLfdNr.Visible = False
    Me!bezLfdNr.Visible = False
    Me!txtBewerbername.Visible = False
    Me!LiNachname.Visible = True
    Me!LiVorname.Visible = True
Else
    Me!LiNachname.Visible = False
    Me!LiVorname.Visible = False
End If


Me!txtBarcode = "*" & Format(Me!txtSeitennr,"000")

End Sub

claudia2324

Hallo und vielen Dank für die Hilfe  :)

Ich habe den Code aus der letzten Antwort übernommen und im Steuerelementeinhalt des Feld txtBarcode steht "=[txtSeitennr]".

Leider erhalte ich folgende Fehlermeldung:

"Laufzeilenfehler Zeile 2448: Sie können  diesem Objekt keinen Wert zuweisen."

Zeiger steht auf Codezeite "Me!txtBarcode = "*" & Format(Me!txtSeitennr, "000")".

Was ist noch falsch?

Ach ja, jetzt sollen es doch ein Sternchen vorne und eines hinter der mind. dreistelligen Zahl sein.

VG

Claudia

claudia2324

Hmm, kleiner Nachtrag(Frage...

Hab ja auch noch folgenden Code scharfgeschaltet:

Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer) ' Zählung der Seitenzahl pro Datensatz (Wird im Berichtskopf als Barcode angegeben)
If Me.Page = 6 Then Me.Page = 0
End Sub


Ergibt das vielleicht die Fehlermeldung?

VG

Claudia

DF6GL

Hallo,


das kann ich so mit diesen fragmentierten Angaben doch nicht überblicken..


Am Besten lädst Du eine (funktionierende) DB mit diesem Bericht und ein paar Spieldaten einschliesslich einem aufrufenden Formular machvollzogen werden kann..al hier hoch, damit das nachvollzogen werden kann.

claudia2324

#12
Hallo,

anbei meine Test-DB. Bevor ich die Lösung in die Originale übertrage, arbeite ich derzeitig mit dieser Version. (Umwandlung in *.mdb hatte leider nicht funktioniert)

Es funktieniert alles, bis auf eben die Probleme im Barcode.

Der Barcode soll jetzt nicht mehr mindestens dreistelling sein (Platz sparen) aber die Zahl soll nach wie vor mit einem Stern begonnen und mit einem Stern abgeschlossen werden.

Z.B. beim Barcodefeld Etage klappt es mit einem ausgeblendeten Textfeld mit dem entsprechenden Steuerelementeinhalt und der Übertragung dieses durch ="*"+[txtEtagennr] & "*".
Das selbe Vorgehen funktioniert aber bei den Angaben zm "Durchgang" und zur "Bewerber-ID" nicht.

In dem Bogen zur Station 7 habe ich im Code zum Berichtsentwurf die Zeile Me!txtBarcodeSeitenzahl = "*" & Me!txtSeitennr & "*" hinzugenommen Steuerelementeinhalt beim entsprechenden Textfeld im Bericht ist "=[txtSeitennr]". Leider klappt dies nicht.

Hmm, was läuft noch nicht rund?   ???


database

Hallo,

="*"+[txtEtagennr] & "*"

ist kein gültiger Ausdruck!

ersetze bei diesen Feldinhalten + durch & ....

claudia2324

#14
Hallo und vielen Dank für den vorherigen Tipp.

Der Druck der personalisierten Bögen funktioniert jetzt. Nur leider der Druck der Blanko-Ersatzbögen nicht ganz korrekt. Einige Textfelder in der Kopfzeile (Stockwerk, Durchgang, Bewerber ID) werden ausgeblendet und ich weiß leider nicht warum?!  ???

Ich hatte mich jetzt dafür entschieden, die teils zusammngesetzen Barcodes mit den Sternchen im VBA-Code zum Bericht zu generieren.

Ich habe auch mal meine derzeitige Testversion der DB angehängt.


Hier mal der VBA-Code zum Bericht:
Option Explicit
Private Sub Seitenkopfbereich_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me!AdH_ID) Then
   Me!txtJurorID.Visible = False
   Me!txtJurorID2.Visible = False
   Me!txtLfdNr.Visible = False
   Me!bezLfdNr.Visible = False
   Me!txtBewerbername.Visible = False
   Me!Name.Visible = True
   Me!bcodeEtage.Visible = False
   Me!bcodeDurchgang.Visible = False
   Me!txtJurorID.Visible = False
   Me!bcodeAdH_ID.Visible = False

Else
   Me!Name.Visible = False
   Me!bcodeEtage = "*" & Me!txtEtagennr & "*"
   Me!bcodeDurchgang = "*" & Me!txtDurchgang & "*"
   Me!txtJurorID = "*" & Me!txtJID & "*"
   Me!bcodeAdH_ID = "*" & Me!txtAdH_ID & "*"
   
End If

End Sub


Der Code zum Druck eines Blankobogens ist folgender:
(Auswahl eines Bewertungsbogens über das Listenfeld "KBlanko" auf dem Formular "Sort_Seriendruckliste")

...
Blanko_Pruefb_pdf:
   strSQL = "SELECT Bewertungsboegen.Station1, Bewertungsboegen.Station2, Bewertungsboegen.Station3, Bewertungsboegen.Station4, Bewertungsboegen.Station5, Bewertungsboegen.Station6, Bewertungsboegen.Station7, Bewertungsboegen.Station8, Bewertungsboegen.Station9,Bewertungsboegen.Station10, Bewertungsboegen.Etagennr, Bewertungsboegen.Durchgang, Bewertungsboegen.AdH_ID, Bewertungsboegen.Startstation, Bewertungsboegen.Nachname, Bewertungsboegen.Vorname  FROM Bewertungsboegen Where 1=2"
   stDocName = "abf_Station_" & Me!Kblanko
   CurrentDb.QueryDefs(stDocName).SQL = strSQL
   DoCmd.OutputTo acOutputReport, "Station_" & Me!Kblanko, acFormatPDF, CurrentProject.Path & "\Station-" & Me!Kblanko & "_" & "Blanko" & Format(Date, "\_yyyy-mm-dd") & ".pdf"
   Exit Sub
...


Über hilfreiche Tipps wäre ich sehr dankbar.  :)

VG

Claudia