Hola.
Uso un TDbfDataSet para abrir la tabla.
Tengo un formulario con TDBBrowse, un TDBEdit por cada campo y un
TDBNavigator.
Quiero ir marcando varios registros para borrar al pulsar "-" (esto funciona
bien)
Al salir quiero borrar o recuperar todos los registros marcados con PACK O
RECALL ALL. Pero no son aplicables sobre TDbfDataSet o TDBBrowse.
Como hago ?
METHOD DBNavigator1ClickDelete( oSender ) CLASS TFormABMAfiliados
Local aCuenta := {}
Local cTexto := "No se puede borrar el afiliado"
cTexto += Chr(13)+"Posee datos en la Cuenta Corriente"
cTexto += Chr(13)+"Realice una depuración primero"
WITH OBJECT ::oDbfAfiliados
If :Deleted()
If MsgCancelOk("Confirma la recuperación del afiliado ?","Borrar
afiliado")
:Recall() // recupera cualquiera no en el que estoy parado
::nBorrados--
EndIf
Else
If MsgCancelOk("Está seguro de borrar el afiliado?","Borrar
afiliado")
aCuenta := TraerCta(:NUMERO, :ADHERENTE)
If Len( aCuenta) != 0
MsgStop(cTexto,"Error")
Else
:Delete()
::nBorrados++
EndIf
EndIf
EndIf
END
RETURN Nil
METHOD BtnSalirClick( oSender ) CLASS TFormABMAfiliados
Local lBorrar
If ::nBorrados > 0
lBorrar := MsgNoYes("Confirma la eliminación de los afiliados?","Borrar
definitivamente")
WITH OBJECT ::oDBBrowse1 // ::oDbfAfiliados (TDBFDataSet)
if :FilLock() // da error
If lBorrar
:Pack()
Else
:Recall() // si anduviera recuperaria solo uno, y yo quiero
todos los marcados. Como le indico ALL?
EndIf
Else
MsgStop("No se pudo borrar o recuperar afiliados marcados!","Error
de bloqueo")
EndIf
END
EndIf
dbCloseAll()
RETURN Nil
He probado con todo, no puedo avanzar en cosas importantes del sistema por
estar tratando de resolver un simple ABM.
La otra que me queda es usar un formulario para mostrar los datos y otro
para las ediciones. Como lo hago con clipper, usando USE...
DETELE...PACK...RECALL ALL...etc. Pero me gustaria aprender a hacerlo sobre
un TDbfDataSet.
Gracias
Juan Castañeda
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 registros esando TdbfDataSet
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Borrar registros esando TdbfDataSet
Me olvide de decir que lReUseDel del TdbfDataSet esta en .F.
-
- Mensajes: 180
- Registrado: Lun Sep 15, 2008 2:53 pm
Borrar registros esando TdbfDataSet
Solucionado.
Si ven que hay otro metodo mejor. Por favor diganmelo.
Gracias
METHOD BtnSalirClick( oSender ) CLASS TFormABMAfiliados
Local lBorrar
If ::nBorrados > 0
lBorrar := MsgNoYes("Confirma el borrado definitivo de los afiliados
marcados?","Borrar")
WITH OBJECT ::oDbfAfiliados
:lOpen := .F.
dbCloseAll()
:lShared := .F.
:lOpen := .T.
If :lOpen
Select("AFILIADO")
If lBorrar
PACK
Else
RECALL ALL
EndIf
Else
MsgStop("No se pudo bloquear el archivo de afiliados!","Error")
Endif
END
EndIf
::Close()
RETURN Nil
Si ven que hay otro metodo mejor. Por favor diganmelo.
Gracias
METHOD BtnSalirClick( oSender ) CLASS TFormABMAfiliados
Local lBorrar
If ::nBorrados > 0
lBorrar := MsgNoYes("Confirma el borrado definitivo de los afiliados
marcados?","Borrar")
WITH OBJECT ::oDbfAfiliados
:lOpen := .F.
dbCloseAll()
:lShared := .F.
:lOpen := .T.
If :lOpen
Select("AFILIADO")
If lBorrar
PACK
Else
RECALL ALL
EndIf
Else
MsgStop("No se pudo bloquear el archivo de afiliados!","Error")
Endif
END
EndIf
::Close()
RETURN Nil
- ignacio
- Site Admin
- Mensajes: 9440
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Borrar registros esando TdbfDataSet
Juan,
El metodo Recall sólo actua sobre el registro en curso. Para realizar un
Pack es necesario abrir la tabla en modo exclusivo. El método Pack lo
intenta (ver parametro lTry), pero es posible que falle.
Saludos
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer/Xailer team]
http://www.xailer.com
http://www.xailer.info
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje de
noticias:[email=4b59a89c@svctag-j7w3v3j....]4b59a89c@svctag-j7w3v3j....[/email]
> Hola.
> Uso un TDbfDataSet para abrir la tabla.
> Tengo un formulario con TDBBrowse, un TDBEdit por cada campo y un
> TDBNavigator.
> Quiero ir marcando varios registros para borrar al pulsar "-" (esto
> funciona bien)
> Al salir quiero borrar o recuperar todos los registros marcados con PACK O
> RECALL ALL. Pero no son aplicables sobre TDbfDataSet o TDBBrowse.
>
> Como hago ?
>
> METHOD DBNavigator1ClickDelete( oSender ) CLASS TFormABMAfiliados
> Local aCuenta := {}
> Local cTexto := "No se puede borrar el afiliado"
> cTexto += Chr(13)+"Posee datos en la Cuenta Corriente"
> cTexto += Chr(13)+"Realice una depuración primero"
>
> WITH OBJECT ::oDbfAfiliados
> If :Deleted()
> If MsgCancelOk("Confirma la recuperación del afiliado ?","Borrar
> afiliado")
> :Recall() // recupera cualquiera no en el que estoy parado
> ::nBorrados--
> EndIf
> Else
> If MsgCancelOk("Está seguro de borrar el afiliado?","Borrar
> afiliado")
> aCuenta := TraerCta(:NUMERO, :ADHERENTE)
> If Len( aCuenta) != 0
> MsgStop(cTexto,"Error")
> Else
> :Delete()
> ::nBorrados++
> EndIf
> EndIf
> EndIf
> END
> RETURN Nil
>
>
> METHOD BtnSalirClick( oSender ) CLASS TFormABMAfiliados
> Local lBorrar
>
> If ::nBorrados > 0
> lBorrar := MsgNoYes("Confirma la eliminación de los afiliados?","Borrar
> definitivamente")
> WITH OBJECT ::oDBBrowse1 // ::oDbfAfiliados (TDBFDataSet)
> if :FilLock() // da error
> If lBorrar
> :Pack()
> Else
> :Recall() // si anduviera recuperaria solo uno, y yo quiero
> todos los marcados. Como le indico ALL?
> EndIf
> Else
> MsgStop("No se pudo borrar o recuperar afiliados marcados!","Error
> de bloqueo")
> EndIf
> END
> EndIf
> dbCloseAll()
> RETURN Nil
>
> He probado con todo, no puedo avanzar en cosas importantes del sistema por
> estar tratando de resolver un simple ABM.
>
> La otra que me queda es usar un formulario para mostrar los datos y otro
> para las ediciones. Como lo hago con clipper, usando USE...
> DETELE...PACK...RECALL ALL...etc. Pero me gustaria aprender a hacerlo
> sobre un TDbfDataSet.
> Gracias
>
> Juan Castañeda
>
>
El metodo Recall sólo actua sobre el registro en curso. Para realizar un
Pack es necesario abrir la tabla en modo exclusivo. El método Pack lo
intenta (ver parametro lTry), pero es posible que falle.
Saludos
--
Ignacio Ortiz de Zúñiga
[Equipo de Xailer/Xailer team]
http://www.xailer.com
http://www.xailer.info
"Juan Castañeda" <jrcsistemas@speedy.com.ar> escribió en el mensaje de
noticias:[email=4b59a89c@svctag-j7w3v3j....]4b59a89c@svctag-j7w3v3j....[/email]
> Hola.
> Uso un TDbfDataSet para abrir la tabla.
> Tengo un formulario con TDBBrowse, un TDBEdit por cada campo y un
> TDBNavigator.
> Quiero ir marcando varios registros para borrar al pulsar "-" (esto
> funciona bien)
> Al salir quiero borrar o recuperar todos los registros marcados con PACK O
> RECALL ALL. Pero no son aplicables sobre TDbfDataSet o TDBBrowse.
>
> Como hago ?
>
> METHOD DBNavigator1ClickDelete( oSender ) CLASS TFormABMAfiliados
> Local aCuenta := {}
> Local cTexto := "No se puede borrar el afiliado"
> cTexto += Chr(13)+"Posee datos en la Cuenta Corriente"
> cTexto += Chr(13)+"Realice una depuración primero"
>
> WITH OBJECT ::oDbfAfiliados
> If :Deleted()
> If MsgCancelOk("Confirma la recuperación del afiliado ?","Borrar
> afiliado")
> :Recall() // recupera cualquiera no en el que estoy parado
> ::nBorrados--
> EndIf
> Else
> If MsgCancelOk("Está seguro de borrar el afiliado?","Borrar
> afiliado")
> aCuenta := TraerCta(:NUMERO, :ADHERENTE)
> If Len( aCuenta) != 0
> MsgStop(cTexto,"Error")
> Else
> :Delete()
> ::nBorrados++
> EndIf
> EndIf
> EndIf
> END
> RETURN Nil
>
>
> METHOD BtnSalirClick( oSender ) CLASS TFormABMAfiliados
> Local lBorrar
>
> If ::nBorrados > 0
> lBorrar := MsgNoYes("Confirma la eliminación de los afiliados?","Borrar
> definitivamente")
> WITH OBJECT ::oDBBrowse1 // ::oDbfAfiliados (TDBFDataSet)
> if :FilLock() // da error
> If lBorrar
> :Pack()
> Else
> :Recall() // si anduviera recuperaria solo uno, y yo quiero
> todos los marcados. Como le indico ALL?
> EndIf
> Else
> MsgStop("No se pudo borrar o recuperar afiliados marcados!","Error
> de bloqueo")
> EndIf
> END
> EndIf
> dbCloseAll()
> RETURN Nil
>
> He probado con todo, no puedo avanzar en cosas importantes del sistema por
> estar tratando de resolver un simple ABM.
>
> La otra que me queda es usar un formulario para mostrar los datos y otro
> para las ediciones. Como lo hago con clipper, usando USE...
> DETELE...PACK...RECALL ALL...etc. Pero me gustaria aprender a hacerlo
> sobre un TDbfDataSet.
> Gracias
>
> Juan Castañeda
>
>
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