Valores Nulos en Base de Datos Al Actualizar

Buen da colegas, vengo a ustedes con un problema Maysculo.
En una aplicacin capturo registros, de esos registros cambian algunos datos.
Pero al guardar los nuevos datos,(Actualizar la informacin), Inserta todos los datos, incluso los que no se modificaron a Nulos.
No veo por donde atacar el problema, ojalan y alguien aqu pueda ayudarme con eso.

Gracias de Antemano.

Hola Santiago,

Que base de datos trabajas…? Como ests haciendo la actualizacin …? Te genera algn error capturando el db.error ?

gracias por responder Elvis, uso Oracle y con el DB.error no me genera error alguno, simplemente los graba(Actualiza) como Nulos…

Hola Santiago,

Porque no cambias el mtodo de actualizacin con otro enfoque ? Por ejemplo, prueba adaptar este concepto.

--------------------------------------------------------------->

dim db as new OracleDatabase
dim rs as RecordSet
dim sPar(1) as String

'oracle pars
db.Host=“tuhost”
db.UserName=“tuusuario”
db.Password=“tupass”

'vars
sPar(0)=form1.textfield1.text
sPar(1)=form1.textfield2.text

rs=db.SQLSelect(“select field1,field2 from table1 where city=zzz”)

do until rs.EOF

db.SQLExecute("update table1 set "+ rs.Field(1).Name +"=" + sPar(0) + "," +  rs.Field(2).Name+ "=" + sPar(1) + ")"

rs.MoveNext

loop

db.Commit

--------------------------------------------------------------->

Muchas gracias, mira, yo lo hago de la siguiente manera:

[code] dim txtid, txtcliente, txtentrevistador As String
txtid=Trim(TXT_ID.Text)
txtcliente=Trim(TXT_CLIENTE.Text)
txtentrevistador=Trim(TXT_ENTREVISTADOR.Text)
Dim EDITA As RecordSet
EDITA=XE.SQLSelect(“SELECT * FROM SAIT WHERE CLAVE_ASIG=’”+txtid+"’ AND CLIENTE=’"+txtcliente+"’ AND ENTREVISTADOR=’"+txtentrevistador+"’")

EDITA.Edit()

EDITA.Field(“SOLICITADO_POR”).StringValue=Trim(P1_SOLICITADO_POR.Text)
EDITA.Field(“TIPO_SERVICIO”).StringValue=Trim(P1_TIPO_SERVICIO.Text)
EDITA.Field(“TIEMPO_PLANTA”).StringValue=Trim(P1_TIEMPO_EMERSON.Text)
EDITA.Field(“NOMBRE”).StringValue=Trim(P1_NOMBRE.Text)
EDITA.Field(“EDAD”).StringValue=Trim(P1_EDAD.Text)
EDITA.Field(“SEXO”).StringValue=Trim(P1_SEXO.Text)
EDITA.Field(“FECHA_NACIMIENTO”).StringValue=Trim(P1_FECHA_NACIMIENTO.Text)
EDITA.Field(“ESTADO_CIVIL”).StringValue=Trim(P1_ESTADO_CIVIL.Text)
EDITA.Field(“TIEMPO”).StringValue=Trim(P1_TIEMPO.Text)
EDITA.Field(“HIJOS”).StringValue=Trim(P1_HIJOS.Text)
EDITA.Field(“NUMERO_PERSONAS_DEPENDEN”).StringValue=Trim(P1_PERSONAS.Text)
EDITA.Field(“LUGAR_NACIMIENTO”).StringValue=Trim(P1_LUGAR_NACIMIENTO.Text)
EDITA.Field(“NACIONALIDAD”).StringValue=Trim(P1_NACIONALIDAD.Text)
EDITA.Field(“CELULAR”).StringValue=Trim(P1_CELULAR.Text)
EDITA.Field(“CORREO_ELECTRONICO”).StringValue=Trim(P1_CORREO.Text)
EDITA.Field(“FACEBOOK_TWITTER”).StringValue=Trim(P1_FACEBOOK.Text)
EDITA.Field(“CALLE_NUMERO”).StringValue=Trim(P1_CALLE.Text)
EDITA.Field(“ENTRE_CALLES”).StringValue=Trim(P1_ENTRE_CALLES.Text)
EDITA.Field(“COLONIA”).StringValue=Trim(P1_COLONIA.Text)
EDITA.Field(“LOCALIDAD_MUNICIPIO”).StringValue=Trim(P1_LOCALIDAD.Text)
EDITA.Field(“CODIGO_POSTAL”).StringValue=Trim(P1_CP.Text)
EDITA.Field(“ANTIGUEDAD”).StringValue=Trim(P1_ANTIGUEDAD.Text)
EDITA.Field(“COMENTARIOS_SECCION_I”).StringValue=Trim(P1_COMENTARIOS.Text)

//Aqui me kede :slight_smile:
EDITA.Update

XE.Commit

EDITA.Close[/code]

Estare mal?

Santiago,

Yo sugiero que antes del Edit valides algún posible error en XE
-------------------------------------------------------------------------------------------->
EDITA.Edit

If Not XE.Error Then

 EDITA.Field("CELULAR").StringValue = Trim(P1_CELULAR.Text)
 EDITA.Update

 If XE.Error Then
   MsgBox("XE Error: " + XE.ErrorMessage)
 End If

Else
MsgBox("XE Error: " + XE.ErrorMessage)
End If
-------------------------------------------------------------------------------------------->

También elimina el XE.Commit y pruebas. Normalmente el Commit va combinado con SQLExecute y no lo estás usando.

Ok, mire, hice eso de editar 1 a 2 campos y funciona bien, pero al meter mas campo, sea cuales sean, me empezaba a insertar nulos… Ya no se que hacer

El error lo implemente, pero no marca error alguno con la base de datos

Santiago,

Haz una prueba pequea con el primer cdigo que te suger utilizando UPDATE directamente en una sentencia SQL y el db.commit

Ok, gracias… deja lo intento. muchas gracias

No arroja algun error ni Inserta, esta vez no hace cambio alguno… el DB.error no me da alguna falla

Hola, utilice PreparedSQLStatement en vez de Recordset.Edit.

Muchas gracias a todos por sus aportes, pero ya di con el proble, necesitaba un indice al tabla, como no lo necesito en ste proyecto se me hizo facil omitirla, pero ya esta funcionando bien al agregarle el indice… mucha gracias a todos por su ayuda