none
odbc via ADODB/OLEDB (Windows 7 64bit) VISUAL BASIC (Word 2010) RRS feed

  • Allgemeine Diskussion

  • odbc via ADODB/OLEDB (Windows 7 64bit) VISUAL BASIC (Word 2010)

    Ich versuche, eine seit vielen Jahren unter 32bit funktionierende ODBC-Verbindung jetzt auf Windows 7 (64bit) zu portieren - ohne Erfolg.

    Es geht um den Datenbanktreiber von UNIFY für eine SQLBase-Datenbank.
    Den Treiber habe ich installiert in der 32bit und in der 64bit-Version.
    Im jeweiligen ODBC-Manager habe ich die ODBC-Verbindung eingestellt, benannt und getestet, Ergebnis: Connection was made
    Das Witzige ist: Sogar Access 2000 (!!!!) schafft es unter Windows 7 64bit, per ODBC (32bit) auf die Datenbank zuzugreifen. Am Treiber von UNIFY kann es also nicht liegen, ebenso nicht an der Systemeinbindung des Treibers.

    Über Visual Basic hatte ich früher unter dem 32-bit Windows problemlos eine Verbindung zur Datenbank hergestellt, Daten abgerufen und die Verbindung wieder geschlossen (siehe Code unten). Unter 64bit-Windows stürzt mir irgendwann Word 2010 ab, und zwar nicht immer bei derselben ausgeführten VisualBasic-Code-Zeile. Meistens wird die Verbindung zu Datenbank hergestellt. Die erste klleinere Abfrage (39 Datensätze) funktioniert meistens, aber dann nach der zweiten oder dritten hängt sich Word dann irgendwann weg.

    Ich habe schon getestet, an welchen Stellen da passiert. Meistens bei .open oder .activeConnection.

    Kann jemand helfen?


     
    My code is:
     
    Public rsTest As New ADODB.Recordset 'Recordset um die Daten aufzunehmen
    Public rsTest2 As New ADODB.Recordset 'Recordset um die Daten aufzunehmen

    SUB...

    Set cnTest = New ADODB.Connection 'Datenbank-Connection
    Set rsTest = New ADODB.Recordset 'Recordset um die Daten aufzunehmen
    strConnect = "Provider=SQLBASEOLEDB.1;Persist Security Info=False;User ID=SYSADM;Data Source=databasename
    "
    With rsTest
    .ActiveConnection = cnTest
    .Open Select_Aa$
    AnzahlZeilen = rsTest!Anzahl
    .Close
    End With
    Set rsTest = Nothing
    Set cnTest = Nothing
     
    End Sub
    • Verschoben Thorsten Dörfler Freitag, 14. Oktober 2011 09:31 VBA (aus:Visual Basic (ab Version 2002 / .NET))
    • Typ geändert Bogdan Petru Roiu Mittwoch, 26. Oktober 2011 09:04 Diskussion
    Dienstag, 4. Oktober 2011 11:17

Alle Antworten

  • Hi,

    zum einen sollte man in .NET nicht mehr mit ADODB... arbeiten, da man damit die "Managed Welt" verlässt und sich mit COM rumschlagen muss.

    Zum anderen solltest Du deine Anwendung mal explizit als x86 (32 Bit) Anwendung kompilieren, ggfs. klappt es dann.

    ---

    Nach ich dein Posting nochmal gelesen habe, frage ich mich, was Du hier mit .NET willst? Du entwickelst in Word? Dann wäre die Frage in einem Office Forum wohl besser aufgehoben.

    Wenn die Abfragen grundsätzlich funktionieren und erst mit größeren Resultsets Probleme haben, würde ich schon auf den Datenbanktreiber tippen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Dienstag, 4. Oktober 2011 12:29
    Moderator
  • danke für deine Antwort.

    sorry, hast Recht - ich habe gedacht, dass es in dieser Rubrik nicht nur um .NET geht, sondern auch um Visual Basic ab 2002

     

    Dienstag, 4. Oktober 2011 15:40
  • Hallo ts-d,

    Du suchst eine Lösung für Visual Basic für Applikationen (VBA), das bis auf Syntaxähnlichkeiten mit dem "richtigen" Visual Basic (.NET) nichts gemeinsam hat. Folgender Beitrag erläutert die grundlegenden Unterschiede, auch wenn sich dieser primär auf den Vergleich von VB6 zu VBA bezieht:

    VB-FAQ - Was unterscheidet VB von VBA?

    Ich habe Deinen Beitrag in ein passenderes Forum verschoben und möchte Dich bitten zukünftig dieses für VBA/Makro Fragen zu verwenden.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Freitag, 14. Oktober 2011 09:31
  • Hallo ts-d

    Die korrekte Syntax wäre hier so:

    '....
    'muss man Set verwenden weil ActiveConnection ein Object bekommt
    Set rsTest.ActiveConnection = cnTest
    
    With rsTest
       .Open Select_Aa$
       AnzahlZeilen = rsTest!Anzahl
       .Close
    End With
    '....
    

     

    Grüße,

    Bogdan


    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.
    Donnerstag, 20. Oktober 2011 08:43
  • Hallo ts-d,

    bist Du weitergekommen?

    Vielen Dank und viele Gruesse,

    Bogdan


    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.
    Montag, 24. Oktober 2011 12:49
  • Dieser Thread wurde in Diskussion umgewandelt. Natürlich sind weitere Nachfragen / Beiträge möglich und selbstverständlich willkommen.

    Bogdan


    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.
    Mittwoch, 26. Oktober 2011 09:04