Ahi me resulto, lo hice con SPs. pero lo deje en una funcion y en el evento de ingreso lo llamo dentro del for,,,
Gracias por su ayuda. Andrés > Hola Andres, > > Lo de usar stored procedures o no es opcional, si preparas el comando al > principio del proceso y lo usas repetidas veces en el insert, no creo que > encuentres diferencias importantes en el rendimiento. Hay otras razones > por las > cuales puede ser aconsejable usar SPs. > > Incluso, podes usar parametros (Parameters de ADO.NET) aunque no uses > stored > procedures. > > Contanos como te fue, si podes. > > Carlos Peix > >> -----Original Message----- >> From: [email protected] [mailto:[EMAIL PROTECTED] On >> Behalf Of Andrés Guzmán O >> Sent: Martes, 16 de Octubre de 2007 10:21 p.m. >> To: [email protected] >> Subject: [puntonet] Ingreso Masivo de Datos >> >> 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 >> >> > > > Soporte CFTUTEM. [EMAIL PROTECTED], [EMAIL PROTECTED] 6711130 anexo 110
