[Gelöst]

27. Februar 2009 10:14

Hallo,

neulich bin ich auf ein Problem gestossen bei dem ich einfach nicht weiterkomme.
In einer Codeunit hole ich mir Datensätze aus einem Table und ich möchte jedesmal eine fortlaufenden Zeilennummer vergeben.
Dabie sool er zunächst die letzte vergebene Zeilenummer finden und dann beim Einsetzen der nächsten um 1 erhöhen.
Achtung: Ich möchte ausdrücklich [b]nicht MODIFY statt INSERT[\b] verwenden, da ich sonst mit den gewonnen Daten nicht mehr weiter arbeiten kann. Deshalb soll eine Zeilennummer vergeben werden, um gleiche Recs unterschiedlich zu machen, um somit immer INSERT benutzen zu können.
Es sind ungefähr so aus:

Code:

IF Rec1.FINDFIRST THEN

REPEAT
 IF Rec2.FINDLAST THEN  // letzte Zeilenummer soll bestimmt werden
 Zeile:= Rec2.Zeile        // TRUE- Zweig: letzte Zeilenummer verwenden
ELSE
Zeile:=0;                      // FALSE-Zweig Zeilennummerstartwert= 0

Zeile:= Zeile + 1;  // Zeilenummer

Rec2.Zeile:=Zeile;   // Übergabe der neuen Zeilenummer

Rec2.INSERT;        // Einsetzen im Table, an dieser Stelle, beschwert sich der Debugger ( dürfen die Felder des Primärschlüssel nicht gleich sein?)

UNTIL

Rec1.NEXT = 0;



Rec2 ist der Table in dem geschrieben werden soll.
Die Frage ist, wo der Denkfehler liegt. Brauche ich hier womöglich als Primärschlüssel die Zeile???

MfG und vorab allen ein schönes Wochenende!

Alex

Re: [Gelöst]

27. Februar 2009 10:24

Hallo

ich lag mit meiner Vermutung natürlich richtig. Die Primärschlüsselfelder müssen natürlich unterschiedlich sein. jetzt hats geklappt.
Trotzdem allen, die sich schon Gedanken darüber gemacht haben herzlichen Dank und schönes Wochenende!

Alex