Double Form Docs Cleanup
Double Form Docs Cleanup ist eine Maintenance-Routine, die in Forms doppelte Dokumentationen bereinigt.
Im Login-Dialog muss der Maintenance-Mode aktiviert werden, damit Sie verfügbar ist. Sie kann in der IDE über das Menü Tools / Checks / Double Form Docs Cleanup aufgerufen werden.
Mit dem Button Analyze wird eine Analyse gestartet ohne, dass Änderungen durchgeführt werden. Die Resultate werden in der Error-Liste ausgegeben.
Der Button CleanUp führt die Änderungen aus. Dazu werden die betroffenen Forms und Dokumentationen ausgecheckt, geändert und gespeichert.
Important
Nach dem CleanUp sollte Framework Studio neu gestartet werden. Durch die Bereinigung könnte es vorkommen, dass die Dokumentation im Form-Designer oder der Chapter-Tree nicht korrekt angezeigt werden.
Anschließend können die ausgecheckten Elemente wieder eingecheckt werden.
Beschreibung
Forms können nur eine Dokumentation enthalten. In älteren Version gab es einen Fehler, dass beim Copy Paste von Forms im Hintergrund doppelte Einträge für die Form-Dokumentation erstellt wurden. Das hat zur Folge, dass der Chapter Tree das entsprechende Form mehrfach anzeigt.
Dieser Fehler wurde im Mai 2023 in FS 4.4 und höher korrigiert, damit entstehen keine neuen Fehler mehr.
Fehler, die vor dieser Korrektur entstanden sind, können aber noch vorhanden sein und zu unsauberen Situationen im Chapter Tree führen.
Mit der Maintenance-Routine können diese Fehler bereinigt werden.
Tip
Es ist sinnvoll, diese Routine einmal über alle Package-Version laufen zu lassen.
Mit den folgenden SQL-Statements können Sie sich einen Überblick verschaffen, welche Package-Version konkret betroffen sind. Führen Sie das entsprechende Statement auf der Repository-Datenbank aus.
Nach CleanUp und Checkin sollten die korrigierten Forms nicht mehr ausgegeben werden. So lässt sich prüfen, ob der CleanUp erfolgreich war.
-- SQL-Server:
SELECT F_Name AS Form, P_Name AS Package, LBL_Name AS Version
FROM (SELECT lblF_ObjectID, max(lblF_ObjectVersion) as lblF_ObjectVersion, lblF_LabelID, max(lblF_PackageID) as lblF_PackageID
from lblRep_Form where COALESCE(lblF_IsCheckedOut, 0) = 0
group by lblF_ObjectID, lblF_LabelID) as lbl
inner join tblRep_Form on F_ID = lbl.lblF_ObjectID AND F_Version = lbl.lblF_ObjectVersion AND F_PackageID = lblF_PackageID AND COALESCE(F_IsCustomization, 0) = 0 AND COALESCE(F_IsVersionDeleted, 0) = 0
inner join tblRep_Package on P_ID = lbl.lblF_PackageID AND DataLength(P_PckKey) > 1000
inner join tblRep_Label on LBL_ID = lbl.lblF_LabelID
where (Select count(*) from subRep_Documentation
inner join tblRep_Documentation on DOC_ID = subDOC_ID AND DOC_Version = subDOC_Version AND DOC_PackageID = subDOC_PackageID AND COALESCE(DOC_IsVersionDeleted, 0) = 0
WHERE subDOC_F_ID = lbl.lblF_ObjectID AND subDOC_F_Version = lbl.lblF_ObjectVersion AND subDOC_PackageID = lbl.lblF_PackageID) > 1
order by P_Name, lbl_Name desc
-- Oracle:
SELECT F_Name AS Form, P_Name AS Package, LBL_Name AS Version
FROM (SELECT lblF_ObjectID, max(lblF_ObjectVersion) as lblF_ObjectVersion, lblF_LabelID, max(lblF_PackageID) as lblF_PackageID
from lblRep_Form where COALESCE(lblF_IsCheckedOut, '0') = '0'
group by lblF_ObjectID, lblF_LabelID) lbl
inner join tblRep_Form on F_ID = lbl.lblF_ObjectID AND F_Version = lbl.lblF_ObjectVersion AND F_PackageID = lblF_PackageID AND COALESCE(F_IsCustomization, '0') = '0' AND COALESCE(F_IsVersionDeleted, '0') = '0'
inner join tblRep_Package on P_ID = lbl.lblF_PackageID AND length(P_PckKey) > 1000
inner join tblRep_Label on LBL_ID = lbl.lblF_LabelID
where (Select count(*) from subRep_Documentation
inner join tblRep_Documentation on DOC_ID = subDOC_ID AND DOC_Version = subDOC_Version AND DOC_PackageID = subDOC_PackageID AND COALESCE(DOC_IsVersionDeleted, '0') = '0'
WHERE subDOC_F_ID = lbl.lblF_ObjectID AND subDOC_F_Version = lbl.lblF_ObjectVersion AND subDOC_PackageID = lbl.lblF_PackageID) > 1
order by P_Name, lbl_Name desc;