FoxPro/Visual FoxPro - ¿Cómo busco el último código guardado?

 
Vista:

¿Cómo busco el último código guardado?

Publicado por Andrea (325 intervenciones) el 27/02/2008 22:04:09
HOla a todos.

Retomando un post anterior (que ya se hizo muy largo) rehago la pregunta y les consulto QUÉ SOLUCIÓN TOMARÍAN USTEDES.

- En un programa que hice para un supermercado amigo, tienen 3 cajas, cada una identificado con un nº de punto de venta.

- Todos los movimientos de facturación (cada factura) se guarda como un registro en una única tabla (FACTU.DBF).

- Esta tabla tiene una clave PRINCIPAL compuesta, formada por 3 campos: TIPO DE FACTURA (A o B) + PUNTO DE VENTA (0001 a 0003) + Nº DE FACTURA (por ejemplo, 00000123)

- Yo guardo el próximo número de factura en una tabla con 3 registros: cada uno corresponde a una caja distinta.

- Tal como les explicaba anteriormente, de tanto en tanto me llaman porque aparece un error de duplicación de índices que no puedo controlar con la rutina de errores (es decir, aparece el cartel pero no sé cómo resolver el problema en el momento)

- Según la sugerencia de algunos de ustedes, me conviene buscar el último número en vez de guardarlo y sumarle uno.

Ahí va mi consulta: ¿CUÁL DE ESTAS ALTERNATIVAS LES PARECE MEJOR? (sobre la tabla FACTU.DBF)

1) Utilizar un SET FILTER TO punto_de_venta (para filtrar lo que corresponde a cada caja) y luego hacer un GO BOTTOM para sacar el último

2) Utilizar un SELECT de SQL para seleccionar los registros de cada cajar y luego hacer un GO BOTTOM

3) Utilizar un SELECT de SQL y utlizar la función MAX() para obtener el valor máximo

4) Alguna alternativa distinta a estas propuestas.

Yo probé la número 3) y FUNCIONA BIEN, pero como la tabla FACTU.DBF tiene MUCHOS registros, esta operación TARDA 3 o 4 segundos, que son eternos cuando hay mucha gente en las cajas.

Desde ya les agradezco cualquier ayuda.
Andrea
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿Cómo busco el último código guardado?

Publicado por Plinio (7841 intervenciones) el 28/02/2008 00:53:01
Buscar el codigo de nuevo antes de grabar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RE:¿Cómo busco el último código guardado?

Publicado por kong (682 intervenciones) el 28/02/2008 01:52:48
saludos.
Puede ser algo artesanal, y un poco limitado en cuestion de escalabilidad, pero podria funcionar.
Ubica los numeros de facturas de cada terminal en tres distintas tablas en el servidor.

que dicen?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de juan jose

RE:¿Cómo busco el último código guardado?

Publicado por juan jose (110 intervenciones) el 28/02/2008 03:50:39
locate for podria ser de ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Cómo busco el último código guardado?

Publicado por jose camilo (805 intervenciones) el 28/02/2008 03:35:38
mira andrea como dice kong es lo mejor
en mi sistema tengo una tabla Control_secuencia en ellas guardo todas las secuencia de mi sistema
de facturas
de cliente
de compras
al momento de grabar busco la secuencia k le corresponde a la factura y el numero k le toca y asi de manera rapida puedo determinar el numero siguiente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:¿Cómo busco el último código guardado?

Publicado por neo (1604 intervenciones) el 28/02/2008 15:18:53
Busca el numero justo antes de agregar el nuevo num. ejemplo:

Todo esto en metodo o boton guardar:

rutina para substraer la clave compuesta

SELECT Mi_tabla && Donde guarda tu num compuesto
GO bott
Thisform.num_clave.Value=Mi_tabla.num+1
LOCATE FOR Mi_tabla.num=Thisform.num_clave.Value
IF FOUND() then
replace num WITH Thisform.num_clave.Value
***mas replace

else
replace***

endif

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Cómo busco el último código guardado?

Publicado por enrique (1041 intervenciones) el 28/02/2008 20:56:17
Lo que yo uso es relacionar, y en tu caso:
1- crea un archivo punto_venta con los campos tipo_de_factura y punto_de_venta

2- en esta tabla tendrias al asi
A 0001
A 0002
A 0003
B 0001
B 0002
B 0003

3- luego relaciona
use punto_venta
use factu in 0
set order to tu_indice in factu
set rela to punto_venta.tipo_de_factura+punto_venta.punto_de_venta INTO factu

4- y por ultimo tendrías que ir al final del archivo factu
go bottom in factu
vfactura = factu.tu_campo_nro_factura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar