Pasar de Access a SQL.EXPRESS 2005

tema enviado por oag999 en Visual Basic .NET
tema iniciado el 14/05/2008

Gracias por su atención.
Quiero pasar datos de un sistema a otro. He creado un programita con la ayuda de los foros. FUNCIONA bien, hace el pase y todo, pero hay cosas que no entiendo y quisiera saber si Uds. me pueden ayudar. Pongo el programa primero:
'------COMIENZO DEL PROGRAMA---------------------------------------------
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Public Class Paseyvan
    Private Sub Button1
        _Click(ByVal sender As System.Object, ByVal e As
         System.EventArgs) Handles Button1.Click

        Dim F, C As Integer 'esto lo uso yo.
        '---------------------------------------
        'Llenar datagridview1 con Datos de Access
        Dim conexionAccess As String
        conexionAccess = "Provider=Microsoft.Jet.OLEDB.4.0;Data
             Source=C:\PersonalSueldos\Sueldos2009_oag\Datos\PersonalSueldos.mdb"
        Dim conAccess As
             OleDbConnection = New OleDbConnection(conexionAccess)
             ' Establesco la conección
        Dim SelectAccess As String
        SelectAccess = "SELECT * FROM Personal Order By IdPersonal"
        Dim AdapterAccess As New
             OleDbDataAdapter(SelectAccess, conAccess) 'genero el Data
             Adapter para Access

        Dim TablaAccess As New DataTable 'Creo una Tabla
        DataGridView1.DataSource = TablaAccess 'Conecto el
             DataGridView1 con la Tabla
        AdapterAccess.Fill(TablaAccess) 'lleno la Tabla y me lo
             muestra en el DataGridView con los Datos de Access
        '---------------------------------------
        ' Generar elementos inciales, llenar el DataGridView2
             conlos Datos de Acces para grabar en SQL.
        Dim conexionSQL As String
        conexionSQL = "Data
             Source=.\SQLEXPRESS;AttachDbFilename=C:\PersonalSueldos\Sueldos2009
            _oag\Datos\SueldosArch.mdf;Integrated Security=True;Connect Timeout=30;User
             Instance=True"

        Dim ColumnasDataRow As DataRow 'Creo la columnas
             para llenar
        Dim TablaSQL As DataTable 'creo el DataTable

        Dim DataAdapterSQL As SqlClient.SqlDataAdapter 'creo el DataAdapter
        Dim SQLConnection As SqlClient.SqlConnection 'creo
             la conexion
        Dim CommandBuilderSQL As SqlClient.SqlCommandBuilder 'creo el command builder

        'la conexion
        SQLConnection = New SqlClient.SqlConnection(conexionSQL) '
        DataAdapterSQL = New
             SqlClient.SqlDataAdapter("Select * from Personal",
             SQLConnection)
        SQLConnection.Open() 'abro la conexion

        ' Creo uptate, addnew y delete del DataAdapterSQL
             (creado mas arriba) con un CommandBuilder
        CommandBuilderSQL = New SqlClient.SqlCommandBuilder(DataAdapterSQL)
        TablaSQL = New DataTable

        'lleno el datatable con los datos necesarios
        TablaSQL.Clear()
        DataAdapterSQL.Fill(TablaSQL)

        'establezco la clave primaria
        Dim IdPersonal(0) As DataColumn
        IdPersonal(0) = TablaSQL.Columns(0)
        TablaSQL.PrimaryKey = IdPersonal

        'vinculo el datagrid con la tabla que corresponde
        DataGridView2.DataSource = TablaSQL

        'Aqui paso los datos de Acces a la Tabla de SQL
        Dim midato(30) As Object
        For F = 0 To
             Me.DataGridView1.Rows.Count - 2 ' me da el valor int de ultimo registro
            For C = 0 To
                 Me.DataGridView1.Columns.Count - 1 'me da el valor int de la ultima columna
                midato(C) = TablaAccess.Rows(F).Item(C) 'tomo
                     el valor por fila y columna de Access
            Next Csigo en la proximo, porque todo no alcanza

ColumnasDataRow = TablaSQL.NewRow 'Aviso que va un nuevoRow
ColumnasDataRow("IdPersonal") = midato(0)
ColumnasDataRow("NumDoc") = midato(1)
ColumnasDataRow("TipoDoc") = midato(2)
ColumnasDataRow("Sexo") = midato(3)
ColumnasDataRow("NumCuil") = midato(4)
ColumnasDataRow("NumCuil1") = midato(5)
ColumnasDataRow("Apellido") = midato(6)
ColumnasDataRow("Nombres") = midato(7)
'Try
TablaSQL.Rows.Add(ColumnasDataRow) 'Adiciono los datos a la Tabla
Next F
'Aqui digo que lleve los datos del DataGridView (mejor dicho la
     Tabla) al archivo FISICO de SQL. ???????
DataAdapterSQL.Update(TablaSQL)
TablaSQL.AcceptChanges()
End Sub
End Class
' ----------fin del programa-----------------------------------------------------
Es maravilloso llenar primero la Tabla y despues grabar todos los cambios, inclusive los delete que tanto costaran con el VB6.
Pregunto: El pase de los datos al Archivo fisico estan desconectados?. Porque abro la conexion arriba y nunca la cierro y me funciona.
Pregunto: Para rellenar el ID autonumerico, es necesario generar UN FILL de la Tabla SQL?, porque sino, me da error. COMO FUNCIONA ESO?. Esto pregunto porque es copiado,y el analisis no me llena.
GRACIAS DE ANTEMANO.