Capturar dato de cuadro combinado y emplear en sentencia SQL

Quería capturar los datos de un cuadro combinado para emplearlos como variables en una sentencia SQL. El código que he escrito es el siguiente:

Private Sub Cuadro_combinado1_AfterUpdate()
Dim dbs As Database, qdf As QueryDef, strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT * FROM Consulta2 WHERE Gru_pad =" & Forms!Formulario2!Cuadro_combinado1 & ";"
Set qdf = dbs.CreateQueryDef("Consulta", strSQL)
DoCmd.OpenQuery "Consulta", acNormal, acReadOnly
dbs.QueryDefs.Delete "Consulta"
End Sub

Me funciona, se abre la consulta, pero sale sin datos. Sospecho que no he elegido bien el evento ¿Algún alma caritativa puede ayudarme?

2 Respuestas

Respuesta
2

Ay señor. Lo que tienes puesto funciona correctamente pese a lo que te digan. Si tienes una consulta1

Y en el formulario tienes un combinado donde eliges el grupad

Si elijo BB

El código es como lo has puesto, solo que le quito, el punto y coma final que ponías

Hola, buenas

Gracias por contestar. Por fin, he conseguido resolver el problema, en parte, gracias a ti. Me explico:

Como bien dices, tu código funciona perfectamente. El mío, sin embargo, no.

Tanto el uso de LIKE como las comillas simples y quitar el " ;"  es lo correcto. No sé por qué no funciona mi código. De todos modos, para que funcione hacen falta, además, dos requisitos más: que lo que devuelva el cuadro combinado no contenga comas y que esté entre comillas dobles. Esto último, si lo piensas es lógico, puesto que no se puede concatenar dos textos, donde uno, el que devuelve el cuadro, no esté entrecomillado. ¿Estás de acuerdo? Al menos, la práctica lo demuestra, pues, si no lo hago así, sigue sin funcionar.

Muy agradecido. Eres un hacha.

No se si lo he entendido. En el valor que eliges en el cuadro combinado ¿puede haber un punto y coma? Si fuera eso siempre podrías usar

El código del botón es

TextoA = Left([TextoC], InStr([TextoC], ";") - 1)
TextoB = Right([TextoC], InStr([TextoC], ";") - 2)

Por cierto, ¿Cómo puedo concatenar comillas dobles dentro de Values? Me refiero a esto:

DoCmd.RunSQL "insert into Concatenado_cat_pad (Concatenado) values (Nombre & "","" & Día & "","" & Hora & "","" & Sala)" 

Necesito que delante de Nombre y detrás de Sala, vayan concatenadas unas comillas dobles, para que devuelva entrecomillada la cadena. Se me ocurrió poner " " ", pero no funciona, y tampoco funciona ' " '. en ambos casos da error.

Gracias.

Bueno, yo lo he solventado con el guión bajo _ . Pero, está claro que el dato recuperado del cuadro combinado no puede contener comas.

Lo que devuelve el cuadro combinado es la concatenación de los datos de cuatro campos de texto.

Creo que no me he explicado bien. Tengo cuatro campos de texto, que si los concateno obtengo un dato que no se repite nunca, con lo que tengo una campo sin duplicados. Como, además, deben ser legibles, se me ocurrió separarlos con comas, pero, después, cuando he querido usar una SELECT para filtrar los registros de la tabla, basándome en un valor de ese campo concatenado, presentado en un combox y asignado a una variable, para meterlo en la SELECT, es cuando me he dado cuenta que, con las comas, no funciona. Sustituyéndolas por guiones bajos y encerrándolo entre comillas dobles, y con las correcciones que tú aportaste, es cuando funciona correctamente. Ahora el problema es añadirle al concatenado las comillas dobles por delante y por detrás.

Buenas noches, y gracias.

Me he perdido, pero si tengo un formulario con cuatro cuadros de texto, te dejo 2 más Texto16 y Texto 20 para que veas como hace la conversión.

Si pulso el botón, primero me muestra la conversión

Y en la tabla

El código del botón es

DoCmd.SetWarnings False
Texto14 = """" & Me.TextoA & ""
Texto20 = "" & Me.TextoD & """"
DoCmd.RunSQL "insert into tabla1(juntos)values(texto14 & "", "" & TextoB & "", "" & TextoC & "", "" & texto20 )"

No sé si era eso

Respuesta
2

Mi suposición es que como la abres y la borras, por eso se muestra en blanco. Prueba a eliminar la última línea, la del delete.

Otra cosa que se me ocurre es que el cuadro combinado trabaje con otro valor que no sea el que se muestra, y por eso no encuentra coincidencias..

¡Gracias! He quitado la última línea y me crea una consulta vacía igualmente, pero a la segunda vez que corro el código, me da error y me dice que la consulta ya está creada.

De todas formas, ya está solucionado. Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas