4. November 2011 14:14
Hallo,
ich möchte in der Tabelle Kalenderposten einen Datensatz finden. Gefunden sollte diese Aufgrund der Nr. und Datum finden. Dies ist noch nicht das Problem.
Abhängig von diesen Datensatz soll dann der z.B. 5 (steht in einer Variable) nachfolgende (gleicher Nr.) Datensatz gefunden werden.
lg
stony
Zuletzt geändert von stony am 7. November 2011 11:34, insgesamt 3-mal geändert.
4. November 2011 14:26
Ich weiß nicht, ob ich's richtig verstehe, aber wenn alles gefiltert ist, machst du 5 mal ein next oder ein next(5).
4. November 2011 14:27
Hallo,
ich hoffe, ich habe dich richtig verstanden:-)
Du kannst doch einfach eine For-Schleife bauen mit 5 (oder Wert in der Variable) durchgängen.
Wichtig wird sein, dass du vorher mit dem Zeiger auf dem richtigen Datensatz stehst und mit der "Next" Anweisung immer auf den nächsten springst.
Gruß
Aydin
4. November 2011 14:29
Wenn du erreichen möchtest, in einer Tabelle nur z.B. die ersten 5 Datensätze zu lesen und nicht alle 111:
viewtopic.php?f=19&t=8341#FINDMit Recordvariable.NEXT wanderst du (auf Basis der aktuell gesetzten Filter) einen Datensatz weiter.
Mit Hilfe einer neuen Variable könntest du mitzählen, beim wievielten Datensatz zu mittlerweile bist und die Schleife beenden.
4. November 2011 14:32
Jetzt bin ich mal gespannt, wer nahe dran ist
4. November 2011 14:46
Die Grundidee ist ja bei allen fast gleich
6. November 2011 10:44
Hallo,
ich möchte in der Tabelle Kalenderposten einen Datensatz finden. Gefunden sollte diese Aufgrund der Nr. und Datum finden. Dies ist noch nicht das Problem.
Abhängig von diesen Datensatz soll dann der z.B. der 5 (steht in einer Variable) vorherige (gleicher Nr.) Datensatz gefunden werden.
lg
stony
6. November 2011 12:53
Ich war so frei, und habe deinen letzten Beitrag in dieses Thema geschoben, da sich die beiden Fragen zu ähnlich sehen
Schau mal in die Onlinehilfe zu NEXT, dann hast du eine mögliche Lösung.
6. November 2011 15:51
Irgendwie bekomme ich das einfach nicht hin.
Mit dem folgenden Code
- Code:
Kalenderposten.SETRANGE("No.",'Produktion');
Kalenderposten.SETRANGE(Date,SalesLine."Shipment Date",31122030D);
IF Kalenderposten.FINDset THEN BEGIN
Kalenderposten.NEXT(5);
ProdPlanungszeilen.Startdatum := Kalenderposten.Date;
END;
bekomme ich den 5 nachfolgden Datensatz. Ich bräuchte aber den 5 vorherigen Datensatz. Wenn ich die Befehle
- Code:
Kalenderposten.Ascending(False)
bekomme ich den Fehler, das nur aufsteigend sortiert werden kann.
Wo könnte ich dies lösen?
6. November 2011 16:29
Nochmal zum NEXT-Onlinehilfeartikel.
Da steht etwas davon, dass man den Wert in den Klammern (Steps) positiv oder negativ eingeben kann...
7. November 2011 08:10
Habe es nun mit
- Code:
Kalenderposten.next(-5);
versucht. Leider klappt es auch nicht. Bekomme nämlich den aktuellen Datensatz.
7. November 2011 09:32
Nach FINDSET stehst du auf dem ersten Datensatz in der Reihe. Da kommst du mit einem Rückwärtslauf nicht weit.
Bevor du jetzt mit FINDs jonglierst, mach dir erst mal klar, auf welchem Datensatz (vorne? hinten? bezogen auf eine aufsteigende Reihenfolge [*]) du beginnen möchtest, und welchen du mit dem NEXT (oder womit auch immer) bekommen möchtest.
[*]Begriffe wie "vorwärts" und "rückwärts" sind hier natürlich relativ zu sehen, deswegen bleiben wir des Verständnisses halber erst mal in der aufsteigenden Reihenfolge.
7. November 2011 09:37
Das ist mir schon bewusst.
Nur wie schaffe ich es den x-ten Kalendertage in der Vergangenheit in dieser Tabelle zu finden, da stehe ich total an.
7. November 2011 09:46
Die Frage ist doch, was willst du genau erreichen. Mit der Zeile
- Code:
Kalenderposten.SETRANGE(Date,SalesLine."Shipment Date",31122030D);
setzt du einen Filter auf das Feld "Date", mit dem Wert des "Shipment Date", willst jetzt aber Datensätze haben, die vor diesem Datum liegen? Warum dann nicht:
- Code:
Kalenderposten.SETRANGE(Date,CALCDATE('<-5D>',SalesLine."Shipment Date"),31122030D);
Dann hättest du direkt das Datum fünf Tage davor.
Alternativ könntest du nach dem FINDSET auch den Filter auflösen und dein NEXT(-5) machen.
Dann noch die Frage, warum filterst du das "Date" bis zum Wert 31.12.2030? Das sieht mir so aus, als wolltest du gar kein Enddatum filtern. Dann lass den Wert doch weg. 2030 ist nur noch 19 Jahre weg! :)
7. November 2011 11:33
Besten Dank.
Mit Findset auflösen und Next(-5) hat es geklappt.
lg
stony
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.