• Domingo 22 de Diciembre de 2024, 17:35

Autor Tema:  Combo  (Leído 2895 veces)

Llaneta

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Combo
« en: Viernes 22 de Diciembre de 2006, 12:24 »
0
Hola, buenos dias...

Estoy intentando llenar un combo mediante un recordset que recupera una consulta de una tabla, pero me da error, les pongo el codigo a ver si ustedes lo encuentran.

Private Sub Cuadro_combinado41_GotFocus()

Dim Csql As String
abre As ADODB.Recordset

Csql = "Select Ejercicio, iva1, iva2, iva3, iva4, iva5 From IVAINICIO" _
& "Where Ejercicio= '" & Year(Now()) & "'"

Set abre = New ADODB.Recordset

abre.Open Csql, CurrentProjectConnection, adOpenKeyset, adLockReadOnly, adCmdText

If Not (abre.EOF And abre.BOF) Then

MsgBox " Ha encontrado algo "

EJERCICIO = abre!EJERCICIO
iva1 = abre!iva1
iva2 = abre!iva2
iva3 = abre!iva3
iva4 = abre!iva4
iva5 = abre!iva5

End If

    Set abre = Nothing

End Sub


El error que me da es: La instrucción no es válida fuera del bloque Type

Muchas grácias

luciano2

  • Miembro activo
  • **
  • Mensajes: 71
    • Ver Perfil
    • http://www.recursosvisualbasic.com.ar/
Re: Combo
« Respuesta #1 en: Viernes 22 de Diciembre de 2006, 17:09 »
0
El error está acá: -->> abre As ADODB.Recordset

Te faltó el Dim ...

Dim abre As ADODB.Recordset


saludos



-----------------------------

Recursos Visual basic

Llaneta

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Combo
« Respuesta #2 en: Viernes 22 de Diciembre de 2006, 17:42 »
0
Gracias luciano, eso ya lo solucione, ahora no se como pasar los registros al combo

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Combo
« Respuesta #3 en: Viernes 22 de Diciembre de 2006, 17:44 »
0
Además la consulta no va a funcionar. Le falta un espacio delante del "Where".

Saludos  :photo:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Llaneta

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Combo
« Respuesta #4 en: Viernes 22 de Diciembre de 2006, 18:29 »
0
Cita de: "Angel_K_ido"
Además la consulta no va a funcionar. Le falta un espacio delante del "Where".

Saludos  :photo:
eso también lo habia detectado y solucionado, gracias.La select me funciona lo q no funciona es lo q les comente anteriormente de pasar los registros del recordset a un combo, es la primera vez que lo hago y voy un poco pez.

Gracias y Feliz Navidad

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Combo
« Respuesta #5 en: Viernes 22 de Diciembre de 2006, 19:24 »
0
Te referís a esto?.......

Código: Text
  1.  
  2.         Combo1.AddItem abre!iva1, 0
  3.         Combo1.AddItem abre!iva2, 1
  4.         Combo1.AddItem abre!iva3, 2
  5.         Combo1.AddItem abre!iva4, 3
  6.         Combo1.AddItem abre!iva5, 3
  7.         Combo1.ListIndex = 0
  8.  
  9.  
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Llaneta

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Combo
« Respuesta #6 en: Viernes 22 de Diciembre de 2006, 19:31 »
0
eso es lo que puse yo, pero cuando termino de poner , 0 me sale un mensaje de error diciendome Se esperaba fin de instruccion

Gracias

Llaneta

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Combo
« Respuesta #7 en: Viernes 22 de Diciembre de 2006, 19:36 »
0
Ahora ya no me saca error pero no me muestra nada en el combo

Gracias

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Combo
« Respuesta #8 en: Viernes 22 de Diciembre de 2006, 20:06 »
0
:D Como se llama el ComboBox? En el ejemplo que te di se llama Combo1.

Hacé un Paso a Paso y fijate el valor que toman las variables, seguramente no estas extrayendo bien los datos de la DB.

Saludos
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

mamex

  • Miembro activo
  • **
  • Mensajes: 77
  • Nacionalidad: mx
    • Ver Perfil
Re: Combo
« Respuesta #9 en: Viernes 22 de Diciembre de 2006, 21:03 »
0
Mira, para llenar combos, uso el método siguiente: primero creo un recordset con una consulta sobre una base de datos de access, despues mando a llamar a la funcion llenarComboRs()  y le mando el recordset creado anteriormente, y después el combo al que le voy a meter los datos. Espero y te sirva.
Para que el código te sirva, deberas agregar la siguiente referencia a tu proyecto:
Microsoft Activex Data Objects 2.5 Library


Las funciones que debes agregar:
Código: Text
  1.  
  2. 'Crea una consulta y la regresa como un recordset
  3. Public Function crearConsulta(baseDeDatos As String, sql As String) As Recordset
  4.     Dim bd As Connection, rs As Recordset
  5.     Set bd = New Connection
  6.     Set rs = New Recordset
  7.     'Genera la cadena de conexión
  8.     bd.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
  9.         baseDeDatos & ";Persist Security Info=False"
  10.     'Abre la base de datos
  11.     bd.Open
  12.     'Se la asigna al recordset
  13.     rs.Open sql, bd, adOpenKeyset, adLockOptimistic
  14.     If rs.recordCount > 0 Then _
  15.         rs.MoveFirst
  16.     'Regresa el recordset
  17.     Set crearConsulta = rs
  18. End Function
  19.  
  20. 'Llena un comboBox con un campo de un recordset
  21. Public Sub LlenarComboRs(rs As Recordset, Campo As Integer, combo As Object)
  22.     Dim aux As Long
  23.     'Limpia el combo
  24.     combo.Clear
  25.     'Si esta situado en un registro
  26.     If rs.recordCount > 0 Then
  27.         With rs
  28.             'Guarda la posicion en la k esta el recordset
  29.             aux = .AbsolutePosition
  30.             'Se mueve al primero para ir uno por uno hasta el final
  31.             .MoveFirst
  32.             While (Not .EOF)
  33.                 'Agrega el elemento al combo y pasa al siguiente
  34.                 combo.AddItem .Fields(Campo)
  35.                 .MoveNext
  36.             Wend
  37.             'Se regresa al primero, y despues al que estaba cuando se llamó la función
  38.             .MoveFirst
  39.             .Move aux - 1
  40.         End With
  41.     End If
  42.     combo.Text = "Seleccione"
  43. End Sub
  44.  
  45.  

'Y en el evento gotFocus (aunque yo te recomiendo en el evento dropDown)
'mandas a llamar al recordset, y despues a llenarCombo
Código: Text
  1.  
  2. Private Sub Combo1_GotFocus()
  3.     Dim rs As Recordset
  4.     'Este es un ejemplo, debes cambiar el nombre de tu BD y tu consulta
  5.     Set rs = crearConsulta("C:\Consultorio\systech.mdb", "Select nombre from pacientes")
  6.     'El segundo parametro (en este caso 0) es el numero del campo del recordset
  7.     LlenarComboRs rs, 0, Combo1
  8. End Sub
  9.  
  10.  

Llaneta

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Combo
« Respuesta #10 en: Martes 26 de Diciembre de 2006, 11:06 »
0
Gracias mamex, pero tengo una pregunta, el codigo lo copie en un modulo y el otro en el gotfocus, pero como agrego la referencia a mi proyecto.

Gracias.

mamex

  • Miembro activo
  • **
  • Mensajes: 77
  • Nacionalidad: mx
    • Ver Perfil
Re: Combo
« Respuesta #11 en: Martes 26 de Diciembre de 2006, 21:28 »
0
Que tal Llaneta, la referencia la agregas desde el menú Proyecto -> Referencias. Buscas la Referencia Microsoft Activex Data Objects 2.5 Library, u otra versión. La palomeas, y le das aceptar.