Hallo Forum,
ich habe ein Formular, in welchem die DS im UF per Funktion (über gesuchten Text in ein Textfeld) gefiltert werden.
D.h. die DS im UF sind dann nicht mehr chronologisch.
Es handelt sich dabei um Kilometerstände, die ich vergleichen (Differenz bilden)
möchte, dedoch gefiltert nach bestimmten Kriterien.
Ungefiltert funktioniert die Berechnung prima, da die Werte ja aus einer Abfrage kommen.
Sobald ich jedoch meine DS filtere, stimmen die erechneten Differenzen nicht.
Also z.B.: km-Stand_oberster_DS minus km-Stand_DS_darunter
Wie kriegt man das hin, dass eben die DS im Formular berechnet werden.
--z.B --Ausgabe im UF ------------------------------------------
ID | Datum | kmstand | diffkm
--------------------------------------------------
1 | 05.01.2010 | 15000 | 1000
2 | 13.01.2010 | 16000 | 500
3 | 26.02.2010 | 16500 |
Die Differenz (diffkm) im obigen Beispiel krieg ich mit ner Abfrage prima raus.
Filtere ich jedoch die Daten dass z.B. im UF steht dann:
ID | Datum | kmstand | diffkm
--------------------------------------------------
1 | 05.01.2010 | 15000 | 1000
3 | 26.02.2010 | 16500 |
Nun stimmt die Differenz nicht mehr, da sich ja die Berechnung auf eine Abfrage stützt
Ich hoffe ich kam einigermaßen verständlich rüber...
Grüße
Schlemil
Hallo,
wie und wo berechnest Du denn diese "laufende Summe" , bzw. Differenz?
http://www.donkarl.com/?FAQ3.11
dürfte helfen, wenn die Filterung in der Abfrage erledigt wird.
oder Du berechnest die Differenzen aus dem aktuell angezeigten Formular-Recordset...
"sind dann nicht mehr chronologisch."
chronologisch sind sie schon, es fehlen lediglich (die ausgefilterten) Datensätze.
Hallo,
die Differenz lasse ich in der dem UF zugrundliegenden Abfrage in einem zusätzlichen Feld (Diff_km) errechnen:
------------------------
Diff_km: [int_kmstand]-(select int_kmstand from tbl_auftrag as xx where xx.int_kmstand = (select max(int_kmstand) from tbl_auftrag as x where x.int_kmstand < tbl_auftrag.int_kmstand))
------------------------
Nun habe ich per Funktion fctNr() ein weiteres Feld im UF angelegt, die eine fortlaufende Nummer erzeugt.
Diese wird auch bei Filterung im HauptForm odentlich erzeugt.
Jetzt muss ich irdendwie noch rauskriegen, wie ich diese nummerierung ausnutzen kann, um die einzelnen (gefilterten) DS zu vergleichen bzw. die Differenz zu bilden.
Grüße
Schlemil
Hallo,
setz doch mal das Filterkriterium testweise in die Abfrage ein und schau, ob sie dann das gewünschte Ergebnis liefert.....
Die fcNr brauchst Du nicht für die Berechnung über den Form-Recordset. Den brauchst Du nur vom Anfang zum Ende zu durchlaufen und dabei die Differnz jeweils einem gebundenen(!) Textfeld zuweisen.
Oder Du "missbrauchst" die fcNr-Funktion und schreibst Sie so um, bzw. machst eine neue gleichartige, die die Differenz ausrechnet und einem ungebundenen Textfeld zuweist (Aufruf der Funktion im Steuerelelementinhalt des Textfeldes.
Also,
der Filter ist schon in der Abfrage.
In der zugrunde liegenden Abfrage wird in einem Feld per Funktion gesucht (Übergabe an Variable, Funktion gibt Variable aus), im Formular per Eigenschaft "bei Änderung".
D.h. sobald ich im ungebundenen Texfeld etwas eingebe, gibt die Funktion dies sofort in das Kriterium der Abfrage weiter und per Requery lass ich das im Unterformular filtern (anzeigen).
Die so gefilterten Datensätze werden auch ordentlich nummeriert (dabei ausgehend absteigendes Datum).
Es muss doch möglich sein die so erreichte Nummerierung auszunutzen, um damit die Differenz vom Vorgänger zu errechnen.
Grüße
Schlemil
Hallo,
"Es muss doch möglich sein die so erreichte Nummerierung auszunutzen,"
habe ich doch beschrieben...
so wie Du auf diese Weise die "Nummer" berechnen kannst, kannst Du dann auch die Differenzen berechnen ... Die lfdNr wird dafür aber nicht gebraucht.
Dann seh ich den Wald vor lauter Bäumen nicht mehr... ???
Keine Ahnung, wie ich das anstellen soll.
Kannst Du mir bitte zeigen, wie?
Grüße
schlemil
Hallo,
lad die Db mal hoch...
Hallo,
na dann mal festhalten ;)
In Formular frm_such_tabell dort im frm_such_tabell___test_U
soll bei Filterung im txt_such die km-Differenzen berechnet werden.
Grüße
[Anhang gelöscht durch Administrator]
Hallo,
anbei..
[Anhang gelöscht durch Administrator]
Klasse!
Da meert man rum, hat ein Brett vorm Kopf...
aber da wär ich nie drauf gekommen.
Nochmals Danke für die Mühen, bist mein Held!
Ich denke, das Ding kann ich noch für andere Projekte nutzen.
Grüße und noch ein frohes Osterfest
Schlemil