Tengo un formulario que contiene un TDBNavigator, todas las opciones
funcionan bien con excepción de la opción para eliminar un registro;
me marca el registro como borrado, pero no lo elimina fisicamente de la base
de datos.
Imagino, que como en Clipper habra que poner un PACK en algun sitio:
No sé si esta bien pero he hecho doble click en onClickDelete, y he colocado
alli el PACK pero me dice que la base de datos tiene que estar en modo
exclusivo, utilizo SET EXLUSIVE ON pero no funciona.
¿Como se hace en Xailer?
Gracias y saludos.
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.
Borrar registro con TDBNavigator
-
- Mensajes: 155
- Registrado: Vie Mar 14, 2008 7:25 am
- Ubicación: Almería
Borrar registro con TDBNavigator
Hola,
Tienes puesto el SET DELETED ON al inicio de la aplicación?
Un saludico,
Fredy
In article <428df666$1@ozsrvnegro.ozlan.local>, mcastabaron@cajamar.es
says...
> Tengo un formulario que contiene un TDBNavigator, todas las opciones
> funcionan bien con excepción de la opción para eliminar un registro;
> me marca el registro como borrado, pero no lo elimina fisicamente de la base
> de datos.
> Imagino, que como en Clipper habra que poner un PACK en algun sitio:
> No sé si esta bien pero he hecho doble click en onClickDelete, y he colocado
> alli el PACK pero me dice que la base de datos tiene que estar en modo
> exclusivo, utilizo SET EXLUSIVE ON pero no funciona.
>
> ¿Como se hace en Xailer?
>
> Gracias y saludos.
>
>
>
Tienes puesto el SET DELETED ON al inicio de la aplicación?
Un saludico,
Fredy
In article <428df666$1@ozsrvnegro.ozlan.local>, mcastabaron@cajamar.es
says...
> Tengo un formulario que contiene un TDBNavigator, todas las opciones
> funcionan bien con excepción de la opción para eliminar un registro;
> me marca el registro como borrado, pero no lo elimina fisicamente de la base
> de datos.
> Imagino, que como en Clipper habra que poner un PACK en algun sitio:
> No sé si esta bien pero he hecho doble click en onClickDelete, y he colocado
> alli el PACK pero me dice que la base de datos tiene que estar en modo
> exclusivo, utilizo SET EXLUSIVE ON pero no funciona.
>
> ¿Como se hace en Xailer?
>
> Gracias y saludos.
>
>
>
-
- Mensajes: 155
- Registrado: Vie Mar 14, 2008 7:25 am
- Ubicación: Almería
Borrar registro con TDBNavigator
Hola Fredy,
Cuando pongo el SET DELETED ON al inicio de la aplicación efectivamente se
establece un filtro y desaparece el registro que he seleccionado para
borrar, pero fisicamente el registro no ha desaparecido de la base de datos.
El problema lo tengo cuando se ejecuta el PACK. He escrito lo siguiente:
METHOD DBNavigator1ClickDelete( oSender ) CLASS TForm1
SET EXCLUSIVE ON
PACK
RETURN Nil
y me este mensage de error durante la ejecución:
DBPACK(0)
Error DBFNTX/1023 Exclusive required
Argumentos: ()
Gracias.
"Fredy" <fredy@airtel.net> escribió en el mensaje
news:[email=MPG.1cf81a6e4e83ac58989707@news.ozs.com...]MPG.1cf81a6e4e83ac58989707@news.ozs.com...[/email]
Hola,
Tienes puesto el SET DELETED ON al inicio de la aplicación?
Un saludico,
Fredy
In article <428df666$1@ozsrvnegro.ozlan.local>, mcastabaron@cajamar.es
says...
> Tengo un formulario que contiene un TDBNavigator, todas las opciones
> funcionan bien con excepción de la opción para eliminar un registro;
> me marca el registro como borrado, pero no lo elimina fisicamente de la
base
> de datos.
> Imagino, que como en Clipper habra que poner un PACK en algun sitio:
> No sé si esta bien pero he hecho doble click en onClickDelete, y he
colocado
> alli el PACK pero me dice que la base de datos tiene que estar en modo
> exclusivo, utilizo SET EXLUSIVE ON pero no funciona.
>
> ¿Como se hace en Xailer?
>
> Gracias y saludos.
>
>
>
Cuando pongo el SET DELETED ON al inicio de la aplicación efectivamente se
establece un filtro y desaparece el registro que he seleccionado para
borrar, pero fisicamente el registro no ha desaparecido de la base de datos.
El problema lo tengo cuando se ejecuta el PACK. He escrito lo siguiente:
METHOD DBNavigator1ClickDelete( oSender ) CLASS TForm1
SET EXCLUSIVE ON
PACK
RETURN Nil
y me este mensage de error durante la ejecución:
DBPACK(0)
Error DBFNTX/1023 Exclusive required
Argumentos: ()
Gracias.
"Fredy" <fredy@airtel.net> escribió en el mensaje
news:[email=MPG.1cf81a6e4e83ac58989707@news.ozs.com...]MPG.1cf81a6e4e83ac58989707@news.ozs.com...[/email]
Hola,
Tienes puesto el SET DELETED ON al inicio de la aplicación?
Un saludico,
Fredy
In article <428df666$1@ozsrvnegro.ozlan.local>, mcastabaron@cajamar.es
says...
> Tengo un formulario que contiene un TDBNavigator, todas las opciones
> funcionan bien con excepción de la opción para eliminar un registro;
> me marca el registro como borrado, pero no lo elimina fisicamente de la
base
> de datos.
> Imagino, que como en Clipper habra que poner un PACK en algun sitio:
> No sé si esta bien pero he hecho doble click en onClickDelete, y he
colocado
> alli el PACK pero me dice que la base de datos tiene que estar en modo
> exclusivo, utilizo SET EXLUSIVE ON pero no funciona.
>
> ¿Como se hace en Xailer?
>
> Gracias y saludos.
>
>
>
- ignacio
- Site Admin
- Mensajes: 9467
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Borrar registro con TDBNavigator
Miguel,
Set Exclusive ON sólo funciona con siguientes aperturas de tablas. Las que
están abiertas no les afecta.
No obstante INTENTA siempre utilizar los métodos que el DataSet te ofrece en
vez de utilizar los comandos básicos de Clipper. Así, por ejemplo, Xailer te
ofrece un Pack que funciona incluso sobre tablas abiertas en compartido. De
la documentación:
TDbfDataSet:Pack
Empaqueta la tabla eliminando físicamente todos los registros borrados.
Tipo
Sólo usable con TDataSet abierto
Parámetros
[<lTry>]
Si verdadero, el Pack se intentará realizar pero si no es
posible no se producirá ningún error. Por defecto .T.
Valor Retorno
<lSuccess>
Verdadero si exito
Para empaquetar una tabla es necesario abrir la tabla en modo
exclusivo. Si la tabla estaba abierta en modo exclusivo la operación se
realizará siempre de forma exitosa, sin embargo, cuando la tabla esta
abierta en modo compartido, este método intentará reabrirla en modo
exclusivo para proceder a su empaquetado. Si lTry es .T. y la apertura en
exclusivo no ha sido posible no se producirá ningún error.
Este método guarda el estado completo de la tabla antes del
empaquetamiento para poder dejarla en el mismo estado en que se encontraba
después de su ejecución.
Este método es el equivalente y se basa en la función __dbPack()
(comando PACK) típica de Clipper/[x]Harbour.
"Miguel C." <mcastabaron@cajamar.es> escribió en el mensaje
news:428e06d4$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Hola Fredy,
>
> Cuando pongo el SET DELETED ON al inicio de la aplicación efectivamente se
> establece un filtro y desaparece el registro que he seleccionado para
> borrar, pero fisicamente el registro no ha desaparecido de la base de
> datos.
> El problema lo tengo cuando se ejecuta el PACK. He escrito lo siguiente:
>
> METHOD DBNavigator1ClickDelete( oSender ) CLASS TForm1
> SET EXCLUSIVE ON
> PACK
> RETURN Nil
>
> y me este mensage de error durante la ejecución:
>
> DBPACK(0)
> Error DBFNTX/1023 Exclusive required
> Argumentos: ()
>
> Gracias.
>
>
> "Fredy" <fredy@airtel.net> escribió en el mensaje
> news:[email=MPG.1cf81a6e4e83ac58989707@news.ozs.com...]MPG.1cf81a6e4e83ac58989707@news.ozs.com...[/email]
> Hola,
> Tienes puesto el SET DELETED ON al inicio de la aplicación?
>
> Un saludico,
> Fredy
> In article <428df666$1@ozsrvnegro.ozlan.local>, mcastabaron@cajamar.es
> says...
>> Tengo un formulario que contiene un TDBNavigator, todas las opciones
>> funcionan bien con excepción de la opción para eliminar un registro;
>> me marca el registro como borrado, pero no lo elimina fisicamente de la
> base
>> de datos.
>> Imagino, que como en Clipper habra que poner un PACK en algun sitio:
>> No sé si esta bien pero he hecho doble click en onClickDelete, y he
> colocado
>> alli el PACK pero me dice que la base de datos tiene que estar en modo
>> exclusivo, utilizo SET EXLUSIVE ON pero no funciona.
>>
>> ¿Como se hace en Xailer?
>>
>> Gracias y saludos.
>>
>>
>>
>
>
Set Exclusive ON sólo funciona con siguientes aperturas de tablas. Las que
están abiertas no les afecta.
No obstante INTENTA siempre utilizar los métodos que el DataSet te ofrece en
vez de utilizar los comandos básicos de Clipper. Así, por ejemplo, Xailer te
ofrece un Pack que funciona incluso sobre tablas abiertas en compartido. De
la documentación:
TDbfDataSet:Pack
Empaqueta la tabla eliminando físicamente todos los registros borrados.
Tipo
Sólo usable con TDataSet abierto
Parámetros
[<lTry>]
Si verdadero, el Pack se intentará realizar pero si no es
posible no se producirá ningún error. Por defecto .T.
Valor Retorno
<lSuccess>
Verdadero si exito
Para empaquetar una tabla es necesario abrir la tabla en modo
exclusivo. Si la tabla estaba abierta en modo exclusivo la operación se
realizará siempre de forma exitosa, sin embargo, cuando la tabla esta
abierta en modo compartido, este método intentará reabrirla en modo
exclusivo para proceder a su empaquetado. Si lTry es .T. y la apertura en
exclusivo no ha sido posible no se producirá ningún error.
Este método guarda el estado completo de la tabla antes del
empaquetamiento para poder dejarla en el mismo estado en que se encontraba
después de su ejecución.
Este método es el equivalente y se basa en la función __dbPack()
(comando PACK) típica de Clipper/[x]Harbour.
"Miguel C." <mcastabaron@cajamar.es> escribió en el mensaje
news:428e06d4$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Hola Fredy,
>
> Cuando pongo el SET DELETED ON al inicio de la aplicación efectivamente se
> establece un filtro y desaparece el registro que he seleccionado para
> borrar, pero fisicamente el registro no ha desaparecido de la base de
> datos.
> El problema lo tengo cuando se ejecuta el PACK. He escrito lo siguiente:
>
> METHOD DBNavigator1ClickDelete( oSender ) CLASS TForm1
> SET EXCLUSIVE ON
> PACK
> RETURN Nil
>
> y me este mensage de error durante la ejecución:
>
> DBPACK(0)
> Error DBFNTX/1023 Exclusive required
> Argumentos: ()
>
> Gracias.
>
>
> "Fredy" <fredy@airtel.net> escribió en el mensaje
> news:[email=MPG.1cf81a6e4e83ac58989707@news.ozs.com...]MPG.1cf81a6e4e83ac58989707@news.ozs.com...[/email]
> Hola,
> Tienes puesto el SET DELETED ON al inicio de la aplicación?
>
> Un saludico,
> Fredy
> In article <428df666$1@ozsrvnegro.ozlan.local>, mcastabaron@cajamar.es
> says...
>> Tengo un formulario que contiene un TDBNavigator, todas las opciones
>> funcionan bien con excepción de la opción para eliminar un registro;
>> me marca el registro como borrado, pero no lo elimina fisicamente de la
> base
>> de datos.
>> Imagino, que como en Clipper habra que poner un PACK en algun sitio:
>> No sé si esta bien pero he hecho doble click en onClickDelete, y he
> colocado
>> alli el PACK pero me dice que la base de datos tiene que estar en modo
>> exclusivo, utilizo SET EXLUSIVE ON pero no funciona.
>>
>> ¿Como se hace en Xailer?
>>
>> Gracias y saludos.
>>
>>
>>
>
>
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