FoxPro/Visual FoxPro - No sé para que lado salir... ¿Pueden ayudarme??

   
Vista:

No sé para que lado salir... ¿Pueden ayudarme??

Publicado por Andrea (325 intervenciones) el 24/03/2008 15:45:06
Tengo que hacer un programa que lleve el registro de alquiler de un comercio de DVD

En la carga de las películas (DVDs) y en los clientes no tengo problemas.

Ahora bien. En el formulario de carga de "Movimientos diarios", que es el generalmente van a usar tengo 3 tablas y relaciones temporales (en el formulario)

CLIENTES -> (relacionado con) -> MOVIMIENTOS -> (relacionado con) -> PELICULAS

La idea es que el usuario ingrese el código del cliente y automáticamente le muestre en los datos de ese cliente (domicilio, etc) y en un grid los movimientos y los nombres de las películas que alquiló.

En la misma pantalla hay una opcion de seguir agregando movimientos (alquileres)

--------

Hasta ahí, la teoría va re-bien.

Pero en la práctica, tengo problemas con actualizar los movimientos y mostrarlos bien en el grid.

a) si lo hago con las tablas relacionadas, (con MOVIMIENTOS en el RECORD_SOURCE del grid) solamente me muestra el último movimiento ingresado y no todos los anteriores

b) si creo una vista que filtre los movimientos (con Where) según el código de cliente ingresado, tengo problemas a la hora de guardar y refrescar los datos (con REQUERY)

¿Cuál puede ser mi problema?
¿Cual de las 2 alternativas (a o b) elegirían ustedes?

Muchas gracias
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:No sé para que lado salir... ¿Pueden ayudarme??

Publicado por RICARDO (153 intervenciones) el 24/03/2008 16:02:46
SEGURAMENTE YO OPTARIA POR MOTAR EL GRID EN TIEMPO DE EJECUCION, ES DECIR, CUANDO INDIQUEN EL CLIENTE HARIA UNA SELECT DE LOS MOVIMEINTOS Y LO MOSTRARIA EN UN GRID O LISTA QUE CREARIA EN TIEMPO DE EJECUCIÓN, ESTE MISMO PROCESO LO REPETIRA CUANDO SE DIERA DE ALTA UN NUEVO MOVIMIENTO, QUITANDO EL GRID ANTERIRO Y CREANDO UNO NUEVO, EL EFECTO DE LA CREACIÓN NO SERIA DEMASIADO LLAMATIVO, INCLUSO CREO QUE QUEDARIA BIEN.

UN SALUDO Y ESPERO QUE TE SIRVE DE ALGO, AL MENOS PARA VER UNA OPCION DIFERENTE
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:No sé para que lado salir... ¿Pueden ayudarme??

Publicado por Miguel (115 intervenciones) el 24/03/2008 20:09:39
intenta con SET FILTER TO <cliente> = <codigo a filtrar>

Slds
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:No sé para que lado salir... ¿Pueden ayudarme??

Publicado por JorgeE (422 intervenciones) el 24/03/2008 20:28:28
Hola como estan?

yo haria lo siguiente:
1) Crearia un cursor con CREATE CURSOR.
2) una Consulta SQL el cual traeria todos los datos (incluidos los que se vinculan)
3) estos datos obtenidos con SELECT-SQL, los pasaraia al Cursor creado primeramente.
4) el record-source del Grid lo estableceria con el nombre del cursor creado
5) el recordsourceType = Alias
6) Requery, cada vez que se llene el cursor.
y tan tan...
debe de funcionarte de esta forma. la manipulacion del grid, depende de tus necesidades y d tu pericia para programarlo.

Saludos
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 linux_man

RE:No sé para que lado salir... ¿Pueden ayudarme??

Publicado por linux_man (12 intervenciones) el 24/03/2008 21:15:09
A ver amigo, te voy a ayudar.

Dime si la tabla de movimientos tiene

BufferModeOverride = 5

Si lo tienes así, tu grid se actualizará con solo poner al final de tus actualizaciones

ThisForm.migrid.refresh

Si no describeme como estas haciendo el proceso y te sigo contestando hasta que lo resolvamos.

Saludos
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:No sé para que lado salir... ¿Pueden ayudarme??

Publicado por Andrea (325 intervenciones) el 24/03/2008 21:48:16
Gracias a todos

En realidad está definido
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

Perdón... el anterior salió vacío

Publicado por Andrea (325 intervenciones) el 24/03/2008 22:02:32
Gracias a todos por la opinión

Tengo definido así:
Tabla CLIENTES: buffermodeoverride=3
Tabla MOVIMIENTOS: buffermodeoverride=5
Tabla PELICULAS: buffermodeoverride=3

En realidad la tabla Películas sólo se modifica un campo lógico (CON_MOVIMIENTOS) para evitar que la pelicula sea borrada

En cuanto a la forma que lo programé hasta ahora es la siguiente:

- El usuario ingresa el código de cliente y lo busca en la tabla CLIENTES.
- Muestra los datos (Nombre, domicilio, etc)
- Si el usuario acepta al cliente, HAGO UN REFRESH DEL GRID para que sólo me muestre los movimientos de ese cliente (recuerden que hay RELACIONES TEMPORALES, en este caso, al campo COD_CLIENTE de la tabla MOVIMIENTOS)

-(ya en este punto tengo problemas, ya que no muestra ni un movimiento, a pesar de estar efectivamente guardados en MOVIMIENTOS)

1) Luego se hace foco en un TEXTBOX donde ingreso el código de la película que está alquilando el cliente.(recuerden que debe ser una pantalla rápida de carga)

2) Si la película está, muestra los datos y permite aceptar el movimiento o cancelarlo. Si lo ACEPTA se agrega un registro en la tabla MOVIMIENTOS

3) Hago un REFRESH del grid, que me muestra SOLAMENTE EL ÚLTIMO MOVIMIENTO INGRESADO (ese es el otro problema)

4) Se repite el ciclo en 1) hasta que el usuario decida no cargar mas movimientos.

Ese es el proceso
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 linux_man

RE:Perdón... el anterior salió vacío

Publicado por linux_man (12 intervenciones) el 24/03/2008 23:50:36
Mira si no te molesta enviame una copia de tu proyecto y te lo reviso, te digo lo que cambié bien explicado y listo.
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