Zum Inhalt springen

Barcode vergleichen


Fabian
Gehe zur Lösung Gelöst von Manuel Rühl,

Empfohlene Beiträge

Hallo zusammen, 

ich bin neu hier und versuche gerade eine smap zu bauen, bei der ganz simpel 2 Barcodes oder 2 QR-Codes mit einander vergleichen kann, jedoch finde ich keine Bausteine dafür.

Kann mir jemand weiterhelfen, gibt es die Möglichkeit durch Scan zweier Barcode/QR-Code diese miteinander zu vergleichen?

Möchte bei der Einlagerung in der Logistik meinem Mitarbeiter die Möglichkeit geben, anstatt die Typteilenummern auf dem Einlagerungsschein und auf dem Erzeugnis manuell, diese mit Scan zu vergleichen.

Danke schonmal im voraus

Gruß Fabian

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Manuel Rühl:

Man kann in einem Textergebnisbaustein die Codes vergleichen:

IF(EQUALS({CodeScanner},{CodeScanner_2}),"OK","NICHT OK")

Hallo, 

Super und Danke,  funktioniert einwandfrei

Gruß Fabian

  • Like 1
  • Danke 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 5 Monate später...

Hallo @Daniel Michalek

ich kenne deinen Ablauf und deinen Aufbau zwar nicht, aber den Vergleich kannst du ja auch in die Wiederholungsgruppe einfügen.

Die Formel, wie oben beschrieben, kann dann direkt nach jedem Scan verglichen werden.

Wie gesagt, hängt ein bisschen damit zusammen, wie dein smap aussieht.

image.thumb.png.41ee09f0aa0419af99c0ad3d3228c170.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Bülent Erbas

Sorry, habe mich nicht eindeutig ausgedrückt. In der Wiederholungsgruppe existiert nur ein CodeScanner-Baustein. Der Vergleich müsste zwischen den einzelnen Einträgen der Wiederholungsgruppe erfolgen.

Wir erfassen damit den Barcode von Probenahmegefäßen zur Trinkwasseranalyse. Eine Probennahme ist ein Eintrag in der Wiederholungsgruppe. Es soll ausgeschlossen werden, dass ein Gefäß mehrfach eingescannt werden kann. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Johanna Becker
Dieser post wurde von Johanna Becker ausgezeichnet!

Sebastian hat das Abzeichen "Hilfreich" erhalten

Hallo @Daniel Michalek,

dafür muss man ein bisschen tiefer in die Trickkiste greifen.

Eine Möglichkeit wär es das ganze mit einer Match-Formel und einer dynamischen Regex zu lösen.

Das geht entweder in einem Feld, oder etwas übersichtlicher mit 2 Feldern.

image.png.322b252ff33c03c7e46626f4a8cd9437.png

Die DynamicRegex hat dabei im Beispiel folgende Formel:

CONCAT("(#", JOIN("#.*){2,}|(#", {RepeatGroup_3.Auswahl_3}), "#.*){2,}")

"Auswahl_3" kann natürlich auch ein normales Texteingabefeld sein.

Damit wird für jeden Wert ein Teil einer Regex zusammengebaut, der matcht, wenn der Eintrag mindestens 2 Mal vorkommt.

Darauf Basierend können wir dann folgende Formel nutzen um zu prüfen, ob diese Regel zutrifft. Diese Prüfung ist im Beispiel in der Sichtbarkeitslogik von Text_5.
Hier werden wieder alle Einträge per Concat und Join in eine Zeile geschrieben und anschließend geprüft, ob die davor gebaute Regex zutrifft.

MATCH(CONCAT("#",JOIN("##", {RepeatGroup_3.Auswahl_3}), "#"), {DynamicRegEx})

 

Keine Sorge, man muss die Details nicht verstehen und kann die Formeln auch einfach kopieren und die eigenen Bausteinnamen einsetzen.

Damit das ganze funktioniert ist es nur wichtig, dass die Werte in dem Baustein, der geprüft werden soll wirklich eindeutig sind.

Bearbeitet von Sebastian
  • Like 3
  • Danke 3
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Sebastian!

Ja geil...funktioniert!!! 🥳 Dickes DANKE an Dich! So hab ich auch noch was über reguläre Ausdrücke gelernt, super.

Aber wer den kleinen Finger reicht, bekommt häufig den Arm abgerissen. Hier kommt also die nächste Frage. Kann ich auch noch bestimmen welche Wiederholungen doppelt sind? Vielleicht über den Index?

Bearbeitet von Daniel Michalek
  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Bülent Erbas

Eigentlich ist es gar nicht so kompliziert. Im ersten Schritt wird ein Regulärer Ausdruck zusammengebaut.

Bei 5 Einträgen mit den Werten:

- Wert1
- Wert2
- Wert3
- Wert1

Kommt als Ausdruck folgendes raus
(#Wert1#.*){2,}|(#Wert2#.*){2,}|(#Wert3#.*){2,}|(#Wert1#.*){2,}

Die |-Zeichen stehen dabei innerhalb der Regex für ein "oder" und die "{2,}" sagt, das die Gruppe in Klammern davor jeweils mindestens 2 mal vorkommen soll.

Als Beispiel für den ersten Wert sagt die Regex also, dass "#Wert1#" (plus beliebige weitere Zeichen) mindestens 2 mal vorkommen soll um die Bedingung zu erfüllen.

Der andere Teil setzt die Werte mit den Trennzeichen zusammen, so dass dort gegen folgendes verglichen wird:

#Wert1##Wert2##Wert3##Wert1#

In dem Beispiel findet die Regex also einmal

#Wert1##Wert2##Wert3#

und dann noch das hintere

#Wert1#

und damit ist der erste Teil vom Ausdruck erfüllt, da es zwei mal etwas findet.

Die Idee stammt übrigens hauptsächlich von @Christian Meixner.

Bearbeitet von Sebastian
  • Like 2
  • Danke 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Danke für die Blumen @Sebastian 😉

Vielleicht noch ein Hinweis zu den vielen "#" in dem regulären Ausdruck, bei denen sich wahrscheinlich schon der einen oder andere gefragt hat, wozu die gut sein sollen:
Die markieren einfach nur die Grenzen einer Wortgruppe und haben sonst keine Funktion. Auf diese Weise wir aber sichergestellt, dass wirklich nur echte Dubletten der ganzen Wortgruppe gefunden wird. Ansonsten würde nämlich "Wert" als Dublette von "Werte" erkannt werden, weil das erste vollständig in dem zweiten enthalten wird. Daher suchen wir lieber nach "#Werte#", welche in "#Werte#" nicht vorkommt.

Ihr könnt die # daher in eurer eigenen Anwendung auch einfach durch ein beliebiges anderes "seltenes" Zeichen ersetzen, um damit Anfang und Ende der Wortgruppen zu markieren. Es sollte aber möglichst ein Zeichen sein, das selbst keine Bedeutung in regulären Ausdrücken hat.

  • Like 1
  • Danke 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Christian Meixner

Diese Diskussion hatte ich Anfang des Jahres mit @Moritz Münzenmaier

Man kann diese Logik auch für die Suche in DSAB verwenden. Wir heißen ja ROTH, haben aber auch ROTe Gasflaschen.
Mein Trennzeichen der Wahl ist allerdings die "Pipe" |  (=AltGr+größer/kleiner Zeichen).
Damit lassen sich Texte zu lesbar abgrenzen und das verwendet außer mir keiner.
Hashtag, Semikolon, Komma ... alles gerne so Zeichen, die auch in einem Artikeltext stehen können...   

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Richtig. Hier muss man aber beachten, dass die Pipe | in regulären Ausdrücken eine eigene Bedeutung und Funktion hat. Daher müsste man diese hier zusätzliche mit einem \ versehen ("escapen"). Das funktioniert, macht allerdings den regulären Ausdruck deutlich unübersichtlicher.

Beispiel: von oben wäre dann

(\|Wert1\|.*){2,}|(\|Wert2\|.*){2,}|(\|Wert3\|.*){2,}|(\|Wert1\|.*){2,}

statt

(#Wert1#.*){2,}|(#Wert2#.*){2,}|(#Wert3#.*){2,}|(#Wert1#.*){2,}

Bzw. müsste die Formel dann lauten:

CONCAT("(\|", JOIN("\|.*){2,}|(\|", {RepeatGroup_3.Auswahl_3}), "\|.*){2,}")

 

Und in der Formel ist es dann schon wieder gar nicht so viel unübersichtlicher. Den erzeugten Regulären Ausdruck bekommt in dem Fall ja gar niemand zu Gesicht.

  • Like 2
  • Danke 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde Dich an, um einen Kommentar zu hinterlassen

Du kannst nach der Anmeldung einen Kommentar hinterlassen



Jetzt anmelden
×
×
  • Neu erstellen...