Problema con dataset:Update()
Publicado: Jue May 27, 2010 11:39 am
Hola,
Tengo un problema con el Update de AdoDataset que no se como solucionar.
Os expongo mi caso.
Sobre una conexión ADO creo un Dataset para añadir un registro. El
SqlQuery se crea sobre un select tipo 'SELECT * FROM miTabla where 1 =
0' para obtener un recordset vacío sobre el cual insertar nuevos registros.
En el formulario tengo distribuidos varios datacontrols y el botón
'añadir' y el botón 'graba cambios'
El usuario hace clic sobre el botón 'Añadir'
el programa hace un ::oSqlQuery1:Addnew() (se comprueba si addnew
devuelve .t.)
El usuario edita los diferentes campos (dtacontrols) y hace click en el
botón 'graba cambios'.
En ese botón lo que se hace es:
IF !::oSqlQuery1:Update()
::oMiPrimerDataControl:SetFocus()
RETURN .F.
ENDIF
El caso es que cuando el update del sqlquery devuelve un .F. porque, por
ejemplo, se incumple algún tipo de restricción, me encuentro con que los
valores introducidos en los datacontrols han desaparecido y han quedado
en blanco. El usuario tiene que volver a introducir esos valores otra vez.
¿Habría alguna forma de que, ante un error devuelto por ::update pueda
continuar con la edición con los datos introducidos? Dicho de otra
manera, que no se pierda la información introducida por el usuario por
que, por ejemplo, se incumpla una restricción de PK o de FK o NULL (dado
que son situaciones que el Sql informa y se pueden corregir).
Saludos y gracias por vuestra ayuda.
José Luis Capel
Tengo un problema con el Update de AdoDataset que no se como solucionar.
Os expongo mi caso.
Sobre una conexión ADO creo un Dataset para añadir un registro. El
SqlQuery se crea sobre un select tipo 'SELECT * FROM miTabla where 1 =
0' para obtener un recordset vacío sobre el cual insertar nuevos registros.
En el formulario tengo distribuidos varios datacontrols y el botón
'añadir' y el botón 'graba cambios'
El usuario hace clic sobre el botón 'Añadir'
el programa hace un ::oSqlQuery1:Addnew() (se comprueba si addnew
devuelve .t.)
El usuario edita los diferentes campos (dtacontrols) y hace click en el
botón 'graba cambios'.
En ese botón lo que se hace es:
IF !::oSqlQuery1:Update()
::oMiPrimerDataControl:SetFocus()
RETURN .F.
ENDIF
El caso es que cuando el update del sqlquery devuelve un .F. porque, por
ejemplo, se incumple algún tipo de restricción, me encuentro con que los
valores introducidos en los datacontrols han desaparecido y han quedado
en blanco. El usuario tiene que volver a introducir esos valores otra vez.
¿Habría alguna forma de que, ante un error devuelto por ::update pueda
continuar con la edición con los datos introducidos? Dicho de otra
manera, que no se pierda la información introducida por el usuario por
que, por ejemplo, se incumpla una restricción de PK o de FK o NULL (dado
que son situaciones que el Sql informa y se pueden corregir).
Saludos y gracias por vuestra ayuda.
José Luis Capel