title: VB.Net: DAO Object won't create DBEngine
body: <p>I'm using a dynamically created Access database as a temporary storage for a file being inputed.  I know that everything works, as on my dev machine I can get this code to run.  But on another system (Win 7) it's not working.  I'm being stopped at this line...</p>
  
  <pre><code>DAOEngine = New DAO.DBEngine
  </code></pre>
  
  <p>When it gets here, it just throws an error...</p>
  
  <pre><code>Creating an instance of the COM component with CLSID {00000010-0000-0010-8000-00AA006D2EA4} from the IClassFactory failed due to the following error: 80040112.
  </code></pre>
  
  <p>I have searched for the error, and I can't make sense of what it's telling me other then I'm using an old way of creating databases.  And right now, I was hoping for a quick fix rather then rewriting the way my storage is working.</p>
  
  <p>Again, I know my code is correct because my Dev machine compiles and runs this code just fine.  I'll post the entire method in case there's something else I'm missing.</p>
  
  <pre><code>    Private Sub ProcessFile(ByVal Exportname As String, ByVal ExportFile As String, ByVal ImportFile As String)
      ' Aperture variables
      Dim Table As Object 'OETable
      Dim Fields As Object 'OEFields
  
      ' DAO database variables
      Dim DAOEngine As DAO.DBEngine
      Dim rst As DAO.Recordset
      Dim ws As DAO.Workspace
      Dim db As DAO.Database
      Dim tbl As DAO.TableDef
      Dim fld As DAO.Field
  
      ' Integer vars
      Dim fieldcount As Integer
      Dim I As Integer
      Dim j As Integer
      ' Boolean Variables
      Dim CalcTotals As Boolean = False
      ' String Array Variables
      Dim headers() As String = Nothing
      ' String Variables
      Dim lvl_lookup As String
      Dim outputlist As String
      Dim throwaway As String = ""
      Dim totalstring As String
      ' Array vars
      Dim totals() As Object
  
      ' Use an access database to add the serial numbers
      'ws = DAODBEngine_definst.Workspaces(0)
      DAOEngine = New DAO.DBEngine
      ws = DAOEngine.Workspaces(0)
      If File.Exists(alAperture.prjPath &amp; "\temp.mdb") Then
          File.Delete(alAperture.prjPath &amp; "\temp.mdb")
      End If
      db = ws.CreateDatabase(alAperture.prjPath &amp; "\temp.mdb", DAO.LanguageConstants.dbLangGeneral)
      tbl = db.CreateTableDef("legend")
  
      If alAperture.tbls.Item(Exportname &amp; " Table") Is Nothing Then
          Table = alAperture.tbls.Item("Legend Text Table")
      Else
          Table = alAperture.tbls.Item(Exportname &amp; " Table")
      End If
  
      Fields = Table.Fields
      fieldcount = Fields.Count
      ' Create the fields
      For I = 0 To fieldcount - 1
          If Fields.Item(I).DataType = 2 Then
              ' We have a numeric field
              fld = tbl.CreateField(Fields.Item(I).Name, 6)
              CalcTotals = True
          Else
              fld = tbl.CreateField(Fields.Item(I).Name, 10, 255)
              fld.AllowZeroLength = True
          End If
          tbl.Fields.Append(fld)
      Next
      ' Create the table
      db.TableDefs.Append(tbl)
  
      ' Open the table as a recordset
      rst = db.OpenRecordset("legend", DAO.RecordsetTypeEnum.dbOpenTable)
      ' Open the exportfile for read
      Dim streamIn As StreamReader = New StreamReader(ExportFile)
      ReDim totals(fieldcount - 1)
  
      I = 0
      lvl_lookup = ""
  
      Do
          ' Grab next record and redim to dimension of table, minus the series column
          Dim nextRecord() As String = Split(streamIn.ReadLine, """,""")
          ReDim Preserve nextRecord(fieldcount - 1)
          If I = 0 Then
              headers = nextRecord
              I = 1
          Else
              ' *** HEADER RECORD
              If lvl_lookup = "" Then
                  lvl_lookup = nextRecord(0)
                  ' Add the header record
                  rst.AddNew()
                  rst.Fields(0).Value = lvl_lookup
                  rst.Fields(1).Value = 0
                  For j = 2 To fieldcount - 1
                      If rst.Fields(j).Type = 10 Then
                          rst.Fields(j).Value = Replace(headers(j - 1), """", "")
                      Else
                          rst.Fields(j).Value = 0
                      End If
                  Next
                  rst.Update()
              End If
              ' *** RECORDS
              If nextRecord(0) = lvl_lookup Then
                  ' addrecords
                  addrecord(totals, nextRecord, rst, fieldcount, I)
              Else
                  ' add total row
                  ' padlines
                  If CalcTotals Then
                      rst.AddNew()
                      rst.Fields(0).Value = lvl_lookup
                      rst.Fields(1).Value = I
                      totalstring = "Total:"
                      For j = 2 To fieldcount - 2
                          If rst.Fields(j).Type = 6 Then
                              If IsNothing(totals(j)) Then
                                  rst.Fields(j).Value = 0
                              Else
                                  rst.Fields(j).Value = totals(j)
                              End If
                          Else
                              rst.Fields(j).Value = totalstring
                              totalstring = ""
                          End If
                      Next
                      rst.Fields(9).Value = 0
                      rst.Update()
                      I = I + 1
                  End If
                  'padlines
                  While I &lt;= 80
                      rst.AddNew()
                      rst.Fields(0).Value = lvl_lookup
                      rst.Fields(1).Value = I
                      rst.Update()
                      I = I + 1
                  End While
                  I = 1
                  lvl_lookup = nextRecord(0)
                  ReDim totals(fieldcount - 2)
                  ' add record
                  addrecord(totals, nextRecord, rst, fieldcount, I)
              End If
              If streamIn.EndOfStream Then
                  ' add total row
                  ' padlines
                  If CalcTotals Then
                      rst.AddNew()
                      rst.Fields(0).Value = lvl_lookup
                      rst.Fields(1).Value = I
                      totalstring = "Total:"
                      For j = 2 To fieldcount - 2
                          If rst.Fields(j).Type = 6 Then
                              If IsNothing(totals(j)) Then
                                  rst.Fields(j).Value = 0
                              Else
                                  rst.Fields(j).Value = totals(j)
                              End If
                          Else
                              rst.Fields(j).Value = totalstring
                              totalstring = ""
                          End If
                      Next
                      rst.Fields(9).Value = 0
                      rst.Update()
                      I = I + 1
                  End If
                  'padlines
                  While I &lt;= 80
                      rst.AddNew()
                      rst.Fields(0).Value = lvl_lookup
                      rst.Fields(1).Value = I
                      rst.Update()
                      I = I + 1
                  End While
              End If
          End If
      Loop Until streamIn.EndOfStream
      streamIn.Close()
      ' ok lets write the import file
  
      Dim streamOut As StreamWriter = New StreamWriter(ImportFile)
      rst.MoveFirst()
      Do Until rst.EOF
          outputlist = Chr(34) &amp; rst.Fields(0).Value &amp; Chr(34) &amp; "," &amp; Chr(34) &amp; VB6.Format(rst.Fields(1).Value, "00") &amp; Chr(34)
          For j = 2 To fieldcount - 1
              outputlist = outputlist &amp; "," &amp; Chr(34) &amp; rst.Fields(j).Value &amp; Chr(34)
          Next
          streamOut.WriteLine(outputlist)
          rst.MoveNext()
      Loop
      streamOut.Close()
      rst.Close()
      db.Close()
      ws.Close()
  
      rst = Nothing
      db = Nothing
      ws = Nothing
      fld = Nothing
      tbl = Nothing
      Table = Nothing
      Fields = Nothing
  End Sub
  </code></pre>