FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Borrado de una clave unica
Posts: 205
Joined: Wed Sep 02, 2009 03:11 AM
Borrado de una clave unica
Posted: Sun Jan 31, 2010 01:43 PM

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

Posts: 711
Joined: Thu Oct 06, 2005 09:57 PM
Re: Borrado de una clave unica
Posted: Mon Feb 01, 2010 05:43 AM

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.

Un saludo



Manuel
Posts: 205
Joined: Wed Sep 02, 2009 03:11 AM
Re: Borrado de una clave unica
Posted: Mon Feb 01, 2010 12:46 PM

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...

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Borrado de una clave unica
Posted: Mon Feb 01, 2010 01:25 PM

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:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 205
Joined: Wed Sep 02, 2009 03:11 AM
Re: Borrado de una clave unica
Posted: Tue Feb 02, 2010 04:20 AM

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

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Borrado de una clave unica
Posted: Tue Feb 02, 2010 11:26 AM

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.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 408
Joined: Fri Jan 29, 2010 08:14 PM
Re: Borrado de una clave unica
Posted: Thu Feb 04, 2010 09:50 PM

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

Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Posts: 205
Joined: Wed Sep 02, 2009 03:11 AM
Re: Borrado de una clave unica
Posted: Fri Feb 05, 2010 12:28 PM

Gracias, voy a probar esto.

Continue the discussion