none
Konvertierung von VB 6 zu VB 8 RRS feed

  • Frage

  • Hallo,

    ich bekomme nach der automatischen Konvertierung von 6.0 auf 8.0 auf einem neuen Rechner mit XP-Professionel Version 2002 SP3 bei der Codezeile:

    tblWWS = DAODBEngine_definst.OpenDatabase(cmdDSN, _
      DAO.DriverPromptEnum.dbDriverNoPrompt, True, DBConnect)


    diese Fehler bei der Programmausführung und im Debugmodus:

    Eine Ausnahme (erste Chance) des Typs "System.Runtime.InteropServices.COMException" ist in CubeInterpreter.exe aufgetreten.
    Eine Ausnahme (erste Chance) des Typs "System.TypeInitializationException" ist in CubeInterpreter.exe aufgetreten
    .

    Auf einem älteren Rechner mit XP-Home Edition Version 2002 SP2 hat diese Konvertierung problemlos funktioniert.

    Beide VB8.0-Installationen erfolgten von der gleichen DVD.

    Wer kann mir weiterhelfen?
    Montag, 28. Dezember 2009 10:34

Antworten

  • Hallo,

    ist auf dem Rechner DAO/die Jet Engine in der passenden Version installiert?

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Montag, 28. Dezember 2009 12:33
  • Montag, 28. Dezember 2009 13:38
  • Hallo Peter,

    schön das es jetzt funktioniert.

    Für die Zukunft:
    DAO 3.5 gehört noch zu Access 97 => JET 3.5 und ist mittlerweile veraltet.
    DAO 3.6 - Access 2000 - 2003 => JET 4.0, wäre also hier richtig.
    Du solltest jeweils die aktuelle Version vom bereits genannten KB Artikel verwenden.
    Bei neueren Betriebssystemen ist es dabei und wird über Windows-Update aktualisiert.

    Zum Finden der Defintion eines Verweises:
    Wähle DAODBEngine_definst aus wähle im Editor-Kontextmenü "Gehe zu Definition".
    Wenn die Instanz in einer anderen Assembly definiert ist, so wird sie im Objektbrowser angezeigt.

    Gruß Elmar
    Dienstag, 29. Dezember 2009 10:55

Alle Antworten

  • Hallo,

    ist auf dem Rechner DAO/die Jet Engine in der passenden Version installiert?

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Montag, 28. Dezember 2009 12:33
  • Montag, 28. Dezember 2009 13:38
  • Der Rechner hat eine DAO-Version drauf, da VB6.0-Programm läuft. Allerdings habe ich keine Variante von DAO für Windows XP und SP3 gefunden. Reicht hier SP2?


    Gruß
    Peter
    Montag, 28. Dezember 2009 14:59
  • Ich habe jetzt alle Versionsstände geprüft und die DAO sollte vorhanden und richtig sein. Es ist ein recht "jungfräulicher" Rechner mit XP und Servicepack 3.

    Peter
    Montag, 28. Dezember 2009 16:08
  • Hallo Peter,

    selbst prüfen solltest Du zunächst:
    Wenn in DBConnect eine Datei-/Benutzer/System-DSN angegeben ist,
    exisitert sie bereits auf dem "jungfräulichen" Rechner=

    Wenn ja und der Verbindungstest über die ODBC Verwaltung funktioniert,
    zeige ein klein wenig mehr Code:
    • Wo und wie erstellst Du DAODBEngine_definst
    • Wie sehen die Variablen-Inhalte (cmdDSN, DBConnect ) aus?

    Gruß Elmar
    Montag, 28. Dezember 2009 18:08
  • Hallo Elmar,

    Danke für Deine Unterstützung.

    Die ODBC-Verknüpfung ist vorhanden. Wie schon ober geschrieben, funktioniert auf einem anderen Rechner dieses Programm. Es wurden die gleichen Schritte auf beiden Rechnern ausgeführt.

    Über die von VB 8.0 angebotenen automatische Konvertierung wurde das neue Programm erstellt, bis auf ein paar kleinere Anpassungen.

    Der Quelltext sieht etwas verkürzt so aus:

    Option Strict Off
    Option Explicit On
    Imports VB = Microsoft.VisualBasic
    Friend Class CubeInterpreterForm
    Inherits System.Windows.Forms.Form
    'und hier gehts mit den Programmvariablen weiter
    Private Cmd_CubeName As String
    Private Cmd_DSN As String
    Private Cmd_CubeTable As String
    Dim tblWWS As DAO.Database
    Dim tblCubeInfo As DAO.Recordset
    Dim DecPatch As Byte 'wird für Umstellung der Ländereinstellung wg. Decimalanzeigefehler benötigt
    Dim showFile As Boolean ' wird für Excelstart benötigt
    Dim ShowSum As Boolean ' wird für Excel incl. Summen benötigt

     

    '*************************************************************************************
    ' Method: CreateCubeUniversal
    ' Parameters: Bezeichner und Datenquelle (DSN)
    ' Description: Daten für Cube werden aus externer Tabelle eingelesen
    '*************************************************************************************

     

    Public Sub CreateCubeUniversal()
    Dim fieldObject As Object
    Dim mSQL As String
    Dim DBConnect As String
    Dim cmdCubeName As String
    Dim cmdTBL As String
    Dim cmdDSN As String
    Dim CubeID As String
    Dim looper As Short
    'CubeUpdate abschalten
    DCube1.AutoDataRefresh = False
    cmdCubeName = Cmd_CubeName 'Kommandozeilenparameter
    cmdTBL = Cmd_CubeTable
    cmdDSN = Cmd_DSN
    DBConnect = "ODBC;DATABASE=" & cmdTBL & ";DSN=" & cmdDSN
    'Datenbank öffnen
    tblWWS = DAODBEngine_definst.OpenDatabase(cmdDSN, DAO.DriverPromptEnum.dbDriverNoPrompt, True, DBConnect)
    mSQL = "select * from DCubeKopf where CubeName='" & cmdCubeName & "'"
    tblCubeInfo = tblWWS.OpenRecordset(mSQL, DAO.RecordsetTypeEnum.dbOpenDynaset)
    tblCubeInfo.MoveFirst()
    Do While Not tblCubeInfo.EOF
    Debug.Print(tblCubeInfo.Fields("ID").Value)
    Debug.Print(tblCubeInfo.Fields("Zugriff").Value)
    Debug.Print(tblCubeInfo.Fields("Connect").Value)
    CubeID = tblCubeInfo.Fields("ID").Value
    'Verbindung aufbauen
    usw.usw.usw...

    Die Variable DBConnect  enthält Werte aus dem Programmstart (Parameter) und sieht so aus:

    ODBC;DATABASE=eazybusiness;DSN=EAZY

    Ich vermute auch, daß es irgendetwas mit der DAO zu tun hat, denn auch der Aufruf

    tblWWS = DAODBEngine_definst.OpenDatabase("ODBC")
    funktioniert nicht.

    Wo und wie erstellst Du DAODBEngine_definst  finde ich im Quelltext nicht, auch auf dem Rechner wo es funktioniert.

    Meine bevorzugte Entwicklungsumgebung ist "Clarion for Windows". Diese Programm brauche ich nur, um mit einem ActivX Daten anzuzeigen. Dieses ActivX funktioniert leider unter Clarion nur zum Teil.

    Gruß
    Peter

    Montag, 28. Dezember 2009 18:39
  • Heureka...

    In der Verweisliste wurde auf die DAO 3.5 verwiesen und auf diesem Rechner gibt es wohl nur die DAO-Version 3.6. Jetzt läuft es.

    Gruß
    Peter
    Dienstag, 29. Dezember 2009 10:34
  • Hallo Peter,

    schön das es jetzt funktioniert.

    Für die Zukunft:
    DAO 3.5 gehört noch zu Access 97 => JET 3.5 und ist mittlerweile veraltet.
    DAO 3.6 - Access 2000 - 2003 => JET 4.0, wäre also hier richtig.
    Du solltest jeweils die aktuelle Version vom bereits genannten KB Artikel verwenden.
    Bei neueren Betriebssystemen ist es dabei und wird über Windows-Update aktualisiert.

    Zum Finden der Defintion eines Verweises:
    Wähle DAODBEngine_definst aus wähle im Editor-Kontextmenü "Gehe zu Definition".
    Wenn die Instanz in einer anderen Assembly definiert ist, so wird sie im Objektbrowser angezeigt.

    Gruß Elmar
    Dienstag, 29. Dezember 2009 10:55