AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Falsche Zeichen in einem DB-Feld per SQL finden
Thema durchsuchen
Ansicht
Themen-Optionen

Falsche Zeichen in einem DB-Feld per SQL finden

Ein Thema von nachtstreuner60 · begonnen am 16. Jul 2008 · letzter Beitrag vom 17. Jul 2008
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#1

Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 12:44
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos6.51
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.

Danke für eure Bemühungen.
Miniaturansicht angehängter Grafiken
fdelphi_360.jpg  
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 13:09
Mit 'LIKE' sollte das gehen,
Select * from tabelle where Barcode Not Like 'F[0-9][0-9][0-9][0-9][0-9][0-9]' Speziell für Firebird müsstest du mal in der Hilfe nachschauen....
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#3

Re: Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 13:43
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;
Miniaturansicht angehängter Grafiken
fdelphi1_177.jpg  
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#4

Re: Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 14:05
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:
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;
Hinweis : Das Feld Scancode hat eine Feldlänge von zehn Zeichen, deswegen 9x [0-9]
Miniaturansicht angehängter Grafiken
fdelphi2_544.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 15:02
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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#6

Re: Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 15:08
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
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 15:10
Zitat:
Dieses Textfile wird dnach automatisch eingelesen in gewissen Zeitabständen und dann in diese Datenbank geschrieben.
Und wie wäre es hier mit einem Trigger?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#8

Re: Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 15:12
Dazu müsste ich aber an den Quellcode dieses Tools kommen
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 15:14
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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#10

Re: Falsche Zeichen in einem DB-Feld per SQL finden

  Alt 16. Jul 2008, 15:15
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 ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz