Hola amigos el foro, mi problema es el siguiente quiero cambiar el dato en un registro en particular en N_Cotización, los cuales mezclo dos tablas y las dejo en una consulta, las cuales muestro el código como los llamo y hago el cambio en esa columna en particular.
Protected Sub CMBSINIESTRO_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CMBSINIESTRO.SelectedIndexChanged
Dim A As Integer
A = cod_siniestro4.Value
A = CInt(A)
If A = "1" Then
Dim sql As New SqlClient.SqlCommand("Select * From Datos_Renta Where Siniestro = " + CMBSINIESTRO.Text + " and activo = 1", conn)
Dim resultado As SqlClient.SqlDataReader
Try
resultado = sql.ExecuteReader()
Catch ex As Exception
Dim script As String = String.Format("alert('{0}');", ex.Message)
ScriptManager.RegisterStartupScript(Me, GetType(Page), "Información Incorrecta", script, True)
Exit Sub
End Try
If resultado.HasRows Then
Do While resultado.Read()
CMBSINIESTRO.Text = resultado.Item("Siniestro")
TXTSINIESTRO.Text = resultado.Item("Siniestro")
TXTNOMBRE.Text = resultado.Item("Nombre_Asegurado")
TXTPOLIZA.Text = resultado.Item("N_Poliza")
TXTDEDUCIBLE1.Text = resultado.Item("Deducible")
TXTVEHICULO.Text = resultado.Item("Vehiculo")
TXTAÑO.Text = resultado.Item("Año_Vehiculo")
TXTPATENTE.Text = resultado.Item("Patente_Vehiculo")
TXTCOLOR.Text = resultado.Item("Color_Vehiculo")
TXTMOTOR.Text = resultado.Item("N_Motor")
TXTCHASIS.Text = resultado.Item("Chasis_Vehiculo")
TXTDESPACHO.Text = resultado.Item("Nombre_Taller")
TXTDIRECCION1.Text = resultado.Item("Direccion_Taller")
CMBSINIESTRO.Enabled = False
CMBPROVEEDOR.Enabled = False
Grilla1.Focus()
Loop
Else
Dim script As String = "alert('Este Nº de Siniestro no existe');"
ScriptManager.RegisterStartupScript(Me, GetType(Page), "Este Nº de Siniestro no existe", script, True)
CMBSINIESTRO.Focus()
End If
resultado.Close()
Dim valorx As DropDownList
valorx = sender
llenar_grilla(valorx.SelectedValue)
llenar_grilla3(valorx.SelectedValue)
CMBSINIESTRO.Text = valorx.SelectedValue
If TXTORDEN.Text > 1 Then
ds = Session("Tabla")
For Each item As DataRow In ds.Tables("Grilla").Rows
item("N_Cotizacion") = CInt(TXTORDEN.Text)
Next
Grilla.DataBind()
Me.ds.Tables("Grilla").AcceptChanges()
End If
End If
If A = "2" Then
Dim sql As New SqlClient.SqlCommand("Select * From Datos_Renta Where Siniestro = " + CMBSINIESTRO.Text + " and activo = 1", conn)
Dim resultado As SqlClient.SqlDataReader
Try
resultado = sql.ExecuteReader()
Catch ex As Exception
Dim script As String = String.Format("alert('{0}');", ex.Message)
ScriptManager.RegisterStartupScript(Me, GetType(Page), "Información Incorrecta", script, True)
Exit Sub
End Try
If resultado.HasRows Then
Do While resultado.Read()
CMBSINIESTRO.Text = resultado.Item("Siniestro")
TXTSINIESTRO.Text = resultado.Item("Siniestro")
TXTNOMBRE.Text = resultado.Item("Nombre_Asegurado")
TXTPOLIZA.Text = resultado.Item("N_Poliza")
TXTDEDUCIBLE1.Text = resultado.Item("Deducible")
TXTVEHICULO.Text = resultado.Item("Vehiculo")
TXTAÑO.Text = resultado.Item("Año_Vehiculo")
TXTPATENTE.Text = resultado.Item("Patente_Vehiculo")
TXTCOLOR.Text = resultado.Item("Color_Vehiculo")
TXTMOTOR.Text = resultado.Item("N_Motor")
TXTCHASIS.Text = resultado.Item("Chasis_Vehiculo")
TXTDESPACHO.Text = resultado.Item("Nombre_Taller")
TXTDIRECCION1.Text = resultado.Item("Direccion_Taller")
CMBSINIESTRO.Enabled = False
CMBPROVEEDOR.Enabled = True
CMBPROVEEDOR.Focus()
Loop
Else
Dim script As String = "alert('Este Nº de Siniestro no existe');"
ScriptManager.RegisterStartupScript(Me, GetType(Page), "Este Nº de Siniestro no existe", script, True)
CMBSINIESTRO.Focus()
End If
resultado.Close()
Dim valorx As DropDownList
valorx = sender
llenar_grilla(valorx.SelectedValue)
CMBSINIESTRO.Text = valorx.SelectedValue
End If
End Sub
además muestro la subrtuina llenar_grilla
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
Al ejecutarlo me muestra el dato de la columna de 1 a 2 0 a 3 dependiendo el número que se va incrementando la orden de compra, pero al grabar me sigue grabando el número 1 que lo trae por defecto en la tabla de Cotización, además muestro el código que utilizo para gravar la gridview ("Grilla")
Sub Graba1()
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]) VALUES (@p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8)"
Try
sqldel.CommandText = "delete from Orden_Compra1 where (N_Cotizacion=" _
+ ds.Tables("Grilla").Rows(0).Item("N_Cotizacion").T oString.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.ExecuteNonQuery()
End If
Next
End Sub
Ojala que me pudiesen ayudar, ya que los formularios a seguir en el proyecto es lo mismo y estoy una semana atrapado sin poder seguir, no quiero editar este registro en particular, porque imagínense que sea un listado grande de repuestos, desde ya muchas gracias.