| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: ACAD-Objekte in Access-Bericht ausgeben (2037 mal gelesen)
|
Dexta Mitglied
Beiträge: 38 Registriert: 23.02.2005
|
erstellt am: 07. Mrz. 2005 11:24 <-- editieren / zitieren --> Unities abgeben:
Hi Leute, hab mitlerweile rausbekommen, wie man via Befehlsschaltfläche in AutoCAD Access öffnet. Information: Ich habe eine Sql-Datenbank auf dem Server, der Datensätze für AutoCAD-Objekte bereitstellt. Man muss nur die Datensätze mit den Objekten verknüpfen. Frage: Wie kann ich in Excel oder Access nur die Datensätze anzeigen, die eine Verknüpfung mit einem Objekt besitzen?? (Abfrage??) Und wenn ein Datensatz mit mehreren Objekten verknüpft ist, soll dieser dementsprechend oft ausgegeben werden!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 07. Mrz. 2005 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für Dexta
|
Dexta Mitglied
Beiträge: 38 Registriert: 23.02.2005
|
erstellt am: 07. Mrz. 2005 13:14 <-- editieren / zitieren --> Unities abgeben:
Hi Brischke, Ich habe eine SQL-Server-Datenbank, die Daten bereitstellt für ein Fließschema in AutoCAD. Ich greife auf die DB zu mit dem AutoCAD-DB-Verbindungsmanager. Man kann sich die Daten anzeigen lassen. Die Datensätze sind Sammlungen von allen Fließschemen Objekten, die existieren. Ich habe also ein Fließschema, dass sich aus Objekten (ist ja eigentlich egal welche) zusammensetzt. Die Objekte besitzen Attribute. Um diese nicht jedesmal neu eingeben zu müssen, verknüpft man einfach einen Datensatz mit dem Objekt. Um festzuhalten, welche Attrbute dieses Objekt hat. Die verknüpfung besteht nicht via Code, sondern man muss mit einem Rechtsklick auf den Datensatz gehen und geht dann in Datenanzeige, Verknüpfung erstellen. Und wählt dann durch Mausklick die Objekte in der Zeichnung. Jetzt nochmal zu meiner Frage: Da natürlich nicht alle Datensätze verknüpft sind, da ja nicht alle möglichen Objekte in einer zeichnung vorkommen. Ich möchte aber nur diejenigen Objekte ausgegeben bekommen, die eine Verknüpfung haben. Mein Problem ist dabei, dass ich kein Attribut habe, über dass ich das Kriterium zur Selektion formulieren könnte. Ich weiss nicht, wie ich nur diese Datensätze angezeigt kriege. Es müßte da vielleicht irgendeinen VBA-Code geben, der nur die verknüpften Datensätze anzeigt. Nur weiss ich nicht wie dieser lautet!! Ich hoffe das Problem ist jetzt verständlicher!! P.s.: Die Attribute der Objekte sind ja eigentlich egal, da ja nur zur Debatte steht, Datensatz besitzt Verknüpfung, oder nicht! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dexta Mitglied
Beiträge: 38 Registriert: 23.02.2005
|
erstellt am: 07. Mrz. 2005 13:42 <-- editieren / zitieren --> Unities abgeben:
Hi Brischke, Mir ist nochmal was eingefallen. Man kann dies in AutoCAD auch ohne VBA, durch öffnen einer Datenbanktabelle, dann Datenanzeige-Verknüpfte Datensätze anzeigen. Dann die gesamte Zeichnung markiert und dann die Eingabetaste drückt. Und dann in Datenanzeige auf Seitenansicht geht. Genau das sollte der VBA-Code machen. Denn dies sollte alles durch einen Knopfdruck erfolgen. Und der Bericht sollte nicht in AutoCAD erstellt werden, sondern auf einem Excel-Blatt oder einem Access-Bericht. Ich glaube, jetzt weißt du ziemlich genau, was ich meine!! :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 07. Mrz. 2005 16:50 <-- editieren / zitieren --> Unities abgeben: Nur für Dexta
Hallo Dexta, Ist die Datenbank sauber geführt, dann sollte eine Abfrage über die Daten der DB zum Erfolg führen. In der mit AutoCAD mitgelieferten Bsp-Datenbank db_sample.mdb kannst du in der Tabelle Room sehen, dass es ein Feld namens Entity_Handle gibt. In diesem ist die ObjectID eines AutoCAD-Objekts gespeichert. Solch ein Feld muss auch in deiner Datenbank vorhanden sein (was nicht heißt, dass es auch so heißt). Eine Abfrage über diese Tabelle, in der dieses AutoCAD-ObjectID-Feld leer ist, sollte dir dein Ergebnis bringen. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Autodesk User Group Central Europe Individuelle Lösungen von Heute auf Morgen. AUGCE Manager Deutschland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dexta Mitglied
Beiträge: 38 Registriert: 23.02.2005
|
erstellt am: 07. Mrz. 2005 17:08 <-- editieren / zitieren --> Unities abgeben:
Hi Brischke, Du hast recht, so müßte es eigentlich funktionieren. Nur, habe ich doch in der Datenbankanzeige nur die Felder, die ich in der SQL-Datenbank auf dem server erstellt habe. Also ist ein solches Feld bei mir nicht vorhanden, wie kann ich solch ein Feld generieren. Ich bin ziemlich neu in AutoCAD, und weiss sowas leider nicht. Was muss ich dann mit dem Feld machen, damit darin die bezüge, bzw. verknüpfungen zu objekten auftauchen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dexta Mitglied
Beiträge: 38 Registriert: 23.02.2005
|
erstellt am: 08. Mrz. 2005 09:17 <-- editieren / zitieren --> Unities abgeben:
hi Brischke, ich will dich nicht nerven, aber ich sitze hier wie auf Kohlen, und warte auf deine Antwort, wenn ich weiss wie das geht mit dem entity handle. Ich denke mal, man muss es in der SQl-Datenbank als Felkd hinterlegen oder, nur wie krieg ich die information mit welchem Objekt der Datensatz zusammenhängt in dieses Feld rein? Muss man das immer manuell eintragen, oder geht das automatisch? Wenn es nicht automatisch geht, kannst du mir dann bitte ne erklärung mitschicken? ich bin eben neu auf dem gebiet! Dank Dir schon mal :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 08. Mrz. 2005 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für Dexta
Zitat: Original erstellt von Dexta: hi Brischke, ich will dich nicht nerven, aber ich sitze hier wie auf Kohlen, und warte auf deine Antwort, ... Dank Dir schon mal :-)
Holger Brische verdient mit Kundensupport sein Geld, die CAD.de Foren zu moderieren und Beiträge schreiben macht er dagegen ehrenamtlich (Stimmt doch Holger, oder?). Da kann man keine schnelle Antworten einfordern, bestenfalls erhoffen. Für kommerziellen Support einfach seinen Firmenlink anklicken, anrufen oder eine Email schicken. Welche AutoCAD Version nutzt du denn? Bitte gebe doch deine Sysinfo an. In AutoCAD 2005 rufe ich den 1. DB_Verbindungsmanager auf, 2. Zeige mir die Datenvernknüpfungstabelle an 3. markiere alle AutoCAD Objekte (STRG+A) 4. Drücke im Fenster "Datenanzeige" oben links auf den Button "Verknüpfte Datensätze in Datenanzeige anzeigen". Vorher noch beim Button "Datenanzeige und Abfrageoptionen" bei Datensatzindikationseinstellungen "Nur indizierte Datensätze anzeigen" auswählen. ------------------ Mit freundlichem Gruß Udo Hübner ---------- Der versteckte Fehler bleibt nie unentdeckt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dexta Mitglied
Beiträge: 38 Registriert: 23.02.2005
|
erstellt am: 08. Mrz. 2005 09:58 <-- editieren / zitieren --> Unities abgeben:
Hi Udo, Ich erwarte ja keine schnelle Antwort, ich bin ja froh, dass mir überhuapt jemand hilft! :-) Aber du weißt ja wahrscheinlich selbst wie das ist, wenn du vor deiner Kiste sitzt und einfach nicht weitermachen kannst, weil du ein Problem nicht gelöst bekommst, was sehr ärgerlich ist. Also, das mit nur verknüpfte Datensätze anzeigen stimmt schon so weit, wußte ich aber auch schon vorher, hab ich auch oben im Text mal erwähnt gehabt, egal! :-) ne, Holger hat mir schon nen spitzen Tip gegeben, und zwar das mit dem Entity_handle, was anscheinend ein Feld in der datenbank ist, indem die Namen der Objekte stehen, mit denen der Datensatz verknüpft ist. Denn ich will diese Eingrenzung der Daten,sprich nur verknüpfte Objekte anzeigen in meiner hiterlegten SQL-Datenbank ausführen. Was perfekt gehen würde, wenn ich das Feld Entity_handle (wie in jet_dbsamples.udl/Beispieldatenbank) hätte, da ich dann nur ne SQL-Abfrage drüberlaufen lassen muss, mit "where (Entity_handle)<> 0." Also, kannst Du mir bitte sagen, wie ich ein solches Feld anlege, wo die mit dem Datensatz verknüpften Objekte im Feld stehen? das Feld anlegen ist ja nicht das Problem, sondern ob es möglich ist, dass die Objekte automatisch, wenn die Verknüpfung erstellt wird im Feld angezeigt werden. :-) Danke schonmal Udo!! :-)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 08. Mrz. 2005 11:06 <-- editieren / zitieren --> Unities abgeben: Nur für Dexta
Hallo Dexta, nachdem ich deine allererste Frage noch einmal gelesen hatte, war mir auch klar, dass du eigentlich in deiner Tabelle erkennen möchtest, ob ein Datensatz überhaupt mit einem AutoCAD Objekt verknüpft ist (für weitere Auswertungen). Über die DBVERBINDUNG in AutoCAD wird ausschließlich am Objekt ein Vermerk (über Extended Entitiy Data) gesetzt, das den Namen der Datenquellenverknüpfung und (in hexadezimaler Form) die Inhalte der Schlüsselfelder enthält. Man kann nur mit einem Zusatzprogramm aus AutoCAD heraus ein vorgesehenes Datenbankfeld z.B. mit dem Objekthandle füllen. Zu beachten ist dabei jedoch, dass nicht nur 1:1 Verknüpfungen, sondern N:N Verknüpfungen möglich sind (ein Datensatz ist mit mehreren Objekten verknüpft und ein Objekt kann mit mehreren Datenfeldern verknüpft sein). Bei AutoCAD Map sind diese Funktionen als Lisp Funktionen bereitgestellt, mit AutoCAD pur muss man die EEDs entschlüsseln und die gewünschten Infos direkt in die Datenbank schreiben. ------------------ Mit freundlichem Gruß Udo Hübner ---------- Der versteckte Fehler bleibt nie unentdeckt. [Diese Nachricht wurde von CAD-Huebner am 08. Mrz. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 09. Mrz. 2005 06:51 <-- editieren / zitieren --> Unities abgeben: Nur für Dexta
|
Dexta Mitglied
Beiträge: 38 Registriert: 23.02.2005
|
erstellt am: 09. Mrz. 2005 11:58 <-- editieren / zitieren --> Unities abgeben:
Hi Udo, dank dir schonmal, bloß habe ich ein kleines Problem, ich checke den code nicht ganz, da ich in vba zwar mitlerweile einiges kann, aber mich nicht wirklich als gut bezeichnen würde! :-) Was du mir geschrieben hast, ist der code ja genau das, was ich brauche! was muss ich denn noch in autocad, bzw. in der sql-datenbank machen, ein feld kreiren (Entity_handle)? zählt der code mir die anzahl der verknüpfungen auf? und zuletzt noch eine frage: was steckt hinter diesen variablen im code: und was macht dieser? oRSet.Find "<building ID field name> = " & <the value you want> Case <some attrib name> vAttrib.TextString = oRSet!<corresponding field name> Case <another attrib name> vAttrib.TextString = oRSet!<corresponding field name> p.s.: ich glaube, jetzt ist die lösung nicht mehr weit!! Bis denn :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|