[FONT=Arial][SIZE=2]
[LEFT]FUNCTION_BLOCK FB1200
VAR_INPUT
SAVE_CORRECTIE: BOOL;
FETCH_CORRECTIE: BOOL;
Active_Artikel: DINT;
END_VAR
VAR
MEM_SAVE: BOOL;
MEM_FETCH:BOOL;
FETCHED: BOOL;
SAVED: BOOL;
PREV_ACTIVE: DINT;
Index_Store: INT;
END_VAR
VAR_TEMP
SAVE_FLANK: BOOL;
FETCH_FLANK: BOOL;
i: INT;
END_VAR
BEGIN
SAVE_FLANK:= SAVE_CORRECTIE AND (NOT MEM_SAVE);
FETCH_FLANK:= FETCH_CORRECTIE AND (NOT MEM_FETCH);
//Bij oproepen van een nieuwe batch => status wissen
IF PREV_ACTIVE <> Active_Artikel THEN
FETCHED:= FALSE;
SAVED:= False;
PREV_ACTIVE:= Active_Artikel;
END_IF;
// Ophalen uit database
IF FETCH_FLANK AND NOT FETCHED THEN
FOR i:=1 TO 15000 do
IF Active_Artikel = "Corr_Artikel".Index[i] THEN
"Correcties_Open".Hoek1:="Corr_Hoek1".Index[i];
"Correcties_Open".Hoek2:="Corr_Hoek2".Index[i];
"Correcties_Open".Unit1:="Corr_Unit1".Index[i];
"Correcties_Open".Unit2:="Corr_Unit2".Index[i];
"Correcties_Open".Hoogte:="Corr_Hoogte".Index[i];
FETCHED:= TRUE;
END_IF;
END_FOR;
END_IF;
// Opslaan in database
IF SAVE_FLANK THEN
IF NOT SAVED THEN
FOR i:=1 TO 15000 DO
IF "Corr_Artikel".Index[i] = Active_Artikel AND NOT SAVED THEN
"Corr_Hoek1".Index[i]:="Correcties_Open".Hoek1;
"Corr_Hoek2".Index[i]:="Correcties_Open".Hoek2;
"Corr_Unit1".Index[i]:="Correcties_Open".Unit1;
"Corr_Unit2".Index[i]:="Correcties_Open".Unit2;
"Corr_Hoogte".Index[i]:="Correcties_Open".Hoogte;
SAVED:= TRUE;
END_IF;
END_FOR;
END_IF;
IF NOT SAVED THEN
FOR i:=1 TO 15000 DO
IF "Corr_Artikel".Index[i] = 0 AND NOT SAVED THEN
"Corr_Artikel".Index[i]:=Active_Artikel;
"Corr_Hoek1".Index[i]:="Correcties_Open".Hoek1;
"Corr_Hoek2".Index[i]:="Correcties_Open".Hoek2;
"Corr_Unit1".Index[i]:="Correcties_Open".Unit1;
"Corr_Unit2".Index[i]:="Correcties_Open".Unit2;
"Corr_Hoogte".Index[i]:="Correcties_Open".Hoogte;
SAVED:= TRUE;
END_IF;
END_FOR;
END_IF;
END_IF;
MEM_SAVE:= SAVE_CORRECTIE;
MEM_FETCH:= FETCH_CORRECTIE;
END_FUNCTION_BLOCK[/LEFT]
[/SIZE][/FONT]