[gelöst]Insert mit Schleife Key Problem

18. August 2016 14:31

Hallo,
ich versuche mittels Code Daten in einer Tabelle zu duplizieren. Der Key in der Tabelle ist Nr.

Code:

LKundeNetto.RESET;
LKundeNetto.SETRANGE(Status,LKundeNetto.Status::Freigegeben);
IF LKundeNetto.FINDSET THEN BEGIN
  REPEAT   
    NewKundeNetto.INIT;
    NewKundeNetto.TRANSFERFIELDS(LKundeNetto,false);
    NewKundeNetto."Gültig von" := 010916D;
    NewKundeNetto."Gültig bis" := 310117D;
    NewKundeNetto.Belegdatum := TODAY;
    NewKundeNetto.Status := NewKundeNetto.Status::Freigegeben;
    NewKundeNetto."Nettopreise übertragen" := FALSE;
   
    NewKundeNetto.INSERT(TRUE);
    LKundeNetto."Gültig bis" := 310816D;
    LKundeNetto.MODIFY;

  UNTIL LKundeNetto.NEXT = 0;
END;


Aber es kommt immer die Fehlermeldung das es den Datensatz mit der Nummer schon gibt. Wobei in der Tabelle beim OnInset folgender Code hinterlegt.
Das passiert wenn versucht wird den zweiten Datensatz zu schreiben.

Code:

SalesReceivablesSetup.GET();
SalesReceivablesSetup.TESTFIELD("Kunde-Preislistenummer");
Nummernserie := SalesReceivablesSetup."Kunde-Preislistenummer";
IF Nr = '' THEN BEGIN
  NoSeriesMgt.InitSeries(SalesReceivablesSetup."Kunde-Preislistenummer",xRec.Nummernserie,Belegdatum,Nr,Nummernserie);
END;

Belegdatum := TODAY;
Benutzer := USERID;


Was mache ich hier falsch bzw. was muss ich ändern damit der richtige Wert für den Key erstellt wird.

Danke und LG
Stony
Zuletzt geändert von stony am 18. August 2016 15:22, insgesamt 1-mal geändert.

Re: Insert mit Schleife Key Problem

18. August 2016 14:39

Hi, versuch mal

NewKundeNetto."Nr" := '';

in die Schleife einzufügen, durch das Transferfields ist das Feld "Nr." ja noch gefüllt und im OnInsert-Trigger wird Nr. = '' abgefragt.

Gruß

Mathes

Re: Insert mit Schleife Key Problem

18. August 2016 14:42

Da du innerhalb der selben Tabelle kopierst brauchst du kein Transferfields, du kannst einfach Datensatz zuweisen und dann Felder ändern.

Neuerdatensatz := Alterdatensatz;
Neuerdatensatz.Feld 1 := Wert;
Neuerdatensatz.INSERT;