SoloCodigo

Programación General => Power Builder => Mensaje iniciado por: ruth2006 en Miércoles 21 de Junio de 2006, 14:19

Título: Utilizacion De Dropdownlistbox
Publicado por: ruth2006 en Miércoles 21 de Junio de 2006, 14:19
Por favor si me pueden ayudar con lo siguiente: utilizo un DDLB para sacar datos de de una tabla de la BD ahora necesito lo siguiente: que de acuerdo a lo seleccionado mostrar los datos en un Datawindow.
Título: Re: Utilizacion De Dropdownlistbox
Publicado por: leoandres en Viernes 23 de Junio de 2006, 00:58
Hola... ¿es un ddlb o un dddw?, si quieres saber que dato hay en el listbox debes trabajar con el dw de donde generaste el listbox, al seleccionar un item (del listbox) se activa el evento itemchanged de ese objeto, entonces debes preguntar por el valor de la variable "index" (que es propia del objeto ddlb), ese valor te apuntará al registro del dw de donde generaste los item del ddlb, al hacer dw_x.ScrollToRow(index), se posicionara en el renglon del dw que apunta al item del ddlb...o tambien obtener el texto que contiene el item del ddlb...
Título: Re: Utilizacion De Dropdownlistbox
Publicado por: pierpiter en Viernes 23 de Junio de 2006, 15:18
Buenas, si entendí bien, lo que querés es seleccionar algo de un ddlb y después que eso se muestre en un dw.
Como dice leoandres, podés recuperar el item seleccionado usando el evento itemchanged o selectionchanged, ahí, adentro de ese evento, recuperas el dato seleccionado con:

ddlb_1.Text(index)

"Text" es una función propia del ddlb (en la version 9 de power) e "index" es una variable propia del evento, con "Text" recuperas el dato que esta en la posición "index". Una vez que tenés el dato, solo tendrías que recuperar el valor de una base de datos con un select o hacer un "scrolltorow" hasta ese elemento... en fin, depende de si ya tenés el dw cargado o si tenés que cargarlo en base al dato que se selecciona en el ddlb.
Bueno, cualquier cosita pregunta, si no es a lo que apuntabas o si necesitas más ayuda. Saludos.
Título: Re: Utilizacion De Dropdownlistbox
Publicado por: ruth2006 en Viernes 23 de Junio de 2006, 21:23
El codigo que utilizo para extraer datos es el siguiente y lo hago mediante Drop Down Picture List Box

string ls_select
string ls_where
string ls_dwsyntax
string ls_err,is_cust, var
var = string(combo.text)
ls_select = "Select nombre from tabla "
      
ls_dwsyntax = SQLCA.SyntaxFromSQL ( ls_select,"Style(Type=grid)", ls_err )
dw_1.Create ( ls_dwsyntax, ls_err )
IF ls_err <> '' THEN
MessageBox ( "error - Syntax", ls_err )
ELSE
dw_1.SetTransObject ( SQLCA )
dw_1.Retrieve()
END IF

Los nombres aparecen en  ddplb y si selecciono uno de ellos me saque el codigo con el nombre en una nueva Dw. El problema es que no se como hacerlo, soy nueva en esto, por favor si me ayudan  gracias por sus respuestas.
Título: Re: Utilizacion De Dropdownlistbox
Publicado por: leoandres en Sábado 24 de Junio de 2006, 16:51
Para que veas como funciona esto....
1. crea dos datawindows
1.1    a uno lo vas a llamar dddw_nombres (cuando lo guardes) , seleccionas la tabla y el orden en que      quieras que te aparezcan los datos (por ej. nombre)
1.2    a otro lo vas a llamar dw_datos (cuando lo guardes), seleccionas la tabla de donde quieres extraer para la busqueda...en el sql defines un argumento tipo string y lo llamas a_nombre (menu:design... retrieval arguments)
    en el where le pones (columna) nombre = :a_nombre; esto te permite que te filtre solo el (los) registro(s) que contengan ese valor...
2. crea una ventana con 2 objetos datawindow dentro de ella...
al primero (dw_1), le pones que el objetname=dddw_nombres
al segundo (dw_2) le pones que el objetname=dw_datos

en el script del open de la ventana le pones lo siguiente:
dw_1.Settransobject(SQLCA)
dw_2. Settransobject(SQLCA)
dw_1.retrieve()

3. en el evento 'ROWFOCUSCHANGED' del dw_1 le pones
dw_2.retrieve(this.getitemstring(this.getRow(),'nombre')

y listo.... en el primer dw (dw_1) te va a extraer todos los registros de donde parte tu búsqueda en el segundo (dw_2) te va a sacar los datos de lo que  especificamente busques...

tienes que poner en el retrieve que te puse en el punto 3 el nombre de la columna como te la define el dddw_nombres al crearse donde yo escribi 'nombre' (tiene que ir entre comillas (simple o doble)... ojo el nombre con que trabaja el datawindow (para la columna) no necesariamente es el mismo de la columna... lo cambia si tienes varias tablas cruzadas, etc....

espero que te sirva... no te compliques con crear por sintaxis...dw... ddlb,... etc.
Título: Re: Utilizacion De Dropdownlistbox
Publicado por: ruth2006 en Sábado 24 de Junio de 2006, 17:43
Esta frase aparece despues de crear a_nombre, le puse como me indicaste.
the a_nombre argument defined for the select statement was not referenced.
Por favor si me puedes ayudar quizas me falta algo más, cuando ya compilo supongo que es por eso que no se visualiza nada en el ddw_datos.
Gracias por tu ayuda.
Título: Re: Utilizacion De Dropdownlistbox
Publicado por: pierpiter en Lunes 26 de Junio de 2006, 19:54
Creo que te faltó este paso:
Código: Text
  1. ....en el sql defines un argumento tipo string y lo llamas a_nombre (menu:design... retrieval arguments)...
  2.  

Cuando creas la dw anda al menu design->retrieval arguments, te va a abrir una ventanita para definirle los argumentos a la dw. Ahí creas uno que le ponés "a_nombre" y lo definis del tipo string.
Ahora no recuerdo bien, pero creo que ese error salía cuando no se definían en la dw, pero si lo agregabas al select.
Espero te sirva, saludos.