| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PDM: Unser Schritt in Richtung Digitalisierung zahlt sich jetzt bereits mehrfach aus. (GAIN Collaboration,PDM,PDM System,PLM,PLM System) |
Autor
|
Thema: Artikel einfügen über VIEW_ALL_PART (1099 mal gelesen)
|
HSchaper Mitglied Programmierer
Beiträge: 4 Registriert: 07.04.2004
|
erstellt am: 21. Apr. 2004 15:07 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte aus einem anderen System Artikel nach Compass importieren: ___ForTable( db=VIEW_ALL_PART ___RecordBuffer create tmpPartBuffer ); PreNew(tmpPartBuffer); ___RecordBuffer( call tmpPartBuffer PreOnInsertNew); ..... Belegungen des RecordBuffers außer AIMKEY..... ___RecordBuffer( Insert tmpPartBuffer ); Jetzt das Problem: Child entity not found in EntityTypeIsParentOf("AIM.PART"[parent],"'AIM.PART'"[child]), errno=0 Child entity not found in EntityTypeIsParentOf("AIM.DOC.ENG.STD"[parent],"'AIM.PART'"[child]), errno=0 Child entity not found in EntityTypeIsParentOf("AIM.DOC.OFF"[parent],"'AIM.PART'"[child]), errno=0 Child entity not found in EntityTypeIsParentOf("AIM.PRO"[parent],"'AIM.PART'"[child]), errno=0 Was mache ich denn da falsch ??? Gruß Holger ------------------ Holger Schaper Contelos GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 21. Apr. 2004 16:06 <-- editieren / zitieren --> Unities abgeben: Nur für HSchaper
Hallo Holger, ich nehme an, der Fehler liegt in deinen Belegungen. Du schreibst, dass du den AIMKEY NICHT belegst. Aber auch Felder wie ENTITY_TYPE, CREATE_DATE, CREATE_USER etc. werden bereits belegt. Außerdem kannst du den Aufruf der PreOnInsertNew aus deinem Programm entfernen, der Aufruf wird bereits über die PreNew erledigt. Probier's mal damit, das sollte funktionieren, und dann ergänze der Reihe nach deine Vorbelegungen: ******************************************************************* ___ForTable( db=VIEW_ALL_PART ___RecordBuffer create tmpPartBuffer ); PreNew(tmpPartBuffer); ___RecordBuffer(set tmpPartBuffer "SHORT_DESC=Neuer Artikel über VIEW_ALL_PART"); ___RecordBuffer( Insert tmpPartBuffer ); ___RecordBuffer(destroy tmpPartBuffer); ******************************************************************* Anmerkung: Wird ein RecordBuffer nicht mehr benötigt, solltest du ihn mit destroy eliminieren. Ciao, WolfgangE P.S.: Sag' mal, hast du die Befehle bereits in eine DBQ kompiliert oder im Shell-Fenster getestet? ------------------ 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 |
HSchaper Mitglied Programmierer
Beiträge: 4 Registriert: 07.04.2004
|
erstellt am: 21. Apr. 2004 16:22 <-- editieren / zitieren --> Unities abgeben:
Hi Wolfgang, Dein Tipp funktioniert bei mir leider auch nicht (PreOnInsertNew entfernt), alle MUSS-Felder (u.A. SHORT_DESC, CREATE_USER/DATE, ENTITY_TYPE..) werden definitiv belegt (habe ich mit mit ___Shell(read()...) anzeigen lassen. Das Problem bleibt, kannst Du mir weiterhelfen ? Gruß Holger (PS: Natürlich gebe ich den RecordBuffer mit destroy frei und ich habe das dbq-Programm mit der Shell gestestet - die Fehlermeldung kommt nach der Anweisung insert ) ------------------ Holger Schaper Contelos GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 21. Apr. 2004 16:34 <-- editieren / zitieren --> Unities abgeben: Nur für HSchaper
Hallo Holger, das angehängte ZIP-File direkt in ein Compass-Serververzeichnis entpacken. In diesem Verzeichnis findest du dann die Datei Profil_wec_test.txt, diese im Compass als Profil importieren. Nach dem Neustart auf den Artikel-Ordner gehen und im Shell-Fenster diesen Befehl eingeben: wec_test Dann solltest du einen neuen Artikel haben. Hab's getestet, muss also funktionieren. Die DBP wird dir mit dem ZIP-File im Verzeichnis ...\dbp\etc am Serververzeichnis angelegt. Falls nicht, von welcher Compass-Version reden wir denn? 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 |
WPiatkowski Mitglied ApplikationEngineer
Beiträge: 192 Registriert: 18.10.2002 AT 286, EGA-Karte, 640KB RAM, 51/4" Floppy, 10MB Festplatte
|
erstellt am: 23. Apr. 2004 08:13 <-- editieren / zitieren --> Unities abgeben: Nur für HSchaper
Hallo Wolfgang, das Problem von Holger war, dass er in einer Umgebung mit der Sachmerkmalleiste gearbeitet hat. In diesem Falle muss man noch eine Zeile mit Symbol anhängen, sonst geht es nicht. Besser funktioniert auch ein Save anstelle von insert. Die folgende Prozedur funktioniert. public TLS_Test, TLS_TestImport procedure TLS_TestImport ___ForTable( db=Folder_All_Part PreNew tmpPartBuffer ); ___RecordBuffer(set tmpPartBuffer "SHORT_DESC=Neuer Artikel über VIEW_ALL_PART"); ___RecordBuffer(set tmpPartBuffer "symbol:referencedclass=430"); ___RecordBuffer( call tmpPartBuffer Save NODIALOG); ___RecordBuffer( destroy tmpPartBuffer); ___Shell(read()OK); endproc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HSchaper Mitglied Programmierer
Beiträge: 4 Registriert: 07.04.2004
|
erstellt am: 23. Apr. 2004 08:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, erst einmal vielen Dank, dass Du mir so schnell helfen konntest. Dein kleiner 5-zeiler und sogar mein Programm läuft mit dem insert in einer Standard-Compass 4.1 Umgebung ganz prima. Installiert man allerding nun das Modul "Sachmerkmalleiste" so ist Schluß mit Lustig (auch Dein Programm läuft nicht mehr). Nach mehreren Telefonaten mit Aim.Systems und der Supportabteilung kam nun folgendes heraus: es fehlte eine spezielle Referenzierung ___ForTable( db=Folder_All_Part PreNew tmpPartBuffer ); ___RecordBuffer(set tmpPartBuffer "symbol:referencedclass=430"); ___RecordBuffer(set tmpPartBuffer "SHORT_DESC=Neuer Artikel über VIEW_ALL_PART"); ___RecordBuffer( call tmpPartBuffer Save NODIALOG); ___RecordBuffer( destroy tmpPartBuffer); Dann funktioniert es auch mit dem Nachbarn. Gruß Holger ------------------ Holger Schaper Contelos GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangE Mitglied
Beiträge: 1006 Registriert: 29.01.2003
|
erstellt am: 23. Apr. 2004 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für HSchaper
Tja, das mit der installierten Sachmerkmalleiste hätte man natürlich wissen müssen. Mit diesem Zusatztool gibt es nämlich einige Dinge, die man mit Eigenprogrammierung beachten muss. Aber Hauptsache, das Ding läuft jetzt. 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 |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|