Consulta con listas

31 views
Skip to first unread message

Charly

unread,
Mar 2, 2011, 1:10:16 PM3/2/11
to Comunidad de Visual Foxpro en Español
Cuál sería la forma más apropiada de realizar consultas con 2 listas.
Tengo 2 tablas, Articulo,tipo.
Para la primera lista la tabla "tipo" y para la segunda "articulo". La
idea es que al seleccionar uno de los tipos la segunda lista muestre
los valores de la tabla "articulo" filtrados por ese tipo
seleccionado.
La tabla articulo contien todos los datos del articulo más el campo
articulo.tipo con el código del la tabla "tipo" para la relación y la
tabla tipo almacena la descripción del "tipo" de articulo.
Gracias por cualquier sugerencia.

Irlandes 1960

unread,
Mar 2, 2011, 1:51:37 PM3/2/11
to publice...@googlegroups.com
Depende mucho del contexto de la consulta, y sobre que soporte esten montados los datos.
Yo este tipo de cosas suelo trabajarlo sobre un par de grillas coordinadas, por la flexibilidad que esto te permite (colorcitos, negritas, doble click para ir a otro lado, y chiches varios)
el evento afterrowcolchange de la grilla del TIPO es la que "mueve" la grilla de articulos
Podes trabajar la tabla de articulos con un set filter tipo = tipo.tipo y al moverte por tipo disparar el refresh de la grilla de articulos.
espero te sirva la idea.
larga vida al Zorro

Charly

unread,
Mar 2, 2011, 2:35:03 PM3/2/11
to Comunidad de Visual Foxpro en Español
Muchas gracias por la respuesta, muy buena. Los datos son de la Base
de Datos interno del Visual Foxpro.
Intente lo siguiente.
list1.RowSourceType (campo)
list1.RowSource (tipo.des)
list2.RowSourceType (Intruccion SQL)

En "list1.click"
thisform.list2.RowSource='select articulo.des as des;
from articulo,tipo;
into cursor tmp;
where
articulo.tipo=tipo.cod .and. tipo.des=thisform.list1.DisplayValue'

Pero por alguna extraña razón no pasa de la primera línea del código.

Hugo C.

unread,
Mar 2, 2011, 8:03:19 PM3/2/11
to Comunidad de Visual Foxpro en Español
En el INIT del form :

THISFORM.List1.RowSourceType = 2 && alias
THISFORM.List1.RowSource = ""
THISFORM.List1.ColumnCount = 2

Select tipo.cod, tipo.des FROM tipo INTO CURSOR curTipo

THISFORM.List1.RowSource = "curTipo"
THISFORM.List1.InteractiveChange()

Y en el metodo InteractiveChange del list1 :

THISFORM.List2.RowSourceType = 2 && alias
THISFORM.List1.RowSource = ""

lcTipo = THIS.List(THIS.List.index,1)
select articulo.des as des;
from articulo
where alltrim(articulo.tipo) == alltrim(lcTipo)
into cursortmp

THISFORM.List1.RowSource = "cursortmp"

Saludos.

Charly

unread,
Mar 3, 2011, 11:34:28 AM3/3/11
to Comunidad de Visual Foxpro en Español
Muchas gracias Hogo C. esto me sirve de gran manera, es lo que estaba
buscando.
Con el método bridado por Irlandes 1960 también funciona. Mil
gracias...

Hugo C.

unread,
Mar 3, 2011, 12:11:09 PM3/3/11
to Comunidad de Visual Foxpro en Español
El InteractiveChange es mas bien asi,

THISFORM.List2.RowSourceType = 2 && alias
THISFORM.List2.RowSource = ""
lcTipo = THIS.List(THIS.List.index,1)

select articulo.des as des;
from articulo
where alltrim(articulo.tipo) == alltrim(lcTipo)
into cursortmp

THISFORM.List2.RowSource = "cursortmp"


Saludos.

Daniel Cuadros Salazar

unread,
Mar 3, 2011, 12:18:12 PM3/3/11
to publice...@googlegroups.com
Gracias Hugo lo voy a probar....
 

 
> Date: Thu, 3 Mar 2011 09:11:09 -0800
> Subject: [vfp] Re: Consulta con listas
> From: hcch...@gmail.com
> To: publice...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages