OK voy a probar en realidad es mejor trabajar con procedimientos almacenados
voy a hacerlo como me dices y te comento, gracias!!!
Andrés
----- Original Message -----
From: "Carlos Peix" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, October 16, 2007 6:53 PM
Subject: [puntonet] Ingreso Masivo de Datos
Hola Andres,
Creo que la clave esta en el Catch que haces sin mostrar la excepcion, esto
quiere decir que si estas teniendo una excepcion luego de insertar el primer
registro, la ejecucion termina luego de insertarlo y nunca te enteras de la
anomalia.
Te propongo otra version del codigo que mandaste donde aprovecho para
sugerirte
codigo un poco mas claro (en mi opinion). Atencion, no puedo escribir codigo
VB.NET de memoria, asi que sepan disculpar.
' Es mejor crear el comando antes y reutilizarlo, ademas,
' es MUY recomendabe utilizar parametros.
Dim agregar As New SqlCommand("INSERT INTO OrdenMantencion (OMEquipo,
OMTipo,
...) VALUES ( @Equipo, @Tipo,... )")
' Es mucho mejor realizar la conexión una sola vez
' al principio y cerrarla al final (en el Finally).
conn.Open()
agregar.Connection = conn
Try
' Aca tambien deberias usar parametros
Dim da As New SqlDataAdapter("SELECT NombrePC FROM FichaEquipo WHERE
Sala='" & Me.DDSalasala.SelectedValue.Trim & "'", conn)
Dim dsOM As New DataSet()
da.Fill(dsOM, "Equipos")
Dim dt As DataTable
dt = dsOM.Tables(0)
'AQUI DONDE PRETENDO INGRESARLOS EN LA OTRA TABLA!
' (confirmar sintaxis de For Each)
For Each DataRow row in dt.Rows
Dim equipo As String
'AQUI SELECCIONO EL DATO DE LA TABLA ANTERIOR PARA SER INGRESADO
EN LA NUEVA TABLA
equipo = row.Item("NombrePC")
' No me gusta mucho la siguiente linea de codigo, yo
' no accederia a elementos de la interfaz a usuario dentro
' de un proceso masivo como este.
Me.ListBox1.Items.Add(equipo)
agregar.Parameters["Equipo"] = equipo
agregar.Parameters["Tipo"] =
Me.DDNombreProgSala.SelectedValue.Trim
agregar.ExecuteNonQuery()
Next
Finally
conn.Dispose()
End Try
Algunos comentarios:
- No utilice el Catch. Si no vas a hacer naad especifico en el catch lo
mejor es
no usarlo de manera que la excepcion llegue a niveles superiores.
- Agregue el Finally donde debe cerrarle la conexión (con llamar a Dispose
es
suficiente).
- Es aconsejable utilizar parametros para evitar ataques por SQLInjection,
ademas de facilitar considerablemente el manejo de distintos tipos de datos.
Carlos Peix
-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of [EMAIL PROTECTED]
Sent: Martes, 16 de Octubre de 2007 05:40 p.m.
To: [email protected]
Subject: [puntonet] Ingreso Masivo de Datos
Hola amigos tengo un problema que me tiene realmente chato,
lo que necesito es traer datos desde una tabla y despues para
cada uno de estos datos debo ingresarlos en otra tabla con
otros datos. El codigo que tengo es el siguiente en teoria me
debería funcionar, pero el problema es que de los datos que
traigo de la primera tabla solo ingreso rl primer dato en la segunda.
Bueno aqui esta el código ojala me entiendan y me den una
manito creo que el problema esta en el for pero eh probado de
varias formas y no me resulta.
Try
'AQUI TRAIGO LOS DATOS DE LA TABLA
Dim da As New SqlDataAdapter("SELECT NombrePC
FROM FichaEquipo WHERE Sala='" &
Me.DDSalasala.SelectedValue.Trim & "'", conn)
Dim dsOM As New DataSet()
da.Fill(dsOM, "Equipos")
Dim dt As DataTable
Dim dv As DataView
dt = dsOM.Tables(0)
dv = dt.DefaultView
Dim n1 As Integer = dt.Rows.Count
Dim i As Integer
'AQUI DONDE PRETENDO INGRESARLOS EN LA OTRA TABLA!
For i = 0 To (n1 - 1)
Dim equipo As String
'AQUI SELECCIONO EL DATO DE LA TABLA ANTERIOR PARA SER
INGRESADO EN LA NUEVA TABLA
equipo = dt.Rows(i).Item("NombrePC")
Me.ListBox1.Items.Add(equipo)
Dim agregar As New SqlCommand("INSERT INTO
OrdenMantencion (OMEquipo, OMTipo, OMSala, OMFecha, OMHora,
Mantencion, Registro, DEjecucion, DTermino, HInicio,
HTermino) VALUES ( '" & equipo & "','" &
Me.DDNombreProgSala.SelectedValue.Trim & "','" &
Me.DDSalasala.SelectedValue.Trim & "', '" &
Me.TxtFechaSala.Text.Trim & "', '"
& Me.TxtHoraSala.Text.Trim & "', '" &
Me.TxtmantencionSala.Text.Trim & "','" &
Me.TxtRegistroSala.Text.Trim & "','" & Me.TxtDESala.Text.Trim
& "','" & Me.TxtDTSala.Text.Trim & "','" &
Me.TxtHISala.Text.Trim & "','" & Me.TxtHTSala.Text.Trim & "' )")
agregar.Connection = conn
conn.Open()
agregar.ExecuteNonQuery()
Next
conn.Close()
conn.Dispose()
Catch ex As Exception
End Try
Agradecer cualquier comentario o ayuda gracias de antemano!
__________ NOD32 2595 (20071016) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com