=====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)
-----
=====COMPASS JObserver =====
====Allgemeines====
Der Compass Jobserver 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 entsprechenden 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====
-- 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=====
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====
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 );