9. Juni 2011 15:45
Hallo an alle,
ich würde gerne einen Schlüssel anlegen, der absteigend sortiert eingestellt ist.
Hintergrund:
Ich habe eine Tabelle erstellt in der u.a. ein Datum eingetragen wird. Dies ist in Verbindung mit der Kreditorennummer PrimaryKey.
In einer anderen Tabelle sollen per Lookup je Kreditor immer die datumsmäßig letzten Einträge angezeigt werden. Im Moment werden immer die Daten mit dem ältesten Datum angezeigt.
Kann mir jemand helfen?
Gruß
9. Juni 2011 15:54
Hi,
du musst das Property "SourceTableView" setzen (Page oder Form).
Da kannst du dann den Schlüssel und in welcher Ordnung (Ascending o. Descending) sortiert werden soll auswählen.
Sollte für den Classic unt RTC funktionieren.
Gruß
Aydin
Zuletzt geändert von aydina81 am 9. Juni 2011 15:56, insgesamt 1-mal geändert.
9. Juni 2011 15:55
Im Code umgekehrt sortieren:
ASCENDING(FALSE)
9. Juni 2011 16:05
SourceTableView hört sich super an.
Aber in welcher Form soll ich das hinterlegen. Es geht ja darum, dass im Lookup Feld welches in der Tabelle Kreditor angelegt wurde, der letzte Eintrag angezeigt wird. Dies Feld ist auf der Kreditorenkarte hinterlegt und greift auf eine neue Tabelle zu.
Wenn ich das richtig verstanden habe kann ich die Property SourceTableView ja nur in dieser neuen Tabelle setzten, da funktioniert dann die Sortierung. Es soll aber auf der Kreditorenkarte funktionieren..
Kann man das so verstehen
9. Juni 2011 16:33
Formulier doch mal ein kurzes Beispiel, um es besser nachzuvollziehen.
So ist das ganze etwas Wage:-)
Gruß
Aydin
9. Juni 2011 16:41
Also ich habe in der Tabelle Vendor ein neues Textfeld als FlowField angelegt.
Diees Feld macht ein lookup auf eine neue Tabelle. Es wird in diesem Feld also Text angezeigt, wenn es einen Eintrag in der neuen Tabelle gibt.
In der neuen Tabelle gibt es drei Felder: Datum, Kreditorennummer (beides Key) und Beschreibung. Es kann nun sein, dass es 2 Einträge zu einem Kreditor gibt.
Es wird dann der Text mit dem ersten (ältesten) Datum in der Tabelle Kreditor angezeigt.
Ich möchte aber gerne den text mit dem aktuellsten Datum angezeigt bekommen!
9. Juni 2011 16:44
Nur mal so gefragt: es kann nicht sein, dass ein Kreditor zwei Einträge am selben Tag bekommen soll?
Und sonst programmiere den Lookup doch einfach aus.
9. Juni 2011 16:47
2 Einträge am selben tag sind ausgeschlossen!
Programmieren, OK! Aber wie?
9. Juni 2011 17:08
Und wählst du nach dem LookUP die Zeile aus oder soll es automatisch den letzten Eintrag eintragen?
Maach ein SetRange auf den Kreditor und nimm dir ein (Datum) Variable.
Dann eine Schleife und gehst somit alle EInträge für diesen Kreditor durch.
DatumsVariable muss du dann immer vergleichen, falls der aktuelle Datensatz dann jünger ist, dann ersetzt du den Variable wieder.
Am Ende kannst du dann auf den Kreditor und (Datum) Variable filtern und den Eintrag auslesen.
Gruß
Aydin
9. Juni 2011 20:20
aydina81 hat geschrieben:Und wählst du nach dem LookUP die Zeile aus oder soll es automatisch den letzten Eintrag eintragen?
Maach ein SetRange auf den Kreditor und nimm dir ein (Datum) Variable.
Dann eine Schleife und gehst somit alle EInträge für diesen Kreditor durch.
DatumsVariable muss du dann immer vergleichen, falls der aktuelle Datensatz dann jünger ist, dann ersetzt du den Variable wieder.
Am Ende kannst du dann auf den Kreditor und (Datum) Variable filtern und den Eintrag auslesen.
Gruß
Aydin
Entweder er löst es mit dem Flowfield direkt oder auf dem trigger beim laden des datensatzes, das dies dann aktuell immer angezeigt wird.
Dafür brauch man dann 4 zeilen code, setcurrentkey, ascending, findfirst und variablenzuweisung. KEINE Schleife!
10. Juni 2011 09:24
Hi Jan,
stimmt, der zweite Vorschlag hört sich einfacher an:-)
Gruß
Aydin
10. Juni 2011 14:44
Hallo,
ich kriegs nicht hin, bin offensichtlich zu doof...
Ich habe das FlowField (Datenbasis IRR) in der Kreditorentabelle umgestellt auf normal.
Habe in der Kreditorenform die Recordvariable Datenbasistabelle angelegt.
Dann habe ich auf der Kreditorenform im OnInit Trigger folgendes eingegeben:
- Code:
datenbasistabelle.SETCURRENTKEY(Datum);
datenbasistabelle.ASCENDING(FALSE);
datenbasistabelle.FINDFIRST;
"Datenbasis IRR" := datenbasistabelle.Datenbasis;
Was mache ich falsch??
10. Juni 2011 15:16
Ein SetRange fehlt.
10. Juni 2011 15:50
- Code:
datenbasistabelle.SETCURRENTKEY(Datum);
datenbasistabelle.ASCENDING(FALSE);
datenbasistabelle.setrange(Kundennrfeld, KundenNr);
IF datenbasistabelle.FINDFIRST THEN
"Datenbasis IRR" := datenbasistabelle.Datenbasis;
10. Juni 2011 15:52
Genau der "SetRange" Befehl fehlt.
Du musst doch erst die Tabelle "Datenbasistabelle" auf die Kreditorennr. filtern.
Und wieso im OnInit Trigger?
Gruß
Aydin
10. Juni 2011 16:16
Das muss in den OnAfterGet(Next)Record - Trigger, sonst würde nur der Wert des ersten Debitoren dort stehen und der Wert würde nicht upgedatet werden wenn du auf einen anderen Debitoren springst.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.