Page 1 of 1

Borrado de una clave unica

Posted: Sun Jan 31, 2010 1:43 pm
by JoseGS
Hola amigos:
Tengo el siguiente problema:

Tengo una DBF en la cual se almacenan ventas. Cada registro corresponde a un producto dentro de la factura. Esta DBF tiene 2 indices por FACTURA pero el primero es unico.... Para mostrar dicha DBF en pantalla utilizo 2 browse. En el primero presento la DBF con el indice 1 activo (indico UNIQUE) para que solo se presente un registro de cada venta... En el segundo browse presento por medio de un ARRAY el contenido de la venta. El usuario puede navegar en el browse 1 y de van presentando en el browse 2 el contenido de cada venta.

El problema consiste en que si se borra el primer registro presentando (que es el que esta indexado en el UNIQUE), la venta desaparece.

En FW lo habia resuelto usando la clausula FOR !DELETE() al momento de hacer el indice UNIQUE pero en FWH no me funciona. Definitivamente si hago PACK() luego de hacer el DELETE del registro aparece pero estoy puede demorar mucho ya que son archivos grandes.

Alguna idea de como hacer esto o es un BUG de FWH ?

Saludos

Re: Borrado de una clave unica

Posted: Mon Feb 01, 2010 5:43 am
by Manuel Valdenebro
Yo utilizo para eso dos tablas:

En la primera tabla, FACTURAS1, va el número de la factura (campo clave) y los datos del encabezamiento (cliente, fecha, datos fiscales, etc).

En la segunda tabla, FACTURAS 2, va un registro por cada producto, y su campo clave, es el número de factura de la tabla primera.

Cuando muestro un listbox con las facturas, solo muestro la tabla FACTURAS1. Si pulso intro, entraria entonces en los productos de esa factura, a traves de un índice temporal.

Re: Borrado de una clave unica

Posted: Mon Feb 01, 2010 12:46 pm
by JoseGS
Hola Manuel

Ese metodo ya lo he utilizado y funciona muy bien. El caso es que ya tengo el metodo que menciono implementado y deberia funcionar tal como lo hacia con FW... sera un error a corregir en FWH ? o es que me hace falta hacer algo en el sistema ?

Gracias por contestar...

Re: Borrado de una clave unica

Posted: Mon Feb 01, 2010 1:25 pm
by joseluisysturiz
Saludos, JoseGS el metodo mas funcional es como dice Manuel, ai lo tengo tambien, una DBF con los encabezados de la Factura y los totales, es decir, sub total de venta, total descuesntos si los hay, total impuestos, algun otro total y el neto de la factura o total a pagar, y en otra DBF los movimientos de dicha factura, eso seria una DBF relacionada, en el cual estan todos los movimientos de todas las facturas la cual filtro dependiendo del numero de factura que desee mostrar, coloca un poco de codigo para ayudarte un poco mas, es mas facil revisar y ver donde puede estar tu problema, gracias, saludos... :shock:

Re: Borrado de una clave unica

Posted: Tue Feb 02, 2010 4:20 am
by JoseGS
Gracias... voy a tener que hacer la separacion...

No a la pereza !

"La pereza camina tan despacio, que la pobreza pronto la alcanza" B. Franklin

Re: Borrado de una clave unica

Posted: Tue Feb 02, 2010 11:26 am
by Antonio Linares
Jose,

Todo el uso de bases de datos e índices es algo propio de Harbour/xHarbour, no de FWH.

FWH se encarga principalmente del GUI, aunque tiene clases y funciones que cubren otras áreas, como la Clase TDataBase por ejemplo. Pero si no la estás usando, entonces cualquier variación de comportamiento, etc. respecto a Clipper, es algo específico del compilador usado, no de FWH.

Re: Borrado de una clave unica

Posted: Thu Feb 04, 2010 9:50 pm
by jll-fwh
Hola JoséGS:

Efectivamente en FWH a mi tambien me paso que no funcionaban bien los indices con FOR !Deleted().

Pero se soluciona indexando los indices normalmente sin el FOR !DELETED()

Solo tienes que tener a ON la clausla SET DELETE.

SET DELETE ON

NOTA: En mi opinion no es recomandable hacer PACK en las aplicaciones, solo marcalo como borrado DELETE y siempre tendras el registro para poder recuperarlo.

UN SALUDO
JLL

Re: Borrado de una clave unica

Posted: Fri Feb 05, 2010 12:28 pm
by JoseGS
Gracias, voy a probar esto.