Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Como Hacer Para Enlasar Dos Combobox Y Un Columnview(base De Datos Sqlite3)
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Como Hacer Para Enlasar Dos Combobox Y Un Columnview(base De Datos Sqlite3) 
 
Hola tengo una base de datos en la cual hay tres tablas (materia(id_materia, nombre_materia), grado(id_grado, nombre_grado), registro_materia(id_registro, id_materia, id_grado), (una materia se puede dar en varios grados y un grado tiene varias materias))

Tengo dos combobox cb_materia, cb_grado
Lo que necesito hacer es que cuando despiege cb_grado me aparezca el nombre de los grados(sexto, septimo, etc.) y al seleccionar sexto en el combobox cb_materia me aparezca los nombres de las materias(ingles, español, etc) registradas para ese grado(sexto) cuando selecciono la materia(ingles) debe aparcerme en un columnview una lista con los logros de esa materia(ingles) para ese grado(sexto)

 la tabla de los logros es la siguiente (logro(id_logro, nombre_logro, valor_logro, id_registro_materia))

en un modulo tengo la conexion a la base de datos y aqui mismo lleno los combobox
Asi lleno el combobox cb_grado (el primer hresul me muestra la materia pero por codigo no por nombre, el segundo hresul(comentado) me muestra el nombre pero no se como ligarlo con las materias, el primer clave4 va con el primer hresul y el segundo clave4(comentado) va con el segundo hresul)

Public Sub listado_gra(lista_gra As ComboBox)
  
Dim Clave4 As String

hConn = ConectarBase()
lista_gra.Add("Seleccionar")
hresul = hConn.Exec("select DISTINCT id_grado from tb_registro_materia")
' hresul = hConn.Exec("Select * from tb_grado")
Do While hresul.Available
Clave4 = hresul["id_grado"]
' Clave4 = hresul["nombre_grado"]
lista_gra.Add(Clave4)
hresul.MoveNext()
  Loop
  
  End
 


No tengo muy claro como llenar el segundo combobox cb_materia hasta el momento tengo esto:

  Public Sub listado_mat(lista_mat As ComboBox)
  Dim filtro As String
Dim Clave1 As String
filtro = Ver_Logros.cb_grado.Text
hConn = ConectarBase()
lista_mat.Add("Selecionar")
hresul = hConn.Exec("select id_materia from tb_registro_materia")
filtro = hresul!id_grado
' hresul = hConn.Exec("Select * from tb_materia")
Do While hresul.Available
  Clave1 = hresul["id_materia"]
' Clave1 = hresul["name_materia"]
lista_mat.Add(Clave1)
hresul.MoveNext()
  Loop
  
  End
 


En el formulario principal tengo esto:

Private hConn As Connection
 Private hresul As Result

Public Sub Form_Open()

  Me.Center
  
     If Not Exist(User.Home &/ "Documents/Arshal/prog_gambas_pro/draft_notes/db_rn")
    Try Mkdir User.Home &/ "Documents/Arshal/prog_gambas_pro/draft_notes"
    Copy "db_rn" To User.Home &/ "Documents/Arshal/prog_gambas_pro/draft_notes/db_rn"
   Endif
  
 tabla.Clear
   hConn = general.ConectarBase()
 general.listado_gra(cb_grado)

End

Public Sub cb_grado_Change()

  If cb_grado.Text = "Seleccionar" Then
    cb_mat.Clear()
    Else
       cb_mat.Clear()
  general.listado_mat(cb_mat)
  Endif

End

Public Sub cb_mat_Change()
    Dim x As String
  If cb_mat.Text = "seleccionar" Then
    tabla.Clear()
    Else
         tabla.Clear
   hConn = general.ConectarBase()
  
   tabla.Columns.Count = 4
   tabla.Columns[0].text = "Id logro"
   tabla.Columns[0].Width = 50
   tabla.Columns[0].Alignment = Align.Center
   tabla.Columns[1].text = "Logro"
   tabla.Columns[1].Alignment = Align.Center
   tabla.Columns[1].Width = 120
   tabla.Columns[2].text = "Id Registro de materia"
   tabla.Columns[2].Alignment = Align.Center
   tabla.Columns[2].Width = 50
   tabla.Columns[3].text = "Valor del logro"
   tabla.Columns[3].Alignment = Align.Center
   tabla.Columns[3].Width = 20
  
  
    hresul = hconn.Exec("Select * from tb_logro")
      Do While hresul.Available
     x = hresul["id_logro"]
      
      tabla.Add(x, x)
      
      tabla[x][1] = hresul["nombre_logro"]
      tabla[x][2] = hresul["id_registro_materia"]
      tabla[x][3] = hresul["valor_logro"]

      hresul.MoveNext()
      
    Loop


  Endif

End
 


De antemano muchas gracias por su ayuda  
 



 
última edición por miguel perez el Jueves, 05 Diciembre 2013, 19:28; editado 1 vez 
miguel perez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Para Enlasar Dos Combobox Y Un Columnview(base De Datos Sqlite3) 
 
A ver si te he entendido: El problema es que cuando el usuario selecciona el primer combo, que muestra el nombre, tú quieres que en el segundo combo se actualice la lista según la clave correspondientes al valor seleccionado del primer combo.
Para esto hay una técnica muy sencilla:Utiliza la propiedad .tag del combo para almacenar las claves. Más o menos sería esto:
Public function Form_Open() 'en el formulario cargamos el primer combo al abrir.

dim r as result
dim aclaves as string[]  'o integer, según el tipo de campo que componga la clave

r=miconexion.exec("select campo_clave, campo_nombre from mitabla")
while r.available
   combo1.Add(r!campo_nombre)
   aClaves.Add(r!campo_clave)  
   r.movenext
wend
combo1.tag=aClaves
end
 
  

Con esto tienes en el combo1 la lista de nombres y en su propiedad tag la lista de claves correspondientes. Luego en el evento change:

Public sub combo1_change()
  'hacemos lo mismo que antes, pero con la tabla2
  dim r as result
  dim aclaves as string[]  'o integer, según el tipo de campo que componga la clave
  
  r=miconexion.exec("select campo_clave2, campo_nombre2 from mitabla2 where campo_relacion2 = &1",combo1.tag[combo1.index]) 'seleccionamos en la tabla 2 según el índíce del combo 1
 combo2.Clear 'Importante!!
 while r.available
     combo2.Add(r!campo_nombre2)
     aClaves.Add(r!campo_clave2)  
     r.movenext
  wend
  combo2.tag=aClaves

 end  
 


En el evento change del combo2 rellenarías el combo3 de la misma manera.

Así consigues que el propio control contenga las claves que relacionan las tablas y muestren siempre lo que quieres

Espero que te sirva.

Saludos
 



 
última edición por shordi el Jueves, 05 Diciembre 2013, 19:54; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Guardar Un Columnview/Gridview/Tablev... jcontasti Bases de Datos 1 Miercoles, 21 Abril 2010, 21:11 Ver último mensaje
chen_08
No hay nuevos mensajes Hacer Un Sistema De Login Con Una Tabla De... leonel Bases de Datos 2 Sabado, 19 Abril 2014, 19:20 Ver último mensaje
jguardon
No hay nuevos mensajes Hacer Consultas A Columnview Sin Una Base ... leonel Bases de Datos 10 Viernes, 25 Abril 2014, 18:16 Ver último mensaje
leonel
No hay nuevos mensajes Recorrer Un Columnview Y Guardar Datos En ... v3ctor Controles/Librerías/Componentes 4 Martes, 20 Octobre 2015, 20:06 Ver último mensaje
v3ctor
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron