任何人都可以請指導我如何避免錯誤'公式已經超過了最大允許的內存使用量。在我的應用程序中,我用@Formulas寫了幾個複雜的邏輯。Lotus Notes @Formulas意外錯誤
在我的應用程序中,當用戶點擊一個按鈕(執行多個計算,驗證檢查,更新與當前文檔相關的幾個文檔等)時,會執行幾個不同的活動。執行這些活動的代碼大約有600行(用公式語言編寫)和幾個循環,並且在此處使用if-else。
在少數情況下,的相關文檔(當用戶點擊按鈕時會得到更新)很高(超過100個),系統在執行幾行代碼後會引發此錯誤。
我刪除了一些沒用的代碼。現在系統正在處理更多的代碼行,並且錯誤出現在一些不同的代碼行上。
請建議我如何避免此問題,因爲這是非常關鍵的系統,並且由於此問題,用戶無法進行任何更新。
以下是完整代碼:
REM {Activities after saving document: Calculate the sum of completed HMRs and save in master document};
REM {Update each component entry of this machine
if component has not completed target hours, add current day's sum to it. };
REM {Calculate HMRs before and after current entry, send mail notification after each 500 hours, starting with 480 1st mail will be triggered on 480, 2nd on 980 and so on };
@If(@Command([FileSave]);
@Do(
varServer := @If(@ServerName = @UserName;"";@Name([CN];@ServerName));
lkpResult := @DbLookup("":"NOCACHE";varServer:@DbName[2];"vw_Daily_Logs";Machine_Line + "~" + Machine_ID;"Day_Run_Mileage");
shift_A_Run := @If(@Trim(@Text(Stop_HMR_A)) = "";0;Stop_HMR_A < Start_HMR_A;0;@Round(Stop_HMR_A - Start_HMR_A;0.1));
shift_B_Run := @If(@Trim(@Text(Stop_HMR_B)) = "";0;Stop_HMR_B < Start_HMR_B;0;@Round(Stop_HMR_B - Start_HMR_B;0.1));
shift_C_Run := @If(@Trim(@Text(Stop_HMR_C)) = "";0;Stop_HMR_C < Start_HMR_C;0;@Round(Stop_HMR_C - Start_HMR_C;0.1));
shift_A_Diesel := @If(Diesel_A = "";0;Diesel_A);
shift_B_Diesel := @If(Diesel_B = "";0;Diesel_B);
shift_C_Diesel := @If(Diesel_C = "";0;Diesel_C);
shift_A_Remarks := @If(Test_conducted_A = "Build/Part Fitment";"[PART FITMENT]: "+ Test_Remarks_A;Test_conducted_A = "Breakdown/Hold";"[Breakdown/Hold]: "+ Test_Remarks_A;Test_Remarks_A);
shift_B_Remarks := @If(Test_conducted_B = "Build/Part Fitment";"[PART FITMENT]: "+ Test_Remarks_B;Test_conducted_B = "Breakdown/Hold";"[Breakdown/Hold]: "+ Test_Remarks_B;Test_Remarks_B);
shift_C_Remarks := @If(Test_conducted_C = "Build/Part Fitment";"[PART FITMENT]: "+ Test_Remarks_C;Test_conducted_C = "Breakdown/Hold";"[Breakdown/Hold]: "+ Test_Remarks_C;Test_Remarks_C);
strRemarks := @If(@Trim(@Implode(Remarks_A)) = "";"";@Trim(@Implode(Remarks_A)));
strRemarks := strRemarks + @If(@Trim(@Implode(Remarks_B)) = "";"";@NewLine + @Trim(@Implode(Remarks_B)));
strRemarks := strRemarks + @If(@Trim(@Implode(Remarks_C)) = "";"";@NewLine + @Trim(@Implode(Remarks_C)));
strRemarks := @If(strRemarks = "";"-";strRemarks);
strRemarks := @ReplaceSubstring(strRemarks;",";".");
shift_A_Operator := @If(@Trim(Operator_A) = "";"-";Operator_A);
shift_B_Operator := @If(@Trim(Operator_B) = "";"-";Operator_B);
shift_C_Operator := @If(@Trim(Operator_C) = "";"-";Operator_C);
shift_A_Test := @If(@Trim(Test_conducted_A) = "";"-";Test_conducted_A);
shift_B_Test := @If(@Trim(Test_conducted_B) = "";"-";Test_conducted_B);
shift_C_Test := @If(@Trim(Test_conducted_C) = "";"-";Test_conducted_C);
meter_Change_HMR_Reading := Meter_Changed_At_HMR;
@If(@GetDocField(ParentUNID;"DateList")[1] = "-";
@Do(
@SetDocField(ParentUNID;"Total_Vehicle_Hours";Cumulative_Vehicle_Hours);
varSerialNoList := "1";
Milage_Plan_Tmp := Milage_Plan;
varPlannedHrsList := @Text(Cumulative_Vehicle_Reading_Plan + Milage_Plan_Tmp);
plannedHRSCumulative := Cumulative_Vehicle_Reading_Plan + Milage_Plan_Tmp;
tmpTargetHMR := Target_HMR;
varActualHrsList := @Text(HMR_Start_Reading + shift_A_Run + shift_B_Run + shift_C_Run);
varHMR_A := @Text(shift_A_Run);
varHMR_B := @Text(shift_B_Run);
varHMR_C := @Text(shift_C_Run);
varHMR_Total := @Text(shift_A_Run + shift_B_Run + shift_C_Run);
varDiesel_A := @Text(shift_A_Diesel);
varDiesel_B := @Text(shift_B_Diesel);
varDiesel_C := @Text(shift_C_Diesel);
varDiesel_Total := @Text(shift_A_Diesel + shift_B_Diesel + shift_C_Diesel);
varRemarksList := @If(strRemarks = "";"-";strRemarks);
varRemarksList_A := @If(shift_A_Remarks = "";"-";shift_A_Remarks);
varRemarksList_B := @If(shift_B_Remarks = "";"-";shift_B_Remarks);
varRemarksList_C := @If(shift_C_Remarks = "";"-";shift_C_Remarks);
varOperatorList_A := @If(shift_A_Operator = "";"-";shift_A_Operator);
varOperatorList_B := @If(shift_B_Operator = "";"-";shift_B_Operator);
varOperatorList_C := @If(shift_C_Operator = "";"-";shift_C_Operator);
varTestList_A := @If(shift_A_Test = "";"-";shift_A_Test);
varTestList_B := @If(shift_B_Test = "";"-";shift_B_Test);
varTestList_C := @If(shift_C_Test = "";"-";shift_C_Test);
daysToRun := @GetDocField(ParentUNID;"DaysToRun");
targetHrs := @GetDocField(ParentUNID;"Target_HMR");
tmpDate := @Date(Log_Date);
datesList := @Text(tmpDate);
@For(tmpKtr := 2; tmpKtr <= daysToRun;tmpKtr := tmpKtr + 1;@Do(
tmpDate := @If(@Weekday(@Adjust(tmpDate;0;0;1;0;0;0)) = 1; @Adjust(tmpDate;0;0;2;0;0;0);@Adjust(tmpDate;0;0;1;0;0;0));
datesList := datesList : @Text(tmpDate);
varSerialNoList := varSerialNoList : @Text(tmpKtr);
plannedHRSCumulative := @If(plannedHRSCumulative + Milage_Plan_Tmp > Scheduled_Closing_HMR;Scheduled_Closing_HMR;plannedHRSCumulative + Milage_Plan_Tmp);
varPlannedHrsList := varPlannedHrsList : @Text(plannedHRSCumulative);
varActualHrsList := varActualHrsList : "-";
varHMR_A := varHMR_A : "-";
varHMR_B := varHMR_B : "-";
varHMR_C := varHMR_C : "-";
varHMR_Total := varHMR_Total : "-";
varDiesel_A := varDiesel_A : "-";
varDiesel_B := varDiesel_B : "-";
varDiesel_C := varDiesel_C : "-";
varDiesel_Total := varDiesel_Total : "-";
varRemarksList := varRemarksList : "-";
varRemarksList_A := varRemarksList_A : "-";
varRemarksList_B := varRemarksList_B : "-";
varRemarksList_C := varRemarksList_C : "-";
varOperatorList_A := varOperatorList_A : "-";
varOperatorList_B := varOperatorList_B : "-";
varOperatorList_C := varOperatorList_C : "-";
varTestList_A := varTestList_A : "-";
varTestList_B := varTestList_B : "-";
varTestList_C := varTestList_C : "-"
));
@SetDocField(ParentUNID;"Total_Vehicle_Hours";Cumulative_Vehicle_Hours);
@SetDocField(ParentUNID;"SerialNoList";varSerialNoList);
@SetDocField(ParentUNID;"DateList";datesList);
@SetDocField(ParentUNID;"PlannedHrsList";varPlannedHrsList);
@SetDocField(ParentUNID;"ActualHrsList";varActualHrsList);
@SetDocField(ParentUNID;"Machine_Run_Time_A";varHMR_A);
@SetDocField(ParentUNID;"Machine_Run_Time_B";varHMR_B);
@SetDocField(ParentUNID;"Machine_Run_Time_C";varHMR_C);
@SetDocField(ParentUNID;"Machine_Run_Time_Total";varHMR_Total);
@SetDocField(ParentUNID;"DieselConsumedListShiftA";varDiesel_A);
@SetDocField(ParentUNID;"DieselConsumedListShiftB";varDiesel_B);
@SetDocField(ParentUNID;"DieselConsumedListShiftC";varDiesel_C);
@SetDocField(ParentUNID;"DieselConsumedListTotal";varDiesel_Total);
@SetDocField(ParentUNID;"RemarksList";varRemarksList);
@SetDocField(ParentUNID;"RemarksListA";varRemarksList_A);
@SetDocField(ParentUNID;"RemarksListB";varRemarksList_B);
@SetDocField(ParentUNID;"RemarksListC";varRemarksList_C);
@SetDocField(ParentUNID;"OperatorListA";varOperatorList_A);
@SetDocField(ParentUNID;"OperatorListB";varOperatorList_B);
@SetDocField(ParentUNID;"OperatorListC";varOperatorList_C);
@SetDocField(ParentUNID;"TestListA";varTestList_A);
@SetDocField(ParentUNID;"TestListB";varTestList_B);
@SetDocField(ParentUNID;"TestListC";varTestList_C);
@SetDocField(ParentUNID;"Meter_Changed_At_HMR";meter_Change_HMR_Reading)
);
@Do(
varSeqNoList := @GetDocField(ParentUNID;"SerialNoList")[1];
varDateList := @GetDocField(ParentUNID;"DateList")[1];
varPlannedHrsList := @GetDocField(ParentUNID;"PlannedHrsList")[1];
varActualHrsList := @GetDocField(ParentUNID;"ActualHrsList")[1];
varHMR_A := @GetDocField(ParentUNID;"Machine_Run_Time_A")[1];
varHMR_B := @GetDocField(ParentUNID;"Machine_Run_Time_B")[1];
varHMR_C := @GetDocField(ParentUNID;"Machine_Run_Time_C")[1];
varHMR_Total := @GetDocField(ParentUNID;"Machine_Run_Time_Total")[1];
varDiesel_A := @GetDocField(ParentUNID;"DieselConsumedListShiftA")[1];
varDiesel_B := @GetDocField(ParentUNID;"DieselConsumedListShiftB")[1];
varDiesel_C := @GetDocField(ParentUNID;"DieselConsumedListShiftC")[1];
varDiesel_Total := @GetDocField(ParentUNID;"DieselConsumedListTotal")[1];
varRemarksList := @GetDocField(ParentUNID;"RemarksList")[1];
varRemarksList_A := @GetDocField(ParentUNID;"RemarksListA")[1];
varRemarksList_B := @GetDocField(ParentUNID;"RemarksListB")[1];
varRemarksList_C := @GetDocField(ParentUNID;"RemarksListC")[1];
varOperatorList_A := @GetDocField(ParentUNID;"OperatorListA")[1];
varOperatorList_B := @GetDocField(ParentUNID;"OperatorListB")[1];
varOperatorList_C := @GetDocField(ParentUNID;"OperatorListC")[1];
varTestList_A := @GetDocField(ParentUNID;"TestListA")[1];
varTestList_B := @GetDocField(ParentUNID;"TestListB")[1];
varTestList_C := @GetDocField(ParentUNID;"TestListC")[1];
varDelayCount := 0;
@For(itemKtr := 2; itemKtr <= @Elements(@GetDocField(ParentUNID;"DateList")); itemKtr := itemKtr + 1;
varSeqNoList := varSeqNoList : @GetDocField(ParentUNID;"SerialNoList")[itemKtr];
varDateList := varDateList : @GetDocField(ParentUNID;"DateList")[itemKtr];
varPlannedHrsList := varPlannedHrsList : @GetDocField(ParentUNID;"PlannedHrsList")[itemKtr];
@If(@Text(@Date(Log_Date)) = @GetDocField(ParentUNID;"DateList")[itemKtr];
@Do(
varActualHrsList := varActualHrsList : @Text(HMR_Start_Reading + shift_A_Run + shift_B_Run + shift_C_Run);
varHMR_A := varHMR_A : @Text(shift_A_Run);
varHMR_B := varHMR_B : @Text(shift_B_Run);
varHMR_C := varHMR_C : @Text(shift_C_Run);
varHMR_Total := varHMR_Total : @Text(shift_A_Run + shift_B_Run + shift_C_Run);
varDiesel_A := varDiesel_A : @Text(shift_A_Diesel);
varDiesel_B := varDiesel_B : @Text(shift_B_Diesel);
varDiesel_C := varDiesel_C : @Text(shift_C_Diesel);
varDiesel_Total := varDiesel_Total : @Text(shift_A_Diesel + shift_B_Diesel + shift_C_Diesel);
varRemarksList := varRemarksList : @If(strRemarks = "";"-";strRemarks);
varRemarksList_A := varRemarksList_A : @If(shift_A_Remarks = "";"-";shift_A_Remarks);
varRemarksList_B := varRemarksList_B : @If(shift_B_Remarks = "";"-";shift_B_Remarks);
varRemarksList_C := varRemarksList_C : @If(shift_C_Remarks = "";"-";shift_C_Remarks);
varOperatorList_A := varOperatorList_A : @If(shift_A_Operator = "";"-";shift_A_Operator);
varOperatorList_B := varOperatorList_B : @If(shift_B_Operator = "";"-";shift_B_Operator);
varOperatorList_C := varOperatorList_C : @If(shift_C_Operator = "";"-";shift_C_Operator);
varTestList_A := varTestList_A : @If(shift_A_Test = "";"-";shift_A_Test);
varTestList_B := varTestList_B : @If(shift_B_Test = "";"-";shift_B_Test);
varTestList_C := varTestList_C : @If(shift_C_Test = "";"-";shift_C_Test)
);
@Date(Log_Date) > @TextToTime(@GetDocField(ParentUNID;"DateList")[itemKtr]) & @GetDocField(ParentUNID;"ActualHrsList")[itemKtr] = "-";
@Do(
varDelayCount := varDelayCount + 1;
varActualHrsList := varActualHrsList : varActualHrsList[itemKtr - 1];
varHMR_A := varHMR_A : "0";
varHMR_B := varHMR_B : "0";
varHMR_C := varHMR_C : "0";
varHMR_Total := varHMR_Total : "0";
varDiesel_A := varDiesel_A : "0";
varDiesel_B := varDiesel_B : "0";
varDiesel_C := varDiesel_C : "0";
varDiesel_Total := varDiesel_Total : "0";
varRemarksList := varRemarksList : "-";
varRemarksList_A := varRemarksList_A : "-";
varRemarksList_B := varRemarksList_B : "-";
varRemarksList_C := varRemarksList_C : "-";
varOperatorList_A := varOperatorList_A : "-";
varOperatorList_B := varOperatorList_B : "-";
varOperatorList_C := varOperatorList_C : "-";
varTestList_A := varTestList_A : "-";
varTestList_B := varTestList_B : "-";
varTestList_C := varTestList_C : "-"
);
@Do(
varActualHrsList := varActualHrsList : @GetDocField(ParentUNID;"ActualHrsList")[itemKtr];
varHMR_A := varHMR_A : @GetDocField(ParentUNID;"Machine_Run_Time_A")[itemKtr];
varHMR_B := varHMR_B : @GetDocField(ParentUNID;"Machine_Run_Time_B")[itemKtr];
varHMR_C := varHMR_C : @GetDocField(ParentUNID;"Machine_Run_Time_C")[itemKtr];
varHMR_Total := varHMR_Total : @GetDocField(ParentUNID;"Machine_Run_Time_Total")[itemKtr];
varDiesel_A := varDiesel_A : @GetDocField(ParentUNID;"DieselConsumedListShiftA")[itemKtr];
varDiesel_B := varDiesel_B : @GetDocField(ParentUNID;"DieselConsumedListShiftB")[itemKtr];
varDiesel_C := varDiesel_C : @GetDocField(ParentUNID;"DieselConsumedListShiftC")[itemKtr];
varDiesel_Total := varDiesel_Total : @GetDocField(ParentUNID;"DieselConsumedListTotal")[itemKtr];
varRemarksList := varRemarksList : @GetDocField(ParentUNID;"RemarksList")[itemKtr];
varRemarksList_A := varRemarksList_A : @GetDocField(ParentUNID;"RemarksListA")[itemKtr];
varRemarksList_B := varRemarksList_B : @GetDocField(ParentUNID;"RemarksListB")[itemKtr];
varRemarksList_C := varRemarksList_C : @GetDocField(ParentUNID;"RemarksListC")[itemKtr];
varOperatorList_A := varOperatorList_A : @GetDocField(ParentUNID;"OperatorListA")[itemKtr];
varOperatorList_B := varOperatorList_B : @GetDocField(ParentUNID;"OperatorListB")[itemKtr];
varOperatorList_C := varOperatorList_C : @GetDocField(ParentUNID;"OperatorListC")[itemKtr];
varTestList_A := varTestList_A : @GetDocField(ParentUNID;"TestListA")[itemKtr];
varTestList_B := varTestList_B : @GetDocField(ParentUNID;"TestListB")[itemKtr];
varTestList_C := varTestList_C : @GetDocField(ParentUNID;"TestListC")[itemKtr]
)
)
);
varExtendedDate := @TextToTime(varDateList[@Elements(varDateList)]);
@For(delayKtr := 1; delayKtr <= varDelayCount; delayKtr := delayKtr + 1;
@Do(
varExtendedDate := @Adjust(varExtendedDate;0;0;1;0;0;0);
varExtendedDate := @If(@Weekday(varExtendedDate) = 1;@Adjust(varExtendedDate;0;0;1;0;0;0);varExtendedDate);
varSeqNoList := varSeqNoList : @Text(@Elements(varSeqNoList) + 1);
varDateList := varDateList : @Text(varExtendedDate);
varPlannedHrsList := varPlannedHrsList : "-";
varActualHrsList := varActualHrsList : "-";
varHMR_A := varHMR_A : "-";
varHMR_B := varHMR_B : "-";
varHMR_C := varHMR_C : "-";
varHMR_Total := varHMR_Total : "-";
varDiesel_A := varDiesel_A : "-";
varDiesel_B := varDiesel_B : "-";
varDiesel_C := varDiesel_C : "-";
varDiesel_Total := varDiesel_Total : "-";
varRemarksList := varRemarksList : "-";
varRemarksList_A := varRemarksList_A : "-";
varRemarksList_B := varRemarksList_B : "-";
varRemarksList_C := varRemarksList_C : "-";
varOperatorList_A := varOperatorList_A : "-";
varOperatorList_B :=varOperatorList_B : "-";
varOperatorList_C := varOperatorList_C : "-";
varTestList_A := varTestList_A : "-";
varTestList_B :=varTestList_B : "-";
varTestList_C := varTestList_C : "-"
)
);
@SetDocField(ParentUNID;"Total_Vehicle_Hours";@Sum(lkpResult));
delayHrsTotal := @If(@GetDocField(ParentUNID;"DelayHrs") = "";0;@TextToNumber(@GetDocField(ParentUNID;"DelayHrs")));
delayHrsTotal := delayHrsTotal + varDelayCount*Milage_Plan;
@SetDocField(ParentUNID;"DelayHrs";@Text(delayHrsTotal));
@SetDocField(ParentUNID;"SerialNoList";varSeqNoList);
@SetDocField(ParentUNID;"DateList";varDateList);
@SetDocField(ParentUNID;"PlannedHrsList";varPlannedHrsList);
@SetDocField(ParentUNID;"ActualHrsList";varActualHrsList);
@SetDocField(ParentUNID;"Machine_Run_Time_A";varHMR_A);
@SetDocField(ParentUNID;"Machine_Run_Time_B";varHMR_B);
@SetDocField(ParentUNID;"Machine_Run_Time_C";varHMR_C);
@SetDocField(ParentUNID;"Machine_Run_Time_Total";varHMR_Total);
@SetDocField(ParentUNID;"DieselConsumedListShiftA";varDiesel_A);
@SetDocField(ParentUNID;"DieselConsumedListShiftB";varDiesel_B);
@SetDocField(ParentUNID;"DieselConsumedListShiftC";varDiesel_C);
@SetDocField(ParentUNID;"DieselConsumedListTotal";varDiesel_Total);
@SetDocField(ParentUNID;"RemarksList";varRemarksList);
@SetDocField(ParentUNID;"RemarksListA";varRemarksList_A);
@SetDocField(ParentUNID;"RemarksListB";varRemarksList_B);
@SetDocField(ParentUNID;"RemarksListC";varRemarksList_C);
@SetDocField(ParentUNID;"OperatorListA";varOperatorList_A);
@SetDocField(ParentUNID;"OperatorListB";varOperatorList_B);
@SetDocField(ParentUNID;"OperatorListC";varOperatorList_C);
@SetDocField(ParentUNID;"TestListA";varTestList_A);
@SetDocField(ParentUNID;"TestListB";varTestList_B);
@SetDocField(ParentUNID;"TestListC";varTestList_C);
@SetDocField(ParentUNID;"Meter_Changed_At_HMR";meter_Change_HMR_Reading)
)
);
@For(tmpKtr := 1; tmpKtr <= @Elements(componentsUNID);tmpKtr := tmpKtr + 1;
@Do(
totalHRS := @TextToNumber(@GetDocField(componentsUNID[tmpKtr];"Total_Component_Hours"));
targetRun := @TextToNumber(@GetDocField(componentsUNID[tmpKtr];"Component_Target_HMR"));
FailedFlag := @GetDocField(componentsUNID[tmpKtr];"FailedFlag");
fitmentDate := @GetDocField(componentsUNID[tmpKtr];"Fitment_Date");
component_Starting_HMR := @GetDocField(componentsUNID[tmpKtr];"Starting_HMR");
@If(targetRun > totalHRS & fitmentDate <= Log_Date & FailedFlag != "Yes";
@Do(
logDates := @Implode(@GetDocField(componentsUNID[tmpKtr];"Log_Dates");",");
shift1Runs := @Implode(@GetDocField(componentsUNID[tmpKtr];"Shift1_Runs");",");
shift2Runs := @Implode(@GetDocField(componentsUNID[tmpKtr];"Shift2_Runs");",");
shift3Runs := @Implode(@GetDocField(componentsUNID[tmpKtr];"Shift3_Runs");",");
shift1Diesel := @Implode(@GetDocField(componentsUNID[tmpKtr];"Shift1_Diesel");",");
shift2Diesel := @Implode(@GetDocField(componentsUNID[tmpKtr];"Shift2_Diesel");",");
shift3Diesel := @Implode(@GetDocField(componentsUNID[tmpKtr];"Shift3_Diesel");",");
shift1Remarks := @Implode(@GetDocField(componentsUNID[tmpKtr];"RemarksA");",");
shift2Remarks := @Implode(@GetDocField(componentsUNID[tmpKtr];"RemarksB");",");
shift3Remarks := @Implode(@GetDocField(componentsUNID[tmpKtr];"RemarksC");",");
plannedHrsListCompleted := @Implode(@GetDocField(componentsUNID[tmpKtr];"PlannedHrsListCompleted");",");
actualHrsListCompleted := @Implode(@GetDocField(componentsUNID[tmpKtr];"ActualHrsListCompleted");",");
hrsInShift1 := 0;
hrsInShift2 := 0;
hrsInShift3 := 0;
@If(@Trim(shift1Runs) != "";
@Do(
hrsInShift1 := shift_A_Run;
hrsInShift2 := shift_B_Run;
hrsInShift3 := shift_C_Run;
logDates := @Explode(logDates + "," + @Text(@Date(@GetField("Log_Date")));",");
shift1Runs := @Explode(shift1Runs + "," + @Text(shift_A_Run);",");
shift2Runs := @Explode(shift2Runs + "," + @Text(shift_B_Run);",");
shift3Runs := @Explode(shift3Runs + "," + @Text(shift_C_Run);",");
shift1Diesel := @Explode(shift1Diesel + "," + @If(@Text(Diesel_A) = "";"0";@Text(Diesel_A));",");
shift2Diesel := @Explode(shift2Diesel + "," + @If(@Text(Diesel_B) = "";"0";@Text(Diesel_B));",");
shift3Diesel := @Explode(shift3Diesel + "," + @If(@Text(Diesel_C) = "";"0";@Text(Diesel_C));",");
shift1Remarks := @Explode(shift1Remarks + "," + @If(@Trim(Remarks_A) = "";"-";@Text(Remarks_A));",");
shift2Remarks := @Explode(shift2Remarks + "," + @If(@Trim(Remarks_B) = "";"-";@Text(Remarks_B));",");
shift3Remarks := @Explode(shift3Remarks + "," + @If(@Trim(Remarks_C) = "";"-";@Text(Remarks_C));",");
plannedHrsListCompleted := @Explode(plannedHrsListCompleted + "," + @Text(Cumulative_Vehicle_Reading_Plan + Milage_Plan);",");
actualHrsListCompleted := @Explode(actualHrsListCompleted + "," + @Text(HMR_End_Reading);",")
);
@Do(
logDates := @Text(@Date(@GetField("Log_Date")));
@If(HMR_Start_Reading + shift_A_Run >= component_Starting_HMR;
@Do(
hrsInShift1 := HMR_Start_Reading + shift_A_Run - component_Starting_HMR;
shift1Runs := @Text(hrsInShift1);
shift1Diesel := @If(@Text(Diesel_A) = "";"0";@Text(Diesel_A));
shift1Remarks := @If(@Trim(@Text(Remarks_A)) = "";"-";@Text(Remarks_A))
);
@Do(
shift1Runs := "0";
shift1Diesel := "0";
shift1Remarks := "-"
)
);
@If(HMR_Start_Reading + shift_A_Run + shift_B_Run >= component_Starting_HMR;
@Do(
hrsInShift2 := HMR_Start_Reading + shift_A_Run + shift_B_Run - component_Starting_HMR - hrsInShift1;
shift2Runs := @Text(hrsInShift2);
shift2Diesel := @If(@Text(Diesel_B) = "";"0";@Text(Diesel_B));
shift2Remarks := @If(@Trim(@Text(Remarks_B)) = "";"-";@Text(Remarks_B))
);
@Do(
shift2Runs := "0";
shift2Diesel := "0";
shift2Remarks := "-"
)
);
@If(HMR_Start_Reading + shift_A_Run + shift_B_Run + shift_C_Run >= component_Starting_HMR;
@Do(
hrsInShift3 := HMR_Start_Reading + shift_A_Run + shift_B_Run + shift_C_Run - component_Starting_HMR - hrsInShift1 - hrsInShift2;
shift3Runs := @Text(hrsInShift3);
shift3Diesel := @If(@Text(Diesel_C) = "";"0";@Text(Diesel_C));
shift3Remarks := @If(@Trim(@Text(Remarks_C)) = "";"-";@Text(Remarks_C))
);
@Do(
shift3Runs := "0";
shift3Diesel := "0";
shift3Remarks := "-"
)
);
plannedHrsListCompleted := @Text(Cumulative_Vehicle_Reading_Plan + Milage_Plan);
actualHrsListCompleted := @Text(HMR_End_Reading)
)
);
@SetDocField(componentsUNID[tmpKtr];"Total_Component_Hours";@Text(totalHRS + hrsInShift1 + hrsInShift2 + hrsInShift3));
@SetDocField(componentsUNID[tmpKtr];"Log_Dates";logDates);
@SetDocField(componentsUNID[tmpKtr];"Shift1_Runs";shift1Runs);
@SetDocField(componentsUNID[tmpKtr];"Shift2_Runs";shift2Runs);
@SetDocField(componentsUNID[tmpKtr];"Shift3_Runs";shift3Runs);
@SetDocField(componentsUNID[tmpKtr];"Shift1_Diesel";shift1Diesel);
@SetDocField(componentsUNID[tmpKtr];"Shift2_Diesel";shift2Diesel);
@SetDocField(componentsUNID[tmpKtr];"Shift3_Diesel";shift3Diesel);
@SetDocField(componentsUNID[tmpKtr];"RemarksA";shift1Remarks);
@SetDocField(componentsUNID[tmpKtr];"RemarksB";shift2Remarks);
@SetDocField(componentsUNID[tmpKtr];"RemarksC";shift3Remarks);
@SetDocField(componentsUNID[tmpKtr];"PlannedHrsListCompleted";plannedHrsListCompleted);
@SetDocField(componentsUNID[tmpKtr];"ActualHrsListCompleted";actualHrsListCompleted)
);
""
)
)
);
varTotalHMR_Before := Cumulative_Vehicle_Hours - Day_Run_Mileage;
varTotalHMR_After := Cumulative_Vehicle_Hours;
varServiceDueHrs := @GetDocField(ParentUNID;"Service_Alert_At_HMRs");
varSendMailFlag := 0;
@For(itemsKtr := 1; itemsKtr <= @Elements(varServiceDueHrs) & varSendMailFlag = 0;itemsKtr := itemsKtr + 1;
@Do(
currValue := @TextToNumber(varServiceDueHrs[itemsKtr]);
@If(currValue <= 20 & varTotalHMR_Before = 0;
varSendMailFlag := 1;
@Modulo(varTotalHMR_Before;currValue) < (currValue - 20) & @Modulo(varTotalHMR_After;currValue) >= (currValue - 20);
varSendMailFlag := 1;
""
)
)
);
@If(varSendMailFlag = 1;
@Do(
varSendTo := T_And_D_Managers : T_And_D_Engineers;
varSubject := "[Daily Log System]: Machine Due For Service";
varBody := "Service is due for machine:: " + Machine_ID;
@MailSend(varSendTo;"";"";varSubject;"";varBody;0);
@Prompt([Ok];"Notification";"Notificaton `about` Service")
);
""
)
);"")
感謝
一個要注意的是,該代碼是在正常條件下工作正常的事情。問題來了,當沒有。的相關文件非常高。 –
很可能在某個地方存在無限循環,或者將值連接到增長toolarge的列表(例如,通過使用置換運算符* +)。這肯定是代碼中的錯誤,因爲處理100個文檔在方程式中根本不是問題。沒有代碼,沒有人可以幫助。在這種形式下,我投票結束了「尋求調試幫助的問題(」爲什麼不是這個代碼工作?「)必須包含所需的行爲,特定的問題或錯誤以及重現它所需的最短代碼」 –
請去通過代碼。我不明白爲什麼代碼失敗。可能是因爲「備註」值的長度,這些值被附加到變量中。 –