Autor Beitrag
GameG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

WIN7
D2007
BeitragVerfasst: Di 29.09.09 00:10 
einen wunderschönen guten tag!

ich hab eine datenbank mit einem clientdataset-objekt.

ich habe 2 spalten: A und B

aus A und B berechne ich (OnCalcFields) einen wert und lasse den in einer dritten spalte C (fkInternalCalc) anzeigen (geht auch).
nun will ich einen filter über C legen. aber der filter gibt mit immer keine datensätze zurück - egal welche werte da in C drin stehen. es werden lediglich alle datensätze angezeigt, wenn ich "C = 0" als filterstring angebe.

kann mir jemand helfen?
vielen dank
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Di 29.09.09 09:10 
ist denn ein Wert 0 in der spalte drin ? und nicht 0,00000000000001 oder sowas ?
runde mal den wert, den du in die spalte einträgst, auf z.b 5 nachkommastellen, oder trag mal testweise einfach ne 'glatte' 0 ein

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
GameG Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

WIN7
D2007
BeitragVerfasst: Di 29.09.09 14:09 
in C sind einfache int-werte drin (1, 2, 3, 4)

wenn ich über FieldByName('C') den jeweiligen wert abfrage steht der auch da drin. aber wenn ich den in OnFilterRecord den wert auslese, ist der wert plötzlich wieder 0. 0ô?

filter: C = 0 liefert alle datensätze
filter: C = 1 liefert keine datensätze

:(
Critter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 328
Erhaltene Danke: 3

Windows 7
Delphi 7 Pro.
BeitragVerfasst: Di 29.09.09 15:16 
Hallo,

wenn ich mich recht entsinne (lang, lang ist es her) hatte ich mal ein ähnliches Problem mit einer anderen DB Komponente. Dort war es nicht möglich auf Calculated Werte zu Filtern, es war aber sehr wohl möglich sie im OnFliterRecord Ereignis ab zu fragen und dort die Filterung über den Accept Parameter zu beeinflussen.

Eventuell hilft dir ja dieser Ansatz.

critter

_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Di 29.09.09 16:14 
versuch doch mal in onFilterRecord

ausblenden Delphi-Quelltext
1:
accept := (FieldByName('c') > 0)					


zu setzen

Moderiert von user profile iconKlabautermann: Dephi-Tags gesetzt.

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
GameG Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

WIN7
D2007
BeitragVerfasst: Do 01.10.09 17:29 
wenn ich den wert C des datensatzes über einen button auslese, erhalte ich das richtige ergebnis.
wenn ich den wert C des datensatzes in OnFilterRecord auslese, erhalte ich immer nur ''.

auch das setzen im OnFilterRecord geht nicht :(

es scheint so, das der compiler das ergebnis da irgendwie noch nicht berechnet hat oder nicht zugreifen kann.

naja ich hab jetzt das feld zum datum gemacht und berechne es seperat und tage das ein. ist zwar sehr sehr unschön, aber was besseres fällt mir gerade nicht ein :(

danke