2016-09-23 7 views
0

habe ich eine GetDates Funktion wie folgt aus:doppelte Datum von jeder Zeile nav 2009

GetDates(BOM : Record "BOM Component";VAR StartDate : Date;VAR EndDate : Date) 
// Called from OnAfterGetRecord in form 36 

IF BOM.GET("Parent Item No.",BOM."Line No.") THEN BEGIN 
    //MESSAGE(FORMAT(BeginDate)); 
    StartDate := BeginDate; 
    EndDate := EndDate; 
END 

Und ich ein hava von 36, wo ich die Funktion aufrufen:

//ItemAdditionBeginDate := 0D; 
ItemAdditionBeginDate := ItemAdditionHallo.BeginDate; 
//ItemAdditionEndDate := 0D; 
ItemAdditionEndDate := ItemAdditionHallo.EndDate; 

ItemAddition.GetDates(Rec,ItemAdditionBeginDate,ItemAdditionEndDate); 
ItemAddition.GetRegelkorting(salesLine, ItemAddition.Regelkorting); 

Aber das Problem ist dat jeder wenn Sie ein neues Datum in der Form kopiert er den Wert der anderen Reihe, wie folgt hinzu:

enter image description here

So wie zu lösen, dass die Daten nicht kopiert wurden.

Danke

I getDates in Tabelle 50012 erklären:

GetDates(BOM : Record "BOM Component";VAR StartDate : Date;VAR EndDate : Date) 
// Called from OnAfterGetRecord in form 36 

IF BOM.GET("Parent Item No.",BOM."Line No.") THEN BEGIN 
    //MESSAGE(FORMAT(BeginDate)); 
    StartDate := BeginDate; 
    EndDate := EndDate; 
END 

Und das ist für setDates:

SetDates(BOM : Record "BOM Component";VAR StartDate : Date;VAR EndDate : Date) 
// Called from OnValidate of start and end dates in form 36 
BOM.INIT; 
"Item No." := BOM."Line No."; 
"Parent Item No." := BOM."Parent Item No."; 
//Stuklijst."Line No." := BOM."Line No."; 
StartDate := StartDate; 
EndDate := EndDate; 


IF NOT MODIFY THEN 
    INSERT; 

enter image description here

oke, ich es so jetzt haben :

SetDates(BOM : Record "BOM Component";VAR startDateparm : Date;VAR EndDateparam : Date) 
// OnValidate of start and end dates in form 36 

BOM.INIT; 
"Item No."    := BOM."Line No."; 
"Parent Item No."  := BOM."Parent Item No."; 
BeginDate    := startDateparm; 
EndDate    := EndDateparam; 

IF NOT MODIFY THEN 
    INSERT; 

aber die Daten kopieren immer noch vom vorherigen Datensatz. Wenn ich zu einem anderen Datensatz gehen:

Siehe Bild: enter image description here

+0

Hallo, in Funktion 'GetDates()' Sie passieren zwei Parameter Typ date 'StartDate' und' EndDate'. Dann weisen Sie Werte zu, 'StartDate: = BeginDate'; und 'EndDate: = EndDate', lautet die Frage: Wenn Sie einen Wert für' BeginDate' vergeben? und 'EndDate' hat seinen eigenen Wert zugewiesen? In welchem ​​Objekt ist die Funktion 'GetDates()' definiert. –

+0

Danke. Ich bearbeite den Beitrag – SavantCode

+0

Nach Aufruf der 'SetDates()' -Funktion, wenn Sie den Debugger verwenden die Werte für 'StartDate' und' EndDate' sind korrekt? Sie können den Namen dieser Parameter ändern (StartDate und EndDate)? weil sie den gleichen Namen wie die Felder der Tabelle haben. –

Antwort

1

Vielen Dank für Antwort auf meine Fragen über den Prozess. Überprüfen Sie das letzte Bild. Sie fügen die Stücklistentabelle ein oder ändern sie.

Dies ist Ihr Code:

SetDates(BOM : Record "BOM Component";VAR StartDate : Date;VAR EndDate : Date) 

// Called from OnValidate of start and end dates in form 36 
BOM.INIT; 
"Item No." := BOM."Line No."; 
"Parent Item No." := BOM."Parent Item No."; 
//Stuklijst."Line No." := BOM."Line No."; 
StartDate := StartDate; 
EndDate := EndDate; 

IF NOT MODIFY THEN 
    INSERT; 

Wenn Sie das las Bild überprüfen können Sie die Parameter StartDate und EndDate korrekt sind sehen, aber wenn Sie diese Werte zu BOM Tabellenfeldern zuordnen (StartDate, EndDate) sind die Werte in leer. Dies geschah, weil Ihre Parameter gleich Namen wie die Felder haben die BOM Tabelle

Ändern Sie den Code dafür:

SetDates(BOM : Record "BOM Component";VAR parmStartDate : Date;VAR parmEndDate : Date) 
//Declare new variable of BOM table, recBOM - record - BOM 
// Called from OnValidate of start and end dates in form 36 
recBOM.INIT; 
recBOM."Item No."    := BOM."Line No."; 
recBOM."Parent Item No."  := BOM."Parent Item No.";  
recBOM.StartDate    := parmStartDate; 
recBOM.EndDate    := parmEndDate; 

IF NOT recBOM.MODIFY THEN 
    recBOM.INSERT; 
+0

@ Jonathan.Thank Sie. Ich werde es Montag testen.Ich werde dich jetzt lassen. – SavantCode

+0

Ich bearbeite den Beitrag – SavantCode

+0

Ich bearbeite die Antwort, überprüfen Sie die letzte Funktion, erstellen Sie eine neue Variable recBOM und fügen Sie oder ändern Sie diese vatiable. –