Page 1 of 1

No borra el registro...

Posted: Thu Aug 17, 2006 8:32 am
by Elias Torres
Hola a todos. Perdonad por tantas preguntas pero a medida que se va avanzando surgen más dudas....
Resulta que pretendo seleccionar de una lista un registro para borrarlo, pero no lo hace... El código que utilizo es este por si alguien ve algún error...

LOCAL odlg,nKey,oSay,obtn,ofont
Local cSearch := ""
LOCAL nrecno:=0
LOCAL hBmp := ReadBitmap( CurDir() + "\go.bmp" )

HideKeyboard()
DEFINE dialog odlg resource "sele_cli"
redefine LISTBOX oBrw ;
FIELDS hBmp, clientes->Nomcli, clientes->Apecli;
HEADERS "","Nombre", "Apellidos" ID 500 OF oDlg
REDEFINE BUTTON ID 100 OF oDlg ACTION oDlg:End()
REDEFINE BUTTON ID 110 OF oDlg ACTION ( nRecno := Clientes->( Recno() ) , Clientes->(dbDelete()),oDlg:End() )
obrw:bKeyChar = { | nKey, nFlags | Search( nKey, @cSearch ),oBrw:Refresh(),oSay:REFRESH()}
redefine say oSay prompt cSearch id 130 of odlg
ACTIVATE dialog odlg;
on init odlg:setfocus()


Saludos y gracias..

Elías Torres.

Posted: Thu Aug 17, 2006 9:02 am
by Carles
Elias,

Tal como lo haces esta bien, (si lo que quieres es simplemente borrar el registro) pero:

1.- Los registros no se borran fisicamente, sino que quedan marcados para cuando realizes posteriormente un Pack(). Si lo que quieres es que tu sistema no te muestre los registros marcados, debes especificar el comando SET DELETED ON. Esto hara q tu aplicacion ignore los registros que estan marcados.

2.- Puedes testear facilmente poniendo:

Code: Select all

...
SET DELETED ON
...
REDEFINE BUTTON ID 110 OF oDlg ACTION ( Clientes->(dbDelete()), oBrw:Refresh() ) 
...

Posted: Fri Aug 18, 2006 8:30 am
by Elias Torres
Gracias Carles...

Efectivamente necesitaba poner el Set Deleted on para que no me mostrara los registros borrados.. (que despiste!) :lol:

Saludos.

Elías Torres