Resumen Convertir .MDB -> .TXT


Tal vez el siguiente código te ayude:

Se encarga de abrir una base de datos (en este caso "BIBLIO.MDB") y graba
todas sus tablas, con cada uno de sus campos y registros en archivos con el
nombre de la tabla y extensión .TXT.

Parto del entendido que:

  * Usas Windows 95, 98 o NT
  * Has establecido la referencia a Microsoft Data Access Objects 3.5
  * No importa qué base de datos le pongas, ni la cantidad de tablas que
tenga, ni la cantidad de campos que haya en la base de datos.

Lo hice al vapor, de modo que puede tener errores. Sin embargo, puede ser
una buena base. De facto lo probé y no me dio errores (mas que en algunas
estructuras especiales que están contenidas en Biblio.MDB que no se pueden
leer). De cualquier manera, el programa cuenta con una verificación de
errores y no detiene su ejecución.

------------------------------------------
Private Sub Command1_Click()
  ' Var
  Dim db As Database
  Dim rs As Recordset
  Dim tbl As TableDef
  Dim fld As Field
  Dim fil As Integer
  Dim strDelim As String
  Dim strComa As String

  ' Captura de errores
  Screen.MousePointer = vbHourglass
  On Error Resume Next

  ' Abre la base de datos
  Set db = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB", False, True)

  ' Lee cada tabla
  For Each tbl In db.TableDefs
    Set rs = db.OpenRecordset(tbl.Name, dbOpenSnapshot)
    If Err.Number = 0 Then
      Me.Print tbl.Name;

      ' Abre el archivo de texto
      Open tbl.Name & ".TXT" For Output As #1

      ' Graba los encabezados (Son los nombres de los campos en sí)
      strComa = ""
      For Each fld In rs.Fields
        Print #1, strComa & fld.Name;
        strComa = ", "
      Next fld
      Print #1, ""

      ' Ahora graba cada dato
      While Not rs.EOF
        strComa = ""
        For Each fld In rs.Fields
          Select Case fld.Type
            Case dbText, dbChar, dbMemo, dbDate, dbTime
              strDelim = Chr(34)
            Case Else
              strDelim = ""
          End Select

          ' Graba el texto en el archivo
          Print #1, strComa & strDelim & fld.Value & strDelim;
          strComa = ", "
        Next fld
        Print #1, ""
        Me.Print ".";
        rs.MoveNext
      Wend

      ' Cierra el archivo de texto
      Close #1

      ' Cierra el snapshot y la base de datos
      rs.Close
      Set rs = Nothing
      Me.Print "¡Finalizada la tabla!"
    Else
      MsgBox Err.Description, vbExclamation, "Error " & Err.Number
      Err.Number = 0
    End If
  Next tbl

  db.Close
  Set db = Nothing

  ' ¡Ya terminó!
  On Error GoTo 0
  Screen.MousePointer = vbDefault
  MsgBox "¡Listo!"
End Sub
-------------------------------------------

Espero que te sea de utilidad...

¡SALUDOS!
Tron.BAS



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com