Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  .Find meldet unzulässige Verwendung eines Objekts

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  .Find meldet unzulässige Verwendung eines Objekts (1866 mal gelesen)
vittorio0
Mitglied



Sehen Sie sich das Profil von vittorio0 an!   Senden Sie eine Private Message an vittorio0  Schreiben Sie einen Gästebucheintrag für vittorio0

Beiträge: 35
Registriert: 13.07.2009

AutoCAD 2009, 2011, Access 2003

erstellt am: 29. Jun. 2011 19:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
der folgende codeschnipsel funktionier mit autocad 2009. Ich hab aber eine 2000er Version da kommt die Fehlermeldung "unzulässige Verwendung eines Objekts" bei der Zeile wo ein Datensatz gesucht wird. (oRecSet.Find "[F23] = '" & strDWG & "'")

Win XP SP3, Acad 2000, Office 2003 Professional, Verweise gesetzt

Code:
' build ADO connection string
oConnect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data"
' MS Access Datenbank Verbindungspfad
oConnect.Properties("Data Source") = "E:\zvmfb\acadzvdata.mdb"
oConnect.Open

' build the recordset
oRecSet.CursorLocation = adUseClient
oRecSet.CursorType = adOpenKeyset
oRecSet.LockType = adLockOptimistic
sSQL = "Select * From [tbl_Zeichnungen];"
oRecSet.Open sSQL, oConnect

oRecSet.Find "[F23] = '" & strDWG & "'"
If Not oRecSet.EOF Then ' found a record matching current block ref
.
.
.


Besten Dank für Eure Hilfe.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 29. Jun. 2011 20:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

sorry, da fehlt so viel rundherum, fällt schwer da auf konkrete Ideen zu kommen. Sogar die Glaskugel guckt mich dumm an, als ich sie damit fütterte.   


Ich würde zuerst mal fragen, ob Du das auf dem gleichen Rechner testest, also das AutoCAD 2000 und AutoCAD 2009 auf dem gleichen Rechner installiert ist und damit mal die Umgebung gleich ist.

Weiters würde ich im VBA-Projekt prüfen, ob überhaupt bei jedem Fehler angehalten wird, also im VBA-IDE Menü 'Extras' ==> 'Optionen' ==> (Karte) 'Allgemein' ==> Unterbrechen bei Fehlern: 'bei jedem Fehler'. Sollte das nicht gesetzt sein, dann nehme ich an, kommst Du schnell auf den Grund, woran es liegt.

Und sollte es tatsächlich an genau dieser Zeile liegen:
oRecSet.Find "[F23] = '" & strDWG & "'"
...dann lass mal wissen, was die Überwachung von oRecSet und von strDWG zeigt.
...und wichtig: nicht jetzt hier antworten mit 'was Du glaubst, dass drinsteht', sondern wirklich Haltepunkt setzen und Überwachung der beiden Variablen aktivieren.


Nicht böse sein, wir sehen den Code davor nicht (z.B. wie das ganze gestartet wird), wir sehen die Datenbankstruktur/Inhalte nicht (vielleicht existiert ja nur kein solcher Record), wir sehen nicht, wie strDWG befüllt wird, .... zu viel Blindflug. 


Viel Erfolg jedenfalls, - alfred -

------------------
www.hollaus.at

vittorio0
Mitglied



Sehen Sie sich das Profil von vittorio0 an!   Senden Sie eine Private Message an vittorio0  Schreiben Sie einen Gästebucheintrag für vittorio0

Beiträge: 35
Registriert: 13.07.2009

AutoCAD 2009, 2011, Access 2003

erstellt am: 18. Okt. 2011 20:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Auf die Antwort von -alfred- etwas mehr code. In der msgbox sehe ich die einzelnen Einträge, benutze ich jedoch .Find kommt die besagte Fehlermeldung. XP Prof, Autocad 2000 Access 2003 Runtime alles neu installiert und updates gefahren, (inkl. Office 2003 SP3)

Code:

Private Sub btnAttrFromZV_Click()
' Attribute von MS Access holen und in der Form einlesen
Dim oConnect As New ADODB.Connection
Dim oRecSet As New ADODB.Recordset
Dim strDWG As String
Dim sSQL As String
Dim dwgPrefix As String
Dim dwgName As String
Dim DWGpath As String
Dim coderesult As Integer

'strDwg = frmEditAttr!F23

' welche Zeichnung is im Autocad geladen?
strDWG = ThisDrawing.GetVariable("dwgname")
strDWG = Mid(strDWG, 1, (Len(strDWG) - 4))
'
MsgBox strDWG

' build ADO connection string
oConnect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data"

' MS Access Datenbank Verbindungspfad
oConnect.Properties("Data Source") = "L:\abc\zvdat.mdb"
oConnect.Open

' build the recordset
oRecSet.CursorLocation = adUseClient
oRecSet.CursorType = adOpenKeyset
oRecSet.LockType = adLockOptimistic
sSQL = "Select * From [tbl_Zeichnungen];"
oRecSet.Open sSQL, oConnect

oRecSet.MoveFirst
    MsgBox oRecSet!F23
    oRecSet.MoveNext
    MsgBox oRecSet!F23
    oRecSet.MoveNext
    MsgBox oRecSet!F23
    oRecSet.MoveNext
    MsgBox oRecSet!F23
    oRecSet.MoveNext
    MsgBox oRecSet!F23
    oRecSet.MoveNext

    oRecSet.MoveFirst

' oRecSet.Find "[F23] = '" & strDWG & "'"    'kommt Fehlermeldung

If Not oRecSet.EOF Then ' found a record matching current block ref
    dwgPrefix = ThisDrawing.GetVariable("dwgprefix")
    dwgName = ThisDrawing.GetVariable("dwgname")
    DWGpath = dwgPrefix & dwgName
'MsgBox DWGpath



Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz