Programación General > Power Builder

 Filtrar datawindows desde otro

(1/1)

angelito1121:
Disculpen, otra vez soy yo con otro problema, me han dejado que haga 2 datawindows con esta BD

//img264.imageshack.us/img264/360/dibujo2is.jpg

y me han pedido que haga  un datawindows filtrado, en el primero tengo que ingresar el codigo del cliente en un single line edit y debe mostrarme todos los datos con el cod_cli ingresado
el segundo datawindows debe mostrarme los detalles del pedido segun el resultado del primer datawindows, lo he codificado y me queda así:


//declaración de variables
string filtro, filtro2,deta

//primer filtro
filtro = "clientes_cod_cli ='" + sle_cliente.text + "'"
dw_1.setfilter(filtro)
dw_1.filter()
dw_1.retrieve()


//select para segundo filtro
DECLARE detalle CURSOR FOR
  SELECT detalle.cod_ped  
    FROM clientes,  
         detalle,  
         pedidos  
   WHERE ( pedidos.cod_ped = detalle.cod_ped ) and  
         ( pedidos.cod_cli = clientes.cod_cli ) and  
         ( ( clientes.cod_cli = :sle_cliente.text ) )   ;
               open detalle;
         fetch detalle into :deta;
         do while not sqlca.sqlcode = 100
         filtro2 = "detalle_cod_ped = '" + deta + "'"
             fetch detalle into :deta;
   loop
   close detalle;
   dw_2.setfilter(filtro2)
   dw_2.filter()
        dw_2.retrieve()

//img692.imageshack.us/img692/7919/dibujo3.png

como ven, solo me muestra el resultado del ultimo cod_ped pero no de los otros 2, podrían decirme como solucionarlo?, gracias de antemano

F_Tanori:
A la larga y con el incrementod e informacion en la base de datos, los cursores se vuelven un dolor de cabeza... consumen muchos recursos y es recomendable evitarlos en lo posible;

segun veo lo que pretendes es crear un filtro con todos los valores que te muestre el cursor


--- Citar ---do while not sqlca.sqlcode = 100
filtro2 = "detalle_cod_ped = '" + deta + "'"
fetch detalle into :deta;
loop
--- Fin de la cita ---

Te muestra solo el ultimo porque no estas CONCATENANDO los valores solo lo estas reasignando a la variable filtro2



--- Código: Visual Basic ---do while not sqlca.sqlcode = 100   filtro2 += "detalle_cod_ped = '" + deta + "' AND "   // Equivalente: filtro2 = filtro2 + "detalle_cod_ped = '" + deta + "' AND "fetch detalle into :deta;loopclose detalle; filtro2= trim(filtro2) if len(filtro2)>3    filtro2 = trim(mid(filtro2,1,len(filtro2)-3 )) //Quitar el "AND" sobranteend if dw_2.setfilter(filtro2)dw_2.filter()dw_2.retrieve()   
Puede que haya algunos errorcillos, no lo probe; prueba a ver que tal
tambien te recomiendo utilizar las etiquetas [CODE] para que sea mas entendible


Saludos

Navegación

[0] Índice de Mensajes

Ir a la versión completa