Eine Db wird immer langsammer und ich habe leider keine Vergleichswerte ob das Normal ist. Die Db hat eine grösse von 407 Mb (25 538 docs), und das öffnen dauert mitunter ca. 67 sec.
Als "Bremsen" habe ich evt. zwei Felder die Berechnet sind,
dort stecken auch einige Lookups drin.
Da die Felder aber nur Berechnet werden sollen wenn sich ein anderes Feld ändert, habe ich jetzt die Formel auf @If(@IsDocRecalculated;... erweitert, subjectiv betrachtet ändert sich aber nichts.
Wenn ich mir die Formel so ansehe (und die Lookups wären das Problem) müsste ich diese doch sowieso in die @If Abfrage einpacken, oder???
Aslo z.B. @If(@IsDocRecalculated;@Set("Temp1";@DbLookup(bla, bla...
Eine der Formeln:
REM "In diesem Feld wird geprüft ob ein Fehler vorliegt";
REM "Fehler sind: fehlender Mop-Code/Hazardous Indikator und falsche Vorgruppierung.";
REM "*Abschnitt zur Berechnung des Fehlers \'Vorgruppe/Katalo Nr.\'*";
REM "LU der Vorgruppen für die es keine Katalog Nummern gibt.";
TempLUView := "LUKeyword_V";
TempLUKey := "Keine Katalog Nummer";
TempLUNoCatNum := @DbLookup("Notes":"NoCache";"";TempLUView;TempLUKey;2);
TempNoCatNum := @If(@IsError(TempLUNoCatNum);"ERROR";TempLUNoCatNum);
TempNoCatNumForm := @Left(TempNoCatNum;2)+@Right(TempNoCatNum;2);
REM "LU der Vergleichswerte für die Prüfung Vorgruppierung zu Katalog Nummer.";
TempLUView1 := "LUAllCatalogGroups_V";
TempLUKey1 := @Left(CatNoGroup_T;2)+@Right(CatNoGroup_T;2);
TempLUCatGroup2 := @DbLookup("Notes":"NoCache";"";TempLUView1;TempLUKey1;2);
TempCatGroup2 := @If(@IsError(TempLUCatGroup2);"ERROR";TempLUCatGroup2);
TempLUCatGroup3 := @DbLookup("Notes":"NoCache";"";TempLUView1;TempLUKey1;3);
TempCatGroup3 := @If(@IsError(TempLUCatGroup3);"ERROR";TempLUCatGroup3);
REM "Der eine Vergleichswert ist die Vorgruppierung und die zwei zusätzlichen Werte die in der TempCatGroup2 und 3 gespeichert sind.";
REM "Der zweite Vergleichswert ist die TempCatNo.";
REM "****VERGLEICHSWERT **********************";
TempControl := TempLUKey1 : TempCatGroup2 : TempCatGroup3;
TempCatNo := @Left(CatalogNo_T;4);
REM "Zum entgültigen Vergleich muss ausserdem noch die TempNoCatNum herangezogen werden.";
REM "Die Prüfung sieht dann wie folgt aus:";
REM "1 - Wenn die Vorgruppe (TempLUKey1) gleich einem der Werte dieser Temp ist dann liegt kein Fehler vor.";
REM "2 - Wenn die TempCatNo gleich einem der Werte der TempControl ist dann liegt ebenfalls kein Fehler vor.";
REM "Die Prüfung wird aber Umgekehrt da ja geprüft wird ob NOK.";
TempCatNoOK := @If(@IsMember(TempLUKey1;TempNoCatNumForm) | @IsMember(TempCatNo;TempControl);"Yes";"No");
REM "Der zweite Bereich überprüft ob ein MOP Code eingegeben wurde";
TempMOPCodeNOK := @If(MopCode_T ="
");
REM "Der dritte Bereich überprüft ob ein Hazardous Indikator gesetzt ist.";
TempHazIndNOK := @If(@Explode(Process_T) = "Hazardous" & HazIndicator_T != "A") |
@If(@Explode(Process_T) != "Hazardous" & HazIndicator_T = "A") ;
TempZust1 := @If(TempCatNoOK = "No");
TempZust2 := @If(TempMOPCodeNOK);
TempZust3 := @If(TempHazIndNOK);
TempAusg1 := "Vorgruppe/Katalog Nr.";
TempAusg2 := "MOP Code";
TempAusg3 := "Hazard Indicator";
@If(@IsDocBeingRecalculated;@Explode(@If(TempZust1;TempAusg1;",") : @If(TempZust2;TempAusg2;",") : @If(TempZust3;TempAusg3;",");",");@Success)