Página 1 de 1

DataSet Edit() y Update()

Publicado: Lun May 07, 2007 9:50 pm
por Martin del Angel[1]
Hola a Todos !
En los Ejemplos de DATACONTROLSDBFData2 se utilizan los Datacontrols
para la manipulación directa de los Campos/Columnas de una Tabla.
en este ejemplose utiliza un DBF y cuando entro a Editar los Campos, los
edito todos y lo hace bien.
Ahora bien, me he conectado a una tabla de firdbird usando ADODATASOURCE Y
TSQLQUERY sin Problemas
hice un pequeño ejemplo para dar Altas, Bajas y Modificar y he tenido
problemas.
es una tabla de 3 columnas y en una forma utilizo 3 controles TDBMaskedit
ligados al DataSet y DataField.
Cuando Intento Editar los Campos, Si cambio el valor de los tres campos sale
esto , lo cual no pasa en los Ejemplos de DATACONTROLSDBFData2
este el codigo para editar
METHOD Editar( oSender ) CLASS TForm1
LOCAL oFrm
WITH OBJECT oFrm := TForm2():New( Self )
:cText := "Modificar"
::oSQLPEDIMENTOS:Edit()
:ShowModal()
if :nModalResult == mrOK
::oSQLPEDIMENTOS:Update() <----------------------------
AQUI SALE EL ERROR
::oDBBrowse:RefreshCurrent()
else
::oSQLPEDIMENTOS:Cancel()
endif
:End()
END WITH
RETURN Nil
ESTE ES EL ERROR
Si se utilza Comandos SQL tendria que hacer algo parecido UPDATE TABLA SET
CAMPO1=VALOR1,CAMPO2=VALOR2,CAMPO3=VALOR3 WHERE CAMPOn=VALORn
ADODB:RecordSet:Update()
Row cannot be located for updating. some values may have been changed since
it was last read.[#32]
on Procedure: TFORM1:EDITAR line:117
Gracias.......

DataSet Edit() y Update()

Publicado: Mar May 08, 2007 9:31 am
por ignacio
Martin,
El error lo reporta directamente FireBird y posiblemente el problema está en
que la tabla no tiene clave primaria o no has incluido en el SELECT los
campos que la componen y entonces al motor le falta información para hacer
la actualización al no poder asegurar la unicidad de la operación, es decir,
que sólo afecte a una fila de la tabla.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Martin del Angel" <martindelangel@msn.com> escribió en el mensaje
news:463f82d0$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hola a Todos !
>
> En los Ejemplos de DATACONTROLSDBFData2 se utilizan los Datacontrols
> para la manipulación directa de los Campos/Columnas de una Tabla.
>
> en este ejemplose utiliza un DBF y cuando entro a Editar los Campos, los
> edito todos y lo hace bien.
>
>
> Ahora bien, me he conectado a una tabla de firdbird usando ADODATASOURCE Y
> TSQLQUERY sin Problemas
> hice un pequeño ejemplo para dar Altas, Bajas y Modificar y he tenido
> problemas.
>
> es una tabla de 3 columnas y en una forma utilizo 3 controles TDBMaskedit
> ligados al DataSet y DataField.
> Cuando Intento Editar los Campos, Si cambio el valor de los tres campos
> sale esto , lo cual no pasa en los Ejemplos de DATACONTROLSDBFData2
>
> este el codigo para editar
>
> METHOD Editar( oSender ) CLASS TForm1
> LOCAL oFrm
> WITH OBJECT oFrm := TForm2():New( Self )
> :cText := "Modificar"
> ::oSQLPEDIMENTOS:Edit()
> :ShowModal()
> if :nModalResult == mrOK
> ::oSQLPEDIMENTOS:Update() <----------------------------
> AQUI SALE EL ERROR
> ::oDBBrowse:RefreshCurrent()
> else
> ::oSQLPEDIMENTOS:Cancel()
> endif
> :End()
> END WITH
> RETURN Nil
>
> ESTE ES EL ERROR
>
> Si se utilza Comandos SQL tendria que hacer algo parecido UPDATE TABLA
> SET CAMPO1=VALOR1,CAMPO2=VALOR2,CAMPO3=VALOR3 WHERE CAMPOn=VALORn
>
>
> ADODB:RecordSet:Update()
>
> Row cannot be located for updating. some values may have been changed
> since it was last read.[#32]
>
> on Procedure: TFORM1:EDITAR line:117
>
>
>
>
> Gracias.......
>