
05/01/2005, 01:16
|
| | Fecha de Ingreso: febrero-2004 Ubicación: Granada
Mensajes: 26
Antigüedad: 21 años Puntos: 0 | |
Debe ir. Se me olvidó comentar una cosa que es muy importante.
La tabla de la base de datos debe tener la misma estructura que la del dataset. Deben ser exactamente iguales en el número de campos, tipos y longitudes.
Te puedo poner un ejemplo. No sé con que versión de .NET trabajas ni con que base de datos. Mi ejemplo es para .NET 2003 y base de datos DB2 de AS/400. De todas formas comentarte que funciona exactamente igual con SQL Server 2000.
EJEMPLO:
Dim MiSQL As String
Dim pos As Integer
Dim cadena As String
Dim linea As String
Dim conec400 As OleDb.OleDbConnection
conec400 = New OleDb.OleDbConnection("Provider=HiTOLEDB400.1;Pass word=ElQueSea;Persist Security Info=True;User ID=Usuario;Data Source=Servidor;Libraries=Biblioteca;Host Code Page=284 - Spanish;LangID or Table=ESP - Spanish")
Dim adapt As OleDb.OleDbDataAdapter
Dim AboCommand As OleDbCommandBuilder
Dim dtsPAD As New DataSet
Dim dtsLEC As New DataSet
Dim dts As New DataSet
Dim c As Integer
Dim dtsLin As DataRow
Try
txtMensaje.Text = "INICIADO proceso de generación del Archivo ..."
Me.Refresh()
adapt = New OleDbDataAdapter("SELECT * FROM ARCHIVO", conec400)
AboCommand = New OleDbCommandBuilder(adapt)
dts = New DataSet
'Carga el ARCHIVO
conec400.Open()
adapt.Fill(dts, "ARCHIVO")
conec400.Close()
'Carga los datos del PADRON
MiSQL = "SELECT * FROM PADRON ORDER BY POLIZA ASC"
dtsPAD = Conecta(MiSQL)
progres.Visible = True
progres.Maximum = dtsPAD.Tables(0).Rows.Count
totReg.Text = Format((CInt(dtsPAD.Tables(0).Rows.Count)), "#,###,##0")
Me.Refresh()
'Recorre el PADRON y va añadiendo los registros al ARCHIVO
For c = 0 To dtsPAD.Tables(0).Rows.Count - 1
'Añade un registro nuevo al indato
dtsLin = dts.Tables("ARCHIVO").NewRow
'Empieza la asignación de datos
dtsLin("POLIZA") = dtsPAD.Tables(0).Rows(c)("POLIZA")
'Apellidos y nombre del abonado
dtsLin("APELLIDO1") = dtsPAD.Tables(0).Rows(c)("APE1")
dtsLin("APELLIDO2") = dtsPAD.Tables(0).Rows(c)("APE2")
dtsLin("NOMBRE") = dtsPAD.Tables(0).Rows(c)("NOMBRE")
'Añade el registro al Dataset destino que se grabará al final del proceso en la base de datos.
dts.Tables("ARCHIVO").Rows.Add(dtsLin)
' Suma el registro al contador y a la barra de progreso.
numReg.Text = Format((CInt(numReg.Text) + 1), "#,###,##0")
totAbo.Text = numReg.Text
progres.Value = c + 1
Me.Refresh()
Next
'EJECUTA EL COMANDO PARA METER LOS DATOS EN LA BASE DE DATOS
txtMensaje.Text = "VOLCANDO Archivo en el AS/400 ..."
progres.Visible = False
Me.Refresh()
conec400.Open()
adapt.Update(dts, "ARCHIVO")
conec400.Close()
txtMensaje.Text = "Proceso terminado. Revise en Archivo del AS/400 ..."
Me.Refresh()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try
End Sub
Private Function Conecta(ByVal varSQL As String) As DataSet
Dim conectaMDB As OleDb.OleDbConnection
Dim adapt As OleDb.OleDbDataAdapter
Dim dscombo As DataSet
conectaMDB = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLED B.4.0;Data Source=D:\Archivo.mdb;Mode=Read;Persist Security Info=False")
adapt = New OleDb.OleDbDataAdapter(varSQL, conectaMDB)
dscombo = New DataSet
'Controla los errores de apertura de la base de datos
Try
conectaMDB.Open()
adapt.Fill(dscombo)
conectaMDB.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Function
End Try
Conecta = dscombo
End Function
Este código certifico que funciona porque yo lo he utilizado para incorporar unos datos a un AS/400.
Espero que aclare las dudas. Si no es así la mejor forma de aclararlas es preguntar sin miedo.
Un saludo
Última edición por tolotoco; 05/01/2005 a las 01:17
Razón: Modificación del código
|