Juni 24, 2021, 21:12:17

Neuigkeiten:

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


UF über zwei Kombi-Felder filtern

Begonnen von mad, Juni 07, 2021, 13:41:41

⏪ vorheriges - nächstes ⏩

mad

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

MzKlMu

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

mad

Hallo,

ZitatWelche Datentypen sind die Felder
- KfzKenn
- label
in der Tabelle.

Hierbei handelt es sich jeweils um "Zahlen".

Code funktioniert.

Vielen Danke
mad

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

Beaker s.a.

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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

mad

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 Sub

Jetzt tut sich nichts mehr, weder das sich ein Bericht öffnet bzw. druckt, aber auch keine Fehlermeldung.


Gruss
mad

Beaker s.a.

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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

mad

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


Beaker s.a.

Sorry, C&P Fehler
GetBarcodeHandler.BarcodeString = rst.Fields("InventarNr")OHNE das Komma am Ende
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

mad

Juni 09, 2021, 05:01:13 #9 Letzte Bearbeitung: Juni 09, 2021, 07:26:18 von mad
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

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

Beaker s.a.

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
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

mad

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