【问题标题】:copy startdate and enddate to other line将 startdate 和 enddate 复制到另一行
【发布时间】:2017-02-08 18:52:14
【问题描述】:

我想复制 startDate 和 Enddate 复制到另一行,

我有这个:

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;

这是一张图片

黑色标记线 - 必须复制相同的日期

谢谢

这是 onvalidate:

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

所以我试试这个:

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;

所以日期必须相同。

我现在是这样的:

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!! ');

但是如果我只放一个开始日期,那么错误消息已经显示

好的,我现在有完整的代码如下:

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!! ');

但什么也没发生

见图片。在最后一行之后,它正在结束调试。什么也没有发生:

例如我想比较日期:像这样:

好的,这行得通。但仅在第一条记录上

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

【问题讨论】:

  • StartDate2EndDate2BOM 表的字段吗?
  • 是的,他们没问题
  • 很抱歉,但这个问题很混乱 :( 不建议使用像变量名称一样的字段名称创建字段(例如 StartDate2)。不建议使用非英文变量名称...
  • 将日期的值放在调试器的Watch1中,因为没有看到。你现在的错误是什么??

标签: navision dynamics-nav dynamics-nav-2009


【解决方案1】:

调用SetDates() 函数时首先检查StartDate2EndDate2 的值是否正确。也许这是错误。

你的代码是这样的:

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

在这里您传递了RecStartDate2EndDate2 它们的值是Rec,而不是正确的值。

尝试更改此代码:

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

【讨论】:

  • 最后一个代码错了,rec.SETRANGE(StartDate2, StartDate2)你过滤recrec一样的值,创建一个rec的变量像recBomTable,BOM。并过滤这个变量。
  • 试试这个:BOMB.RESET; BOMB.SETRANGE(StartDate2, StartDate2); IF BOMB.FINDFIRST THEN; IF StartDate2 &lt;&gt; BOMB.StartDate2 THEN ERROR('The dates has to be the same!! ');
  • 我认为该记录不存在。试试这个来检查。炸弹重置; BOMB.SETRANGE(StartDate2, StartDate2); IF BOMB.FINDFIRST THEN BEGIN IF StartDate2 BOMB.StartDate2 THEN ERROR('日期必须相同!!'); END ELSE ERROR('StartDate2 %1 没有记录', FORMAT(StartDate2));
  • 嗨,我试过了。但不会弹出任何消息
  • 您好,考虑一下,您按日期过滤 BOM 表,例如 01/01/2016,您会在此日期之前获得一条记录,然后比较此日期是否不同。这些日期总是相同的。示例 BOMB.SETRANGE(StartDate2, 01012016D);在 FINDFIRST 之后,BOMB.StartDate2 的值是相同的过滤器值,在本例中为 01/01/2016 (01012016D)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 2013-01-10
相关资源
最近更新 更多