Visual Basic.NET - Consulta en Grid View

 
Vista:
sin imagen de perfil
Val: 9
Ha disminuido su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Consulta en Grid View

Publicado por Hector (110 intervenciones) el 09/08/2018 00:13:18
Hola amigos del foro mi sonulta es la siguiente poseo una base de datos con varias tablas de las cuales una en particular que se llama Ajuste2 tiene 24 item, de los cuales solo escogí 8 a través de una vista, dicha vista la llame consulta2, y al llamar los datos los muestra los 8 que escogí anteriormente, hasta aí todo Ok. pero al grabar la nueva grilla con los nuevos datos en la tabla Orden_Compra1, me dice que el item Nº 8 se encuentra fuera de rango.
he aquí el código que utilizo para llamar a los datos el cual funciona Ok.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Sub llenar_grilla(Optional ByVal opcion As String = "")
    Dim valor As String
    If opcion = "" Then
        If CMBSINIESTRO.Text = "---" Then
            valor = TXTITEM.Text
        Else
            If TXTITEM.Text <> "" Then
                valor = TXTITEM.Text
            Else
                valor = CMBSINIESTRO.SelectedValue
            End If
        End If
    Else
        valor = opcion
    End If
    Try
        da = New Data.SqlClient.SqlDataAdapter("Select * From Consulta2 where Siniestro = '" + valor.ToString + "' ", conn)
        da.MissingSchemaAction = MissingSchemaAction.AddWithKey
        Dim builder As Data.SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da)
        Dim ds As New DataSet
        da.Fill(ds, "Grilla")
        Dim vista As DataView = New DataView(ds.Tables("Grilla"), " ", "N_Filas asc", DataViewRowState.CurrentRows)
        Grilla.DataSource = vista
        Grilla.DataBind()
        Session.Add("tabla", ds)
        Session.Add("cmd", builder)
        contador_items.Text = ds.Tables("Grilla").Rows.Count + 1
        TXTITEM.Text = contador_items.Text
    Catch ex As Data.SqlClient.SqlException
        Dim script As String = String.Format("alert('{0}');", ex.Message)
        ScriptManager.RegisterStartupScript(Me, GetType(Page), "Datos mal ingresados", script, True)
    Catch ex As Exception
        Dim script As String = String.Format("alert('{0}');", ex.Message)
        ScriptManager.RegisterStartupScript(Me, GetType(Page), "Información Incorrecta", script, True)
    End Try
End Sub

He aquí el Código que utilizo para grabar los datos en la Grilla
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Sub Graba()
    Dim ds As DataSet
    ds = Session("tabla")
    Dim builder As SqlCommandBuilder
    builder = Session("cmd")
    Dim sqladd As New SqlCommand
    sqladd = builder.GetInsertCommand()
    sqladd.Connection = conn
    Dim sqlmod As New SqlCommand
    sqlmod.Connection = conn
    Dim sqldel As New SqlCommand
    sqldel.Connection = conn
    sqladd.CommandText = "insert into Orden_Compra1 ([N_Filas], [Cantidad], [Repuestos], [Precio_Total], [Siniestro], [Patente_Vehiculo], [Activo], [N_Cotizacion], [Nombre_Proveedor3]) VALUES (@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9)"
    Try
        sqldel.CommandText = "delete from Orden_Compra1 where (Siniestro=" _
        + ds.Tables("Grilla").Rows(0).Item("Siniestro").ToString.Trim + ")"
        sqldel.ExecuteNonQuery()
    Catch ex As Exception
        Dim script As String = String.Format("alert('{0}');", ex.Message)
        ScriptManager.RegisterStartupScript(Me, GetType(Page), "Información Incorrecta", script, True)
    End Try
    For Each fila As DataRow In ds.Tables("Grilla").Rows
        If Not fila.RowState = DataRowState.Deleted Then
            sqladd.Parameters(0).Value = fila("N_Filas")
            sqladd.Parameters(1).Value = fila("Cantidad")
            sqladd.Parameters(2).Value = fila("Repuestos")
            sqladd.Parameters(3).Value = fila("Precio_Total")
            sqladd.Parameters(4).Value = fila("Siniestro")
            sqladd.Parameters(5).Value = fila("Patente_Vehiculo")
            sqladd.Parameters(6).Value = fila("Activo")
            sqladd.Parameters(7).Value = fila("N_Cotizacion")
            sqladd.Parameters(8).Value = fila("Nombre_Proveedor3")
            sqladd.ExecuteNonQuery()
        End If
    Next
End Sub
Ojala que me puedan ayudar amigos ya que estoy un poco frustrado, primera vez que me pasa esto y no hay caso, al final lo que trate de hacer es llevar los mismos campos de la tabla ajuste2 a Orden_Compra1, pero ni con eso siempre me manda el mensaje de fuera de intervalo, además adjunte pantallazos para que vean los mensajes.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder