Inhaltsverzeichnis
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 )
<setting name="COUNTER_MAX" serializeAs="String"> <value>100</value> </setting>
—–
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
<setting name="LOG" serializeAs="String"> <value>True</value> </setting>
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
<setting name="DEBUG" serializeAs="String"> <value>False</value> </setting>
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
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
????
</file> exec sp_changeobjectowner '[COMPASS].[aim_RPF_element]','dbo' exec sp_changeobjectowner '[COMPASS].[aim_RPF_xref_element]','dbo' </file>
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 !! <file> – – © 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
</file>
<file>
– 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 ;
</file>
<file>
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;
</file>
<file>
– 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 '#######################################################################################################################################################################################'
</file>
}}
—
====Tabelle erweitern
collapse_sql_script_..._file_--_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
—
====Abgleich IDW in DOCUMENT
—
====Abgleich IDW in ELEMENT
—
====Trigger Update Status
—
====SET_FILE_SHARE_WITH
00_20070531_file
—
====InsertDocumentsIntoAllLocations
collapse_sql_script_..._file_file_--_--_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_..._file_print_anzahl_aktueller_pushauftraege_pro_ziel-standort_--_--_--_select_destlocation_count_from_replicatorq_where_replication_type_like_4_group_by_destlocation_--_--_--_print_print_anzahl_aktueller_pushauftraege_pro_quell-standort_--_select_sourcelocation_count_from_replicatorq_where_replication_type_like_4_group_by_sourcelocation_--_--_--_print_print_anzahl_aktueller_pushauftraege_pro_quell-standort_--_select_destlocation_count_from_replicatorq_where_replication_type_like_8_and_destlocation_sourcelocation_group_by_destlocation_file
—-
====Einsame IPTs
collapse_sql_script_..._file_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_file
—-
====Aufheben der Replikation
collapse_sql_script_..._file_--_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_file
—-
====Abgleich Karten 1.1
{{collapse(SQL Script ...)
<file>
--
-- 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
--##############################################################################################################################
}}
<file>
----
=====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:
<file>
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}
</file>
===== Compass Jobserver =====
==== VBA ====
<file>
ApplCall AIMDOpenVBAProject "$CTH_IVBPATH\Export.ivb"
ApplCall AIMDExecuteVBAMacro Export mod_STP PublishSTP
</file>
====Property Update====
Mit Inventor :
JBSPropUpdate;
Mit Apfile___ntice
<file>
___forceunlock;
ApplCall AIMDUpdateProps2 #DOCNAME0 2;
___forceunlock;
</file>
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 );