15. Juni 2021 09:11
procedure SetEnddateLastPost():DateTime
var
prodorderline: Record "Prod. Order Line";
prodorderroutingline: Record "Prod. Order Routing Line";
prodorder: Record "Production Order";
begin
prodorder.SetFilter("No.","No.");
if prodorder.FindFirst then begin
prodorderline.SetFilter("Prod. Order No.","No.");
prodorderline.SetFilter("Line No.",Format(10000));
if prodorderline.FindSet then begin
prodorderroutingline.SetFilter("Prod. Order No.",prodorderline."Prod. Order No.");
prodorderroutingline.SetFilter("Routing Reference No.",Format(prodorderline."Routing Reference No."));
if prodorderroutingline.FindLast then begin
prodorder."End Date-Time Last Post":=prodorderroutingline.GetLatestPostedEndDateTime;
prodorder.Modify;
exit(prodorder."End Date-Time Last Post");
end;
end;
end;
end;
15. Juni 2021 09:17
15. Juni 2021 09:24
15. Juni 2021 10:32
wie lautet denn die Fehlermeldung? Meine Glaskugel ist gerade etwas trübe
"GetLatestPostedEndDateTime" auf der "Prod. Order Routing Line" - ist die selbst geschrieben?
Gibt die denn überhaupt was Ordentliches zurück?
procedure SetEnddateLastPost():DateTime
var
prodorderline: Record "Prod. Order Line";
prodorderroutingline: Record "Prod. Order Routing Line";
begin
prodorderline.SetFilter("Prod. Order No.","No.");
prodorderline.SetFilter("Line No.",Format(10000));
if prodorderline.FindSet then begin
prodorderroutingline.SetFilter("Prod. Order No.",prodorderline."Prod. Order No.");
prodorderroutingline.SetFilter("Routing Reference No.",Format(prodorderline."Routing Reference No."));
if prodorderroutingline.FindLast then begin
exit(prodorderroutingline.GetLatestPostedEndDateTime);
end;
end;
end;
trigger OnAfterGetRecord();
begin
"End Date-Time Last Post":=SetEnddateLastPost();
if Format("End Date-Time Last Post") <> '' then
Modify;
end;
15. Juni 2021 12:05
trigger OnAfterGetRecord();
begin
"End Date-Time Last Post":=SetEnddateLastPost();
if Format("End Date-Time Last Post") <> '' then
Modify;
end;
trigger OnAfterGetRecord();
begin
"End Date-Time Last Post":=SetEnddateLastPost();
Message(Format("End Date-Time Last Post"));
end;
15. Juni 2021 13:06
15. Juni 2021 13:25
machst, steht in der Message alles richtig drin?
is "End Date-Time Last Post" auch ein Tabellenfeld?
15. Juni 2021 13:30
15. Juni 2021 13:38
Fußt deine Page auf einer Temporären Tabelle
oder hast du im Page on Modify Trigger Anweisungen geschrieben?
15. Juni 2021 14:20
und wenn du die Tabelle bzw. deine TableExtension dann per SQL-MGT-Studio öffnest, dann steht da nicht dieser Wert drin?
15. Juni 2021 15:26
15. Juni 2021 15:58
das Feld "End Date-Time Last Post" ist ein Feld in deiner Tabelle und definitiv nirgends ggf. noch mal als lokale/globale Variable angelegt?
15. Juni 2021 17:33
tableextension 50100 MyExtension extends Customer
{
fields
{
field(50100; MyDateTimeBlub; DateTime)
{
}
}
}
pageextension 50100 MyExtension extends "Customer List"
{
layout
{
addlast(Control1)
{
field(MyDateTimeBlub; MyDateTimeBlub)
{ }
}
}
trigger OnAfterGetRecord()
begin
if "No." = '10000' then begin
MyDateTimeBlub := CreateDateTime(Today, Time);
Modify;
end;
end;
}
16. Juni 2021 11:19
16. Juni 2021 11:54
im Feld "End Date-Time Last Post" der Page werden alle Werte und auch im richtigen Format, zB.: 12.04.2021 20:26 dargestellt und angezeigt. wenn ich die Zelle aus der Page heraus kopiere, sieht es so aus: 12.04.2021 20:26:39,180
16. Juni 2021 18:01
Somit ist doch alles ok, oder nicht?
17. Juni 2021 08:51
17. Juni 2021 17:20
18. Juni 2021 09:44
18. Juni 2021 09:47
Wenn wir dir helfen sollen, brauchen wir mehr ordentlichen Code (meine Meinung)
18. Juni 2021 11:01
Wenn wir dir helfen sollen, brauchen wir mehr ordentlichen Code (meine Meinung)
procedure GetLatestPostedEndDateTime(Rec: Record "Prod. Order Routing Line") LatestEndDateTime: DateTime;
var
TempFDCDetailedEntry: Record "FDC - Detailed Entry" temporary;
begin
if (CollectFDCDetailedEntries(Rec, TempFDCDetailedEntry)) then begin
TempFDCDetailedEntry.SetRange("FDC Entry Type", TempFDCDetailedEntry."FDC Entry Type"::Recording);
TempFDCDetailedEntry.SetRange(Canceled, false);
if (not TempFDCDetailedEntry.IsEmpty()) then begin
TempFDCDetailedEntry.FindSet();
repeat
if (TempFDCDetailedEntry."End Date-Time" <> 0DT) then
if (LatestEndDateTime = 0DT) or (LatestEndDateTime < TempFDCDetailedEntry."End Date-Time") then
LatestEndDateTime := TempFDCDetailedEntry."End Date-Time";
until (TempFDCDetailedEntry.Next() = 0);
end;
end;
exit(LatestEndDateTime);
end;
18. Juni 2021 14:27
18. Juni 2021 21:11
"End Date-Time Last Post":=SetEnddateLastPost();
if Format("End Date-Time Last Post") <> '' then
Modify;
"End Date-Time Last Post":=SetEnddateLastPost();
Modify;
8. Juli 2021 13:13
- gibt es evtl Subscriber auf den MODIFY-Trigger der SourceTable der Page? Wenn ja, können die vlt. die Ursache dafür sein, dass der Wert wieder verworfen wird?
trigger OnAfterGetRecord();
begin
"End Date-Time Last Post Irl":=SetEnddateLastPost();
Modify;
end;
[EventSubscriber(ObjectType::table, Database::"Production Order", 'OnBeforeModifyEvent', '', false, false)]
local procedure ProductionOrderEvent(var Rec : Record "Production Order"; xRec : Record "Production Order"; RunTrigger: Boolean);
begin
if Rec.SetEnddateLastPost <> Rec."End Date-Time Last Post Irl" then
Rec.Validate("End Date-Time Last Post Irl", Rec.SetEnddateLastPost);
end;