AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ClientDataSet durchsuchen

Ein Thema von zobien123 · begonnen am 15. Aug 2017 · letzter Beitrag vom 18. Aug 2017
Antwort Antwort
Seite 1 von 2  1 2      
zobien123

Registriert seit: 3. Mär 2017
Ort: Öhringen
94 Beiträge
 
Delphi 10.3 Rio
 
#1

ClientDataSet durchsuchen

  Alt 15. Aug 2017, 18:58
Hallöchen

Und zwar: Aus einer Datenbank lade ich Daten in ein ClientDataSet. Die Daten bestehen aus einem Fehler Code und danach ein bisschen Text. Z.B.: "01 Das Problem saß vor dem Bildschirm". Es gibt mehrere Codes 01, 02, 03,.... Nun möchte ich diese Kommentare anhand der Codes aussortierten und diese so später auf ein eigenes Sheet in Excel exportieren/packen. D.h. auf dem Sheet "Fehlercode 01" sind alle Fehlerkommentare/meldungen wo am Anfang der Code 01 steht, auf 02 wo am Anfang der Code 02 steht, etc...

Nun meine Frage: Wie kann ich das ClientDataSet durchsuchen und so alle mit 01 am Anfang rausfiltern? Oder gibt es eine ähnliche möglichkeit?


Hoffe ich konnte mein Problem gut genug erläutern
Jörn
Linux wird nie das meistinstallierte Betriebssystem sein, wenn man bedenkt, wie oft man Windows neu installieren muss!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: ClientDataSet durchsuchen

  Alt 15. Aug 2017, 19:08
Z.B. durch Setzten eines entsprechenden Filters.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: ClientDataSet durchsuchen

  Alt 15. Aug 2017, 19:21
Z.B. durch Setzten eines entsprechenden Filters.
Zitat:
Aus einer Datenbank lade ich Daten in ein ClientDataSet
Oder ein passendes WHERE bei der Abfrage verwenden.
$2B or not $2B
  Mit Zitat antworten Zitat
zobien123

Registriert seit: 3. Mär 2017
Ort: Öhringen
94 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: ClientDataSet durchsuchen

  Alt 16. Aug 2017, 08:36
Guten Morgen

ich habe es jetzt so gemacht, dass ich das ClientDataSet mit einer Schleife durchlaufe und alle Einträge rausschmeiße, wo die ersten 2 Zeichen kein Integer Wert ist welcher größer als 0 ist.

Aber wie sortiere ich jetzt die einzelnen Codes aus? Nochmal das gleiche zu machen, wie oben erklärt, nur mit den Codes ist ja auch nicht so das gelbe vom Ei.
Jörn
Linux wird nie das meistinstallierte Betriebssystem sein, wenn man bedenkt, wie oft man Windows neu installieren muss!
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: ClientDataSet durchsuchen

  Alt 16. Aug 2017, 09:03
Wie oben bereits geschrieben wurde: über einen Filter!

Schema:
Delphi-Quellcode:
  DataSet.Filtered := False;
  DataSet.Filter := 'Fehlercode = ' + QuotedStr('01');
  DataSet.Filtered := True;
Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#6

AW: ClientDataSet durchsuchen

  Alt 16. Aug 2017, 09:09
Die Tabelle ist nicht normalisiert. Der Filter geht ins Leere. Offenkundig sind die Meldungen samt Fehlernummer in einem Feld zu finden.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.211 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: ClientDataSet durchsuchen

  Alt 16. Aug 2017, 09:11
Wie so oft gibt es mehrere Wege, die zum Ziel führen.

Variante a)
Du könntest ein berechnetes Feld anlegen + dir in diesem deinen Code so zurechtschnitzen, wie du es brauchst. Dann kannst du in der Folge gut darauf zugreifen.
Geh dann dein Clientdataset nochmal durch + zieh dir die Kombination FehlerCode=Kommentar in ein TStringList, das du am Ende sortierst. Wenn dein Kommentar CRLF enthält, ersetze die für die Verarbeitung durch \n oder sowas.

Variante b)
Mach ein neues Feld im CDS (kein berechnetes Feld!) + kopiere den Inhalt des Codefeldes dorthin. Bereinige den Code, wie du es brauchst. Dann setze einen Index auf dein neues Feld. Dann kannst du in deiner gewünschten Reihenfolge darauf zugreifen.

Variante c)
Geh das CDS durch. Hol dir aus dem Feld Code was du brauchst + zieh dir die Kombination FehlerCode=Kommentar in ein TStringList, das du am Ende sortierst.


Anstelle der StringList kannst du natürlich auch was anderes nehmen.
  Mit Zitat antworten Zitat
zobien123

Registriert seit: 3. Mär 2017
Ort: Öhringen
94 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: ClientDataSet durchsuchen

  Alt 16. Aug 2017, 09:18
Zitat:
. Der Filter geht ins Leere.
Ja mit dem Filter findet er nichts.

@TigerLilly

Vielen Dank für verschiedenen Lösungsansätzen! Werde sie mir anschauen, aus Termingründen komm ich wahrscheinlich erst heute Abend spätestens Morgen dazu
Jörn
Linux wird nie das meistinstallierte Betriebssystem sein, wenn man bedenkt, wie oft man Windows neu installieren muss!
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: ClientDataSet durchsuchen

  Alt 16. Aug 2017, 11:54
Sinngemäß

Select * from Tabelle where Feld like "01 $"

sollte alles finden wo der Feldinhalt mit "01 " beginnt, also alle Einträge die mit Fehlercode 01 beginnen

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: ClientDataSet durchsuchen

  Alt 16. Aug 2017, 12:15
Am Besten/Einfachsten ist es ja wohl im SQL (serverseitig mit WHERE) oder nachträglich (clientseitig mit .Filter) das zu filtern,
aber es gibt nicht nur Delphi-Referenz durchsuchenTDataSet.Filter, sondern auch Delphi-Referenz durchsuchenTDataSet.OnFilterRecord.
Bei Ersterem wird mir einen simples SQL-Statement gefiltert und bei Letzrerem per Delphi-Code. Beides zusammen ginge auch und zusätzlich noch ein WHERE

Zitat:
Wie oben bereits geschrieben wurde: über einen Filter!
Zitat:
Ja mit dem Filter findet er nichts.
Gut, abgesehn davon, dass man für QuotedStr ausgepeitscht werden sollte, ist eine andere Sache,
aber genauso, wie beim WHERE, kann man hier auch LIKE verwenden.
http://docwiki.embarcadero.com/Libra...DataSet.Filter
$2B or not $2B

Geändert von himitsu (16. Aug 2017 um 12:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 22:39 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