Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

domingo, 9 de septiembre de 2012

Carga de un ComboBox con valores de un campo.

A continuación un pequeño ejemplo, usando una base de datos SQLite ("Empresas"), mostrando los valores en un comboBox de un campo de la tabla "Datos".

Creamos un módulo, donde se trabaja con la base de datos:
-->
' Gambas module file
'Variables que se usan en el módulo
Private hconn As New Connection
Private hresul As Result

Private Function ConectarBase() As Connection
' hace la conexion a la base de datos
' Nota:
' Uso una base existente o la copio a la carpeta temporal /tmp

If Not Exist("/tmp/Empresas") Then
Copy "Empresas" To "/tmp/Empresas"
Endif
hconn.Name = "/tmp/Empresas"
hconn.host = "/tmp/Empresas"
hconn.Type = "Sqlite3"
hconn.open
Return hconn

End

'Funcion que le pasas el combobox del formulario, para que se rellene
Public Sub listado(lista As ComboBox)

Dim Clave As String
'conectamos a la base de datos
hconn = ConectarBase()
'consulta sql: obtener los valores del campo "local" de la tabla "Datos", sin duplicarlos, ordenados Ascendentemente
hresul = hconn.Exec("Select DISTINCT Local from Datos order by Local ASC")
'recorro todo el resultado que se han producido en la consulta, y cargo los datos en el comboBox
Do While hresul.Available
Clave = hresul["Local"] '"Local" es el nombre del campo, que queremos leer sus datos
lista.Add(Clave)
hresul.MoveNext()
Loop

End

 En el formulario principal, creamos un combobox1, y una etiqueta donde se mostrara el resultado del valor elegido del combobox1.
El código fuente:
-->
' Gambas class file

Public Sub Form_Open()
'centro el formulario
Me.center
'cargo los datos en el combobox1
ModuleBaseDatos.listado(ComboBox1)
End

Public Sub ComboBox1_Leave()
'cuando el cursor abandona el ComboBox, actualiza el valor...
Label2.text = ComboBox1.Text
End



Descarga del Código: Enlace

Nota1:
El mismo programa contiene la base de datos "Empresas" y se encarga de copiarla a la carpeta temporal "/tmp" para trabajar con ella.


Nota2:
En vez de usar el  bucle Do While, se puede usar el For Each: 
for each hresul
lista.add( varResult!Local)
next




2 comentarios:

  1. como hago para rellenar un solo combo con dos campos por ejemplo
    un combo que aparezca el campo nombre y apellido ya que solo tengo para un solo campo como muestras en el ejemplo

    ResponderEliminar
  2. Kenedy Cruz Miranda: Create una vista en la base de datos, donde concatenes los dos campos.
    Mirate este enlace: https://forum.openoffice.org/es/forum/viewtopic.php?f=32&t=2481

    ResponderEliminar

A falta de donativos... un poco de publicidad