=====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 );