FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Duda a la hora de eliminar un registro
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Duda a la hora de eliminar un registro
Posted: Mon Dec 14, 2009 08:26 AM
Hola amigos del foro,

Estoy haciendo una aplicaci贸n Cliente-Servidor y me surge la duda siguiente:

Cuando elimino un registro, dicho registro se sigue mostrando en la pantalla de otro usuario.
Si el otro usuario decide eliminarlo tambien, justo despu茅s de que ya lo hayan aliminado,
el sistema deber铆a devolver un mensaje de error. Sin emvargo, no devuelve ning煤n error.

Simplemente, ejecuta la sentencia y refresca el xbrowse con los cambios.

No entiendo porqu茅 d谩 por buena la sentencia de eliminaci贸n cuando ya no hay nada que eliminar.

El c贸digo que utilizo es este:

Code (fw): Select all Collapse
cStrSql := "DELETE FROM codigo WHERE codigo = "A1"

TRY
   oCnnDb:Execute( cStrSql )
CATCH oError
   ShowError( oError, "89", oCnnDb )
   PostQuitMessage( 0 )
END

oXbr:Refresh()


驴Alguna sugerencia? :-)
Javier,

FWH 8.04 2008
Posts: 401
Joined: Thu Oct 06, 2005 10:15 PM
Re: Duda a la hora de eliminar un registro
Posted: Mon Dec 14, 2009 11:46 AM

Es que MySql para eso no Genera error, lo que tienes que hacer primero es verificar si el codigo existe antes de borrarlo

Saludos,



Pablo Alberto Vidal

/*

------------------------------------------------------

Harbour 3.2.0, Fivewin 17.02, BCC7

------------------------------------------------------

*/
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: Duda a la hora de eliminar un registro
Posted: Mon Dec 14, 2009 11:52 AM

JfaFive

Si utilizas ADO , tienes en pantalla un recordset, o sea, una imagen de cierta cantidad de 'registros" de la DB resultantes del select que genero el Recordset. Parece que TMysql hace lo mismo ( no la uso , asi que solo estoy asumiendolo )

Eso significa que mientras el otro usuario no "refresque" sus datos, seguira viendo los mismos datos que consulto inicialmente ( aunque esto tenga minutos, horas.. dias ? ).

Tus opciones.
Refrescar automaticamente los datos.
Refrescar antes de eliminar.
Modificar tu funcion de borrado para consultar si el registro existe antes del borrado.

Eso..

Espero que te sirva.

Desde Chile
Adolfo

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: Duda a la hora de eliminar un registro
Posted: Mon Dec 14, 2009 12:17 PM
Muchas gracias por vuestra respuesa.

Al final he implementado un c贸digo de comprobaci贸n para verificar
si el registro a eliminar, todavia existe.

Code (fw): Select all Collapse
TRY

   oRsChk := TOleAuto():New( "ADODB.RecordSet" )

   // Definimos el tpo de cursor y de bloqueo.
   oRsChk:CursorLocation := adUseClient      // 3
   oRsChk:lockType          := adLockOptimistic // 3
   oRsChk:cursorType       := adOpenDynamic    // 2

   cStrSqlChk    := "SELECT COUNT(Id) AS num FROM codigos WHERE codigo = 'A1'"
   oRsChk:Source := cStrSqlChk

   oRsChk:activeConnection( oCnnDb )
   oRsChk:Open()

   if oRsChk:Fields( "num" ):Value = 0

      MsgInfo( "Este registro ya ha sido eliminado por otro usuario." )

   else

      ...........

   endif

CATCH oError

   MsgInfo( "No se pudo hacer la comprobaci贸n" )

END

:-)
Javier,

FWH 8.04 2008

Continue the discussion