Fecha actual Vie May 17, 2024 9:10 pm

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 6 mensajes ] 
Autor Mensaje
NotaPublicado: Mié Jul 05, 2006 6:37 am 

Registrado: Vie Oct 07, 2005 6:15 pm
Mensajes: 72
Bruno

Después de la última actualización de C3 el comportamiento del driver CDX parece haber cambiado.

Con la actualiuzación previa con solo utilizar la sentencia SET DELETED era suficiente para que los indices respeten registros eliminados en las búsquedas, ahora eso ya no ocurre pues al borar un registro con dbdelete() y al volver a buscarlo con dbseek() aun es encontrado como si el cdx no se actualizara, te envio un ejemplo con este caso

revisalo por favor... quizá estoy haciendo algo mal

prueba también con la sentencia SET DELETED ON y SET DELETED OFF para que veas que resultados te da

Con respecto al ejemplo que este borra un registro, pero es ubicado nuevamente por dbseek(). adjunto un ejecutable compilado con la última version de C3 del 15-06-2006

Saludos
Mauricio


Adjuntos:
EvalCDX.rar [181.16 KiB]
467 veces
Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Jul 09, 2006 6:01 pm 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Mauricio,

Ya encontré el problema y ha quedado arreglado, está en la función DbSeek(), que devuelve .T. porque realmente encuentra el registro en el índice, pero luego, al aplicar el filtro de los registros borrados (SET DELETED ON) se desplaza hasta el siguiente registro no borrado y no hace que DbSeek() devuelva .F.

Puedes comprobar que no estás borrando siempre el mismo registro insertando esta línea:

/*
* Evento OnClick.
*/
METHOD Button1OnClick( oSender ) CLASS TForm1

docin->(ordsetfocus(1))
if docin->(dbseek("0801003004254"))
? docin->dmodocc + docin->dmoemp + docin->dmodocu
docin->(rlock())
if !docin->(deleted())
messagedlg("El registro va a ser borrado por primera vez",mtWarning,mbOk)
endif
docin->(dbdelete())
docin->(dbunlock())
else
messagedlg("El registro ya fue borrado",mtWarning,mbOk)
endif
return

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
NotaPublicado: Lun Jul 10, 2006 5:32 am 

Registrado: Vie Oct 07, 2005 6:15 pm
Mensajes: 72
Bruno

Ok tienes razón se desplaza el puntero al buscar con dbseek() al siguiente registro que no esta borrado, que bueno que ya lo hayas arreglado.

Gracias

Saludos
Mauricio


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Lun Jul 10, 2006 8:43 am 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Mauricio,

Gracias a tu ejemplo :-)

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
NotaPublicado: Vie May 30, 2008 4:26 pm 

Registrado: Jue Nov 03, 2005 7:20 pm
Mensajes: 132
Ubicación: Teruel(España)
Hola a todos
Estoy con una aplicacion de control de entrada/presencia.
Mediante un lector de codigo de barras se comprueba que la persona no este, funciona bien.
Pero si borro una persona, parece que los indices dejan de funcionar, me deja meter una persona, si intento volverla a meter deja, volviendo a indexar se corrige, pero no es una solucion porque hay varios puestos.
El indice es numerico de 6 posiciones.
El mismo programa cambiando a indices NTX funciona perfectamente.
Puedo mandar el ejemplo pero me tardaria para poner datos ficticios.

Un saludo


Arriba
 Perfil  
Responder citando  
NotaPublicado: Sab May 31, 2008 9:25 am 

Registrado: Jue Nov 03, 2005 7:20 pm
Mensajes: 132
Ubicación: Teruel(España)
Hola
Me contesto yo (con la ayuda de Victor), parece que me he incorporado tarde a C3 y a los indices CDX, lo que debeis dar por obvio la mayoria, para mi no lo es, si un indice se crea asi:
INDEX ON clave TAG indice TO fichero
se producen los supuestos errores que indico cambiando a
INDEX ON clave TAG indice TO fichero FOR !DELETED()
los datos aparecen perfectamente, y se corrige el comportamiento extraño en los DbGrid.

Muchas gracias a Victor y un saludo al resto.


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 6 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron