2016-09-30 4 views
-2

Und ich möchte, dass die startdate und Enddatum copiing auf der anderen Leitung kopieren,Kopie startdate und enddate auf andere Linie

Ich habe dies:

GetDates(Bom : Record "BOM Component";VAR StartDateItem : Date;VAR EndDateItem : Date;RegelkortingItem : Decimal) 

IF GET(Bom."Parent Item No.",Bom."Line No.") THEN BEGIN 
    StartDateItem :=StartDate2; 
    EndDateItem := EndDate2; 
    RegelkortingItem := Regelkorting; 
END; 

SetDates(Bom : Record "BOM Component";VAR StartDateItem : Date;VAR EndDateItem : Date;RegelkortingItem : Decimal) 
"Parent Item No." := Bom."Parent Item No."; 
"Line No." := Bom."Line No."; 
StartDate2 := StartDateItem; 
EndDate2 := EndDateItem; 
Regelkorting := RegelkortingItem; 

IF NOT MODIFY THEN 
    INSERT; 

Und das ist ein Bild

enter image description here

Die schwarze Markierungslinie - dort muss das gleiche Datum kopiert werden

Danke

Und das ist die onvalidate:

BeginDate - OnValidate() 
SetDates(Rec, StartDate2, EndDate2, Regelkorting); 

Also ich versuche dies:

Rec.SETRANGE(StartDate2,StartDate2); 
IF StartDate2 <> StartDate2 THEN 
//IF (Rec.COUNT > 1) THEN //AND (FORMAT(Rec.StartDate2) = FORMAT(Rec.StartDate2))) THEN 
ERROR('The dates has to be the same!! '); 
//END; 

So sind die Tage, hat die gleiche sein.

ich es so jetzt haben:

IF StartDate2 <> BOMB.StartDate2 THEN 
//IF (Rec.COUNT > 1) THEN //AND (FORMAT(Rec.StartDate2) = FORMAT(Rec.StartDate2))) THEN 
ERROR('The dates has to be the same!! '); 

Aber dann, wenn ich ein Startdatum nur setzen, dann die Fehlermeldung zeigt bereits

ok, habe ich den kompletten Code nun wie folgt aus:

SetDates(Rec, StartDate2, EndDate2, Regelkorting); 
//StartDateInsert := Rec.StartDate2; 
BOMB.RESET; 
BOMB.SETRANGE(StartDate2,StartDate2); 
IF BOMB.FINDFIRST THEN; 
IF StartDate2 <> BOMB.StartDate2 
THEN ERROR('The dates has to be the same!! '); 

Aber es passiert nichts

Siehe Bild. Nach der letzten Zeile endet es debug. und nichts passiert: enter image description here

Zum Beispiel möchte ich Daten vergleichen: wie folgt aus:

enter image description here

Oke, das funktioniert. Aber nur auf den ersten Datensatz

SetDates(Rec, StartDate2, EndDate2, Regelkorting); 
BOMB.RESET; 
BOMB.SETRANGE(StartDate2,StartDate2); 
IF BOMB.FINDFIRST THEN BEGIN 
IF BOMB.StartDate2 > BOMB.EndDate2 THEN BEGIN 
ERROR('startdatum kan niet groter zijn dan einddatum'); 
END; 
END 
+0

'StartDate2' und' EndDate2' sind Felder 'BOM' Tabelle? –

+0

ja sie sind ok – SavantCode

+0

Entschuldigung, aber diese Frage ist sehr chaotisch :(Feld mit Feldnamen wie ein Variablenname zu erstellen wird nicht empfohlen (zB StartDate2). Die Verwendung von nicht-englischen Variablennamen wird nicht empfohlen ... – azatoth

Antwort

0

Firt Prüfung wenn Sie aufrufen SetDates() Funktion StartDate2 und EndDate2 haben eine korrekte Werte. Vielleicht ist hier der Fehler.

Sie Code ist dies:

BeginDate - OnValidate() 
SetDates(Rec, StartDate2, EndDate2, Regelkorting); 

Hier passieren Sie eine Rec, StartDate2 und EndDate2 Sie haben Werte von Rec und nicht die richtigen Werte.

Versuchen für diesen Code zu ändern:

BeginDate - OnValidate() 
SetDates(Rec, StartDateItem, EndDateItem, Regelkorting); 
+0

Ich bearbeite die Frage. aber das funktioniert nicht – SavantCode

+0

Der letzte Code Das ist falsch, 'rec.SETRANGE (StartDate2, StartDate2)' Sie filtern 'rec' mit dem gleichen Wert von' rec', Erstellen Sie eine Variable von 'rec' wie RecBomTable, BOM. und filtere diese Variable. –

+0

Danke. Ich aktualisiere den Beitrag – SavantCode

Verwandte Themen