FoxPro/Visual FoxPro - Pasar datos de un Grid a Tabla

 
Vista:
Imágen de perfil de Anibal
Val: 36
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Pasar datos de un Grid a Tabla

Publicado por Anibal (25 intervenciones) el 17/02/2017 00:20:01
Saludos amigos del Foro, disculpen mi falta de conocimiento en FoxPro
tengo un form en donde registro una compra: Proveedor, Producto, Cantidad, Costo e importe creo un cursor con dichos datos para de esta forma cargar un grid con Item, Producto, Cantidad, Costo e Importe, cuando la compra se trata de un solo Item no tengo problemas en cuardar la compra en las tablas, tengo una tabla compra en donde guaro fecha, nro de compra, proveedor, una de detalles en donde guardo el nro de compra, Item, producto, cantidad, costo e importe... y otra tabla en donde almaceno, nro de compra, subtotal, impuesto, totalcompra

como les dije cuando se trata de un solo Item no tengo problemas se graba todo perfecto, ahora, mi pregusta para los siempre dispuestos a ayudar, COMO HAGO PARA ALMACENAR MAS DE UN (1) ITEM, en la tabla detalles es decir generar tantos registros como item esten cargados en el cursor que alimenta el Grid, otra cosa, si elimino un Item como hacer para recomponer consecutivamente los numeros de ITEM o LINEAS antes de guardar en las referidas tablas,

gracias por su atencion

Ejercicio_compras
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

Pasar datos de un Grid a Tabla

Publicado por José M. Ferrer A. (31 intervenciones) el 18/02/2017 18:48:04
Para lo que quieres hacer hay varias posibilidades, sin embargo te comento dos forma de hacerlo que posiblemente te funcionen, siempre y cuando la estructura de datos del cursor del grid del formulario y la tabla de detalle sean iguales .

La Primera es usando SQL, Ejemplo:

1
2
3
4
**----- Actualizar Tabla Detalle de compras
** 1ero. eliminamos registros existentes.
DELETE FROM Detalle_de_Compras WHERE Compra_Numero=EDit_Box_Numero_De_Compra.Value
 INSERT INTO Detalle_de_Compras SELECT * FROM Cursor_Grid

La segunda alternativa es programando el uso de Loop
Ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
* --- Ubicarnos en la tabla de detalle de compras
SELECT Detalle_de_Compra
*--- Establecer el orden predominante de la tabla a través del indice previamnte creado
SET ORDER TO INDICE_DE_NUMERO DE COMPRA
*--- Colocar apuntador en el identificador de compras para poder modificar o crear nuevos registros
SEEK EDIT_BOX_Numero_deCompra.Value
SELECT Cursor_Grid
GOTO TOP
DO WHILE .NOT. EOF()
	SCATTER MEMVAR
	SELECT Detalle_de_Compra
	* --- Si envuentra el fin de archio o existe una compra cuyo identificador sea mayor al acual
	* ---  Entonces agregar un nuevo rgistro
	IF EOF() Numero_de_compra<>Cursor_Grid.Numero_de_compra
		Append Blank
	ENDIF
	GATHER MEMVAR
	SELECT Cursor_Grid
	SKIP
ENDDO
*--- Proceder a borrar los registros que ya no son necesarios
SELECT Detalle_de_Compra
SET DELETED OFF
DO WHILE Detalle_de_Compra.Numero_de_compra=EDIT_BOX.Numero_de_compra.Value .AND. !EOF("Detalle_de_Compra")
    DELETE
   SKIP
ENDDO
SET DELETED ON
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Anibal
Val: 36
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Pasar datos de un Grid a Tabla

Publicado por Anibal (25 intervenciones) el 19/02/2017 01:42:41
Agradecido por tu tiempo y ayuda voy a intentar seguramente me servira de mucho
gracias
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