Actualizar un solo registro.

07/02/2005 - 13:07 por Miuca | Informe spam
Hola a todos, esto comenzando con .Net después de muchos años con Vb y Ado.
Me encuentro en un pequeño Mar de confusiones pues en esta rutina que os
expongo simplemente quiero modificar los valores de un registro con un
dataadater.
No se porque falla pero el error que da es el siguiente:

?dtAdap.UpdateCommand
{System.Data.OleDb.OleDbCommand}
CommandText: "UPDATE EMPLEADO SET CODIGO EMPLERADO = ? , APELLIDOS y
nombre = ? , CENTRO = ? WHERE ( (CODIGO EMPLERADO = ?) AND ((? = 1 AND
APELLIDOS y nombre IS NULL) OR (APELLIDOS y nombre = ?)) AND ((? = 1 AND
CENTRO IS NULL) OR (CENTRO = ?)) )"
CommandTimeout: 30
CommandType: Text
Connection: {System.Data.OleDb.OleDbConnection}
Container: Nothing
DesignTimeVisible: True
Parameters: {System.Data.OleDb.OleDbParameterCollection}
Site: Nothing
Transaction: Nothing
UpdatedRowSource: None
?ex.Message
"Error de sintaxis en la instrucción UPDATE."

El código que uso es este:
Private Sub Actualiza()
Dim dtSet As New System.Data.DataSet, dtAdap As New
OleDb.OleDbDataAdapter
Dim s$

s = "SELECT * FROM EMPLEADOS WHERE [CODIGO_EMPLEADO & ] ='" &
Me.TxtCodigo.Tag.ToString & "'"
dtAdap.SelectCommand = New OleDb.OleDbCommand(s, cnApp)
dtAdap.Fill(dtSet, "EMPLEADOS")

dtSet.Tables(0).Rows(0).BeginEdit()
dtSet.Tables(0).Rows(0)(tt.emp.CODIGO_EMPLEADO) = Me.TxtCodigo.Text
dtSet.Tables(0).Rows(0)(tt.emp.APELLIDOS_Y_NOMBRE) = Me.TxtDatos.Text
dtSet.Tables(0).Rows(0)(tt.emp.CENTRO) = Me.ComboCentros.Text
dtSet.Tables(0).Rows(0).EndEdit()
dtAdap.UpdateCommand = New
OleDb.OleDbCommandBuilder(dtAdap).GetUpdateCommand
Try
dtAdap.Update(dtSet, "EMPLEADOS") 'Aqui me da error
dtSet.AcceptChanges()
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
dtAdap.Dispose()
End Sub

Que estoy haciendo mal?
Gracias por vuestra atencioón.
Miuca :-)

Preguntas similare

Leer las respuestas

#1 Miuca
07/02/2005 - 15:27 | Informe spam
Lo he encontrado . a ver que os parece...
Miuca:-)

Dim cmdCom As New OleDb.OleDbCommand
cmdCom.Connection = Jd.cnApp
s = "UPDATE EMPLEADO SET [CODIGO EMPLERADO] = @P1 , [APELLIDOS y
nombre] = @P2 , CENTRO = @P3 WHERE [CODIGO EMPLERADO] ='" &
Me.TxtCodigo.Tag.ToString & "'"
cmdCom.CommandText = s
cmdCom.Parameters.Add("@P1", OleDbType.VarChar)
cmdCom.Parameters.Add("@P2", OleDbType.VarChar)
cmdCom.Parameters.Add("@P3", OleDbType.VarChar)
cmdCom.Parameters("@P1").Value = Me.TxtCodigo.Text
cmdCom.Parameters("@P2").Value = Me.TxtDatos.Text
cmdCom.Parameters("@P3").Value = Me.ComboCentros.Text
Try
cmdCom.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Stop
End Try


"Miuca" escribió:

Hola a todos, esto comenzando con .Net después de muchos años con Vb y Ado.
Me encuentro en un pequeño Mar de confusiones pues en esta rutina que os
expongo simplemente quiero modificar los valores de un registro con un
dataadater.
No se porque falla pero el error que da es el siguiente:

?dtAdap.UpdateCommand
{System.Data.OleDb.OleDbCommand}
CommandText: "UPDATE EMPLEADO SET CODIGO EMPLERADO = ? , APELLIDOS y
nombre = ? , CENTRO = ? WHERE ( (CODIGO EMPLERADO = ?) AND ((? = 1 AND
APELLIDOS y nombre IS NULL) OR (APELLIDOS y nombre = ?)) AND ((? = 1 AND
CENTRO IS NULL) OR (CENTRO = ?)) )"
CommandTimeout: 30
CommandType: Text
Connection: {System.Data.OleDb.OleDbConnection}
Container: Nothing
DesignTimeVisible: True
Parameters: {System.Data.OleDb.OleDbParameterCollection}
Site: Nothing
Transaction: Nothing
UpdatedRowSource: None
?ex.Message
"Error de sintaxis en la instrucción UPDATE."

El código que uso es este:
Private Sub Actualiza()
Dim dtSet As New System.Data.DataSet, dtAdap As New
OleDb.OleDbDataAdapter
Dim s$

s = "SELECT * FROM EMPLEADOS WHERE [CODIGO_EMPLEADO & ] ='" &
Me.TxtCodigo.Tag.ToString & "'"
dtAdap.SelectCommand = New OleDb.OleDbCommand(s, cnApp)
dtAdap.Fill(dtSet, "EMPLEADOS")

dtSet.Tables(0).Rows(0).BeginEdit()
dtSet.Tables(0).Rows(0)(tt.emp.CODIGO_EMPLEADO) = Me.TxtCodigo.Text
dtSet.Tables(0).Rows(0)(tt.emp.APELLIDOS_Y_NOMBRE) = Me.TxtDatos.Text
dtSet.Tables(0).Rows(0)(tt.emp.CENTRO) = Me.ComboCentros.Text
dtSet.Tables(0).Rows(0).EndEdit()
dtAdap.UpdateCommand = New
OleDb.OleDbCommandBuilder(dtAdap).GetUpdateCommand
Try
dtAdap.Update(dtSet, "EMPLEADOS") 'Aqui me da error
dtSet.AcceptChanges()
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
dtAdap.Dispose()
End Sub

Que estoy haciendo mal?
Gracias por vuestra atencioón.
Miuca :-)

Respuesta Responder a este mensaje
#2 Miuca
07/02/2005 - 15:29 | Informe spam
Ya lo he encontrado... a ver que os parece.
Miuca:-)

Dim cmdCom As New OleDb.OleDbCommand
cmdCom.Connection = Jd.cnApp
s = "UPDATE EMPLEADO SET [CODIGO EMPLERADO] = @P1 , [APELLIDOS y
nombre] = @P2 , CENTRO = @P3 WHERE [CODIGO EMPLERADO] ='" &
Me.TxtCodigo.Tag.ToString & "'"
cmdCom.CommandText = s
cmdCom.Parameters.Add("@P1", OleDbType.VarChar)
cmdCom.Parameters.Add("@P2", OleDbType.VarChar)
cmdCom.Parameters.Add("@P3", OleDbType.VarChar)
cmdCom.Parameters("@P1").Value = Me.TxtCodigo.Text
cmdCom.Parameters("@P2").Value = Me.TxtDatos.Text
cmdCom.Parameters("@P3").Value = Me.ComboCentros.Text
Try
cmdCom.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Stop
End Try


"Miuca" escribió:

Hola a todos, esto comenzando con .Net después de muchos años con Vb y Ado.
Me encuentro en un pequeño Mar de confusiones pues en esta rutina que os
expongo simplemente quiero modificar los valores de un registro con un
dataadater.
No se porque falla pero el error que da es el siguiente:

?dtAdap.UpdateCommand
{System.Data.OleDb.OleDbCommand}
CommandText: "UPDATE EMPLEADO SET CODIGO EMPLERADO = ? , APELLIDOS y
nombre = ? , CENTRO = ? WHERE ( (CODIGO EMPLERADO = ?) AND ((? = 1 AND
APELLIDOS y nombre IS NULL) OR (APELLIDOS y nombre = ?)) AND ((? = 1 AND
CENTRO IS NULL) OR (CENTRO = ?)) )"
CommandTimeout: 30
CommandType: Text
Connection: {System.Data.OleDb.OleDbConnection}
Container: Nothing
DesignTimeVisible: True
Parameters: {System.Data.OleDb.OleDbParameterCollection}
Site: Nothing
Transaction: Nothing
UpdatedRowSource: None
?ex.Message
"Error de sintaxis en la instrucción UPDATE."

El código que uso es este:
Private Sub Actualiza()
Dim dtSet As New System.Data.DataSet, dtAdap As New
OleDb.OleDbDataAdapter
Dim s$

s = "SELECT * FROM EMPLEADOS WHERE [CODIGO_EMPLEADO & ] ='" &
Me.TxtCodigo.Tag.ToString & "'"
dtAdap.SelectCommand = New OleDb.OleDbCommand(s, cnApp)
dtAdap.Fill(dtSet, "EMPLEADOS")

dtSet.Tables(0).Rows(0).BeginEdit()
dtSet.Tables(0).Rows(0)(tt.emp.CODIGO_EMPLEADO) = Me.TxtCodigo.Text
dtSet.Tables(0).Rows(0)(tt.emp.APELLIDOS_Y_NOMBRE) = Me.TxtDatos.Text
dtSet.Tables(0).Rows(0)(tt.emp.CENTRO) = Me.ComboCentros.Text
dtSet.Tables(0).Rows(0).EndEdit()
dtAdap.UpdateCommand = New
OleDb.OleDbCommandBuilder(dtAdap).GetUpdateCommand
Try
dtAdap.Update(dtSet, "EMPLEADOS") 'Aqui me da error
dtSet.AcceptChanges()
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
dtAdap.Dispose()
End Sub

Que estoy haciendo mal?
Gracias por vuestra atencioón.
Miuca :-)

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida