![]() |
Artikelgruppe aus Artikelnummer *schnell* ermitteln
Wir haben hier Artikelnummnern rein aus Zahlen wie z.B.
5462155 76543887 Diese beginnen immer mit einer unterschiedlich langen Artikelgruppennummer. Zur Verdeutlichung *hier* durch einen Bindestrich abgegrenzt: 54-62155 5655-43887 64373-1 Zu einer Artikelnummer möchte ich nun die Artikelgruppennummer zusammen mit der Artikelgruppe ermitteln. Dazu gibt es diese Artikelgruppenliste: ... 52 Toner schwarz 53 Toner blau 54 Toner rot ... 5654 Papier A5 5655 Papier A4 ... 64373 Klebefilm 5462155 wäre also ein "Toner rot". Da die Artikelnummer mit 54 beginnt. Die Artikelgruppennummer ist immer eindeutig. Es gibt keine Überschneidungen. Wie bekommt man das schnell hin, ohne jeden einzelnen Eintrag aus der Artikelgruppenliste mit der Artikelnummer abzugleichen? Manchmal hilft es auch es nochmal aufzuschreiben, denn während ich das hier schreibe hat mich das und etwas googlen auf einen "Trie". Als Lösung geführt: ![]() Präfixanfragen der Art „Welche Zeichenketten in S beginnen mit dem Muster M?“ Das scheint hier also die Lösung zu sein. Gibt es da für Delphi schon etwas fertiges? |
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Zitat:
![]() ![]() Ich habe bei mir z.B. die Situation, dass ich einen eingescannten Barcode (1D / 2D) identifizieren muss und daraus definierte Werte extrahieren muss (Seriennummer, Chargennummer, etc.). Zu diesem Zweck registriere ich einen neuen Barcodetypen einmalig und identifiziere diese danach anhand meines definierten "Daumenabdruckes" (Anzahl Zeilen und Zeichen, Erkennungsmuster, etc.) |
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Danke, aber das ist zu langsam. Denn damit müsste ich im schlimmsten Fall bei jeder Artikelnummer die gesamte Liste aller Artikelgruppen durchgehen, wenn erst der letzte Eintrag in der Artikelgruppen-Liste ein Treffer ist. Wie gesagt geht es bei der Fragestellung nicht darum, es irgendwie sondern möglichst schnell hinzubekommen, da diese Suche sehr oft ausgeführt wird und die Liste sehr lang ist. Ziel ist es, dass der User in der GUI bei der Suche keinerlei Wartezeit wahrnimmt.
|
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Ich würde das durch ein geeignetes Datenbankmodell lösen.
|
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Wenn Zahlen tatsächlich Unique sind, egal in welcher Kombination, vielleicht einfach drei verschiedene DB abfragen mit jeweils anderem Trenner, eine der drei sollte ja dann als "Positiv" rauskommen, oder versteh ich da was falsch?
|
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Zitat:
In meinem konkreten Fall muss ich z.B. beim einen Barcode die Chargennummer auslesen, beim nächsten die Cargen-/Serien- und IMEI-Nummer, gleichzeitig muss der Code auch einem Artikel zugeordnet werden können. Die Merkmale habe ich in der Datenbank abgelegt und lese sie beim Programmstart in den Speicher. |
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Ich würde mir eine Tabelle machen, wo du - einmalig - Artikelnummer + Artikelgruppe ablegst. Oder auch ein neues Feld in der Artikel-Tabelle. Dann kannst du das abrufen + musst nichts ermitteln.
Wenn du lustig bist, machst du einen Trigger, der dir das aktuell hält. |
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Zitat:
(edit sagt, dass AC natürlich schon Overkill ist, weil es auch nach Position 0 noch sucht... aber eine fertige getestete Implementierung ist halt auch was wert, alternativ könntest Du die entsprechenden Pfade im Baum einfach weglassen) |
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Zitat:
Ansonsten, ist das wirklich eindeutig? Zitat:
Das würde noch mehr für eine Modellverbesserung sprechen. |
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Das erinnert mich an Telefonnummern, bei denen man ja auch nach einer unterschiedlichen Ziffernanzahl auf unterschiedlichen Organisationsebenen landet.
Dementsprechend würde ich einen Suchbaum aufbauen, und bei Gelegenheit die Artikelnummern überholen. Gruß K-H |
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Zitat:
Ist eine Speichertabelle mit Index auf der Nummer der Artikelgruppe wirklich zu langsam? Ich meine bei bis zu fünfstelligen Artikelgruppen muss dort fünfmal der Index gefragt werden. Wir haben dafür aber auch schon einen Parserbaum aufgesetzt, so wie in dem Wiki auch beschrieben. Das brauchten wir zum Parsen von Skripten, darüber haben wir die binäre Implementierung einer Funktion gefunden. Wie das geht ist dort ja beschrieben... man registriert die Artikelgruppen indem man zeichenweise durch die Knoten geht und alle fehlenden Knoten anlegt. Und dann geht man zeichenweise durch die Artikelnummer und schaut, ob passende Knoten existeren. So findet man dann den Knoten, an dem die passende Artikelgruppe hängt. Das muss man aber dann schon sehr gut implementieren, damit das schneller geht als andere einfachere Lösungen. Die Unit mit meiner generischen Implementierung ist gerade einmal 140 Zeilen lang. Es ist auch nicht weiter schwer. Leider gehört mir der Quelltext nicht (habe ich für meinen Arbeitgeber geschrieben), sonst würde ich den gern posten. |
AW: Artikelgruppe aus Artikelnummer *schnell* ermitteln
Zitat:
Eine algorithmische Lösung scheint mir jedenfalls nur sinnvoll, wenn absehbar lange und viel mit dem System gearbeitet werden muss, ohne Chance auf Modelländerung. Die Hilfstabelle mit redundanter Datenhaltung und getriggerter Pflege wäre mein Ansatz. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz