Filter auf berechnete Felder legen

11. März 2010 18:07

Hallo zusammen,

ich habe ein Porblem.

ich möchte auf berechnete Felder in meiner Debitorenübersicht einen Filter setzen. Da es ja berechnete Felder sind kann ein Flow Field nicht betätigt werden.
Ich würde gerne eine neue Funktion erstellen, die über meine Debitoren geht die zutreffende felder filtert und die zutreffenden satzmarkiert.

Wär cool wenn ihr mir da paar tipps geben könntet.

Gruß

escabrosa

Re: Filter auf berechnete Felder legen

11. März 2010 19:44

Formuliere doch erst einmal einen groben Algorithmus:
Nach welchem Filter sollen Debitoren durchlaufen werden, welche davon sollen nach welchen Kriterien satzmarkiert werden?

Wie weit reichen deine Programmierkenntnisse schon, um so etwas abzubilden? Erste Codeversuche sind sehr gern gesehen :-)

Re: Filter auf berechnete Felder legen

15. März 2010 18:11

hallo,

es soll auf Verband und Haftender gefiltert werden. Ich habe jetzt 2 MenuItems erstellt(einmal für Verband und einmal für Haftender) und bis jetzt diesen Code bei Hafternder hinterlegt :
Code:

CLEAR(PartnersListLoc);
PartnersListLoc.EDITABLE := FALSE;
PartnersListLoc.SETTABLEVIEW(PartnersLoc);
PartnersListLoc.LOOKUPMODE := TRUE;
IF PartnersListLoc.RUNMODAL = ACTION::LookupOK THEN BEGIN



Ich bräuchte noch Hilfe für das Filtern, Durchsuchen in der Debitorenliste und zusätzlich Hifle bei der Satzmarkierung.

Kann mior jemand einen Tipp geben?

Vielen Dank

Re: Filter auf berechnete Felder legen

31. März 2010 16:05

kann mir niemand weiterhelfen? :'(

Re: Filter auf berechnete Felder legen

1. April 2010 08:42

Ich gehe davon aus, da du von DataItems sprichst, daß du gerade versuchst einen Report zu erstellen.
Um Datensätze zu markieren, brauchst du keine Form aufzurufen, das geht auch so:
Code:
IF Cust.FINDSET THEN BEGIN
  REPEAT
    IF Cust.CALCFIELDS("Balance (LCY)") THEN
      IF Cust."Balance (LCY)" >= 1000 THEN
        Cust.MARK(TRUE);
  UNTIL Cust.NEXT = 0;
  Cust.MARKEDONLY(TRUE);
END;
Hier werden alle Debitoren markiert und entsprechend gefiltert, deren Saldo in Mandantenwährung größer oder gleich 1000 ist.

Grundsätzlich ist es für den Benutzer aber auch möglich auf FlowFields (Ist das mit "berechnete Felder" gemeint?) zu filtern. Das Feld muß nur vorher in der Form zu sehen sein, damit es berechnet wird. Ich verstehe also noch nicht ganz deine Anforderung. Welches Feld von welcher Tabelle soll wie befiltert werden?

Re: Filter auf berechnete Felder legen

1. April 2010 10:03

hallo,

danke für deine AW.
Sry, wenn ich mich nicht richtig ausgedrückt habe. (Ich programmieren noch nicht so lange)

Ich versuch es nochmal.

Ich habe in meiner Form "Debitorenübersicht", zwei neue MenuItems ("Buttons") eingefügt. Einmal den Button Verband und einmal den Button Haftender.
Beide MenuItems rufe ich mit OnPushTrigger auf: (hier wird die Tabelle Verband aufgerufen)
Code:
AlliancesListLoc.SETTABLEVIEW(AlliancesLoc);
AlliancesListLoc.LOOKUPMODE := TRUE;
IF AlliancesListLoc.RUNMODAL = ACTION::LookupOK THEN BEGIN
  AlliancesListLoc.GETRECORD(AlliancesLoc);

END;


Nachdem die Tabelle aufgerufen habe, wähle ich den gewünschten Verbandscode aus. Nachdem ich auf "OK" gedrückt habe, soll er mir in der Debitorenübersicht alle Debitoren mit diesem ausgewählten Verbandscode filtern und satzmarkieren. DAs feld Verband in der Debitorenübersicht ist ein berrechnetes Feld, so wie auch das Feld Haftender.

Kann ich es mit deinem Beispiel auch lösen?

Ich hoffe, ich hab mich dieses mal ein bisschen besser ausgedrückt, und hoffe, dass du/ihr mir helfen könnt. :cry:

Re: Filter auf berechnete Felder legen

1. April 2010 12:45

Das "Feld" in der Debitorenübersicht ist dann wahrscheinlich gar kein Feld, sondern einfach eine Spalte in der Übersicht, in der Daten angezeigt werden, die nicht Bestandteil der Debitorentabelle sind. In dem Fall mußt du natürlich diese "Berechnung" nachprogrammieren und das Ergebnis der Berechnung mit dem gewählten Datensatz der entsprechenden Lookup-Tabelle vergleichen. Wenn die Werte jeweils gleich sind, dann den Debitoren markieren und am Ende nur noch die markierten anzeigen lassen, ähnlich wie in meinem Beispiel.

Das Ganze kann natürlich je nach Komplexität der Berechnung, Anzahl der Datensätze, Schlüsselkonstellation, Systemleistung, usw. sehr lange dauern. Daher solltest du überlegen, ob es nicht einfacher wäre, das Feld einfach in die Debitorentabelle einzufügen.