Les Cuento el problema siguiente
Tengo que desarrollar un sistema telefonico en visual basic 6.0 con base de datos en access
Para aquello estoy utilizando 3 combobox y un datagrid en un formulario los cuales deben estar asociados de la siguiente manera.
tengo 4 tablas
Establecimiento
- cod_establecimiento
- descripcion
Servicio
- cod_servicio
- descripcion
-cod_establecimiento
Unidad
- cod_unidad
- descripcion
-cod_sercivio
Usuario
- nombre
- telefono1
-telefono2
-cod_servicio
el primer combobox debe desplegar una lista de establecimientos , una vez seleccionado el establecimiento este tiene que desplegar los servicios de dicho establecimiento en el combobox2 .
Luego al seleccionar el servicio, este tiene que mostrar en el combobox 3 las unidades relacionadas al servicio. Y finalmente cuando selecciono en el combobox 3 la unidad, me tiene que mostrar en el datagrid de la parte baja del formulario el usuario y sus numeros de telefono.
queria saber como podria hacerlo para asociar esos combobox y finalmente se muestre la informacion en la grilla.
Saludos
supongo que la idea sería agregar los objetos de los combos mediante código: en el primer combo metes la lista que es fija y después que la lista del segundo combo se genere cuando le das click al objeto del combo, es decir algo como....
Private sub combo1_click...
Select Case combo1.selecteditem
Case "noseke"
combo2.additem...
combo2.additem...
combo2.additem...
combo2.additem...
Case "nosekuantos"
combo2.additem...
combo2.additem...
combo2.additem...
combo2.additem...
End Select
End sub
y lo mismo con los otros combos...
no sé como tienes que usar access y eso... es una idea ;D
salu10!!
muchas gracias amigo , intentare eso y te cuento, aun mas opiniones son bienvenidas.
Saludos :D
me dio un error de Method or data member not found.
Private Sub Combo1_Click()
Select Case Combo1.selecteditem
Case "Servicio de Salud"
Combo2.AddItem "direccion"
Combo2.AddItem "auditoria"
Combo2.AddItem "recursos humanos"
Combo2.AddItem "tesoreria"
Case "Hospital Base"
Combo2.AddItem "pediatria"
Combo2.AddItem "cirugia"
Combo2.AddItem "dental"
Combo2.AddItem "nutricion"
End Select
End Sub
:huh:
lo de selecteditem creo que tienes que ponerlo así: Combo1.ItemData(Combo1.ListIndex)....
Mira... primero que nada debes saber como listar el contenido de un campo de la tabla que creaste en el COMBO...
Para ello puedes ver este enlace (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/358-cargar-recordset-ado-en-combobox-listbox.htm)
Luego que hagas eso, lo que tienes que generar son QUERYS SQL "Consultas", donde lo que selecciones en el combo filtre y pues te muestre lo que filtraste en otro.
Revisa eso y cuentanos... ;D
Hola,es facil solo tenes que ir armando la consulta sql segun lo que vas seleccionando en los combos...
saludos.
Podrias darme un ejemplo de las consultas
tendria que colocarlas en el codigo del combobox 3? es necesario añadir algun codigo al datagrid?
La idea es que cada vez que seleccione en el combobox 3 (despues de haber pasado todo el filtro de los combobox anteriores) entonces se muestre en el datagrid la informacion correspondiente de cada unidad (por lo que se desplega la lista de usuarios en el datagrid).
por eso me pregunto si no se puede cargar la lista de un combobox desde los campos de una tabla?.
saludos
Claro que lo puedes hacer.
Lo que debes hacer es setear el datagrid con la tabla y desde los combo llamas el evento click del combo3 haci seria mas o menos si hay dudas postea
Saludos...
Prepararé un ejemplo, pero a ver si buscas información o lees un poco... No hacemos tareas... >:(
Ok, lo prometido es deuda... Te pediré un par de favores...
1ero Leete un manual o algún tutorial para que puedas entender como relacionar y usar una BD.
2do En un foro generalmente se resuelven dudas, no se hacen tareas. Sin embargo está departe del usuario que responda si te lo hace o no, en mi caso lo hice porque noté que no tienes ni la menor idea de como hacerlo.
3ro Revisa la web que te pase en el link, hay mucho material.
Hay muchas maneras de hacer lo que quieres, yo sencillamente busque la más fácil de hacerlo para que puedas entenderlo.
Te dejo el Link de Descarga Aquí (http://www.megaupload.com/?d=MYCYDRHX)
No te tomes a mal los favores pedidos, es solo para que puedas aprender más...
muchas gracias po los comentarios y el ejemplo de ayuda , trate de adaptarlo a mi caso pero el problema es que solo puedo hacerlo cuando me muestra en el combobox los codigos , y en mi caso no seria necesario el uso de labels.
otro problema que me surgio es que no me carga el segundo combobox
si podes postea tu proyecto con la base de datos...es mas facil verlo..sino es un lio...
Cita de: Mr_Doctor en 20 Enero 2009, 15:26 PM
muchas gracias po los comentarios y el ejemplo de ayuda , trate de adaptarlo a mi caso pero el problema es que solo puedo hacerlo cuando me muestra en el combobox los codigos , y en mi caso no seria necesario el uso de labels.
otro problema que me surgio es que no me carga el segundo combobox
Esto es increible... Si no es necesario el uso de labels no los coloques y ya... El ejemplo que te pasé cumple con lo que pedías... Che, no te lo tomes a mal, pero busca aprender y estudia los codigos, aqui no se hacen tareas... >:(
http://www.fileden.com/files/2006/11/24/415874/Consulta%20telefonica.rar (http://www.fileden.com/files/2006/11/24/415874/Consulta%20telefonica.rar) ahi esta el proyecto con la base de datos
saludos :)
Oyeme tienes que refrescar el combo2 nuevamente para que aparezca el listado de los servicos de segun el primer combo
If RST.EOF = False Then
Label2.Caption = RST(1)
While RST.EOF = False
Combo2.AddItem RST(0)
RST.MoveNext
Wend
End If
Y en el adoc le debes cargar la tabla en load y no directamente como lo tiene de esta forma
Private Sub Form_Load()
Consulta.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\bd1.MDB;Persist Security Info=False"
Consulta.RecordSource = "SELECT * From usuario"
Consulta.Refresh
End Sub
Y luego en el evento que quieras le haces la consulta
Consulta.RecordSource = "SELECT nombre_usuario as Nombre , red_minsal as Red Minsal, numero_externo as Numero Externo From usuario where a ='" & Combo2.Text & "' ORDER BY nombre_usuario"
Consulta.Refresh
Talves te haya ayudado..
Saludos.. ;D
no funciono amigo trate de cambiarle lo que me dijiste y aun no funciona, el combobox 2 aparece deshabilitado y la tabla no carga al final
Al combo2 lo tienes que abilitar tu en codigo pork lo tienes desabilitado asi cuando le cargas los datos:
Combo2.Enabled = True
Osea
Private Sub CargarCombo2()
Conect
opDB
SQL = "select * from servicio where cod_establecimiento='" & Combo1.Text & "'"
openRS
Combo2.Clear
While RST.EOF = False
Combo2.AddItem RST(0)
RST.MoveNext
Wend
Combo2.Enabled = True
cerrar
End Sub
Y el grid no te va a cargar los datos pork no lo tienes seteado con ninguna tabla pork esta con el adodc pero ese esta con la tabla de usuario y esa no tiene los datos anteriores filtrados pero bueno.
Te recomiendo que te leas un par de manuales o investigues acerca de las database y las conexiones con vb ami me gusta el adodc para mis conexiones o pasate por la pagina del gille hay encontaras de todo.
Y despues de eso construye de nuevo tu proyecto y te ira mejor.
Saludos...
digamos que esta mas o menos bien...el programa anda yo lo probe y bueno le faltan cosas y veo codigo repetido muchas veces y veo que cerrar y abris constantemente las conexiones y eso no debe ser asi,la conexión tendria que quedar siempre abierta...aparte estas trabajando con el control ADODC y es mejor trabajar sin controles o sea directamente con codigo...si tengo tiempo te preparo algo sin usar el control ADODC vas a ver que es mucho mejor, puede ser dificil entenderlo priemro pero es lo que se debe hacer...despues te preparo algo...pero igualmente anda leyendo sobre ADO en internet que esta lleno de cosas..como declarar los recordset etc...
PD:ahi te lo corregi un poco fijate ahora no usa controles...
Consulta Telefonica (http://www.uploadsourcecode.com.ar/d/gibZwySdbtwLTAx9xPQe4M0ME912zB0m)
saludos.
muchas gracias por tu ayuda, el codigo sin el ado parece mucho mas simple
::)
Ahora lo unico que me falto fue simplemente que en vez de mostrar los codigos en el combobox cuando lo seleccione muestre los nombres correspondiente a los codigo.
Private Sub CargarComboServicio()
RSTAux.Open "SELECT * FROM servicio WHERE cod_establecimiento='" & CmbEstablecimiento.Text & "'", CNN, adOpenStatic, adLockOptimistic
CmbServicio.Clear
Do Until RSTAux.EOF
CmbServicio.AddItem RSTAux(0)
RSTAux.MoveNext
Loop
RSTAux.Close
End Sub
como podria modificar ese codigo para que a la vez de relacionarme los codigos que unen las tablas , en vez de mostrarme en la lista del combobox los codigos me muestre los campos del nombre de descripcion.
Gracias :)
si, yo tambien lo vi raro porque es feo que muestre el id en vez la descripcion...el usuario se va a perder...para mostrar el nombre y relacionarlo con el id hay 2 formas, yo te recomiendo la segunda...
1 - al cargar el combo cargar el nombre...pero el combo tiene una propiedad llamada ItemData, donde ahi le podes cargar numeros para relacionar el nombre...o sea cargas el nombre y en la propiedad ItemData vas cargando los id....y cuando hagas la consulta para cargar los demas combos tenes qeu consultar la propiedad ItemData que es la que tiene el id...
el problema de la propiedad ItemData es que solo acepta numeros...si tenes una letra en el id ..no anda...
2 - usar el control llamado DataCombo que este si acepta id alfanumericos...
ahi te subi el ejemplo con el datacombo...es lo mismo solo cambia un poco...
Telefonia con Datacombo (http://www.uploadsourcecode.com.ar/d/9tpR1sUL8Tebb5phdZWGm4tQBo8agoSB)
saludos.
Buenas Noches
Seria tan amables de compartir un ejemplo dado que tengo el mismo caso.
Gracias