Comparar esquemas de dos bases de datos

Iniciado por criskapunk, 1 Agosto 2011, 18:48 PM

0 Miembros y 1 Visitante están viendo este tema.

criskapunk

Buenas!

El problema es asi:
Tengo que comparar el esquema de dos bases de datos en Acces usando vb.net y devolver todos los datos/tablas/relaciones, etc que esten presentes en una y no en la otra.

En Access lei que se puede utilizar el documentador, que devuelve la estructura de una base de datos, pero no entiendo como puedo hacer para compararlo :\


Edit:
Encontre esta forma de obtener el nombre de todas las tablas de la base, pero no encuentro todavia como puedo hacer para obtener los campos de cada una. Alguna sugerencia?

Código (vbnet) [Seleccionar]
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim conexion As OleDb.OleDbConnection
        Dim strConexion As String
        Dim tablas(0) As String

        '-- Conexion con la base de datos modelo --
        strConexion = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=C:\base.mdb;Jet OLEDB:Database Password=pass;"
        conexion = New OleDb.OleDbConnection(strConexion)
        conexion.Open()

        '-- Almacena en un vector los nombres de todas las tablas --
        Dim i As Integer = 0
        Dim tabla As DataTable = conexion.GetSchema("TABLES")
        For Each t As DataRow In tabla.Rows
            Dim o As Object = Nothing
            o = t.Item("TABLE_TYPE")
            If (o.ToString.ToUpper = "TABLE") OrElse (o.ToString.ToUpper = "BASE_TABLE") Then
                tablas(i) = t("TABLE_NAME").ToString
                MessageBox.Show(i)
                For Each c As DataColumn In tabla.Columns
                    MessageBox.Show(c.ColumnName)
                Next
                ReDim Preserve tablas(i + 1)
                i += 1
            End If
        Next

        MessageBox.Show(tablas(0))
        conexion.Close()

    End Sub
End Class


Un saludo y gracias.