Equivalencia vba y sql |
Responder |
Autor | |
Jorge33
Habitual Unido: 09/Abril/2019 Localización: madrid Estado: Sin conexión Puntos: 58 |
Tema: Equivalencia vba y sql Enviado: 07/Mayo/2020 a las 16:56 |
Hola:
En vba cuando tengo que hacer referencia a un campo que es alfanumérico utilizo algo así: Código_obra Like '*" & Me!Código_obra & "*' " He intentado hacer algo así para filtrar en una consulta pero no consigo que funcione. He intentado esto: ((Obras.Contrato) Like '*" & [Contratos]![Contrato] & " *') ¿cual sería la equivalencia en sql o como podría hacerlo? Muchas gracias
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14746 |
Enviado: 07/Mayo/2020 a las 18:30 |
En VBA hay que tener cuidado con las comillas dobles; por eso alternamos el uso de apostrofes y comillas. Los apostrofes son las comillas de la SQL (no se si me explico).
En SQL yo lo concateno sin alternar apostrofes y comillas: todo comillas Like "*" & [Contratols]![Contrato] & "*" Un saludo
|
|
Jorge33
Habitual Unido: 09/Abril/2019 Localización: madrid Estado: Sin conexión Puntos: 58 |
Enviado: 07/Mayo/2020 a las 21:49 |
Gracias.
A lo mejor es algo por otro lado pero no me acaba de funcionar. Si utilizo los apostrofes no me pregunta por el valor de [Contratos]![Contrato] pero no me da resultados y si utilizo todo comillas me pregunta por el valor de [Contratos]![Contrato] y cuando se lo introduzco me da el resultado esperado. ¿que puede ser? |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14746 |
Enviado: 08/Mayo/2020 a las 00:32 |
La pregunta es ¿que és [Contratos]![Contrato]? ¿un campo? ¿un control? ¿una pregunta?
|
|
Jorge33
Habitual Unido: 09/Abril/2019 Localización: madrid Estado: Sin conexión Puntos: 58 |
Enviado: 08/Mayo/2020 a las 11:36 |
LLevas razón. Me explico igual que un libro cerrado.
Contratos es una tabla y Contrato es un campo de esa tabla con un único registro. He usado el generador para asegurarme de que hacía correctamente la referencia. Tengo muchas consultas que incluyen el campo contrato y lo que quiero es que en vez de tener que cambiar en cada consulta el nombre del contrato con cambiar en Contratos!Contrato me cambien todas. No sé si me he explicado mejor ahora. Muchas gracias
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14746 |
Enviado: 08/Mayo/2020 a las 12:48 |
Si [Contratos]![Contrato] contiene un valor único, ¿que tal si vamos un paso atrás y lo miramos en perspectiva?... ¿que sentido tiene utilizar el Like? ¿No sería lo mismo utilizar =? Por otro lado, el problema se te genera porque la tabla Contratos no está en la consulta. Eso plantea 2 soluciones al tu problema: 1. En lugar de apuntar a un campo de una tabla, utiliza una función pública que devuelva el valor de ese campo. 2. Incluye la tabla en la consulta y la relacionas de tal forma que devuelva todos los registros de la tabla contratos (el que tu quieres) y los de la otra tabla que coinciden (una consulta de coincidentes, vaya) de forma que te ahorras el criterio. Explora cual de las soluciones te conviene más.
|
|
Jorge33
Habitual Unido: 09/Abril/2019 Localización: madrid Estado: Sin conexión Puntos: 58 |
Enviado: 01/Junio/2020 a las 00:16 |
Muchas gracias
He utilizado la propuesta 2 y funciona perfectamente.
También he usado la codificación con like como origen de datos del un formulario y funciona muy bien por si le puede servir a alguien. Puede cerrarse el tema |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |