FoxPro/Visual FoxPro - Llenado de Grid desde dos tablas

 
Vista:
Imágen de perfil de Heriberto

Llenado de Grid desde dos tablas

Publicado por Heriberto (10 intervenciones) el 26/01/2016 04:23:09
Hola amigos, tengo un pequeño problema con un formurio en el cual pretendo crear compras. Tengo dos tablas relacionadas entre si compras.dbf y productos.dbf; tambien tengo una grid a donde descargo el cursor que toma la informacion de las dos tablas. Al crear el cursor y asignarle los valores de la tabla compra todo anda bien, el problema radica en que el campo del cursor que almacena el nombre del articulo que debe tomar de la tabla productos.dbf siempre es el mismo, parece que toma el primero que encuentra y lo repite en todas los articulos que posea una factura. Soy principiante en este lenguaje....

Aqui les dejo las lineas de codigo en el init de mi formulario y la imagen del grid que da como resultado. Gracias por su ayuda...

1
2
3
4
5
6
7
SELECT codarticulo_cm, ALLTRIM(c_productos.nom_pro)+" "+ALLTRIM(c_productos.medida)+" "+ALLTRIM(c_productos.unimedida),;
    cantidad_cm, vrunitario_cm, tarifaiva_cm, pordescuento_cm, descuento_cm, vrtotal_cm;
  	FROM c_compras WHERE (c_compras.factura_cm = documento AND c_compras.proveedor_cm = prov) ORDER BY c_compras.codarticulo_cm INTO CURSOR Rel_Mer_compra
 
 
thisform.gridMercancias.RecordSourceType = 1
thisform.gridMercancias.RecordSource ="Rel_Mer_compra"
ejemplo
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

Llenado de Grid desde dos tablas

Publicado por Azimut (1 intervención) el 26/01/2016 10:33:53
Hora Heriberto,

El problema lo tienes a la hora de cargar el cursor c_compras. Tienes que cargarlo haciendo un join entre las tablas de productos y compras por su código de articulo. Por ejemplo:

Compras Productos
idCompra idArticulo
idArticulo Descripcion
Cantidad Precio
. .
. .


Si quiero cargar un cursor con los artículos de una compra lo haría así:

SELECT Compras.idArticulo, Productos.Descripcion, Compras.Cantidad FROM Compras INNER JOIN Articulos
ON Compras.idArticulo = Productos.idArticulo
WHERE Compras.idCompra = '00001'
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Llenado de Grid desde dos tablas

Publicado por Fidel José (657 intervenciones) el 26/01/2016 23:59:08
Lo podrías hacer de la siguiente forma (fijate que te falta relacionar con la tabla de productos).
Cuando creas un campo a partir de una operación de campos o función, conviene asignarle un nombre. Resultará más fácil manejar el cursor resultante.
Además, es conveniente seguir la sintaxis SQL lo más estrictamente posible.
Conviene prefijar las tablas con el alias SQL que se declara en la cláusula FROM. Con eso se evitan quejas de SQL y errores en la información resultante.
Lo que no sé es exactamente como se llaman tus campos. Revisá eso para que no de errores de SQL.

Nota sobre la tabla compras:
Normalmente el campo de comprobantes de compra es un asociación entre el ID y el número de factura de compra, porque de hecho, podemos tener idéntico número de factura de distintos proveedores. Creando un campo ID + FACTURA, se volverá un identificador único y sirve para controlar que no se ingrese el mismo comprobante dos veces, tanto como para evitar tener que hacer coincidir código de proveedor + número de comprobante. Te queda un solo paso.

1
2
3
4
5
6
7
8
9
10
11
SELECT cmp.codArticulo_cm ,;
		ALLTRIM(pro.nom_pro)+" "+ALLTRIM(pro.medida)+" "+ALLTRIM(pro.unimedida) as descript ,;
		cmp.cantidad_cm,;
		cmp.vrUNitario_cm,;
		cmp.tarifaiva_cm,;
		cmp.pordescuento_cm,;
		cmp.vrtotal_cm ;
		FROM compras as cmp, productos as pro ;
		WHERE cmp.Factura = m.documento AND cmp.provedor_cm = m.prov AND cmp.CodARticulo_cm = pro.codArticulo_cm ;
		ORDER BY cmp.codArticulo_cm ;
		INTO CURSOR Rel_Mer_Compra READWRITE
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 Heriberto

Llenado de Grid desde dos tablas

Publicado por Heriberto (10 intervenciones) el 27/01/2016 05:23:28
Muchas gracias amigos, sus aportes me han sido de mucha 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