![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos6.51
Falsche Zeichen in einem DB-Feld per SQL finden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Spezialisten,
ich suche mal wieder nach einer Lösung per SQL-Befehl. In einer Datenbank werden eingescannte(Barcodewerte) in einem VarChar-Feld abgelegt. Der String fängt immer mit dem Buchstaben 'F' an, danach schliessen sich Ziffern an (6 stellig) z. B. F000256. Nun erzeugt der Barcodescanner manchmal einen Fehlerhaften String z.B. 'F00/257' oder 'F0%0078', es gibt also manchmal hinter dem ersten Buchstaben F auch andere Zeichen als nur die Ziffern 0-9 welche richtig wären. Wie kann ich nun das Feld 'ScanCode' indem dieser String abgelegt wird nach diesen fehlerhaften Scancodes durchsuchen und als Ergebnis einer SQL-Abfrage darstellen. Unten habe ich mal einen aktuellen Auszug(Screen) der DB. :wall: Danke für eure Bemühungen. |
Re: Falsche Zeichen in einem DB-Feld per SQL finden
Mit 'LIKE' sollte das gehen,
SQL-Code:
Speziell für Firebird müsstest du mal in der Hilfe nachschauen....
Select * from tabelle where Barcode Not Like 'F[0-9][0-9][0-9][0-9][0-9][0-9]'
|
Re: Falsche Zeichen in einem DB-Feld per SQL finden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alzaimar,
vielen Dank für die rasche Antwort. Ich habe deinen Tip mal ausprobiert, erhalte aber u.a. Fehlermeldung im ScreenCopy. Hier mal der Codeschnipsel :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin with zConFehler do begin zConFehler.Connect; zQuery1.SQL.Clear; zQuery1.SQL.Text := 'select * from IDOC_REAL '+ 'where Idoc_REAL."ScanCode" Not Like '+ 'F[0-9][0-9][0-9][0-9][0-9][0-9]'; zQuery1.ExecSQL; zQuery1.Active := true; end; |
Re: Falsche Zeichen in einem DB-Feld per SQL finden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alzaimar,
ich habe jetzt mal den SQL-Befehl abgeändert, jetzt bekomme ich keine Fehlermeldung mehr. Aber das Ergebnis ist nicht richtig. Er zeigt alle Datensätze, ob fehlerhafte (wie die gelb markierten,) als auch die richtigen und fehlerfreien Datensätze . Screenshot anbei. Was mache ich hier noch falsch ?
Delphi-Quellcode:
Hinweis : Das Feld Scancode hat eine Feldlänge von zehn Zeichen, deswegen 9x [0-9]
procedure TForm1.Button1Click(Sender: TObject);
begin with zConFehler do begin zConFehler.Connect; zQuery1.SQL.Clear; zQuery1.SQL.Text := 'select * from IDOC_REAL where Idoc_REAL."ScanCode" '+ 'Not Like '+Quotedstr('F[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')+ ' and AKTION = '+Quotedstr('FEHLER')+ ' order by "ScanCode"'; zQuery1.ExecSQL; zQuery1.Active := true; label1.Caption :=IntToStr(zQuery1.RecordCount); end; |
Re: Falsche Zeichen in einem DB-Feld per SQL finden
Mal was ganz anderes: Können die Werte nicht vor dem Eintrag in die DB auf Fehler getestet werden? Und falls der Scanner die Daten direkt über ein Tool reinschreibt: Man kann fast alle professionellen Scanner so programmieren, dass nur Codes mit einem bestimmten Aufbau als korrekt anerkannt werden. Gerade so eine einfache Regel wie "F" gefolgt von 9 numerischen Zeichen läßt sich dann einfach erstellen.
|
Re: Falsche Zeichen in einem DB-Feld per SQL finden
Hallo Union,
danke für den Hinweis. Das habe ich mir auch schon überlegt. Ich habe aber nur Zugriff auf Bestandsdaten, nicht schon vor dem Scannen. Die Scanner und das Erfassungstool sind von einer Fremdfirma. Dieses Tool nimmt den gescannten Barcode entgegen, reichert diesen mit verschiedenen Daten an (z.B. Datum, Uhrzeit,ScannerID usw. und schreibt dann dieses in ein Textfile. Dieses Textfile wird dnach automatisch eingelesen in gewissen Zeitabständen und dann in diese Datenbank geschrieben. Erst hier habe ich dann eine Überprüfungsmöglichkeit. Trotzdem vielen Dank. Ich bin mir aber sicher, das es auch in der DB eine Möglichkeit geben muss, diese einfach per SQL auszusortieren. mfg Nachtstreuner60 |
Re: Falsche Zeichen in einem DB-Feld per SQL finden
Zitat:
|
Re: Falsche Zeichen in einem DB-Feld per SQL finden
Dazu müsste ich aber an den Quellcode dieses Tools kommen :pale:
|
Re: Falsche Zeichen in einem DB-Feld per SQL finden
Nein, den Trigger erstellst Du (die Berechtigungen vorausgesetzt) in der Datenbank. Der könnte dann die fehlerhaften einträge z.B. in eine separate Tabelle schreiben.
|
Re: Falsche Zeichen in einem DB-Feld per SQL finden
Hallo
gibt es vielleicht eine Möglichkeit, zu prüfen ob es sich ab der zweiten Stelle, also ohne dem 'F' um eine Zahl handelt order nicht z.B F und ab hier 000345 = eine ZAHL F und ab hier 00/345 = keine Zahl Hat jemand eine Lösung hierfür ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 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