adapter update
Publicado por Candelaria (1 intervención) el 07/01/2008 22:18:44
Hola a todos, tengo el siguiente problema: acceso una base de datos usundo el data adapter lo hace bien haciendo la consulta con una tabla , pero si en la consulta agrego otra tabla relacionada a la anterior no me actualiza nada y es asi como lo necesito porque validare la fecha_ing : el codigo es el sig:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sel As String
Dim cnx As New OracleConnection("Data Source=xxx User Id=yyy ;Password=zzzz;")
Dim i, n As Integer
( con este select lo hace bien)
sel = "SELECT COD_EMPRESA,NO_EMP,NO_PLANILLA,SALARIO,ANTIGUEDAD,OTROS_ING,HORAS_EXTRAS,INSS,IR FROM PLANILLA where ((horas_extras > 0) OR (salario + antiguedad + horas_extras + otros_ing) > '37518') and no_planilla = " & TextBox2.Text & " and cod_empresa = " & TextBox3.Text & ""
( con este select me manda un error)
'sel = "SELECT A.COD_EMPRESA,A.NO_EMP,A.NO_PLANILLA,A.SALARIO,A.ANTIGUEDAD,A.OTROS_ING,A.HORAS_EXTRAS,A.INSS,A.IR FROM PLANILLA A,EMPLEADO B WHERE A.COD_EMPRESA='03' AND A.NO_PLANILLA='200707' AND B.FECHA_ING <'01/07/2007' AND A.COD_EMPRESA = B.COD_EMPRESA AND A.CODIGO_DEP = B.CODIGO_DEP AND A.COD_CENT_COSTO = B.COD_CENT_COSTO AND A.COD_CARGO=B.COD_CARGO AND B.NO_EMP=A.NO_EMP"
adp = New OracleDataAdapter(sel, cnx)
Dim oCB As OracleCommandBuilder = New OracleCommandBuilder(adp)
Try
cnx.Open()
dt = New Data.DataTable
adp.Fill(dt)
GridView1.DataSource = dt
GridView1.DataBind()
Catch ex As Exception
Throw ex
Finally
If cnx.State = Data.ConnectionState.Open Then
cnx.Close()
End If
End Try
n = dt.Rows.Count
If n = 0 Then
'no hay registro
Else
For i = 0 To n - 1
'asignar a la variable el valor del registro
nsalario = dt.Rows(i)("salario").ToString
nantiguedad = dt.Rows(i)("ANTIGUEDAD").ToString
notrosingresos = dt.Rows(i)("OTROS_ING").ToString
nhorasext = dt.Rows(i)("HORAS_EXTRAS").ToString
ninss = dt.Rows(i)("INSS").ToString
nir = CStr(ir(CSng(nsalario), CSng(nantiguedad), CSng(notrosingresos), CSng(nhorasext), CSng(ninss)))
dt.Rows(i)("IR") = nir
adp.Update(dt)
dt.AcceptChanges()
Next
End If
dt = New Data.DataTable
adp.Fill(dt)
GridView2.DataSource = dt
GridView2.DataBind()
Label4.Text = "--Listado Actualizado--"
End Sub
El error es el siguiente:
Fallo en la generación de SQL dinámico. No se ha encontrado información sobre la clave y se detiene en el adp.update(dt)
gracias de antemano.
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sel As String
Dim cnx As New OracleConnection("Data Source=xxx User Id=yyy ;Password=zzzz;")
Dim i, n As Integer
( con este select lo hace bien)
sel = "SELECT COD_EMPRESA,NO_EMP,NO_PLANILLA,SALARIO,ANTIGUEDAD,OTROS_ING,HORAS_EXTRAS,INSS,IR FROM PLANILLA where ((horas_extras > 0) OR (salario + antiguedad + horas_extras + otros_ing) > '37518') and no_planilla = " & TextBox2.Text & " and cod_empresa = " & TextBox3.Text & ""
( con este select me manda un error)
'sel = "SELECT A.COD_EMPRESA,A.NO_EMP,A.NO_PLANILLA,A.SALARIO,A.ANTIGUEDAD,A.OTROS_ING,A.HORAS_EXTRAS,A.INSS,A.IR FROM PLANILLA A,EMPLEADO B WHERE A.COD_EMPRESA='03' AND A.NO_PLANILLA='200707' AND B.FECHA_ING <'01/07/2007' AND A.COD_EMPRESA = B.COD_EMPRESA AND A.CODIGO_DEP = B.CODIGO_DEP AND A.COD_CENT_COSTO = B.COD_CENT_COSTO AND A.COD_CARGO=B.COD_CARGO AND B.NO_EMP=A.NO_EMP"
adp = New OracleDataAdapter(sel, cnx)
Dim oCB As OracleCommandBuilder = New OracleCommandBuilder(adp)
Try
cnx.Open()
dt = New Data.DataTable
adp.Fill(dt)
GridView1.DataSource = dt
GridView1.DataBind()
Catch ex As Exception
Throw ex
Finally
If cnx.State = Data.ConnectionState.Open Then
cnx.Close()
End If
End Try
n = dt.Rows.Count
If n = 0 Then
'no hay registro
Else
For i = 0 To n - 1
'asignar a la variable el valor del registro
nsalario = dt.Rows(i)("salario").ToString
nantiguedad = dt.Rows(i)("ANTIGUEDAD").ToString
notrosingresos = dt.Rows(i)("OTROS_ING").ToString
nhorasext = dt.Rows(i)("HORAS_EXTRAS").ToString
ninss = dt.Rows(i)("INSS").ToString
nir = CStr(ir(CSng(nsalario), CSng(nantiguedad), CSng(notrosingresos), CSng(nhorasext), CSng(ninss)))
dt.Rows(i)("IR") = nir
adp.Update(dt)
dt.AcceptChanges()
Next
End If
dt = New Data.DataTable
adp.Fill(dt)
GridView2.DataSource = dt
GridView2.DataBind()
Label4.Text = "--Listado Actualizado--"
End Sub
El error es el siguiente:
Fallo en la generación de SQL dinámico. No se ha encontrado información sobre la clave y se detiene en el adp.update(dt)
gracias de antemano.
Valora esta pregunta


0