| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: AutoCAD VB muss auf Access warten (2321 mal gelesen)
|
JOLI Mitglied Professional Technical Engineer / CAX -PLM
Beiträge: 86 Registriert: 28.02.2002 Windows 2000/XP/Vista,Windows 7, 10 AutoCAD bis 2009, Inventor bis 2009, MS Office alle Vesionen, Agile PLM e6, Windchill Creo UG Nx3 und NX5 MicroStation Techdocpro CADENAS Partsolution Ansys
|
erstellt am: 24. Sep. 2007 14:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe eine Programm geschrieben was in Autocad eine Access Maske Startet, der Anwender hat nun einen Datensatz aus zuwählen und an Autocad einen Wert zu übergeben. Läuft so weit ja Ok aber AutoCAD startet die Access Maske und wartet nicht bis aus Access die Daten übergeben Wurden. Wie kann ich nun VB sagen es muss warten !????? Sieht etwa so in AutoCAD aus aus: Sub hole () DoCmd.OpenForm Menue_name_load, acNormal ', , "DOCUMENT_ID = '*'", acFormEdit, acDialog MyAccess.Forms.Item(Menue_name_load).Controls("SatzSpeichern").Visible = True MyAccess.Forms.Item(Menue_name_load).Controls("ZurueckCAD").Visible = True sub end Nun wechsel alles zu Access und autoCAD ist fertig ! Sollte aber warten Danke schon mal ! ------------------ Grüße Jörg Lipphardt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 28. Sep. 2007 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für JOLI
Hallo Jörg, überleg dir noch mal genau ob AutoCAD(VBA) wirklich warten soll. Wenn dein Anwender nicht versteht was zu tun ist ist AutoCAD blockiert. Wenn es wirklich warten soll kannst du mit im Access Formular die Eigenschaft TAG mit dem Wert "WAIT" oder auch "LIEBE_OMA" befüllen. Diese Eigenschaft fragst du in einer Schleife ab. Solange hier dein Wert drin ist hat der Benutzer nichst gemacht. Im Eventhandler des Accessformulars löschst du die TAG Eigenschaft wenn der Benutzer das gemacht hat was er sollte. Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RalphRX8 Mitglied Kontruktionsbüro
Beiträge: 333 Registriert: 17.11.2004
|
erstellt am: 29. Sep. 2007 10:18 <-- editieren / zitieren --> Unities abgeben: Nur für JOLI
Hallo Jörg, doch noch vom lispeln abgekommen? Wir kennen uns geschäftlich. Ich sage nur GM-Doku. War schon mal bei Euch im Haus. Stelli1, ich glaube Joli hat ein anderes Problem. Wenn ichs richtig verstanden habe, bekommt er ein leeres Datenfeld von Access, obwohl er eines mit wählbaren Werten bekommen sollte, bzw. möchte. Schon mal überlegt die Daten aus dem Access übers VBA ins AutoCAD zu holen und selbst ein Eingabeformular in VBA zu gestalten? Dann hast Du meiner Meinung nach die ganze Sache besser im Griff. (Ist auch nicht sonderlich problematisch, da VBA auch mit den wichtigsten SQL-Begriffen umgehen kann) Ein weiterer Tip wäre, ich weiß nur nicht obs so sinnvoll ist, vom AutoCAD aus ein Makro in Access zu starten, welches wiederum nach öffnen des Datenfeldes die Kontrolle an AutoCAD übergibt. Ansonsten müsstest Du glaube ich den Ablauf und die Verwendung genauer beschreiben. Viele Grüße aus Leipheim Ralph Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JOLI Mitglied Professional Technical Engineer / CAX -PLM
Beiträge: 86 Registriert: 28.02.2002 Windows 2000/XP/Vista,Windows 7, 10 AutoCAD bis 2009, Inventor bis 2009, MS Office alle Vesionen, Agile PLM e6, Windchill Creo UG Nx3 und NX5 MicroStation Techdocpro CADENAS Partsolution Ansys
|
erstellt am: 01. Okt. 2007 08:18 <-- editieren / zitieren --> Unities abgeben:
Hallo leider schein ich mich etwas Dumm ausgedrückt zu haben. Nochmal ein Versuch: ich starte einen Befehl um in meine Minizeichnungsverwaltung eine neue Zeichnung zu laden Der Befehl geht in AUtoCAD VBA und Startet Access dort geht eine Maske auf. Ab diesem Moment übernimmt Access VBA die Kontrolle und AutoCAD arbeitet weiter. Der Anwender kann nun in AutoCAD und ACCESS machen was er will. An dieser Stelle möchte ich eigendlich, dass der Anwender in Access eine Zeichnung wählt und diese dann an in AutoCAD öffnet. (Oder der Schnittstelle sagt, ich will doch keine laden !) Genau dazu wäre es sinnvoll einen "Hold" einzubauen, aber wie ! Zur Zeit (als alter Lispler, was ich nicht aufgebe) habe ich eine Schleife eingebaut, die auf eine Datei die ich im Access erzeugen lasse , wartet. Nun ist es teilweise so, dass ich doch da tool beenden möchte und mein Abbruch kriterium nicht tut (was regelbar ist). Viel schlimmer ist Access brauch einfach ein paar tausenstel um die Datei zu schreiben, Autolisp erkennt sie aber schneller und findet teilweise eine leere Datei was zu Übergabeproblemen führt. Ein direkter GO Befehl wäre da sicherer ! Ich hoffe nun kann man mein Problem verstehen (Ein Übergabewert von Access nach AutoCAD VBA wäre auch OK , oder natürlich direkt nach Lisp)!!!! Bitte Fragt, wenn ich mich immer noch nicht klar asdrücken konnte !!!!
Bis bald
------------------ Grüße Jörg Lipphardt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
Beiträge: 1521 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 01. Okt. 2007 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für JOLI
Hallo Jörg, ich meine du hast doch den Lösungsansatz. In einen vorherigen Thread war doch die Frage wie Access angesteuert wird. Da gabs ein Beispiel Zitat:
If Err.Number <> 0 Then MsgBox "Keine Datenbank gefunden. Lade ...", , "Start MDB" On Error GoTo 0 Set MyAccess = CreateObject("access.application") MyAccess.OpenCurrentDatabase "C:\Temp\db1.mdb" MyAccess.Visible = True End If On Error GoTo 0 ''' Aufruf über Access Modul MyAccess.Run "openform", "Formular1" ''' Direkter Aufruf MyAccess.DoCmd.OpenForm "Formular1", acNormal, , , , acWindowNormal MsgBox "Ergebnis:" & MyAccess.Run("addiere", 12, 20) MyAccess.Forms.Item("Formular1").Caption = "HALLO, geöffnet von AutoCAD"
Hier war ein Hinweis das man die Eigenschaften (TAG) eines Formulars sowohl in AutoCAD als auch in Access einstellen kann. Damit hast du die Lösung doch. Du kannst sogar den Zeichnungsnamen mit übergeben und die Zeichnung nach der Warteschleife laden. Wilfried Stelberg ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|