[gelöst] Datensatz finden

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.

Re: Datensatz finden

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).

Re: Datensatz finden

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

Re: Datensatz finden

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#FIND
Mit 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.

Re: Datensatz finden

4. November 2011 14:32

Jetzt bin ich mal gespannt, wer nahe dran ist :mrgreen:

Re: Datensatz finden

4. November 2011 14:46

Die Grundidee ist ja bei allen fast gleich :-D

x-ten Vorherigen Datensatz finden

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

Re: [gelöst] Datensatz finden

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.

Re: Datensatz finden

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?

Re: Datensatz finden

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...

Re: Datensatz finden

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.

Re: Datensatz finden

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.

Re: Datensatz finden

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.

Re: Datensatz finden

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! :)

Re: Datensatz finden

7. November 2011 11:33

Besten Dank.
Mit Findset auflösen und Next(-5) hat es geklappt.

lg
stony