Forum Discussion
markarel
Mar 22, 2022Brass Contributor
Establecer valor por defecto Combo Box desde una SQL query
Hola a todos! Me estoy realizando una BBDD y tengo un problema con un formulario. En uno de los ComboBox que utilizo, me gustaría poner como valor por defecto el resultado de una query SQL, el pr...
- Mar 24, 2022
¡Hola!
Con un evento adecuado (abrir el formulario o algo así) puedes utilizar un código como éste:
Dim rs As DAO.Recordset
Dim strSQL As StringstrSQL = "SELECT Campo1 " & _
" FROM Tabla " & _
" WHERE Id=42"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)If Not rs.BOF Then
Forms!Formulario1!Combo1.DefaultValue = rs!Campo1
End IfServus
Karl
************
Access News (March edition)
Access DevCon (April 28+29)
Mar 24, 2022
¡Hola!
Parece que tu Sub usario_defecto no se ejecuta. ¿Dónde y cómo se llama? En mi primera respuesta de hoy, mencioné que necesitas un evento adecuado que active el código.
Servus
Karl
************
Access News (March edition)
Access DevCon (April 28+29)
markarel
Mar 24, 2022Brass Contributor
Hola Karl_Donaubauer,
Soy nuevo programando en VBA, tengo el código aquí, por lo que entiendo se ejecuta cuando se abre el formulario, no?
Gracias!
- markarelMar 25, 2022Brass Contributor
Muchísimas gracias Karl_Donaubauer, ya funciona todo a la perfección. Mil gracias!!!!! 🙂
- Mar 24, 2022
¡Hola!
Tu fncUsuario devuelve un texto. Por eso faltan las comillas:
strSQL = "SELECT nombre FROM fichaje WHERE usuario_registrado = '" & fncUsuario & "'"
Servus
Karl
Access News (new March episode)
Access DevCon (April 28+29) - markarelMar 24, 2022Brass Contributor
Hola Karl, muchas gracias por la ayuda, ahora parece que falla otra instrucción:
Muchísimas gracias.
- Mar 24, 2022
¡Hola!
No es de extrañar que no haya nombres de campo. Vuelve a mirar mi ejemplo en el que había utilizado "Campo1" para ello. Contigo debería decirse:
rs!nombre
Servus
Karl
Access News (new March episode)
Access DevCon (April 28+29) - markarelMar 24, 2022Brass Contributor
Hola, muchas gracias una vez mas, siento hacer tantas preguntas, pero es que no termina de funcionar correctamente, pero parece que poco a poco vamos avanzando.
Una vez mas, no se que falla exactamente...:
- Mar 24, 2022
¡Hola!
Falta la referencia a la biblioteca DAO. En el editor VBA, selecciona la opción de menú Herramientas - Referencias (si es que se llama así en el Access español 😉 y busca allí en la lista:
Microsoft Office x.0 Access Database Engine Object Library
Donde x depende de tu versión de Access. En las versiones más recientes x=16. Marca esta casilla y el código DAO debería funcionar.
Servus
Karl
Access News (new March episode)
Access DevCon (April 28+29) - markarelMar 24, 2022Brass Contributor
Oh, ¡muchas gracias!
Ahora si que ejecuta la función, pero, da un error.
Muchas gracias por la ayuda que me esta brindando, me esta siendo de mucha ayuda aprendiendo VBA 😉
- Mar 24, 2022
¡Hola!
No, si quieres que el código se ejecute al abrir el formulario, entonces ve a las propiedades del formulario y busca la propiedad "Al abrir" (al menos creo que así se llama en el Access español). Haz clic ahí y luego en el botón del editor (con los 3 puntos) que está a la derecha.
A continuación, se crea un procedimiento Form_Open (https://docs.microsoft.com/es-es/office/vba/api/access.form.open), en el que copias tu código para que sea llamado cuando se abra el formulario.
Otro método es que no copies el código en el nuevo procedimiento Form_Open, sino que en el procedimiento Form_Open llames a tu procedimiento existente. Esto puede hacerse simplemente con su nombre:
usario_defecto
Sin embargo, esto sólo tiene sentido si llamas al procedimiento en varios puntos.
Servus
Karl
************
Access News (March edition)
Access DevCon (April 28+29)