FoxPro/Visual FoxPro - Crear Vista

   
Vista:

Crear Vista

Publicado por Anabella (20 intervenciones) el 26/05/2015 04:32:15
Hola Gente!!! Tengo un problema con la creación de una vista. Tengo dos tablas, clientes y ctacte, de ambas quiero hacer una vista y dicho resultado mostrarlo en un grid.
Mi duda es: como ejecuto la vista? Hay alguna forma de ejecutarla como se ejecutan las consultas?
Trabajo con consultas, pero debo midificar los datos de una de las tablas, por eso me incline a usar vistas. Hay alguna otra forma de hacerlo si no es con vistas?

Desde ya, muchas gracias y disculpen mi ignorancia.

Anabella
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 Vista

Publicado por Fidel José (558 intervenciones) el 26/05/2015 16:23:20
Yo utilizo cursores.

Ejemplo (Detalle de Facturas)
1
2
3
4
5
SELECT cl.nombre,cta.fecha,cta.docum,cta.ref,cta.importe ;
	FROM clientes as cl, ctacte as cta ;
	WHERE cta.idclien = cl.idclien ;
	ORDER BY cl.nombre,cta.fecha ;
	INTO CURSOR sldCliente READWRITE

Ejemplo (Totales por Cliente)
1
2
3
4
5
6
7
SELECT cl.nombre,SUM(cta.importe) as Saldo ;
	FROM clientes as cl, transit as cta ;
	WHERE cta.idclien = cl.idclien ;
	GROUP BY cl.nombre ;
	INTO CURSOR sldClienSum READWRITE
 
BROWSE
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 Vista

Publicado por Anabella (20 intervenciones) el 26/05/2015 16:50:37
Hola Fidel Jose! tambien intente con cursores, tengo un campo lógico que deseo cambiar una vez que realizo la factura, en el cursor me lo cambia, pero como hago para que se modifique el dato también en la tabla?
Saludos!
Anabella
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 Vista

Publicado por Fidel José (558 intervenciones) el 26/05/2015 18:06:41
Lo más técnico sería utilizar UPDATE - SQL. Aún no domino esta técnica, estoy estudiando.
Por el momento, utilizo un sistema de marcas que tiene sus limitaciones.
Igual para salir del paso en el caso concreto, te puede servir lo siguiente

1
2
3
4
5
6
SELECT cl.nombre,cta.fecha,cta.docum,cta.ref,cta.importe, ;
	RECNO() as regis_ , .F. as Modif_ ;
	FROM clientes as cl, ctacte as cta ;
	WHERE cta.idclien = cl.idclien ;
	ORDER BY cl.nombre,cta.fecha ;
	INTO CURSOR sldCliente READWRITE

Luego te basas en el número de registro de la tabla para hacer los cambios necesarios

Algo más o menos así.
select sldCliente
recall all
SCAN && o SCAN FOR MODIFI_
select ctacte
go sldCliente.regis_
if RLOCK()
replace importe with sldCliente.Importe && cambio el importe según el que tenía el cursor
unlock
endif
ENDSCAN

Como esto solamente sirve para tablas nativas, lo mejor es aprender a usar UPDATE - SQL
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 Mauricio Antonio

Crear Vista

Publicado por Mauricio Antonio (1367 intervenciones) el 26/05/2015 18:55:23
Hola Anabella, puedes enviarme las 2 tablas en formato ZIP o RAR, tratare de ayudarte.
si puedes enviarme el FORM mucho mejor....
Moris_gonzalez@hotmail.com.
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