FoxPro/Visual FoxPro - Crear un stop segun los valores repetitibles de un campo de un formulario

   
Vista:

Crear un stop segun los valores repetitibles de un campo de un formulario

Publicado por Edwin mike-medina64@hotmail.com (1 intervención) el 30/11/2015 23:32:03
Buenas
Quisiera saber la codificacion o tipo de programacion a emplear a la hora de crear un stop en mis registros...

Estoy haciendo un proyecto sobre el control aereo de los aviones,,, en un formulario que tengo que controla la capacidad de personas en un avion en mi caso es 60 dicho esto....
Tengo un campo que se llama [nVuelo] que digamos como son 60 personas en mi avion quisiera programar el formulario para que controlase la cantidad de registros con el mismo vuelo.. es decir que si tengo el campo [nVuelo] = 60 y tengo ya 60 registros con el mismo numero de vuelo ... que este formulario al agregar otra persona con el mismo vuelo le mande un error diciendo capacidad del vuelo excedida no hay cupo en este vuelo y que tambien no me agrege ese registro.
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

Crear un stop segun los valores repetitibles de un campo de un formulario

Publicado por Fidel José (321 intervenciones) el 01/12/2015 00:16:50
Ahí hay que ver la estructura de datos:
1) Tienes una tabla cabecera de vuelos, donde tienes ese campo "nVuelo". Si es un contador de registros se deberá actualizar con cada pasaje que se vende o se cancela.

2) Tienes una sola tabla de vuelos, pero tienes un identificador único para cada vuelo.
En este caso, antes de admitir un vuelo tendrás que verificar la cantidad de pasajeros de ese vuelo, por ejemplo, si la tabla se llama "vuelos" y el campo Identificador único de vueldos, se llama "idvuelo", podés hacer una función o procedure:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
********************
PROCEDURE Allow_New
********************
LPARAMETERS tnIdVuelo ,tnMaxPasajes
LOCAL lReturn , lnPasajeros
 
tnMaxPasajes = EVL(m.tnMaxPasajes, 60)
 
lREturn =.T.
lnPasajeros = 0
 
SELECT Cnt("IDVUELO") FROM VUELOS WHERE IDVUELO = tnIdVuelo  INTO ARRAY laVuelos
if _Tally > 0
	lnPasajeros = laVuelos[1,1]
endif
* La consulta del valor _Tally es fundamental porque si no hay pasajeros, no se creará el array laVuelos y dará un error.
 
if m.lnPasajeros = m.tnMaxPasajes
	MessageBox("Localidades agotadas para este vuelo")
	lREturn = .F.
ENDIF
RETURN m.lReturn
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

Crear un stop segun los valores repetitibles de un campo de un formulario

Publicado por santiago (376 intervenciones) el 01/12/2015 03:59:16
Hola, no solo vas a tener que controlar lo que has planteado, sino también lo que se denomina "stock comprometido", veamos:

Tu planteas lo siguiente:

usuario 1 --> esta realizando la venta de 4 cupos, stock quedan 6, ok, no hay problema, vende cupos.
usuario 2 --> también esta realizando la venta de 3 cupos, stock quedan (6-4=2), no ok, si hay problema, no vende cupos.

aunque ambos usuarios estén realizando la venta al mismo tiempo, el primero que graba hace la venta.

para el primero no hay problema, pero para el segundo si, el cliente se va a ir molesto porque a pesar de arrancar la operación con 6 cupos, no se pudo concretar porque al final el sistema informo que solo habían 2 cupos.

para evitar esto, se maneja el "stock comprometido", veamos:

usuario 1 --> esta realizando la venta de 4 cupos, stock quedan 6, ok,
usuario 2 --> también esta realizando la venta de 3 cupos, ve que hay 4 cupos comprometidos (aun no vendidos) y 2 libres, informa en ese momento al cliente, cliente toma decisión si espera confirmación (de usuario 1) o si se retira, digamos que espera...

usuario 1 --> no realiza la venta liberando los 4 cupos, stock quedan 6
usuario 2 --> realiza la venta de los 3 cupos al cliente en espera.

Para que lo pienses un poco.

Suerte.

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