Hallo Zusammen,
bei diesem Thema handelt es sich um die erweiterung des Themas:
https://www.access-o-mania.de/forum/index.php?topic=25622.0
#3
habe in "HFSerie" ein zweites Kombi-Feld "Kombinationsfeld15" eingefügt, mit dem ich die Filterung des "UFSerie" nochmals eingrenzen möchte.
Code erste Kombi:
Private Sub SuchenKennzeichen_AfterUpdate()
Dim strFilter As String
strFilter = "Ausgemustert = 0 AND KfzKenn = " & Me!SuchenKennzeichen
Debug.Print strFilter
With Me!UF_EtikettenSerienDruck.Form
.Filter = strFilter
.FilterOn = True
End With
End Sub
Nun habe ich mir gedacht ich erweitere die Codezeile
...
strFilter = "Ausgemustert = 0 AND KfzKenn = " & Me!SuchenKennzeichen
...
für das zweite Kombi "Kombinationsfeld15" einfach um den ausgewählten Wert der erste Kombi "SuchenKennzeichen" wie folgt:
...
strFilter1 = "Ausgemustert = 0 AND Me!SuchenKennzeichen.Column(0) AND label = " & Me!Kombinationsfeld15
Gesamter Code sieht aktuell wie Folgt aus:
Private Sub Kombinationsfeld15_AfterUpdate()
Dim strFilter1 As String
strFilter1 = "Ausgemustert = 0 AND Me!SuchenKennzeichen.Column(0) AND label = " & Me!Kombinationsfeld15
Debug.Print strFilter1
With Me!UF_EtikettenSerienDruck.Form
.Filter = strFilter1
.FilterOn = True
End With
End Sub
Das .Column(0) hätte ich gesetzt weil die gebunde Spalte1 (ID) für dieses Kombi nicht der dargestellte Wert ist.
Leider bekomme ich aber die Fehlermeldung:
"Undefinierte Funktion 'Me!SuchenKennzeichen.Column(0)' in Ausdruck.
Was mache ich Falsch?
Gruss
mad
Hallo,
versuche es so:
strFilter1 = "Ausgemustert = 0 AND KfzKenn = " & Me!SuchenKennzeichen & " AND label = " & Me!Kombinationsfeld15Und natürlich muss alles verkettet werden, wie gehabt.
Column dürfte verzichtbar sein.
Welche Datentypen sind die Felder
- KfzKenn
- label
in der Tabelle.
Hallo,
ZitatWelche Datentypen sind die Felder
- KfzKenn
- label
in der Tabelle.
Hierbei handelt es sich jeweils um "Zahlen".
Code funktioniert.
Vielen Danke
mad
Hallo Zusammen,
da nun die Mehrfachauswahl klappt, würde ich nun das an die entsprechenden Berichte übergeben wollen um die ausgewählten Etiketten drucken zu können. Dazu habe ich versucht den Code für den Einzel-Etikettendruck auf einen Mehrfachauswahl-Etikettendruck umzuändern.
Für den Mehrfachausdruck habe ich mir eine Abfrage ,,abfKKAuswahl_Etikett" erstellt die die Auswahl des im ,,UF_EtikettenSerienDruck" markierten Datensätze ausgibt (solange das ,,frmEtikettenSerienDruck" incl. ,,UF_EtikettenSerienDruck" geöffnet ist).
Habe den Code ,,Einzeldruck" aktuell so für den ,,Mehrfachdruck" geändert.
CODE (Einzeldruck):
Private Sub btnEtikettdruck_Click()
Dim stDocName As String
Dim MsgBoxResult As VbMsgBoxResult
With Me
'Code128 fest verdrahtet
GetBarcodeHandler.BarcodeTyp = eBarcodeTypes.Code128
GetBarcodeHandler.BarcodeString = .InventarNr
If .Rahmen85 = 1 Then
stDocName = "berEtikett_12mm"
Else
stDocName = "berEtikett_24mm"
End If
MsgBoxResult = _
MsgBox(Prompt:="Ist die richtige Etikettenrolle ('" & Mid(stDocName, 4) & "') eingelegt?", _
Buttons:=vbYesNo)
DoCmd.OpenReport stDocName, acViewPreview, , "InventarNr = " & .InventarNr
End With
End Sub
Aktueller CODE (Mehrfachdruck):
Private Sub btnSerienDruckstarten_Click()
Dim stDocName As String
Dim MsgBoxResult As VbMsgBoxResult
With Me
'Code128 fest verdrahtet
GetBarcodeHandler.BarcodeTyp = eBarcodeTypes.Code128
GetBarcodeHandler.BarcodeString = UF_EtikettenSerienDruck!InventarNr
If UF_EtikettenSerienDruck!label = 1 Then
stDocName = "berEtikett_12mm_KKAuswahl"
Else
stDocName = "berEtikett_24mm_KKAuswahl"
End If
MsgBoxResult = _
MsgBox(Prompt:="Ist die richtige Etikettenrolle ('" & Mid(stDocName, 4) & "') eingelegt?", _
Buttons:=vbYesNo)
DoCmd.OpenReport stDocName, acViewPreview
End With
End Sub
Nun habe ich allerdings das Problem das mit zwar die Anzahl der markierten Datensätze angezeigt werden, allerdings immer die gleiche InventarNr und eben dann auch derselbe Barcode.
Um das ganze testen und besser verstehen zu können habe ich mal eine abgespeckte/reduzierte Test-DB angehängt.
Vielleicht hat ja jemand eine Idee woran's hackt.
Gruss
mad
ungetestet
Private Sub btnSerienDruckstarten_Click()
Dim rst As DAO.Recordset
Dim stDocName As String
Dim MsgBoxResult As VbMsgBoxResult
With Me
If UF_EtikettenSerienDruck!label = 1 Then
stDocName = "berEtikett_12mm_KKAuswahl"
Else
stDocName = "berEtikett_24mm_KKAuswahl"
End If
MsgBoxResult = _
MsgBox(Prompt:="Ist die richtige Etikettenrolle ('" & Mid(stDocName, 4) & "') eingelegt?", _
Buttons:=vbYesNo)
'Code128 fest verdrahtet
Set rst = CurrentDb.OpenRecordset("SELECT InventarNr FROM abfKKAuswahl_Etikett")
If rst.EOF Then
MsgBox "Keine Artikel ausgewählt!"
GoTo End_Cleanup
Do While Not rst.EOF
GetBarcodeHandler.BarcodeTyp = eBarcodeTypes.Code128
GetBarcodeHandler.BarcodeString = rst.Fields("InventarNr,")
DoCmd.OpenReport stDocName, acViewPreview 'acViewPreview (Druck anzeigen)"
rst.MoveNext
Loop
End With
End_Cleanup:
On Error Resume Next
rst.Close
Set rst = Nothing
End Sub
Hallo,
Code ist beim ersten Test mit folgender Fehlermeldung gestartet:
ZitatEnd With ohne With
Dann habe ich das "End With" viel folgt eingesetzt:
Zitat...
MsgBoxResult = _
MsgBox(Prompt:="Ist die richtige Etikettenrolle ('" & Mid(stDocName, 4) & "') eingelegt?", _
Buttons:=vbYesNo)
End With
'Code128 fest verdrahtet
....
Dann kam die Fehlermeldung:
ZitatIf Block ohne End If
Habe dann ein "End If" noch vor End Sub positioniert.
Kompleter Code:
Private Sub btnSerienDruckstarten_Click()
Dim rst As DAO.Recordset
Dim stDocName As String
Dim MsgBoxResult As VbMsgBoxResult
With Me
If UF_EtikettenSerienDruck!label = 1 Then
stDocName = "berEtikett_12mm_KKAuswahl"
Else
stDocName = "berEtikett_24mm_KKAuswahl"
End If
MsgBoxResult = _
MsgBox(Prompt:="Ist die richtige Etikettenrolle ('" & Mid(stDocName, 4) & "') eingelegt?", _
Buttons:=vbYesNo)
End With
'Code128 fest verdrahtet
Set rst = CurrentDb.OpenRecordset("SELECT InventarNr FROM abfKKAuswahl_Etikett")
If rst.EOF Then
MsgBox "Keine Artikel ausgewählt!"
GoTo End_Cleanup
Do While Not rst.EOF
GetBarcodeHandler.BarcodeTyp = eBarcodeTypes.Code128
GetBarcodeHandler.BarcodeString = rst.Fields("InventarNr,")
DoCmd.OpenReport stDocName, acViewPreview 'acViewPreview (Druck anzeigen)"
rst.MoveNext
Loop
End_Cleanup:
On Error Resume Next
rst.Close
Set rst = Nothing
End If
End SubJetzt tut sich nichts mehr, weder das sich ein Bericht öffnet bzw. druckt, aber auch keine Fehlermeldung.
Gruss
mad
Solche Fehler können auf die Schnelle natürlich passieren, solltest du
aber inzwischen auch selber drauf kommen können; - C&P reicht nun mal
nicht.
ZitatPrivate Sub btnSerienDruckstarten_Click()
Dim rst As DAO.Recordset
Dim stDocName As String
Dim MsgBoxResult As VbMsgBoxResult
With Me
If UF_EtikettenSerienDruck!label = 1 Then
stDocName = "berEtikett_12mm_KKAuswahl"
Else
stDocName = "berEtikett_24mm_KKAuswahl"
End If
MsgBoxResult = _
MsgBox(Prompt:="Ist die richtige Etikettenrolle ('" & Mid(stDocName, 4) & "') eingelegt?", _
Buttons:=vbYesNo)
'Code128 fest verdrahtet
Set rst = CurrentDb.OpenRecordset("SELECT InventarNr FROM abfKKAuswahl_Etikett")
If rst.EOF Then
MsgBox "Keine Artikel ausgewählt!"
GoTo End_Cleanup
Else
Do While Not rst.EOF
GetBarcodeHandler.BarcodeTyp = eBarcodeTypes.Code128
GetBarcodeHandler.BarcodeString = rst.Fields("InventarNr,")
DoCmd.OpenReport stDocName, acViewPreview 'acViewPreview (Druck anzeigen)"
rst.MoveNext
Loop
End If
End With
End_Cleanup:
On Error Resume Next
rst.Close
Set rst = Nothing
End Sub
Hallo,
beim anwenden des Code kommt folgende Fehlermedung: LZF3265
Die orange gezeigt Zeil wird im Code-Fenster gelb hinterlegt.
Beim hingehen mit dem Mauszeiger auf "Fields" wird folgende Meldung angezeigt:
"rst.Fields("InventarNr,") =<Element in dieser Auflistung nicht gefunden.>
ZitatDo While Not rst.EOF
GetBarcodeHandler.BarcodeTyp = eBarcodeTypes.Code128
GetBarcodeHandler.BarcodeString = rst.Fields("InventarNr,")
DoCmd.OpenReport stDocName, acViewPreview 'acViewPreview (Druck anzeigen)"
rst.MoveNext
Habe das Komma hinter ...rst.Fields("Invantar") mal rausgenommen.
Dann wird zwar der Bericht geöffnet und die Anzahl der Seiten der gewählten DS angezeigt, allerdings wird von der Auswahl nur die erste und letzte markierte "InventarNr" (Barcode) gezeigt/gedruckt.
Alle anderen habe die der letzten "InventarNr".
Zitataber inzwischen auch selber drauf kommen können;
Soweit reicht es dann doch nicht, Entschuldigung.
Danke, Gruss
mad
Sorry, C&P Fehler
GetBarcodeHandler.BarcodeString = rst.Fields("InventarNr")OHNE das Komma am Ende
Hallo,
dann tritt eben dieser Effekt auf:
ZitatHabe das Komma hinter ...rst.Fields("Invantar") mal rausgenommen.
Dann wird zwar der Bericht geöffnet und die Anzahl der Seiten der gewählten DS angezeigt, allerdings wird von der Auswahl nur die erste und letzte markierte "InventarNr" (Barcode) gezeigt/gedruckt.
Alle anderen habe die der letzten "InventarNr".
Noch eine weitere Info:
wirklich ausgedruckt wird immer nur die selbe InventarNr/Barcode, entsprechend der Auswahl x-mal.
Gruss
mad
Hallo Zusammen,
möchte mich nach langem googeln u. ausprobieren nochmals an euch wenden.
Wie bereits geschrieben klappt's mit dem ausdrucken noch nicht. Zum testen habe ich mir erlaubt meinen aktuellen Test-Stand ,,FF_DB_Barcodes_test2" anzuhängen. So kann man das ganze besser nachvollziehen.
Kurz nochmals mein Problem beschrieben:
Button ,,VBA_BarCODE128" (zuerst über die zwei Kombifelder filtern und mindestens 3 Artikel auswählen, sonst kann man den Effekt nicht feststellen).
Wenn man z.B. 4 Artikel ausgewählt hat werden erstmal auch vier Berichtsseiten geöffnet, wenn man sich aber dann den Barcode bzw. die ,,InventarNr" ansieht wird immer nur die erste und letzte InventarNr/Barcode angezeigt, wobei der letzte (bei einer Auswahl von 4 Artikeln) dann eben 3mal angezeigt wird.
Wenn das ganze dann aber ausdruckt wird, wird nur die letzte gewählte InventarNr (in diesen Fall 4mal) ausgedruckt. ,,Typ_Bez" (bei den 24mm Etiketten) paßt aber.
Wo könnte dann das Problem liegen?
Beim Button ,,VBA_BarCODE39" (testweise) habe ich den selben Effekt.
Ich würde eigentlich gerne bei der oberen Variante bleiben, für den Fall das es aber dazu keine Lösung gibt, habe ich es mal getestet den Barcode über die Schriftarten (Fond) ,,code_128.ttf" und ,,code39u.ttf" im Bericht anzeigen zu lassen. (Beide Schriftarten sind im ZIP-File enthalten. Diese können wir folgt abgelegt werden: Systemsteuerung öffnen – Schriftarten wählen – Schriftart ins Fenster ziehen)
Button's: ,,Fond_BarCODE128" u. ,,Fond_BarCODE39"
Die Anzeige des entsprechend Barcode's im Bericht, je nach Auswahl funktioniert soweit.
Allerdings kann ich die Barcode's jetzt nicht scannen, sie werden nicht erkannt. Obwohl es beim ,,code39u.ttf" heißt er wäre ,,lesbar". Habe auch schon verschiedene Feldgrössen ausprobiert, hat aber nichts gebracht.
Habe dazu gelesen das der Barcode39 eventuell ein Steuerzeichen benötigt das über ,,Modulo 43" erzeugt werden kann. Dazu habe ich eine Funktion ,,MOD43CheckChar" (als Modul in der DB enthalten) gefunden, bei der ich aber nicht weis wie ich diese in meinen Code des Button's ,,Fond_BarCODE39" integrieren müsste.
Wie gesagt, auf die Darstellung der Barcode's 39 oder 128 als Schriftart möchte ich nur umstellen wenn es für das oben beschriebene Problem keine Lösung geben sollte.
Vielleicht dürfte ich nochmals auf eure Unterstützung hoffen.
Gruss
mad
Hallo,
Muss ich mich schon wieder entschuldigen, - hatte nicht beachtet, dass dein
Report ja gebunden ist.
In dem Fall musst du
1. das Feld "txtBarcode" an das Feld "InventarNr" binden
2. den Code im Bericht ändern
ZitatWith GetBarcodeHandler
Me.txtBarcode = .BarcodeString 'vorher bei ungebundenem Bericht/Feld, kann weg
.BarcodeString = Me.txtBarcode 'so geht's mit Bindung
3. den Code im Formular ändern, das RS und die die Schleife sind natürlich
unnötig bei einem gebundenen Bericht
ZitatPrivate Sub btnSerienDruckstartenVBA_Click()
Dim rst As DAO.Recordset
Dim stDocName As String
Dim MsgBoxResult As VbMsgBoxResult
With Me
If UF_EtikettenSerienDruck!label = 1 Then
stDocName = "berEtikett_12mm_VBA"
Else
stDocName = "berEtikett_24mm_VBA"
End If
MsgBoxResult = _
MsgBox(Prompt:="Ist die richtige Etikettenrolle ('" & Mid(stDocName, 4) & "') eingelegt?", _
Buttons:=vbYesNo)
'ergänzt, da auch völlig vergessen
If MsgBoxResult = vbYes Then
GetBarcodeHandler.BarcodeTyp = eBarcodeTypes.Code128
GetBarcodeHandler.BarcodeString = rst.Fields("InventarNr")
'der String wird jetzt im Bericht aus dem Textfeld übergeben (s.o.)
DoCmd.OpenReport stDocName, acViewPreview
End If
End With
End Sub
gruss ekkehard
Hallo Ekkehard,
Du mußt Dich nicht entschuldigen. Ohne Deine/Eure professionelle Unterstützung im Forum würden viele ihre Probleme mit Access nicht gelöst bekommen. Diese Unterstützung bedeutet mir persönlich sehr viel, da ich das ganze auch nur in meiner Freizeit für unsere Feuerwehr mache.
Funktioniert jetzt.
Danke
mad