Programación General > Power Builder
Utilizacion De Dropdownlistbox
ruth2006:
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.
leoandres:
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...
pierpiter:
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.
ruth2006:
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.
leoandres:
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.
Navegación
[#] Página Siguiente
Ir a la versión completa