FoxPro/Visual FoxPro - No sé que pasa...

 
Vista:
sin imagen de perfil

No sé que pasa...

Publicado por Antonio Moronta (134 intervenciones) el 19/04/2007 14:02:27
Ya en otra ocasión pregunte sobre cómo realizar cálculos en una grilla sin inconvenientes.
El problema es que tengo una grilla en la cual realizo los siguientes cálculos sencillos:

Esta tiene las columnas:

Codigo-Producto-Medida-Precio-Cotizado-Despachado-Pendiente-Total
El cálculo consiste en multiplicar Precio*Despachado y alojar el resultado en Total y restar a Despachado de Cotizado y alojar lo que reste en Pendiente. Todo esto sobre una línea o ítem de la grilla que representa una tabla en la cual se cargan los registros de una consulta.

Cuál es el problema?

Que solo me realiza el cálculo perfecto en la primera línea o ítem de la grilla, sea la primera o segunda línea que haya elegido, en fin es que solo realizar el cálculo bien la primera vez. De ahí en adelante me va calculando Despachado por las columnas de la línea o ítem anterior a la actual del puntero, ósea, de la primera línea en la cual hice cálculos.

He intentado lo siguiente:
- Utilice los comando de cálculos guardando con RECNO() el número de registro actual y enviando el puntero de la tabla hacia el registro actual y realice los cálculos mencionando los campos de la tabla directamente y utilizando el comando REPLACE. Esto me fue recomendado por un desarrollador de este foro, pero no me resulto.
- Inventando, saque el código de la grilla y lo puse en eventos clic de botones invisibles en la superficie del formulario, pero en referencia a objetos no en mención de campos directos de la tabla de la grilla, me resulto por un día y al otro día volvió al error, aun no me lo explico.

Se supone que una grilla es la representación de una tabla y que ésta a su vez debe actuar como tal al momento de mover el puntero de registro con las teclas flecha en estas. No entiendo por qué son tan complejas o simplemente por qué mi cerebro queda tan pequeño frente a estas.

Mas detalles:

- La tabla de la grilla esta almacenada en buffer 5 de tabla.
- Uso VFP 9

Por favor sin alguien puede darme el punto exacto para salir de esto que creo es alguna sencillez que no estoy tomando en cuenta, le estaré muy agradecido.
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é que pasa...

Publicado por Oscar Garcia (19 intervenciones) el 20/04/2007 16:37:59
Saludos...

He trabajado con girds como el tuyo durante algun tiempo y no he tenido problemas, tratare de expolicarte como lo hago y espero que esa metodologia te sirva de algo.

1.- Creo un archivo temporal, CREATE CURSOR TEMP, el cual contiene todos los campos del grid.

2.- Establezco la relacion entre el cursor y el grid, THISFORM.GRID1.RECORDSOURCE='TEMP'

3.- Creo un metodo (procedimiento) llamado OPERACIONES, en donde realizo las operaciones directamete sobre el cursor, ejemplo
REPL IMPORTE WITH TEMP.CANTIDAD*TEMP.PRECIO IN TEMP

4.- En ese mismo metodo hago un refresh al grid.
THISFORM.GRID1.REFRESH

5.- En cada valid del grid que esta involucrado en la operación mando ejecutar el metodo OPERACIONES.
THISFORM.OPERACIONES()

6.- por ultimo tengo un boton de grabacion, en donde paso los datos del archivo temporal al archivo real que debe contener la información y listo.

Espero te sirva.
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:No sé que pasa...

Publicado por Antonio Moronta (134 intervenciones) el 20/04/2007 16:56:59
Gracias Oscar, a simple vista le veo muy acertado a tu codigo, lo intentare y luego te comento que ocurrio.

Gracias por tu tiempo.
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