=====Compass===== ---- ====DEX==== Ablage Ort fürs DEX Log : C:\ProgramData\Autodesk\Productstream Data Export Utility\DataExportUtility.log ----- Filelinkname mit Pad belegen ___Selection ( enumerate __MARK__ ___XdwCmd "update DOCUMENT set FILE_LINKNAME=##(DOCNAME0) where AIMKEY=##(AIMKEY)" ); ___read() #DOCNAME0 Seletierte Daten ins DEX ---- ___Selection ( enumerate __MARK__ ___XdwCmd "INSERT INTO PSP2VLT ( AIMKEY ) VALUES ( ##AIMKEY )" ); CREATE TABLE [dbo].[PSP2VLT]( [AIMKEY] [numeric](17, 5) NULL, [ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL ) ON [PRIMARY] GO SELECT * FROM VIEW_ALL_DOCUMENT WHERE AIMKEY IN ( SELECT AIMKEY FROM PSP2VLT ) SELECT * FROM VIEW_ALL_PROJECT WHERE AIMKEY IN ( SELECT AIMKEY FROM PSP2VLT ) DELETE FROM PSP2VLT WHERE ID NOT IN (SELECT min(ID) FROM PSP2VLTxx Tab1 GROUP BY AIMKEY) ----- =====Allgemeines===== Compass stellt für die Bearbeitung von Inventor Dateien nur rudimentäre Funktionen zur Verfügung. Mit dem Tools INVEXP.EXE werden diese etwas erweitert. Damit ist eine wesentlich bessere Kontrolle der Konvertierung / Druck Vorgänge möglich. Die aktuelle Version unterstützt Inventor 2012 - 2018 AutoCAD 2012 - 2016 .Net Version : 4.0 Der aktuelle Stand ist 4.7.40.1134 ---- ====Parameter==== INVEXP.EXE ist eine Kommandozeilen Applikation, die über Parameter gesteuert wird. Die Parameter sind: Befehl <- Was soll gemacht werden Eingabe Datei <- Quell Datei Ausgabe Datei ( wenn Notwendig ) Parameter Datei ( wenn Notwendig ) Zur Übergabe stehen zwei Verfahren zur Verfügung : Jeder Parameter einzeln Invexp SOURCE ...xzy.ipt Invexp DESTINATION ...xzy.stp Invexp PARAMETER ...stp.ini Invexp STP Alle Parameter gleichzeitig InvExp MODUS QUELLE ZIEL INI z.b. Invexp STP xzy.ipt xzy.stp stp.ini ----- ====Einstellungen==== Die Einstellung erfolgen in der Datei **InvExp.exe.config** Hierbei handelt es sich im eine XML Datei. Bitte nur mit dem Notepad bearbeiten. Bei Änderungen eine Sicherung der Ausgangsdatei anlegen ! ----- ====Inventor==== Gibt die Anzahl der Inventor Verwendungen an. Nach x Benutzungen wird der Inventor beendet, aus dem Speicher entfernt und neu gestartet. Defaultwert = 100, 0 - Inventor läuft ständig ( nicht empfohlen ) 100 ----- ====Log Datei ==== Bei der INVEXE.EXE wird eine Logdatei erstellt, in der alle Bildschirmausgaben geschrieben werden. z.b. **Log-10_01_2014.txt** \\ Werte sind true / false True ----- ====Debug===== Im Debug Mode wird nach Ausführung eines Befehls auf ein **RETURN** des Anwenders gewartet. Damit kann der Ablauf besser verfolgt werden. Werte sind true / false False ----- ====Beispiel Batchdatei===== SET PRG=d:\Jobs\InvExp SET DATA_IN=d:\Jobs\Testdaten SET DATA_OUT=d:\Jobs\temp cls "%PRG%\Invexp" SOURCE "%DATA_IN%\Fraese.iam" "%PRG%\InvExp" DESTINATION "%DATA_OUT%\Fraese.stp" "%PRG%\InvExp" PARAMETER "%PRG%\stp.ini" "%PRG%\InvExp" STP ----- =====Kommandos für die Ausführung===== Es stehen die folgenden Befehle zur Verfügung : ====PRT==== drucken einer IDW Invexp SOURCE ...xzy.idw Invexp PARAMETER ...my.settings Invexp PRT ---- ====PDF===== Export einer PDF aus einer IDW. Die Parameter kommen aus der INI Datei Invexp SOURCE ...xzy.idw Invexp DESTINATION ...xzy.pdf Invexp PARAMETER ...myPDF.ini Invexp PDF ---- ====DWG==== Export einer DWG aus einer IDW. Die Parameter kommen aus der INI Datei Exportiert eine IDW als DWG Invexp SOURCE ...xzy.idw Invexp DESTINATION ...xzy.dwg Invexp PARAMETER ...myDWG.ini Invexp DWG ---- ====DXF Export einer DXF aus einer IDW. Die Parameter kommen aus der INI Datei Invexp SOURCE ...xzy.idw Invexp DESTINATION ...xzy.dxf / ...xzy.zip Invexp PARAMETER ...myDXF.ini Invexp DXF ---- ====STP==== Invexp SOURCE ...xzy.ipt / ...xyz.iam Invexp DESTINATION ...xzy.stp / ...xzy.zip Invexp PARAMETER ...msSTP.ini Invexp STP ---- ====STL==== Export einer IPT oder IAM in STL Format. Empfehlung : immer nur IPTs ! Invexp SOURCE ...xzy.ipt / ...xyz.iam Invexp DESTINATION ...xzy.stl / ...xzy.zip Invexp PARAMETER ...mySTL.ini Invexp STL Die Parameter für den Export liegen in der myStl.ini [STL] ; ============================================ ; 0 = Binär 1 = Ascii OutputFileType=0 ; 2 = INCH ; 3 = FOOT ; 4 = CENTIMETER ; 5 = MILLIMETER ; 6 = METER ; 7 = MICRON ExportUnits=5 ; 0 = ONE FILE ; 1 = ONE FILE PER PART INSTANCE ExportFileStructure=0 ; 0 = HIGH ; 1 = MEDIUM ; 2 = LOW ; 3 = CUSTOM Resolution=1 ; Range 1 to 100. Value is used if Resolution is CUSTOM (3), otherwise value is ignored. ;SurfaceDeviation=20 ; Range 1 to 100. Value is used if Resolution is CUSTOM (3), otherwise value is ignored. ;NormalDeviation=20 ; Range 1 to 100. Value is used if Resolution is CUSTOM (3), otherwise value is ignored. ;MaxEdgeLength=20 ; Range 1 to 100. Value is used if Resolution is CUSTOM (3), otherwise value is ignored. ;AspectRatio=20 ; nicht in der Hilfe .... AllowMoveMeshNode=False ExportColor = Wahr ---- ====IGS==== Invexp SOURCE ...xzy.ipt / ...xyz.iam Invexp DESTINATION ...xzy.igs / ...xzy.zip Invexp PARAMETER ...myIGS.ini Invexp IGS ---- ====DWF==== Invexp SOURCE ...xyz.idw / ...xzy.ipt / ...xyz.iam Invexp DESTINATION ...xzy.dwf Invexp PARAMETER ...myDWF.ini Invexp DWF ---- ====DWFX Wie DWF ---- ====SAT Invexp SOURCE ...xzy.ipt / ...xyz.iam Invexp DESTINATION ...xzy.sat / ...xzy.zip Invexp PARAMETER ...mySAT.ini Invexp SAT ---- ====JT==== ---- ==== JPG==== ----- ====BMP==== ----- ====PNG==== ---- ====TIFF==== ---- ====XLS==== ---- ====CSV==== ---- ====ERSATZ==== Erzeugen eines Ersatzmodels Invexp SOURCE ...xyz.iam Invexp DESTINATION ...xyz.ipt Invexp PARAMETER ...mySet.ini Invexp ERSATZ Aufbau der INI Datei [ERSATZ] ; Steuerdatei für die erstellung eines Ersatzmodells ; Stand 28.08.2012 ; ============================================ ; IncludeAllSketches ; Method that includes all sketches from the source assembly. ; This includes top level sketches in the source assembly as well as sketches in sub-assemblies and parts. IncludeAllSketches=False ; ============================================ ; DeriveStyle ; kDeriveAsMultipleBodies = 80643 - as multiple bodie ; kDeriveAsSingleBodyNoSeams = 80642 - as a single body with no seams ; kDeriveAsSingleBodyWithSeams = 80641 - as a single body with seams ; kDeriveAsWorkSurface = 80644 - as work surfaces DeriveStyle=kDeriveAsSingleBodyNoSeams ; ============================================ ; IncludeAllTopLeveliMateDefinitions ; IncludeAllTopLevelWorkFeatures ; IncludeAllTopLevelSketches ; IncludeAllTopLevelParameters ; ; kDerivedBoundingBox = 27141 - the bounding box of the component will be used for the derivation ; die Bounding Box der Komponente wird für die Ableitung verwendet ; ; kDerivedExcludeAll = 27138 - all occurrences in the assembly will be ignored ; alle Vorkommen in der Baugruppe werden ignoriert ; ; kDerivedIncludeAll = 27137 - all occurrences in the assembly will be used and will ; add material to the solid body ; alle Vorkommen in der Baugruppe werden verwendet ; und wird zum Material des Festkörpers hinzufügen ; ; kDerivedIndividualDefined = 27140 - the suboccurrences define their behavior ; die sub Vorkommen definieren ihr Verhalten ; ; kDerivedIntersect = 27142 - the intersection of the component will be used for the derivation ; ; ; kDerivedSubtractAll = 27139 - all occurrences in the assembly will be used and will ; remove material from the solid body ; IncludeAllTopLeveliMateDefinitions=kDerivedIndividualDefined IncludeAllTopLevelWorkFeatures=kDerivedIncludeAll IncludeAllTopLevelSketches=kDerivedIncludeAll IncludeAllTopLevelParameters=kDerivedExcludeAll ; ============================================ ; ReducedMemoryMode ; Beim Erstellen eines Bauteils weniger Speicher verbraucht, ; indem Quellkörper aus dem Cache ausgeschlossen werden. Es werden ; keine Quellkörper im Browser angezeigt. Beim Auflösen oder Unterdrücken ; der Verknüpfung entfallen die Speichereinsparungen. ReducedMemoryMode=True ; ============================================ ; SetHolePatchingOptions ; kDerivedPatchAll = 88322 - all holes will be patched ; kDerivedPatchNone = 88321 - no holes will be patched ; kDerivedPatchRange = 88323 - holes within specified range will be patched ( Wird nicht unterstützt ) SetHolePatchingOptions=kDerivedPatchAll ; ============================================ ; SetHolePatchingOptions ; kDerivedRemoveNone = 88577 - no geometry will be removed ; kDerivedRemovePartsAndFaces = 88579 - invisible parts and faces will be removed ; kDerivedRemovePartsOnly = 88578 - whole invisible parts will be removed only ; ; Zahlenwert fest auf 25 ; Call oDerivedAssemblyDef. ; SetRemoveByVisibilityOptions(DerivedGeometryRemovalEnum.kDerivedRemovePartsAndFaces, 25) ; SetRemoveByVisibilityOptions=kDerivedRemovePartsAndFaces ---- ====ERSUPD==== Update eines Ersatzmodels Invexp SOURCE ...xyz.ipt Invexp ERSUPD ----- ====MIG==== Die angegeben Datei wird migriert, wenn notwendig ( needsmigration = true ) Ein ev. vorhandener Schreibschutz wird für die Migration entfernt und im Anschluss wieder gesetzt Invexp SOURCE ...xzy.idw / xyz.ipt / xyz.iam Invexp MIG ----- ====Kundenspezifische Befehl==== Mit dem Befehl DLL wird die INVEXP.EXE um Kundenspezifische Befehle erweitert. Replikator ----- =====Compass Replikator===== ==== START.CMD ==== NET STOP "SQL Server-Agent (MSSQLSERVER)" PING 127.0.0.1 > NUL REM NET START "SQL Server-Agent (MSSQLSERVER)" PING 127.0.0.1 > NUL REM NET START "Autodesk Productstream Professional Replicator Service 2011" PING 127.0.0.1 > NUL ==== STOP.CMD ==== NET STOP "Autodesk Productstream Professional Replicator Service 2011" REM PING 127.0.0.1 > NUL PING 127.0.0.1 > NUL PING 127.0.0.1 > NUL REM KILL /IM /F COMPASS.EXE REM PING 127.0.0.1 > NUL REM NET STOP "SQL Server-Agent (MSSQLSERVER)" REM PING 127.0.0.1 > NUL PING 127.0.0.1 > NUL ====== RESTART.CMD ====== REM ###### REM REM Alles Stoppen REM REM ###### REM cd \ REM NET STOP "Autodesk Productstream Professional Replicator Service 2011" PING 127.0.0.1 > NULL REM NET STOP "SQL Server-Agent (MSSQLSERVER)" PING 127.0.0.1 > NULL REM KILL /IM /F COMPASS.EXE REM REM ###### REM REM repl Logs Speichern REM REM ###### REM DEL "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Productstream Professional 2011\*.log" /s DEL "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Productstream Professional 2011\*.Err" /s DEL "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Productstream Professional 2011\*.trace" /s REM REM ###### REM REM Alles wieder speichern REM REM ###### REM NET START "SQL Server-Agent (MSSQLSERVER)" PING 127.0.0.1 > NULL REM NET START "Autodesk Productstream Professional Replicator Service 2011" PING 127.0.0.1 > NULL PING 127.0.0.1 > NULL PING 127.0.0.1 > NULL ------ =====Compass SQL - Scripte===== Anbei eine Auflistung nützlicher SQL Scripte im Compass Umfeld. Die Scripte sind als Beispiel anzusehen ! Der Einsatz erfolgt aus eigenen Gefahr !! ====Papierkorb löschen==== select ENTITY_TYPE,count(*) from ELEMENT where DELETE_DATE is not null group by ENTITY_TYPE -- -- -- purge all deleted document -- delete from HISTORY_DOCUMENT where PARENT_AIMKEY in (select AIMKEY from ELEMENT where DELETE_DATE is not null and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY') and (CHANGE_USER = 'Username') ) GO -- -- -- delete from XREF_ELEMENT where PARENT_AIMKEY in (select AIMKEY from ELEMENT where DELETE_DATE is not null and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY')and (CHANGE_USER = 'Username')) GO -- -- -- delete from XREF_ELEMENT where CHILD_AIMKEY in (select AIMKEY from ELEMENT where DELETE_DATE is not null and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY')and (CHANGE_USER = 'Username')) GO -- -- -- delete from DOCUMENT where AIMKEY in (select AIMKEY from ELEMENT where DELETE_DATE is not null and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY') and (CHANGE_USER = 'Username' )) GO -- -- -- delete from ELEMENT where DELETE_DATE is not null and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY') and (CHANGE_USER = 'Username' ) ----- ====Finden doppelter Datensätze:==== select ident,revision, count(*) from compass_pro_textar.history_document group by ident,revision having count(*)>1 ------ ==== ????==== SQL Script select * from VIEW_DOCUMENT_ENGINEERING d where PART_NUMBER like '412%' and FILE_TYPE='A' and FILE_UTC>07/07/2004 and CUSTOM_1_SHORT like '\\CAD1%' and d.CUSTOM_1_SHORT in (select CUSTOM_1_SHORT from VIEW_DOCUMENT_ENGINEERING group by CUSTOM_1_SHORT having count(*) >1) order by d.CUSTOM_1_SHORT ----- ==== ????==== select count(*) from (select count(*) num from part group by ident) where num > 1 --- ==== ????==== select sum(num-1) from (select count(*) num from part group by ident) where num > 1 --- ====alles übertragen von ALT nach NEU (gleiche Struktur)==== INSERT into NEU select * from ALT ----- ==== ???? ==== exec sp_changeobjectowner '[COMPASS].[aim_RPF_element]','dbo' exec sp_changeobjectowner '[COMPASS].[aim_RPF_xref_element]','dbo' ----- ====Finden aller (mehrfachen) IDENT mit REVISION = 1 oder 01==== SELECT * FROM DOCUMENT WHERE IDENT IN ( SELECT d.IDENT FROM DOCUMENT d WHERE ISNUMERIC(d.REVISION)=1 AND IDENT IN ( SELECT IDENT FROM DOCUMENT GROUP BY IDENT HAVING COUNT(1)>1 ) GROUP BY IDENT, CAST(d.REVISION AS NUMERIC) HAVING count(1)>1 ) ----- ==== Liste aller Komponenten die in einer Baugruppe verbaut sind mit Statuskey00003:==== select * from VIEW_DOCUMENT_ENGINEERING where STATUSKEY<>'00003' and AIMKEY in (select X_CHILD_AIMKEY from VIEW_XREF_PARENT_DOCUMENT where X_RELATIONSHIP_ID='AIM.XREF.DOC.ENG' and STATUSKEY='00003') select PART_NUMBER, STATUSKEY from VIEW_DOCUMENT_ENGINEERING where STATUSKEY<>'00003' and AIMKEY in (select X_CHILD_AIMKEY from VIEW_XREF_PARENT_DOCUMENT where X_RELATIONSHIP_ID='AIM.XREF.DOC.ENG' and STATUSKEY='00003') ----- ====Alles was NULL (Leer) Ist aus der REVISION Aufliste==== SELECT REVISION FROM DOCUMENT WHERE REVISION IS NULL ORDER BY REVISION ----- ==== Und auf Startwert 00 setzen ==== UPDATE DOCUMENT SET REVISION = '00' WHERE REVISION IS NULL ------ ==== Datenbak reparieren ==== Folgenden Script ermitteln Sie die fehlerverdächtige Datenbank(en) auf dem Server: SELECT DBName=NAME, [Status]=state_desc FROM master.sys.databases WHERE state_desc='SUSPECT' Im nächsten Schritt setzen Sie bringen Sie die Datenbank in den Notfallmodus, setzen dann Zugriff auf EInzelbenutzermodus und führen ein Prüfung der Datenbank durch: USE master; GO ALTER DATABASE [DATABASENAME] SET EMERGENCY GO ALTER DATABASE [DATABASENAME] SET SINGLE_USER GO DBCC CHECKDB ([DATABASENAME], REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS; GO Anschließend wird nochmals eine Prüfung der Datenbank durchgeführt: USE [DATABASENAME] GO DBCC CHECKDB WITH NO_INFOMSGS; GO Wenn diese letzte Prüfung fehlerfrei ausgeführt wurde, befindet sich die Datenbank immer noch im Einzelbenutzermodus. Die Modus Umschaltung auf den Mehrfachbenutzermodus wird mit folgendem Script durchgeführt: USE master; GO ALTER DATABASE [DATABASENAME] SET MULTI_USER GO --- ==== ????==== update ELEMENT set ENTITY_TYPE='AIM.DOC.ENG.STD' where AIMKEY in ( select AIMKEY from DOCUMENT where upper(FILE_LINKNAME) like '\\DATENCAD-SRV\COMPASS\DATA\INVENTOR_NORMTEILE%') update DOCUMENT set FILE_LINKNAME = replace(upper(FILE_LINKNAME),'\\DATENCAD-SRV\COMPASS\DATA\INVENTOR_NORMTEILE','#(INI:Inventor:StdPartPath_1)') where upper(FILE_LINKNAME) like '\\DATENCAD-SRV\COMPASS\DATA\INVENTOR_NORMTEILE%' ----- ====CheckCompass==== Check aller Tabellen gegen die ELEMENT Für alle Tabellen ( DOCUMENT / PART /.... ) muss es einen Eintrag auf in der ELEMENT geben oder Für alle Einträge in ELEMENT mit AIM.XXX.* muß es einen Eintrag in der entsfile___chenden Tabelle geben Die gelistet Einträge müssen aus der ELEMENT, XREF_ELEMENT, DOCUMENT, HISTORY_DOCUMENT raus ( AIM_SAVE Error ) Wenn Replikator auch REPL prüfen !! -- -- (c) CAD Team Handzik -- -- COMPASS Integritäs Check -- -- V 0.9 Stand 13.02.2008 Hz - Start Version -- V 0.91 Stand 22.02.2008 Hz - Prüfen, was in der DOCUEMNT und nicht in der ELELEMT -- -- Name der Kundeumgebung -- USE compass_pro_cth -- -- Check aller Tabellen gegen die ELEMENT -- -- Für alle Tabellen ( DOCUMENT / PART /.... ) muss es einen Eintrag auf in der ELEMENT geben -- oder -- Für alle Einträge in ELEMENT mit AIM.XXX.* muß es einen Eintrag in der entsfile___chenden Tabelle geben -- -- Die gelistet Einträge müssen aus der ELEMENT -- XREF_ELEMENT -- DOCUMENT -- HISTORY_DOCUMENT raus ( AIM_SAVE Error ) -- Wenn Replikator auch REPL prüfen !! -- -- DECLARE @DEL AS INTEGER DECLARE @REPL AS INTEGER SET @REPL = 0 -------------------ACHTUNG SET @DEL = 0 --- ACHTUNG Bei 1 wird gelöscht -------------------ACHTUNG PRINT 'DOCUMENTE nicht ELEMENT >> Was ist in der DOCUMENT und nicht in der ELEMENT' SELECT E.AIMKEY, T.AIMKEY FROM ELEMENT AS E RIGHT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.AIMKEY IS NULL PRINT '';PRINT ''; PRINT 'DOCUMENTE gegen ELEMENT >> Was ist in der ELEMENT und nicht in der DOCUMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL PRINT '';PRINT ''; PRINT 'DOCUMENTE gegen ELEMENT dann in die XREF_ELEMENT >> PARENT_AIMKEY abgeleichen' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'DOCUMENTE gegen ELEMENT dann in die XREF_ELEMENT >> CHILD_AIMKEY abgeleichen' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'DOCUMENTE gegen ELEMENT dann in die HISTORY_DOCUMENT AIMKEY abgleichen' SELECT PARENT_AIMKEY FROM HISTORY_DOCUMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM HISTORY_DOCUMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; IF @REPL = 1 BEGIN PRINT 'DOCUMENTE gegen ELEMENT dann in die REPL_DOCUMENT AIMKEY abgleichen' SELECT AIMKEY FROM REPL_DOCUMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) PRINT '';PRINT '' PRINT 'DOCUMENTE gegen ELEMENT dann in die REPLICATORQ abgleichen' SELECT AIMKEY FROM REPLICATORQ WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) PRINT '' END -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'DOCUMENT gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) PRINT 'ELEMENT gegen DOCUMENT löschen ...' DELETE FROM DOCUMENT WHERE AIMKEY IN ( SELECT T.AIMKEY FROM ELEMENT AS E RIGHT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' PRINT 'ADDRESS gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL PRINT '';PRINT ''; PRINT 'ADDRESS gegen ELEMENT in die XREF_ELEMENT >> PARENT' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'ADDRESS gegen ELEMENT in die XREF_ELEMENT >> CHILD' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'ADDRESS gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' PRINT 'CONTACT gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL PRINT '';PRINT ''; PRINT 'CONTACT gegen ELEMENT in die XREF_ELEMENT >> PARENT' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'CONTACT gegen ELEMENT in die XREF_ELEMENT >> CHILD' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'CONTACT gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' PRINT 'PART gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL PRINT '';PRINT''; PRINT 'PART gegen ELEMENT dann in die XREF_ELEMENT >> PARENT' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'PART gegen ELEMENT dann in die XREF_ELEMENT >> CHILD' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) END PRINT '';PRINT''; PRINT 'PART gegen ELEMENT dann in die HISTORY_PART AIMKEY abgleichen' SELECT PARENT_AIMKEY FROM HISTORY_PART WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM HISTORY_PART WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'PART gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' PRINT 'PROJECT gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL PRINT '';PRINT''; PRINT 'PROJECT gegen ELEMENT dann in die XREF_ELEMENT >> PARENT' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'PROJECT gegen ELEMENT dann in die XREF_ELEMENT >> CHILD' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) END PRINT '';PRINT''; -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'PROJECT gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' -- -- --############################################################################################# --############################################################################################# -- -- Hier ist der Ausgangswert REVISION wichtig -- Im Standard ist der Wert leer -- PRINT 'HISTORY_DOCUMENT gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN HISTORY_DOCUMENT AS T ON E.AIMKEY = T.PARENT_AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.REVISION IS NOT NULL AND T.PARENT_AIMKEY IS NULL PRINT '';PRINT''; PRINT '#######################################################################################################################################################################################' }} --- ====Tabelle erweitern {{collapse(SQL Script ...) -- Tabelle DOCUMENT BEGIN TRANSACTION ALTER TABLE dbo.DOCUMENT ADD TEMPKOMNR varchar(30) NULL, TEMPGETRTYP varchar(30) NULL GO COMMIT GO -- Erweiterung der Sichten IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors CREATE TABLE #tmpErrors (ERROR INT, MODULE VARCHAR(30), OBJECT VARCHAR(128), POSITION INT, DESCRIPTION VARCHAR(256)) SET XACT_ABORT ON IF EXISTS (SELECT * FROM sysobjects WHERE id=object_id('VIEW_DOCUMENT') AND OBJECTPROPERTY(id, 'IsView')=1) BEGIN IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#AIM_UPD_VIEWS')) DELETE FROM #AIM_UPD_VIEWS ELSE CREATE TABLE #AIM_UPD_VIEWS (ALIAS sysname NULL, PCOLUMN sysname NULL, CHANGE_REQUEST VARCHAR(3)) INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('TEMPKOMNR', 'D.TEMPKOMNR', 'ADD') INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('TEMPGETRTYP', 'TEMPGETRTYP', 'ADD') EXECUTE aim_update_view 'VIEW_ALL_DOCUMENT' EXECUTE aim_update_view 'VIEW_DOCUMENT' EXECUTE aim_update_view 'VIEW_DOCUMENT_ENGINEERING' EXECUTE aim_update_view 'VIEW_XREF_DOCUMENT' EXECUTE aim_update_view 'VIEW_XREF_PARENT_DOCUMENT' EXECUTE aim_update_view 'VIEW_XREF_CHILD_DOCUMENT' END GO }} --- ====Abgleich IDW in DOCUMENT {{collapse(SQL Script ...) USE [compass_pro] GO /****** Objekt: Trigger [dbo].[CTH_UpdateDocumentIdw] Skriptdatum: 04/22/2009 10:45:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Uwe Handzik -- Create date: 14.08.2007 -- Description: Abgleichen der IDW -- ============================================= ALTER TRIGGER [dbo].[CTH_UpdateDocumentIdw] ON [dbo].[DOCUMENT] FOR UPDATE NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY -- Alles über den AIMKEY DECLARE @newAIMKEY numeric(17,5) -- Ist das Doument eine IDW DECLARE @newIDW nvarchar(10) -- Abzugleichenden WERTE Start DECLARE @newCPR_ZEICHNR nvarchar(255) DECLARE @newCPR_ARTIKEL nvarchar(255) DECLARE @newCPR_ANLAGE nvarchar(255) DECLARE @newCPR_AUFTRAG nvarchar(255) DECLARE @newCPR_VTEIL nvarchar(255) DECLARE @newCPR_ERS_DURCH nvarchar(255) DECLARE @newMATERIAL nvarchar(255) DECLARE @newCPR_CFELD_11 nvarchar(255) DECLARE @newCPR_LOGOCAD nvarchar(255) DECLARE @newCPR_FARBE nvarchar(255) DECLARE @newCPR_FTEIL nvarchar(255) DECLARE @newCPR_ERS_FUER nvarchar(255) DECLARE @newCPR_MSTAB nvarchar(255) DECLARE @newCPR_TOLERANZ nvarchar(255) -- Die Englische Einträge DECLARE @newCPR_SHORT_ENU nvarchar(255) DECLARE @newCPR_LONG_ENU nvarchar(255) DECLARE @newCPR_MAT_ENU nvarchar(255) DECLARE @newCPR_STICH_ENU nvarchar(255) DECLARE @newCPR_FARBE_ENU nvarchar(255) DECLARE @newCPR_CFELD_19 nvarchar(255) -- Abzugleichenden WERTE Start SELECT @newAIMKEY = AIMKEY FROM Inserted SELECT @newCPR_ZEICHNR = CPR_ZEICHNR FROM Inserted SELECT @newCPR_ARTIKEL = CPR_ARTIKEL FROM Inserted SELECT @newCPR_ANLAGE = CPR_ANLAGE FROM Inserted SELECT @newCPR_AUFTRAG = CPR_AUFTRAG FROM Inserted SELECT @newCPR_VTEIL = CPR_VTEIL FROM Inserted SELECT @newCPR_ERS_DURCH = CPR_ERS_DURCH FROM Inserted SELECT @newMATERIAL = MATERIAL FROM Inserted SELECT @newCPR_CFELD_11 = CPR_CFELD_11 FROM Inserted SELECT @newCPR_LOGOCAD = CPR_LOGOCAD FROM Inserted SELECT @newCPR_FARBE = CPR_FARBE FROM Inserted SELECT @newCPR_FTEIL = CPR_FTEIL FROM Inserted SELECT @newCPR_ERS_FUER = CPR_ERS_FUER FROM Inserted SELECT @newCPR_MSTAB = CPR_MSTAB FROM Inserted SELECT @newCPR_TOLERANZ = CPR_TOLERANZ FROM Inserted -- Die Englische Einträge SELECT @newCPR_SHORT_ENU = CPR_SHORT_ENU FROM Inserted SELECT @newCPR_LONG_ENU = CPR_LONG_ENU FROM Inserted SELECT @newCPR_MAT_ENU = CPR_MAT_ENU FROM Inserted SELECT @newCPR_STICH_ENU = CPR_STICH_ENU FROM Inserted SELECT @newCPR_FARBE_ENU = CPR_FARBE_ENU FROM Inserted SELECT @newCPR_CFELD_19 = CPR_CFELD_19 FROM Inserted IF @newAIMKEY IS NULL SELECT @newAIMKEY = 11.11 IF @newCPR_ZEICHNR IS NULL SELECT @newCPR_ZEICHNR = '' IF @newCPR_ARTIKEL IS NULL SELECT @newCPR_ARTIKEL = '' IF @newCPR_ANLAGE IS NULL SELECT @newCPR_ANLAGE = '' IF @newCPR_AUFTRAG IS NULL SELECT @newCPR_AUFTRAG = '' IF @newCPR_VTEIL IS NULL SELECT @newCPR_VTEIL = '' IF @newCPR_ERS_DURCH IS NULL SELECT @newCPR_ERS_DURCH = '' IF @newMATERIAL IS NULL SELECT @newMATERIAL = '' IF @newCPR_CFELD_11 IS NULL SELECT @newCPR_CFELD_11 = '' IF @newCPR_LOGOCAD IS NULL SELECT @newCPR_LOGOCAD = '' IF @newCPR_FARBE IS NULL SELECT @newCPR_FARBE = '' IF @newCPR_FTEIL IS NULL SELECT @newCPR_FTEIL = '' IF @newCPR_ERS_FUER IS NULL SELECT @newCPR_ERS_FUER = '' IF @newCPR_MSTAB IS NULL SELECT @newCPR_MSTAB = '' IF @newCPR_TOLERANZ IS NULL SELECT @newCPR_TOLERANZ = '' -- Die Englische Einträge IF @newCPR_SHORT_ENU IS NULL SELECT @newCPR_SHORT_ENU = '' IF @newCPR_LONG_ENU IS NULL SELECT @newCPR_LONG_ENU = '' IF @newCPR_MAT_ENU IS NULL SELECT @newCPR_MAT_ENU = '' IF @newCPR_STICH_ENU IS NULL SELECT @newCPR_STICH_ENU = '' IF @newCPR_FARBE_ENU IS NULL SELECT @newCPR_FARBE_ENU = '' IF @newCPR_CFELD_19 IS NULL SELECT @newCPR_CFELD_19 = '' --- --- AIMKEY ermittelt, - In XREF_ELEMENT Child(er) Suchen --- declare @ChildAimKey numeric(17,5) declare @ParentAimKey numeric(17,5) DECLARE Document_Cursor CURSOR FOR SELECT PARENT_AIMKEY, CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY = @newAIMKEY OPEN Document_Cursor FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey WHILE @@FETCH_STATUS = 0 BEGIN -- Nachschauen ob IDW SELECT @newIDW = (SELECT FILE_EXT FROM DOCUMENT WHERE AIMKEY = @ChildAimKey ) IF upper(@newIDW) = 'IDW' UPDATE DOCUMENT SET CPR_ZEICHNR = @newCPR_ZEICHNR , CPR_ARTIKEL = @newCPR_ARTIKEL , CPR_ANLAGE = @newCPR_ANLAGE , CPR_AUFTRAG = @newCPR_AUFTRAG , CPR_VTEIL = @newCPR_VTEIL , CPR_ERS_DURCH = @newCPR_ERS_DURCH, MATERIAL = @newMATERIAL , CPR_CFELD_11 = @newCPR_CFELD_11 , CPR_LOGOCAD = @newCPR_LOGOCAD , CPR_FARBE = @newCPR_FARBE , CPR_FTEIL = @newCPR_FTEIL , CPR_ERS_FUER = @newCPR_ERS_FUER , CPR_MSTAB = @newCPR_MSTAB , CPR_TOLERANZ = @newCPR_TOLERANZ , CPR_SHORT_ENU = @newCPR_SHORT_ENU, CPR_LONG_ENU = @newCPR_LONG_ENU , CPR_MAT_ENU = @newCPR_MAT_ENU , CPR_STICH_ENU = @newCPR_STICH_ENU, CPR_FARBE_ENU = @newCPR_FARBE_ENU, CPR_CFELD_19 = @newCPR_CFELD_19 WHERE AIMKEY = @ChildAimKey FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey END CLOSE Document_Cursor DEALLOCATE Document_Cursor END TRY BEGIN CATCH INSERT dbo.cth_errorlog ( ERRORNUMBER, ERRORSEVERITY, ERRORSTATE, ERRORPROCEDURE, ERRORLINE, ERRORMESSAGE ) VALUES ( CAST ( Error_NUMBER() AS VARCHAR(5)) , CAST ( Error_SEVERITY() as VARCHAR(2)) , CAST ( Error_STATE() AS VARCHAR(3)) , Error_PROCEDURE(), CAST ( Error_LINE() AS VARCHAR(3)), Error_MESSAGE() ); END CATCH END --USE [compass_pro] --GO --/****** Objekt: Table [dbo].[cth_errorlog] / --SET ANSI_NULLS ON --GO --SET QUOTED_IDENTIFIER ON --GO --CREATE TABLE [dbo].[cth_errorlog]( -- [ERRORNUMBER] [nvarchar](50) NULL, -- [ERRORSEVERITY] [nchar](10) NULL, -- [ERRORSTATE] [nchar](10) NULL, -- [ERRORPROCEDURE] [nchar](255) NULL, -- [ERRORLINE] [nchar](10) NULL, -- [ERRORMESSAGE] [nchar](255) NULL --) ON [PRIMARY] }} --- ====Abgleich IDW in ELEMENT {{collapse(SQL Script ...) USE [compass_pro] GO /****** Objekt: Trigger [dbo].[CTH_UpdateElementIdw] Skriptdatum: 04/22/2009 10:46:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Uwe Handzik -- Create date: 14.08.2007 -- Description: Abgleichen der IDW -- ============================================= ALTER TRIGGER [dbo].[CTH_UpdateElementIdw] ON [dbo].[ELEMENT] FOR UPDATE NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY -- Alles über den AIMKEY DECLARE @newAIMKEY numeric(17,5) -- Ist das Doument eine IDW DECLARE @newIDW nvarchar(10) -- Abzugleichenden WERTE Start DECLARE @newSHORT_DESC nvarchar(255) DECLARE @newLONG_DESC nvarchar(255) DECLARE @newCATEGORY nvarchar(255) DECLARE @newCUSTOM_1_SHORT nvarchar(255) -- Abzugleichenden WERTE Start SELECT @newAIMKEY = AIMKEY FROM Inserted SELECT @newSHORT_DESC = SHORT_DESC FROM Inserted SELECT @newLONG_DESC = LONG_DESC FROM Inserted SELECT @newCATEGORY = CATEGORY FROM Inserted SELECT @newCUSTOM_1_SHORT = CUSTOM_1_SHORT FROM Inserted IF @newAIMKEY IS NULL SELECT @newAIMKEY = 11.11 IF @newSHORT_DESC IS NULL SELECT @newSHORT_DESC = '' IF @newLONG_DESC IS NULL SELECT @newLONG_DESC = '' IF @newCATEGORY IS NULL SELECT @newCATEGORY = '' IF @newCUSTOM_1_SHORT IS NULL SELECT @newCUSTOM_1_SHORT = '' --- --- AIMKEY ermittelt, - In XREF_ELEMENT Child(er) Suchen --- declare @ChildAimKey numeric(17,5) declare @ParentAimKey numeric(17,5) DECLARE Document_Cursor CURSOR FOR SELECT PARENT_AIMKEY, CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY = @newAIMKEY OPEN Document_Cursor FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey WHILE @@FETCH_STATUS = 0 BEGIN -- Nachschauen ob IDW SELECT @newIDW = (SELECT FILE_EXT FROM DOCUMENT WHERE AIMKEY = @ChildAimKey ) IF upper(@newIDW) = 'IDW' UPDATE ELEMENT SET SHORT_DESC = @newSHORT_DESC, LONG_DESC = @newLONG_DESC, CATEGORY = @newCATEGORY, CUSTOM_1_SHORT = @newCUSTOM_1_SHORT WHERE AIMKEY = @ChildAimKey FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey END CLOSE Document_Cursor DEALLOCATE Document_Cursor END TRY BEGIN CATCH INSERT dbo.cth_errorlog ( ERRORNUMBER, ERRORSEVERITY, ERRORSTATE, ERRORPROCEDURE, ERRORLINE, ERRORMESSAGE ) VALUES ( CAST ( Error_NUMBER() AS VARCHAR(5)) , CAST ( Error_SEVERITY() as VARCHAR(2)) , CAST ( Error_STATE() AS VARCHAR(3)) , Error_PROCEDURE(), CAST ( Error_LINE() AS VARCHAR(3)), Error_MESSAGE() ); END CATCH END --USE [compass_pro] --GO --/****** Objekt: Table [dbo].[cth_errorlog] / --SET ANSI_NULLS ON --GO --SET QUOTED_IDENTIFIER ON --GO --CREATE TABLE [dbo].[cth_errorlog]( -- [ERRORNUMBER] [nvarchar](50) NULL, -- [ERRORSEVERITY] [nchar](10) NULL, -- [ERRORSTATE] [nchar](10) NULL, -- [ERRORPROCEDURE] [nchar](255) NULL, -- [ERRORLINE] [nchar](10) NULL, -- [ERRORMESSAGE] [nchar](255) NULL --) ON [PRIMARY] }} --- ====Trigger Update Status {{collapse(SQL Script ...) USE [professional_easy] GO /****** Objekt: Trigger [dbo].[CTH_UpdateStatus] Skriptdatum: 08/31/2009 07:51:47 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TRIGGER [dbo].[CTH_UpdateStatus] ON [dbo].[ELEMENT] FOR UPDATE NOT FOR REPLICATION AS DECLARE @oldStatus VARCHAR(5) DECLARE @newStatus VARCHAR(5) declare @keySec numeric (17,5) declare @keyDoc numeric (17,5) declare @IDENT Varchar(50) declare @FILE Varchar(50) declare @IDENT_SEC Varchar(50) declare @FILE_SEC Varchar(50) declare @CREATE_DATE datetime declare @CREATE_USER varchar(30) declare @CMP_ROOT varchar(255) declare @MONAT varchar(2) declare @JAHR varchar(4) declare @DOCNAME varchar(255) declare @DOCNAME_SEC varchar(255) declare @ANZ varchar(3) declare @OWNER varchar(255) declare @OWNER_GROUP varchar(255) declare @SHORT_DESC varchar(255) BEGIN -- Keinerlei Rückgabe von Resultsets SET NOCOUNT ON BEGIN TRY IF NOT UPDATE(STATUSKEY) BEGIN RETURN END ELSE BEGIN SELECT @oldStatus = (SELECT STATUSKEY FROM Deleted) SELECT @newStatus = (SELECT STATUSKEY FROM Inserted) SELECT @KeyDoc = (SELECT AIMKEY FROM Inserted) IF @oldStatus IS NULL SELECT @oldStatus = '-ERR-' IF @newStatus IS NULL SELECT @newStatus = '-ERR-' IF @KeyDoc IS NULL SELECT @KeyDoc = 50000.22222 -- -- Status auf zum Prüfen -- IF @newStatus = '00001' BEGIN UPDATE ELEMENT SET RIGHTS = 15375 WHERE AIMKEY = @KeyDoc END -- -- Status auf zum Prüfen -- IF @newStatus = '00002' BEGIN UPDATE ELEMENT SET RIGHTS = 1057801 WHERE AIMKEY = @KeyDoc END -- -- Status auf Freigegeben -- IF @newStatus = '00003' BEGIN UPDATE ELEMENT SET RIGHTS = 1057801 WHERE AIMKEY = @KeyDoc END -- -- Status auf -- IF @newStatus = '00005' BEGIN UPDATE ELEMENT SET RIGHTS = 9225 WHERE AIMKEY = @KeyDoc END -- -- Status auf -- IF @newStatus = '00006' BEGIN UPDATE ELEMENT SET RIGHTS = 15375 WHERE AIMKEY = @KeyDoc END -- -- -- IF @newStatus = '00004' BEGIN UPDATE ELEMENT SET RIGHTS = 15375 WHERE AIMKEY = @KeyDoc SELECT @CMP_ROOT = 'E:\DATEN\Compass\data\' -- -- -- SELECT @OWNER = (SELECT OWNER FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @OWNER_GROUP = (SELECT OWNER_GROUP FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @CREATE_DATE = (SELECT CREATE_DATE FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @CREATE_USER = (SELECT CREATE_USER FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @SHORT_DESC = (SELECT SHORT_DESC FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @JAHR = ( SUBSTRING (CONVERT(varchar(20), @CREATE_DATE,102),1,4)) SELECT @MONAT = ( SUBSTRING (CONVERT(varchar(20), @CREATE_DATE,102),6,2)) SELECT @FILE = (SELECT FILE_NAME FROM DOCUMENT WHERE AIMKEY = @KeyDoc) SELECT @IDENT = (SELECT IDENT FROM DOCUMENT WHERE AIMKEY = @KeyDoc) select @ANZ = (SELECT COUNT(*) FROM DOCUMENT WHERE FILE_NAME LIKE '%'+@FILE+'%' ) + 1 SELECT @FILE_SEC = 'X' + @FILE + '-' + @ANZ SELECT @IDENT_SEC = 'X' + @IDENT + '-' + @ANZ SELECT @DOCNAME = @CMP_ROOT + @JAHR + '\' + @MONAT + '\1\' + @FILE + '.PDF' SELECT @DOCNAME_SEC = @CMP_ROOT + @JAHR + '\' + @MONAT + '\0\' + @FILE_SEC + '.PDF' -- -- 00001 - in Arbeit -- 00002 - zum prüfen -- 00003 - freigegeben -- 00004 - in Änderung -- 00005 - Ungültig exec aim_generate_aimkey @keySec OUTPUT -- -- Einfügen in Tabelle ELEMENT -- INSERT into ELEMENT ( AIMKEY, -- 01 ENTITY_TYPE, -- 02 STATUSKEY, -- 03 CREATE_DATE, -- 04 CREATE_USER, -- 05 CHANGE_DATE, -- 06 CHANGE_USER, -- 07 OWNER, -- 08 OWNER_GROUP, -- 09 RIGHTS, -- 10 SHORT_DESC -- 11 ) VALUES ( @keySec, -- 01 'AIM.DOC.SECONDARY',-- 02 '00001', -- 03 @CREATE_DATE, -- 04 @CREATE_USER, -- 05 @CREATE_DATE, -- 06 @CREATE_USER, -- 07 @OWNER, -- 08 @OWNER_GROUP, -- 09 '1063951', -- 10 @SHORT_DESC -- 11 ) -- -- Einfügen in Tabelle DOCUMENT -- INSERT into DOCUMENT ( AIMKEY, -- 01 IDENT, -- 02 **** FILE_NAME, -- 03 **** FILE_EXT, -- 04 FILE_TYPE -- 05 ) VALUES ( @keySec, -- 01 @IDENT_SEC, -- 02 *** @FILE_SEC, -- 03 *** 'pdf', -- 04 'PDF' -- 05 ) -- -- Verknüpfung erstellen -- INSERT into XREF_ELEMENT ( PARENT_AIMKEY, -- 01 Key der IDW CHILD_AIMKEY, -- 02 Key des SEC DOc RELATIONSHIP_ID, -- 03 OWNER, -- 04 OWNER_GROUP -- 05 ) VALUES ( @keyDoc, -- 01 @keySec, -- 02 'AIM.XREF.DOC.SECONDARY', -- 03 @CREATE_USER, -- 04 'ENGINEERING_EMPLOYEES' -- 05 ) DECLARE @Mach VARCHAR(255) SELECT @MACH = 'copy ' + @DOCNAME + ' ' + @DOCNAME_SEC EXEC xp_cmdshell @MACH ; RETURN END END END TRY BEGIN CATCH ROLLBACK TRANSACTION INSERT dbo.cth_errorlog ( ERRORNUMBER, ERRORSEVERITY, ERRORSTATE, ERRORPROCEDURE, ERRORLINE, ERRORMESSAGE ) VALUES ( CAST ( Error_NUMBER() AS VARCHAR(5)) , CAST ( Error_SEVERITY() as VARCHAR(2)) , CAST ( Error_STATE() AS VARCHAR(3)) , Error_PROCEDURE(), CAST ( Error_LINE() AS VARCHAR(3)), Error_MESSAGE() ); END CATCH END -- --######################################################################## -- }} --- ====SET_FILE_SHARE_WITH {{collapse(SQL Script ...) UPDATE DOCUMENT set FILE_SHARE_WITH=DATEDIFF(s, '19700101 00:00:00', '20070531') }} --- ====InsertDocumentsIntoAllLocations {{collapse(SQL Script ...) -- -- Number of documents with missing links --- select count(*) from VIEW_ALL_DOCUMENT where (select count(*) from XREF_ELEMENT where RELATIONSHIP_ID='AIM.XREF.DOC.LOCATION')<2 -- -- -- Link all documents to all locations -- -- DECLARE alldocs CURSOR LOCAL FORWARD_ONLY FOR SELECT AIMKEY FROM DOCUMENT DECLARE @doc_aimkey NUMERIC(17,5) OPEN alldocs FETCH NEXT FROM alldocs INTO @doc_aimkey WHILE @@FETCH_STATUS = 0 BEGIN DECLARE dest_loc CURSOR LOCAL FORWARD_ONLY FOR SELECT AIMKEY FROM LOCATION DECLARE @loc_aimkey NUMERIC(17,5) OPEN dest_loc FETCH NEXT FROM dest_loc INTO @loc_aimkey WHILE @@FETCH_STATUS = 0 BEGIN if ((select count(*) from XREF_ELEMENT where PARENT_AIMKEY=@doc_aimkey and CHILD_AIMKEY=@loc_aimkey)=0) begin INSERT INTO XREF_ELEMENT (PARENT_AIMKEY, CHILD_AIMKEY, RELATIONSHIP_ID, OWNER, OWNER_GROUP) VALUES(@doc_aimkey, @loc_aimkey, 'AIM.XREF.DOC.LOCATION', 'Administrator', 'ENGINEERING_EMPLOYEES') end FETCH NEXT FROM dest_loc INTO @loc_aimkey END CLOSE dest_loc DEALLOCATE dest_loc FETCH NEXT FROM alldocs INTO @doc_aimkey END CLOSE alldocs DEALLOCATE alldocs GO }} --- ====Repl Status {{collapse(SQL Script ...) PRINT 'Anzahl aktueller Pushaufträge pro Ziel-Standort' -- -- -- SELECT DESTLOCATION, COUNT(*) FROM REPLICATORQ WHERE (REPLICATION_TYPE LIKE '%4') GROUP BY DESTLOCATION -- -- -- PRINT '' Print 'Anzahl aktueller Pushaufträge pro Quell-Standort' -- SELECT SOURCELOCATION, COUNT(*) FROM REPLICATORQ WHERE (REPLICATION_TYPE LIKE '%4') GROUP BY SOURCELOCATION -- -- -- PRINT '' Print 'Anzahl aktueller Pushaufträge pro Quell-Standort' -- SELECT DESTLOCATION, COUNT(*) FROM REPLICATORQ WHERE (REPLICATION_TYPE LIKE '%8') AND (DESTLOCATION <> SOURCELOCATION) GROUP BY DESTLOCATION }} ---- ====Einsame IPTs {{collapse(SQL Script ...) SELECT * FROM VIEW_DOCUMENT_ENGINEERING WHERE (AIMKEY not in (select PARENT_AIMKEY from XREF_ELEMENT where RELATIONSHIP_ID='AIM.XREF.DOC.ENG')) AND (AIMKEY not in (select CHILD_AIMKEY from XREF_ELEMENT where RELATIONSHIP_ID='AIM.XREF.DOC.ENG')) AND (FILE_TYPE like 'I%') }} ---- ====Aufheben der Replikation {{collapse(SQL Script ...) -- aufheben der Replikation -- drop rowguid indexes select 'drop index ' + sysobjects.name + '.' + sysindexes.name from sysindexes inner join sysobjects on sysindexes.id = sysobjects.id where objectproperty(object_id(sysobjects.name),'IsMSShipped') = 0 and sysindexes.indid > 0 and sysindexes.indid < 255 and (sysindexes.status & 64)=0 and index_col(sysobjects.name, sysindexes.indid, 1) = 'rowguid' order by sysindexes.indid -- remove rowguid default constraints select 'alter table ' + b.name + ' drop constraint ' + a.name from sysobjects a inner join syscolumns on syscolumns.id = a.parent_obj inner join sysobjects b on syscolumns.id = b.id where syscolumns.name = 'rowguid' and objectproperty(object_id(b.name),'IsMSShipped') = 0 and a.xtype = 'D' -- remove rowguid columns select 'alter table ' + sysobjects.name + ' drop column ''rowguid'' ' from syscolumns inner join sysobjects on syscolumns.id = sysobjects.id where syscolumns.name = 'rowguid' and objectproperty(object_id(sysobjects.name),'IsMSShipped') = 0 }} ---- ====Abgleich Karten 1.1 {{collapse(SQL Script ...) -- -- Installation für Kartenabgleich IPT / IAM /IPN mit IDW -- -- (C) by CAD Team Handzik - Dipl. Ing. Uwe Handzik -- -- Version 2.1 Stand 30.04.2011 -- USE compass_easy GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --############################################################################################################################## -- -- Error Tabelle anlegen -- IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'cth_errorlog') DROP TABLE cth_errorlog; GO CREATE TABLE [dbo].cth_errorlog( [pkErrorHandlingID] [int] IDENTITY(1,1) NOT NULL, [Error_Number] [int] NOT NULL, [Error_Message] [varchar](4000) COLLATE Latin1_General_BIN NULL, [Error_Severity] [smallint] NOT NULL, [Error_State] [smallint] NOT NULL DEFAULT ((1)), [Error_Procedure] [varchar](200) COLLATE Latin1_General_BIN NOT NULL, [Error_Line] [int] NOT NULL DEFAULT ((0)), [UserName] [varchar](128) COLLATE Latin1_General_BIN NOT NULL DEFAULT (''), [HostName] [varchar](128) COLLATE Latin1_General_BIN NOT NULL DEFAULT (''), [Time_Stamp] datetime NOT NULL, PRIMARY KEY CLUSTERED ( [pkErrorHandlingID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO Print 'CREATE TABLE cth_errorlog' GO --############################################################################################################################## -- Store Procedure für CthErrorHandling löschen IF OBJECT_ID ('CthErrorHandling', 'P') IS NOT NULL DROP PROCEDURE CthErrorHandling GO Print 'DROP PROCEDURE CthErrorHandling' GO --############################################################################################################################## -- ============================================= -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.0 -- Description : Error Handling für den Rest -- Aufruf mit EXEC dbo.CthErrorHandling -- ============================================= CREATE procedure dbo.CthErrorHandling AS BEGIN -- Declaration statements DECLARE @Error_Number int DECLARE @Error_Message varchar(4000) DECLARE @Error_Severity int DECLARE @Error_State int DECLARE @Error_Procedure varchar(200) DECLARE @Error_Line int DECLARE @UserName varchar(200) DECLARE @HostName varchar(200) DECLARE @Time_Stamp datetime -- Initialize variables SELECT @Error_Number = isnull(error_number(),0), @Error_Message = isnull(error_message(),'NULL Message'), @Error_Severity = isnull(error_severity(),0), @Error_State = isnull(error_state(),1), @Error_Line = isnull(error_line(), 0), @Error_Procedure = isnull(error_procedure(),''), @UserName = SUSER_SNAME(), @HostName = HOST_NAME(), @Time_Stamp = GETDATE(); -- Insert into the dbo.ErrorHandling table INSERT INTO dbo.cth_errorlog (Error_Number, Error_Message, Error_Severity, Error_State, Error_Line, Error_Procedure, UserName, HostName, Time_Stamp) SELECT @Error_Number, @Error_Message, @Error_Severity, @Error_State, @Error_Line, @Error_Procedure, @UserName, @HostName, @Time_Stamp END GO Print 'CREATE PROCEDURE CthErrorHandling' GO --############################################################################################################################## -- -- LOG Tabelle anlegen -- -- Handhabung : INSERT dbo.cth_log ( POS, MESSAGE ) VALUES 'Pos der MSG', 'Wert' -- IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'cth_log') DROP TABLE cth_log; GO Print 'DROP TABLE cth_log' GO CREATE TABLE [dbo].[cth_log]( [POS] [nVARCHAR] (50) NULL, [MESSAGE] [nchar] (255) NULL ) ON [PRIMARY] GO Print 'CREATE TABLE cth_log' GO --############################################################################################################################## -- -- Sync Felder in der DOCUMENT anlegen if not exists (select * from syscolumns where id=object_id('DOCUMENT') and name='CTH_SYNC') alter table DOCUMENT add CTH_SYNC varchar(4) NULL if not exists (select * from syscolumns where id=object_id('DOCUMENT') and name='CTH_SYNC_AT') alter table DOCUMENT add CTH_SYNC_AT varchar(30) NULL if not exists (select * from syscolumns where id=object_id('DOCUMENT') and name='CTH_SYNC_JN') alter table DOCUMENT add CTH_SYNC_JN varchar(4) NULL GO Print 'Sync Felder in der DOCUMENT anlegen' GO -- Erweiterung der Sichten IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors CREATE TABLE #tmpErrors (ERROR INT, MODULE VARCHAR(30), OBJECT VARCHAR(128), POSITION INT, DESCRIPTION VARCHAR(256)) SET XACT_ABORT ON IF EXISTS (SELECT * FROM sysobjects WHERE id=object_id('VIEW_DOCUMENT') AND OBJECTPROPERTY(id, 'IsView')=1) BEGIN IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#AIM_UPD_VIEWS')) DELETE FROM #AIM_UPD_VIEWS ELSE CREATE TABLE #AIM_UPD_VIEWS (ALIAS sysname NULL, PCOLUMN sysname NULL, CHANGE_REQUEST VARCHAR(3)) INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('CTH_SYNC', 'D.CTH_SYNC', 'ADD') INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('CTH_SYNC_AT', 'D.CTH_SYNC_AT', 'ADD') INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('CTH_SYNC_JN', 'D.CTH_SYNC_JN', 'ADD') EXECUTE aim_update_view 'VIEW_ALL_DOCUMENT' EXECUTE aim_update_view 'VIEW_DOCUMENT' EXECUTE aim_update_view 'VIEW_DOCUMENT_ENGINEERING' EXECUTE aim_update_view 'VIEW_DOCUMENT_OFFICE' EXECUTE aim_update_view 'VIEW_XREF_DOCUMENT' EXECUTE aim_update_view 'VIEW_XREF_PARENT_DOCUMENT' EXECUTE aim_update_view 'VIEW_XREF_CHILD_DOCUMENT' END GO Print 'Erweiterung der Sichten' GO --############################################################################################################################## -- Store Procedure für DOCUMENT löschen IF OBJECT_ID ('CTH_Sync_IDW', 'P') IS NOT NULL DROP PROCEDURE CTH_Sync_IDW GO Print 'DROP PROCEDURE CTH_Sync_IDW' GO --############################################################################################################################## -- ============================================= -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.1 -- Description : Abgleichen der IDW -- Trigger für die DOCUMENT -- Gleicht IDW ab wenn änderung in DOCUMENT -- -- 1.1 Alter Tabel raus -- ============================================= CREATE PROCEDURE [dbo].[CTH_Sync_IDW] @argAIMKEY NUMERIC(17,5) AS DECLARE @newAIMKEY NUMERIC(17,5) DECLARE @ChildAimKey NUMERIC(17,5) DECLARE @ParentAimKey NUMERIC(17,5) DECLARE @newIDW nVARCHAR(255) BEGIN SET @newAIMKEY = @argAIMKEY SET NOCOUNT ON; BEGIN TRY --- AIMKEY ermittelt, - In XREF_ELEMENT Child(er) Suchen DECLARE Document_Cursor CURSOR FOR SELECT PARENT_AIMKEY, CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY = @newAIMKEY AND RELATIONSHIP_ID = 'AIM.XREF.DOC.ENG' OPEN Document_Cursor FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey WHILE @@FETCH_STATUS = 0 BEGIN -- Nachschauen ob IDW SELECT @newIDW = (SELECT FILE_TYPE FROM DOCUMENT WHERE AIMKEY = @ChildAimKey ) IF upper(@newIDW) = 'IDW' BEGIN -- -- Debug Info -- --INSERT dbo.cth_log ( POS, MESSAGE ) VALUES ( 'CTH_Sync_IDW UPDATE', CAST ( @ChildAimKey AS VARCHAR(30))) -- Sync Flag setzen UPDATE DOCUMENT SET CTH_SYNC = 'SYNC', CTH_SYNC_AT = CONVERT(varchar(20), GetDate()) WHERE AIMKEY = @ChildAimKey -- Stored Proc ist Kundenabhängig EXECUTE CTH_SYNC_KUNDEN_FELDER @ParentAimKey, @ChildAimKey END -- IS IDW FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey END -- WHILE CLOSE Document_Cursor DEALLOCATE Document_Cursor END TRY BEGIN CATCH ROLLBACK TRANSACTION EXEC dbo.CthErrorHandling END CATCH RETURN END GO Print 'CREATE PROCEDURE CTH_Sync_IDW' GO --############################################################################################################################## -- -- Trigger für XREF löschen IF OBJECT_ID ('CTH_InsertDocIdw', 'TR') IS NOT NULL DROP TRIGGER CTH_InsertDocIdw GO Print 'DROP TRIGGER CTH_InsertDocIdw' GO --############################################################################################################################## -- -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.0 -- Description : Abgleichen der IDW -- Trigger für die XREF_ELEMENT -- Gleicht IDW ab, die mit kopiert wird -- CREATE TRIGGER [dbo].[CTH_InsertDocIdw] ON [dbo].[XREF_ELEMENT] FOR INSERT NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY DECLARE @PARENT_AIMKEY NUMERIC(17,5) DECLARE @CHILD_AIMKEY NUMERIC(17,5) DECLARE @FILE_TYPE VARCHAR(10) SELECT @PARENT_AIMKEY = ( SELECT PARENT_AIMKEY FROM Inserted ) SELECT @CHILD_AIMKEY = ( SELECT CHILD_AIMKEY FROM Inserted ) SELECT @FILE_TYPE = ( SELECT FILE_TYPE FROM DOCUMENT WHERE AIMKEY = @PARENT_AIMKEY ) IF UPPER( @FILE_TYPE ) = 'IDW' BEGIN -- -- Debug Info -- --INSERT dbo.cth_log ( POS, MESSAGE ) VALUES ('CTH_InsertDocIdw', 'TRIGGER IDW' ) EXECUTE CTH_Sync_IDW @CHILD_AIMKEY END END TRY BEGIN CATCH ROLLBACK TRANSACTION EXEC dbo.CthErrorHandling END CATCH END GO Print 'CREATE TRIGGER CTH_InsertDocIdw' GO --############################################################################################################################## -- Trigger für ELEMENT löschen IF OBJECT_ID ('CTH_UpdateEleIdw', 'TR') IS NOT NULL DROP TRIGGER CTH_UpdateEleIdw GO Print 'DROP TRIGGER CTH_UpdateEleIdw' GO --############################################################################################################################## -- -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.0 -- Description : Abgleichen der IDW -- Trigger für die ELEMENT -- Gleicht IDW ab wenn änderung in ELEMENT -- CREATE TRIGGER [dbo].[CTH_UpdateEleIdw] ON [dbo].[ELEMENT] FOR UPDATE NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY DECLARE @AIMKEY NUMERIC(17,5) DECLARE @FILE_TYPE VARCHAR(10) SELECT @AIMKEY = (SELECT AIMKEY FROM Inserted) SELECT @FILE_TYPE = (SELECT FILE_TYPE FROM DOCUMENT WHERE AIMKEY = @AIMKEY) IF @FILE_TYPE IS NOT NULL BEGIN IF UPPER(@FILE_TYPE) = 'IPT' OR UPPER(@FILE_TYPE) = 'IAM' OR UPPER(@FILE_TYPE) = 'IPN' BEGIN -- -- Debug Info -- --INSERT dbo.cth_log ( POS, MESSAGE ) VALUES ('CTH_UpdateEleIdw', 'TRIGGER' ) EXECUTE CTH_Sync_IDW @AIMKEY END END END TRY BEGIN CATCH ROLLBACK TRANSACTION EXEC dbo.CthErrorHandling END CATCH END GO Print 'CREATE TRIGGER CTH_UpdateEleIdw' GO --############################################################################################################################## -- Trigger für DOCUMENT löschen IF OBJECT_ID ('CTH_UpdateDocIdw', 'TR') IS NOT NULL DROP TRIGGER CTH_UpdateDocIdw GO Print 'DROP TRIGGER CTH_UpdateDocIdw' GO --############################################################################################################################## -- -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.0 -- Description : Abgleichen der IDW -- Trigger für die DOCUMENT -- Gleicht IDW ab wenn änderung in DOCUMENT -- CREATE TRIGGER [dbo].[CTH_UpdateDocIdw] ON [dbo].[DOCUMENT] FOR UPDATE NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY DECLARE @AIMKEY NUMERIC(17,5) DECLARE @FILE_TYPE VARCHAR(10) SELECT @AIMKEY = (SELECT AIMKEY FROM Inserted ) SELECT @FILE_TYPE = (SELECT FILE_EXT FROM Inserted ) IF UPPER(@FILE_TYPE) = 'IPT' OR UPPER(@FILE_TYPE) = 'IAM' OR UPPER(@FILE_TYPE) = 'IPN' BEGIN -- -- Debug Info -- --INSERT dbo.cth_log ( POS, MESSAGE ) VALUES ('CTH_UpdateDocIdw', 'TRIGGER IPT/IAM/IPN' ) EXECUTE CTH_Sync_IDW @AIMKEY END END TRY BEGIN CATCH ROLLBACK TRANSACTION EXEC dbo.CthErrorHandling END CATCH END GO Print 'CREATE TRIGGER CTH_UpdateDocIdw' GO --############################################################################################################################## }} ---- =====Compass Tipps und Tricks===== ---- ====Compass Password==== bis 2009 EASYcompass DBPASSWORD=CCRY00104709B69CDE85DB8529EC0312D5C5B30EC9 ab 2009 ADSKpspro5! DBPASSWORD=CCRY001015CE7934194891D6D49B8EC529380A33FA ---- ====Compass Inventor ADDin==== Die ClsId für das Compass Inventor ADDin: 2008 {A8EE8583-8E6D-4042-9A89-1015560D3331} ? 2011 {02CCE528-B046-49BA-96F9-F6CDCF5F9B07} 2012 {0B874991-1A5B-4D21-B156-DF288BD8424A} 2013 {DFDECA20-9329-4E10-97E6-FF7AF0AD942E} 2014 {DFDECA20-9329-4E10-97E6-FF7AF0AD942E} 2015 {DFDECA20-9329-4E10-97E6-FF7AF0AD942E} 2015 {DFDECA20-9329-4E10-97E6-FF7AF0AD942E} ===== Compass Jobserver ===== ==== VBA ==== ApplCall AIMDOpenVBAProject "$CTH_IVBPATH\Export.ivb" ApplCall AIMDExecuteVBAMacro Export mod_STP PublishSTP ====Property Update==== Mit Inventor : JBSPropUpdate; Mit Apfile___ntice ___forceunlock; ApplCall AIMDUpdateProps2 #DOCNAME0 2; ___forceunlock; Wenn Dirty Steuerung ___XDWCMD("UPDATE DOCUMENT SET CTH_DIRTY_H=#SYSDATE WHERE AIMKEY=#AIMKEY"); ==== User Name bei der Ausführung ==== Unter Befehle bei der Anlage: set MY_USER=$USERID; JBSSubstJobField (CMD_file____JOB); .... Unter Befehle vor der Ausführung: ... ___SHELL( md("\\Server\Export\$(MY_USER)\#(SYSDATE:s0.4)-#(SYSDATE:s4.2)-#(SYSDATE:s6.2)" ... ==== Anbindung INVEXP ==== in der Compass INI ;;; ;;; Einstellungen CTH für JobServer ;;; ;;; CTH_INVEXP : Kompletter Pfad incl. name der EXE Datei ;;; CTH_INVINI : Verzeichnis mit den INI Dateien ;;; CTH_INVEXP=D:\Compass\InvExp\InvExp.exe CTH_INVINI=D:\Compass\InvExp CTH_INVDST=C:\CompassExport systemx( "$(CTH_INVEXP)" SOURCE "#DOCNAME0" ); systemx( "$(CTH_INVEXP)" DESTINATION "#DOCNAME1" ); systemx( "$(CTH_INVEXP)" PARAMETER "$(CTH_INVINI)\PDF.INI" ); systemx( "$(CTH_INVEXP)" PDF );