AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TClientDataset Filter für leere Feldwerte
Thema durchsuchen
Ansicht
Themen-Optionen

TClientDataset Filter für leere Feldwerte

Ein Thema von Roaster · begonnen am 12. Dez 2007 · letzter Beitrag vom 13. Dez 2007
Antwort Antwort
Roaster

Registriert seit: 21. Jul 2004
Ort: bei mir zu Hause
107 Beiträge
 
#1

TClientDataset Filter für leere Feldwerte

  Alt 12. Dez 2007, 12:15
Datenbank: Firebird • Version: 2.x • Zugriff über: TClientDataSet, Zeos Library
Hi,

ich benutze ein TClientDataSet und die beiden Properties Filter und Filtered um leere Datensätze aus einer lokalen (embedded) Firebird 2.x Tabelle wegzufiltern. Zumindest versuche ich dies krampfhaft.

Vorneweg, ich kann dies nicht in das entsprechende Select Statement aufnehmen, da ich diese 'leeren' Datensätze für Lookup-Felder benötige und genauso deshalb aufgenommen habe.

Die Tabelle oder besser das Resultset der Abfrage sieht so aus:

Delphi-Quellcode:
LANGU GROUPNO DESCRIPTION
------------------------------
DE <- leerer Datensatz
DE 0001 Allgemein
DE 0002 Endkunde
...
Ich habe hier schon folgendes getestet:

Delphi-Quellcode:
ClientDataset1.Filter := 'GROUPNO<>'' ''';
ClientDataset1.Filter := 'GROUPNO<>''''';
ClientDataset1.Filter := 'GROUPNO<>""';
ClientDataset1.Filter := 'GROUPNO <> ''''';
ClientDataset1.Filter := 'GROUPNO <> ''''or GROUPNO is not null'';
Aber nichts half hier! Ich bekam keine Fehlermeldung oder dergleichen. Es werden nach wie vor alle Datensätze inklusives des leeren Datansatzes angezeigt. Der Datensatz mit GROUPNO = Blank soll temporär verschwinden.

Irgendwelche weiter Möglichkeiten, die ich noch prüfen könnte? Danke!
cu, Michael

Windows 7, WinXP Pro, Vista, WinXP Home, Win98 SE
D4 C/S, D7 Enterprise, Turbo Delphi Pro, Delphi 2009
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TClientDataset Filter für leere Feldwerte

  Alt 12. Dez 2007, 12:22
ClientDataset1.Filter := 'GROUPNO <> ''''and GROUPNO is not null''; So ist zumindest logischer
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Roaster

Registriert seit: 21. Jul 2004
Ort: bei mir zu Hause
107 Beiträge
 
#3

Re: TClientDataset Filter für leere Feldwerte

  Alt 13. Dez 2007, 10:12
Logischer find ich das jetzt aber nicht, da entweder das Feld nicht befüllt (Blank) ODER eben undefiniert (NULL) ist. Beides gleichzeitig (AND) wird nie eintreffen.
Anyway, danke für deine Meinung, nur leider funktioniert dein Vorschlag auch nicht.

Ich kenn' mich mit Datenbanken v.a. SQL Datenbanken ziemlich gut aus, ein SQL Select ist für diesen Fall ebenfalls sehr schnell gebastelt, der auch einwandfrei funktioniert, nur der Filter will eben nicht und da setzt's bei mir aus, da ich die Internas der VCL nicht kenne.

Soweit ich feststellen konnte wird der Filter ohnehin an irgendeine DLL Funktion weitergereicht und da verliert sich die Spur beim Debuggen. Somit kann ich nicht sagen was letztendlich am Client Dataset ankommt um das zu Debuggen.


Wie gesagt ich benötigen die Leerzeile für die Pflege der Master Datensätze aber bei der Pflege der Loopup Datensätze sollen diese dem User nicht angezeigt werden, damit er diese nicht versehentlich löscht.
cu, Michael

Windows 7, WinXP Pro, Vista, WinXP Home, Win98 SE
D4 C/S, D7 Enterprise, Turbo Delphi Pro, Delphi 2009
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TClientDataset Filter für leere Feldwerte

  Alt 13. Dez 2007, 11:03
Hilft Dir jetzt zwar nicht, aber ich erkläre Dir mal meinen Vorschlag:

wenn das Feld NULL ist, tritt folgender Vergleich ein
Delphi-Quellcode:
Feld <> '//true
Feld is not null //false
Ist das Feld blank, ergibt sich
Delphi-Quellcode:
Feld <> '//false
Feld is not null //true
Somit kommt immer true dabei heraus, wenn Du mit oder vergleichst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Roaster

Registriert seit: 21. Jul 2004
Ort: bei mir zu Hause
107 Beiträge
 
#5

Re: TClientDataset Filter für leere Feldwerte

  Alt 13. Dez 2007, 11:55
Danke Deddy,

leuchtet jetzt ein. Bin tatsächlich mit den '<>' und 'is not' durcheinanderkommen. Aber was jetzt besser ist, ist die Tatsache, dass

GROUPNO <> '' 'AND GROUPNO IS NOT NULL funktioniert! Du wirst dich jetzt sicher fragen, was der Unterschied von meinem zu deinem Vorschlag ist. Es ist das Leerzeichen innerhalb der ersten beiden Hochkommas: GROUPNO <> ''<blank>''... Danke nochmals!
cu, Michael

Windows 7, WinXP Pro, Vista, WinXP Home, Win98 SE
D4 C/S, D7 Enterprise, Turbo Delphi Pro, Delphi 2009
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:44 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