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: puntonet@mug.org.ar [mailto:[EMAIL PROTECTED] On 
> Behalf Of [EMAIL PROTECTED]
> Sent: Martes, 16 de Octubre de 2007 05:40 p.m.
> To: puntonet@mug.org.ar
> 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!
> 


Responder a