Hallo Roger,
der von mit genannte Ausdruck Folder_xref_child_EngineeringDocument ist kein Objekt der Datenbank, benso wenig wie @(where db=Folder_xref_child_EngineeringDocument "X_PARENT_AIMKEY=#AIMKEY AND FILE_TYPE = 'IAM'" #SHORT_DESC) eine Datenbank-Funktion ist. Das meinte ich, als ich sagte, man müsste Compass schon ein wenig kennen.
Das @(where ...) ist eine reine Compass-Funktion, die hier auf einen Folder von Compass zugreift, der Verbindung von Compass zur eigentlichen Datenbank.
Literatur dazu: die Compass-Dokumentationen und/oder eine Schulung bei Autodesk.
Eine Aufstellung der Tabellen und Sichten gibt es meines Wissens nicht, wenn man sich aber mal ein wenig damit beschäftigt, ist es nicht so schwer. Der Aufbau der Datenbankobjekte folt einer strikten Namenskonvention, die größtenteils eingehalten wird (Ausnahmen bilden diverse Zusatzmodule), und die die Navigation auf der Datenbank sehr vereinfachen.
Vielleicht ganz kurz ein Überblick:
Jeder Datensatz wird zunächst in der Tabelle ELEMENT gespeichert, welche die allgemeinen Felder wie Bezeichnung oder Anlagedatum enthält. Für jeden Compass-Datensatz der ELEMENT-Tabelle gibt es noch einen zweiten Datensatz in einer der spezifischen Tabellen, wo die für das Objekt typischen Felder drinstehn. Für Dokumente steht der zweite Datensatz in der DOCUMENT-Tabelle, für Projekte in der PROJECT-Tabelle, für Kontakte in der CONTACT-Tabelle etc. Verknüpft sind die DAtensätze über den AIMKEY
Die Verknüpfungen zwischen den Compass-Objekten sind in der XREF_ELEMENT zu finden und sind definiert über die AIMKEYs und den RELATIONSHIP_ID, welcher die Art der Verknüpfung angibt. Die gültigen RELATIONSHIP_IDs wiederum findest du in der Tablle RELATIONSHIP_TYPE, wo die RelationshipIDs mit den jeweiligen EntityTypes aufgelistet sind.
Die Anzeige der Daten in Compass erfolgt aber nicht über die Tabellen, sondern über Sichten. In den Sichten von Compass sind die jeweils auf 2 Tabellen verteilten Datenstäze zusammengefasst. So findest du die Projekte in der VIEW_PROJECT, die Konstruktionsdokumente in der VIEW_DOCUMENT_ENGINEERING etc.
Die Verknüpfungen sind ebenfalls als Sichten gespeichert, in den XREF-Sichten. So ist die Verknüpfung zwischen den Konstruktionsdokumenten in den Sichten VIEW_XREF_PARENT_ENGINEERING_DOCUMENT bzw. VIEW_XREF_CHILD_ENGINEERING_DOCUMENT gespeichert.
Über diese Daten kannst du innerhalb einer SQL-Prozedur alle Compass-Informationen raus holen. Zu Prozeduren selbst kann ich dir die Hilfe von SQLServer empfehlen.
Und nun zurück zum Schriftfeld:
Bei der übergeordneten Baugruppe haben wir hier schon wieder eine neue Frage, was heißt "bei projektbezogenen Aufträgen"? Wie werden diese als solche erkannt? Und nochmals die Frage: was soll bei mehrfacher Verwendung eines Teils angezeigt werden?
Das muss hier klar definiert werden, dann erst kannst daraus eine entsprechende Compass-Funktion oder direkte Abfrage auf die Datenbank erstellen.
Zu den Firmendaten:
Frage wieder, WELCHE Firmenanschrift? Ist immer nur 1 Firma verknüpft? Und nochmals, direkt mit dem Dokument, dem Projekt, dem Auftrag? (was wäre dann genau ein Auftrag?) Hilft uns das Flag "Als Empfänger festlegen" dabei weiter?
Grundsätzlich sollte das mit der Anschrift gehen, sobald du genau definiert hast, was eigentlich angzeigt werden soll. Nimm dir einen Stift oder eine neue Datei am PC, und schreib mit Compass-gebräuchlichen Worten auf, was genau du angezeigt haben willst. Welche Daten welcher Verknüpfung unter welchen Bedingungen.
Das mit dem Logo wir dann nochmals schwieriger. Hier gibt es meines Wissens keine fertige Funktion, mit der das funktionieren würde. Wenn das eigene Logo willst, einfach fix in's Schriftfeld integrieren. Wenn ein kundenspezifisches Logo willst, musst dir selbst was basteln.
Könnte z.B. eine zum Kunden vernküpfte Datei sein, die in Compass abgelegt ist, die mit einer eigenen Programmierung entsprechend ins Schriftfeld einfügen lässt.
Ciao, WolfgangE
------------------
An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!!!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP