Comillas en SQL con Dcount |
Responder | Página 12> |
Autor |
Valoración: Tema Buscar Opciones del Tema
|
Antonalo
Asiduo Unido: 06/Noviembre/2009 Localización: España Estado: Sin conexión Puntos: 478 |
Tema: Comillas en SQL con Dcount Enviado: 26/Diciembre/2020 a las 19:09 |
Buenas tardes amigos y feliz Navidad.
Supongo que estáis saturados de este tema pero no encuentro la solución por mi mismo. Tengo una tabla EMAILS con campos IdPersona (numérico) y EmailActivado (SI/NO) ( y otros campos que no vienen a cuento) Otra tabla OPERACIONES con campos IdPersona y Parte (con valores 1, 2 y 3) Quiero, mediante código, ejecutar una consulta de actualización que me actualice a EmailActivado= verdadero todos los registros de la tabla EMAILS cuyo IdPersona aparezca en la tabla OPERACIONES y que Parte sea 1. Entonces utilizo el dcount que cuenta los registros de la tabla OPERACIONES que cumplen ambas condiciones y me basta con que la cuenta sea >0 Para ello he construido una consulta de actualización que en la vista SQL me pone: UPDATE EMAILS SET EMAILS.EmailActivado = True WHERE (((DCount("Idpersona","OPERACIONES","Idpersona=" & [Emails].[IdPersona] & "AND Parte = 1"))>0)); La consulta funciona bien, pero yo no quiero una consulta, quiero el código VBA, para ejecutarlo con un botón y no crear más objetos en mi base y, lo más importante, aprender. El problema fundamental es que los argumentos de DCount con sus comillas, me rompen la cabeza y no acierto a poner las comillas simples y dobles en su sitio por más pruebas que hago. Por cierto ¿puede ser que access esté añadiendo algún paréntesis innecesario? Editado por Antonalo - 26/Diciembre/2020 a las 19:41 |
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 26/Diciembre/2020 a las 19:42 |
Ejecuta esa consulta por vba.....
DoCmd.RunSQl..........
|
|
Antonalo
Asiduo Unido: 06/Noviembre/2009 Localización: España Estado: Sin conexión Puntos: 478 |
Enviado: 26/Diciembre/2020 a las 19:50 |
Ya, pero de esa manera no consigo dos objetivos importantes.
- no crear un nuevo objeto en mi base ( en este cado una consulta) - no consigo aprender nada nuevo, el manejo de las comillas en este caso. mi idea es algo parecido a esto en VBA: CurrentDb.Execute "UPDATE EMAILS SET EMAILS.EmailActivado = True" _ & " WHERE DCount('" & "Idpersona" & "'," & "OPERACIONES" & "," & "Idpersona='" & [EMAILS].[IdPersona] & "'" & " AND Parte = 1" & ")>0;" Pero esto no funciona, ni puede funcionar porque no consigo razonar donde tengo que modificar con comillas simples dobles.. En otras cosas más sencillas sí, pero aquí me pierdo. Editado por Antonalo - 26/Diciembre/2020 a las 19:53 |
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 26/Diciembre/2020 a las 20:00 |
Acabo de probar la consulta con esas tablas y si, algo pasa con las comillas, pero le he buscado la vuelta de otra forma. Haz la consulta con las dos tablas relacionandolas por idPersona y criterio 1.........y ejeculala con DoCmd.runSQL.......
Creo que es una forma mas sencilla de hacerlo...Prueba a ver....
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 26/Diciembre/2020 a las 20:13 |
Yo utilizo mucho el generador de consultas y luego las ejecuto por vba....en este caso no me he parado a mirar lo de las comillas y lo he hecho con una consulta diferente y ejecutandola cor DoCmd.runSQl o CurrentDb.Execute.....
Veo bastante mas complicado utilizar el Dcount y ademas creo que gastara mas recursos.......pero para gustos los colores....Si tengo un rato indago lo de las comillas por curiosidad.... Saludos
|
|
Antonalo
Asiduo Unido: 06/Noviembre/2009 Localización: España Estado: Sin conexión Puntos: 478 |
Enviado: 26/Diciembre/2020 a las 20:38 |
Gracias rokoko, entiendo que sugieres que crée una consulta en la que intervengan las dos tablas. Ya probé, pero es un poco más complejo. Tengo 51 personas que en la tabla OPERACIONES tienen algún registro cuya parte es = 1 pero algunos tienen más de un registro con lo cual me salen muchos más que 51, tendría que hacer un sumatorio, agrupar por, pero como quiero que luego me salgan esos 51 registro en un subformulario con el campo activado, para desactivar algunos, no me deja editar con el sumatorio... bueno un rollo. Total que la solución que he encontrado para lo que yo quiero es el DCount pero aquí me encuentro con el problema de las comillas, y que no quiero, a no ser que no haya otro remedio, crear una consulta porque ya tengo la base saturada de formularios, consultas etc.. Lo que necesito es que alguien me oriente como hacer para que las funciones como DCount, Dsuma, DBúsq (Lookup) en las que intervienen argumentos que ya llevan comillas, se puedan introducir con código VBA, cuando quieres crear un consulta de actualización o de lo que sea, y uno de los campos de esa consulta es un campo calculado mediante alguna de estas funciones. |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 26/Diciembre/2020 a las 22:16 |
Hola!
Aquí te dejo enlace de dos ejemplos que transforman SQL a VBA. https://sites.google.com/a/bengoechea.net/accessxxi/enlaces-1/descargas/jbwzSQL2VBA.rar?attredirects=0&d=1 https://sites.google.com/site/jjjt1973/de-sql-a-vba-access |
|
Un Saludo.
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 26/Diciembre/2020 a las 22:41 |
no se me habia ocurrido hacerlo con el complemento de Chea, y con Jefferson tambien lo he sacado, hay se ve bien lo de las comillas.......
|
|
Antonalo
Asiduo Unido: 06/Noviembre/2009 Localización: España Estado: Sin conexión Puntos: 478 |
Enviado: 26/Diciembre/2020 a las 23:02 |
Genial, lo he probado y funciona
el primer enlace no me funciona porque debe ser una version superior a la mía, tengo acess 2007 y no puede abrir el archivo, pero el segundo enlace sí mi cadena de la consulta me la ha transformado en algo de lo que he extraído la clausula where y queda: CurrentDb.Execute "UPDATE EMAILS SET EMAILS.EmailActivado = True" _ & " WHERE (((DCount(""Idpersona"",""OPERACIONES"",""Idpersona="" & [Emails].[IdPersona] & ""AND Parte = 1""))>0));" Y funciona a la perfección, muchas gracias rokoko, y mounir, esto me va a abrir muchas puertas, y lo que es mejor...LO ENTIENDO. podéis cerrar cuando queráis |
|
VIMIPAS
Colaborador Unido: 06/Enero/2006 Localización: ESPAÑA Estado: Sin conexión Puntos: 5462 |
Enviado: 27/Diciembre/2020 a las 00:07 |
Buenas noches a todos.
¿Podéis esperar a cerrar el hilo hasta que analice unas pruebas que estoy haciendo.? Lo pido por favor a los moderadores y siempre y cuando Antonalo esté de acuerdo. Gracias por la atención que me dispenséis en cualquier caso. Saludos.... PD: sigo haciendo pruebas mientras tanto. Editado por VIMIPAS - 27/Diciembre/2020 a las 00:09 |
|
Gracias
|
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 27/Diciembre/2020 a las 10:44 |
Hola!
Si en realidad es fácil crear tu propio conversor, tal como lo explia Allen Browne en su web: http://allenbrowne.com/ser-71.html. |
|
Un Saludo.
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 27/Diciembre/2020 a las 11:42 |
que buena!!!!!
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 27/Diciembre/2020 a las 12:18 |
Siguiendo las instrucciones de la web lo he hecho.
https://www.dropbox.com/s/il2vlx1kfv8tcz4/Conversos%20SQl_VBA.rar?dl=0 |
|
Antonalo
Asiduo Unido: 06/Noviembre/2009 Localización: España Estado: Sin conexión Puntos: 478 |
Enviado: 27/Diciembre/2020 a las 16:08 |
He visto el enlace de mounir y lo estudiaré con tiempo. En cuanto a lo que ha hecho rokoko, pues lo he guardado porque lo utilizaré. Dudo mucho que haya ningún foro de access mejor y con mejor gente que este. Siempre que he planteado un problema ha sido resuelto. Por supuesto VIMIPAS, que tenéis mi permiso para que el hilo siga abierto o cerrado a vuestra conveniencia.
|
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 27/Diciembre/2020 a las 16:09 |
Hola!
Te ha quedado genial!! ¿No sé si la podrás publicar en mis favoritos? Muchas gracias. Editado por mounir - 27/Diciembre/2020 a las 16:10 |
|
Un Saludo.
|
|
Responder | Página 12> |
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 |