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.......
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
DataSet Edit() y Update()
-
- Mensajes: 114
- Registrado: Dom Dic 18, 2005 7:50 pm
- ignacio
- Site Admin
- Mensajes: 9457
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
DataSet Edit() y Update()
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.......
>
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.......
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com