![]() |
ClientDataSet durchsuchen
Hallöchen :-D
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 :pale: |
AW: ClientDataSet durchsuchen
Z.B. durch Setzten eines entsprechenden Filters.
|
AW: ClientDataSet durchsuchen
Zitat:
Zitat:
|
AW: ClientDataSet durchsuchen
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. :oops: |
AW: ClientDataSet durchsuchen
Wie oben bereits geschrieben wurde: über einen Filter!
Schema:
Delphi-Quellcode:
Grüße
DataSet.Filtered := False;
DataSet.Filter := 'Fehlercode = ' + QuotedStr('01'); DataSet.Filtered := True; Mikhal |
AW: ClientDataSet durchsuchen
Die Tabelle ist nicht normalisiert. Der Filter geht ins Leere. Offenkundig sind die Meldungen samt Fehlernummer in einem Feld zu finden.
Sherlock |
AW: ClientDataSet durchsuchen
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. |
AW: ClientDataSet durchsuchen
Zitat:
@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 :) |
AW: ClientDataSet durchsuchen
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 |
AW: ClientDataSet durchsuchen
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 ![]() ![]() 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 :stupid: Zitat:
Zitat:
aber genauso, wie beim WHERE, kann man hier auch LIKE verwenden. :roll: ![]() |
AW: ClientDataSet durchsuchen
Eine weitere Alternative, die auf der Variante a) von TigerLilly basiert:
Statt einem normalen berechneten Feld erstelle ein
Delphi-Quellcode:
Feld. Das kann man auch in einem Index oder Filter verwenden.
InternalCalc
![]() |
AW: ClientDataSet durchsuchen
Guten Morgen :)
erst einmal vielen Dank für die ganzen Antworten! :-D Nun klappt es mit dem ClientDataSet.Filter wie ich es will. 8-) |
AW: ClientDataSet durchsuchen
Bitte gib einen Hinweis, wie Du es gemacht hast, sonst führt dieser Thread kommende Generationen unnötig ins Leere.
Sherlock |
AW: ClientDataSet durchsuchen
Zitat:
Code:
with cdsError do begin
Filtered := False; Filter := 'Kommentar LIKE' + QuotedStr('01%') ; Filtered := True; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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 by Thomas Breitkreuz