** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Comillas en SQL con Dcount
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoComillas en SQL con Dcount

 Responder Responder Página  12>
Autor
Mensaje
 Valoración: Valorar tema: 1 Votos, Promedio 4.00  Tema Buscar Tema Buscar  Opciones del Tema Opciones del Tema
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 478
Enlace directo a este mensaje 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
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 26/Diciembre/2020 a las 19:42
Ejecuta esa consulta por vba.....

DoCmd.RunSQl..........
Arriba
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 478
Enlace directo a este mensaje 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
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje 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....
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje 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
Arriba
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 478
Enlace directo a este mensaje 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.

 
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 26/Diciembre/2020 a las 22:16
Un Saludo.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 26/Diciembre/2020 a las 22:41
Publicado originalmente por mounir mounir escribió:

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
Clap 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.......
Arriba
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 478
Enlace directo a este mensaje 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



Arriba
VIMIPAS Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Enero/2006
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 5462
Enlace directo a este mensaje 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
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje 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.
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 27/Diciembre/2020 a las 11:42
Publicado originalmente por mounir mounir escribió:

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.

ClapClap   que buena!!!!!
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje 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
Arriba
Antonalo Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 06/Noviembre/2009
Localización: España
Estado: Sin conexión
Puntos: 478
Enlace directo a este mensaje 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.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje 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.
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable