Cargar datos en Dropdownlistbox

Tengo 2 tablas
Oficina y unidades.
Tabla oficina tiene los siguientes campos:
Of_codigo(pk), nombre_oficina, jefe, telefono, email
tabla unidades tiene los siguientes campos:
unidad_codigo(pk), nombre, jefe, of_codigo(fk)
Luego para agregar los datos en un dropdownlistbox1 donde tengo los datos de la tabla oficina hago lo siguiente:
Declaro una instance variables
declare llena_oficina cursor for
select nombre_oficina
from oficina;
ingreso el codigo en el evento open del formulario:
string  uno
open llena_oficina;
fetch llena_oficina into :uno;
do while sqlca.sqlcode=0
 ddlb_1.additem( uno)
fetch llena_oficina into :uno;
loop
close llena_oficina;
Con el código anterior puedo agregar los registros
de la tabla oficina al dropdownlistbox1
no tengo problemas con la tabla oficina.
Lo que necesito que me ayuden es cuando selecciono del dropdownlistbox1 donde están cargados los datos de la tabla oficina. Por ejemplo
secretaria general me muestre las unidades que ya los tengo
ingresados en la base de datos, que estos datos me los cargue en
el otro dropdownlistbox2.
Más o menos el ejemplo es como de un ubigeo : ej: departamento, provincia, distrito
selecciono departamento me muestra todos los distritos del departamento en los dropdownlistbox respectivos.
Si me ayudaran les estaré muy agradecido.
1

1 Respuesta

105.350 pts. Bachiller Ingenieria de Sistemas e Informatica...
Lo que debes hacer es poner en el evento itemchanged del primer dropdownlistbox el cursor que llena al segundo, es decir:
Evento itemchanged
ddlb_1.clear()
Y acá llenas el segundo ddlb
Eso es todo
El dropdownlistbox no tiene ningún evento itemchanged
cual seria el código del cursor para llenar el segundo dropdownlistbox
Dígame los pasos que tengo que hacer para cuando yo seleccione de un primer
dropdownlistbox me muestre en el segundo dropdownlistbox los datos del campo
que seleccione en el primer dropdownlistbox
Como ejemplo te ponía de ubigeo:
Tengo en un primer dropdownlistbox una lista de Departamentos
quiero que me llene los distritos de ese departamento que seleccione
Pero en este caso selecciono una Oficina y quiero que me muestre las Unidades de esa
oficina que seleccione en el primer dropdownlistbox
Gracias por la ayuda.
Disculpa es en el evento selectionchanged
Ahí debes colocar:
choose case ddlb_1.text
  case 'dato1'
     ddlb_2.Reset()
     ddlb_2.AddItem('valor1')
     ddlb_2.AddItem('valor2')
  case 'dato2'
     ddlb_2.Reset()
     ddlb_2.AddItem('valor3')
     ddlb_2.AddItem('valor4')
end choose
El cursor seria igual al que tienes con la diferencia que debes llamar a la tabla indicada y al final del from colocarle el where campo = :ls_campo;
Hola probé lo que me dijiste pero no me ressulto.
He tratado de hacerlo con dos dw, el primer dw están los campos de la tabla oficina, del 2do dw están los campos de la unidad de oficina
En el evento selectionchanged del ddlb_1 pongo este código:
string n
string dato
dato=ddlb_1.text
select Nombre_Oficina into:dato
from Oficina;
n=ddlb_1.text
st_4.text=n
integer Reg
string busca
busca= "Upper(Nombre_Oficina) Like '"+ Upper(st_4.text)+"%'"
Reg=dw_1.find(busca,1,dw_1.rowcount())
if Reg=0 then
 messagebox("Verifique","La Oficina no existe")
else
 dw_1.scrolltorow(Reg)
 ofic=dw_1.getitemstring( dw_1.getrow( ) ,"of_codigo")
 //unidadd=dw_1.getitemstring( dw_1.getrow( ) ,"nombre_oficina")
end if
Cuando selecciono una oficina en el ddlb_1 por ejemplo Secretaria General automáticamente me muestra lo que busco osea las unidades de la oficina que seleccione pero en el dw_2. Este el código a continuaion con el que resulta en el mismo evento selectionchanged del ddlb_1:
dw_2.Setfilter("of_codigo='"+trim(ofic)+"'")
dw_2.Filter();
dw_2.retrieve()
dw_2.setfocus()    
Pero ahora lo que he buscado resolver es que cuando selecciono una Oficina en el ddlb_1, automáticamente me cargue las unidades de esa Ofiicna, yo solo lo he logrado con el dw, como hago para que catgue en el ddlb_2.
Haber si me he dejado entender me ayudarías.
Pero ya te di la respuesta solo adapta el código que te envíe al caso que quieres.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas