Visual Basic - LLENAR COMBOBOX A PARTIR DE CONSULTA SQL

Life is soft - evento anual de software empresarial
 
Vista:

LLENAR COMBOBOX A PARTIR DE CONSULTA SQL

Publicado por EDGAR (193 intervenciones) el 02/10/2004 21:59:58
Tengo una gran duda ya que estoy llenado los combo box a partir de una base de datos en access, mi programacion esta echa con DAO y tengo el siguiente codigo:

Private Sub CBOestado_GotFocus()
Do Until centros.EOF
CBOestado.AddItem (centros!estado1 & " " & centros!des_estado)
centros.MoveNext
End If
Loop
End Sub

Pero necesito darle ciertos parametros a esa consulta ya que hay valor que se repiten en la tabla y necesito que me muestre un unico valor por cada uno asi que tengo la siguiente consulta:

SQL = "Select distinct estado1,des_estado from centros"

Necesito saber como puedo hacer para agregar esta consulta y poder asi mostrar los resultados en el combo box. Otra cosa es que yo programo esto en el evento "Private Sub CBOestado_GotFocus()" pero sera que abra otra forma de hacerlo para que no se tarde a la hora de mostrarme los resultados???

Agradezco mucho de tu ayuda colega =)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:LLENAR COMBOBOX A PARTIR DE CONSULTA SQL

Publicado por HeNrY (90 intervenciones) el 02/10/2004 22:45:12
Quedaria asi :

Private Sub CBOestado_GotFocus()
Do Until centros.EOF
CBOestado.AddItem centros("estado1") & " " & centros("des_estado")
centros.MoveNext
End If
Loop
End Sub

Lo otro es: deberias cargar todo el combo en el form_load, para que no tengas que leer en el CBOestado_GotFocus() .

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:LLENAR COMBOBOX A PARTIR DE CONSULTA SQL

Publicado por EDGAR (193 intervenciones) el 02/10/2004 22:48:39
Si perfecto, eso me funciono bien. Pero mi duda en si es que como puedo hacer para que me muestre en el combo box los resultados de acuerdo a una consulta SQL ya que al ejecutar la consulta como me la colocastes tu me mostraria muchos valores duplicados por lo que necesito hacer la siguiente consulta

SQL = "Select distinct estado1 from centros order by estado1 asc"

Agradezco de tu ayuda colega
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:LLENAR COMBOBOX A PARTIR DE CONSULTA SQL

Publicado por HeNrY (90 intervenciones) el 02/10/2004 23:20:15
Primero tienes que traer lo registros con una sentencia sql y ejecutarla como tal :

1
2
SQL = "Select distinct estado1 from centros order by estado1 asc"
centros.execute SQL

y luego, el tratamiento es igual :

1
2
3
4
5
6
7
Private Sub CBOestado_GotFocus()
Do Until centros.EOF
CBOestado.AddItem centros("estado1") & " " & centros("des_estado")
centros.MoveNext
End If
Loop
End Sub

Espero haber resuelto tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:LLENAR COMBOBOX A PARTIR DE CONSULTA SQL

Publicado por EDGAR (193 intervenciones) el 02/10/2004 23:28:12
Guao colega lo que pasa es que como rte mecione anteriormente, estoy programando por DAO y no se me presenta la propiedad Execute para el objeto. Ademas que como puedo especificar en el combo box que la instruccion sql le permite realizar la busqueda que va a mostrar en el mismo??... Gracias de igual forma
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:LLENAR COMBOBOX A PARTIR DE CONSULTA SQL

Publicado por HeNrY (90 intervenciones) el 02/10/2004 23:31:45
Sobre que BD estas trabajando??? , y que tipo de conexion utilizas ???

Yo he trabajo con DAO y SQL, y esa sentencia funciona muy bien.

OK
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:LLENAR COMBOBOX A PARTIR DE CONSULTA SQL

Publicado por EDGAR (193 intervenciones) el 02/10/2004 23:56:45
Uso base de datos en Access y me conecto de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Data As DAO.Database
Public centros As DAO.Recordset
 
Public Sub Abrir()
On Error GoTo 10
    Set Data = OpenDatabase(App.Path & "\centros2.mdb")
10
If Err.Number = 3024 Then
    varmsg1 = MsgBox("No es localizada la Base de Datos")
    Exit Sub
End If
End Sub
 
Private Sub Form_Load()
    Set centros = Data.OpenRecordset("CENTROS", dbOpenTable)
    centros.Index = "PrimaryKey"
End Sub

De esta forma es que me conecto con la Data colega
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

TAMBIEN SUCEDE QUE...

Publicado por EDGAR (193 intervenciones) el 03/10/2004 00:14:04
Habia colocado centros.execute por eso era que no me mostraba la propiedad porque tenia que colocar era la siguiente instruccion:

Data.Execute "SELECT DISTINCT [estado1],[des_estado] from centros order by estado1 asc"

Pero de igual forma no me realiza la consulta como la deseo =(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:TAMBIEN SUCEDE QUE...

Publicado por El Bohe (36 intervenciones) el 03/10/2004 00:29:48
aver amigo: estuve viendo y se te ah complicado, justo en este momento estab progrmaando algo parecido y lo hice asi:

esto lo puse dentro de:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub tu_combo_Click() ' estaria bueno tambien ponerlo en el load y en  el activate
 
Dim e As Recordset
Set e = BD.OpenRecordset("SELECT distinct tu_campo From tu_tabla WHERE (((tu_campo_de_comparacion )= '" & tu_combo.text & " '))")
 
'luego preguntas si la consulta te devolvio algo
if e.recordcount > 0 then ' encontro algo
            do while e.eof=false ' recorres todso el recordset
                 tu_combo.additem  e.fields (" tu_campo")
               e.movenext
             loop
end if
e.close
end sub

bue fijate si te sirve, sino tengo otros ejemplos, avisa!! Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar