Access - Extraer campos de una consulta mediante recordset

 
Vista:
sin imagen de perfil
Val: 26
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Extraer campos de una consulta mediante recordset

Publicado por David (10 intervenciones) el 17/08/2017 12:02:43
Hola a todos, no tengo mucha experiencia en visual y todo lo que he echo hasta ahora ha sido a base de parches que he ido leyendo y practicando, pero ahora me encuentro con un problema del cual no sé salir por lo que necesito vuestra ayuda.

Estoy creando un recordset para extraer todos los campos de dirección de e-mail que provienen de una consulta que he creado con el fin de crear campañas de productos y seleccionar a los clientes que les quiero enviar el correo.

El tema es que al final de todo y después de muchas horas he conseguido ejecutarlo pero escribiendo manualmente en el criterio de la consulta el nº de la campaña, pero si le pongo como criterio del campo [Forms]![Campaña]![Ndecampaña] no funciona, os paso el código:

1
2
3
4
5
Dim rs As Recordset
Dim A ' Variable donde se deben de copiar todas las direcciones de correo separado por ;
Dim B ' Variable con el número de la campaña
 
B = 36

Opción 1:
1
Set rs = CurrentDb.OpenRecordset("Select EmailAddress From Consulta3 Where IDCampaign=36")
Opción 2:
1
Set rs = CurrentDb.OpenRecordset("Select EmailAddress From Consulta3 Where IDCampaign=B")

1
2
3
4
5
6
If rs.RecordCount = 0 Then Exit Sub
Do Until rs.EOF
If A <> "" Then A = A & "; "
A = A & rs![EmailAddress]
rs.MoveNext
Loop

La opción 1 me funciona bien, me captura la variable A todos los e-mails de la consulta.
La opción 2; siendo el mismo criterio de la consulta (36) no me funciona y el error que me muestra con la opción 2 es el 3061, Pocos parámetros. Se esperaba 1.

El tema es que quiero tenerlo automatizado para que cada vez que genere una nueva campaña escoja los e-mails que ya seleccionado para esta campaña.

Gracias de antemano,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antonio
Val: 485
Plata
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Extraer campos de una consulta mediante recordset

Publicado por Antonio (171 intervenciones) el 17/08/2017 15:41:45
Hola.

"Select EmailAddress From Consulta3 Where IDCampaign=B"

Estas comparando un [IDCampaign] con una letra lo cual es incorrecto ya que tu [IDCampaign] contiene numeros, esto lo deduzco por que la opcion 1 no te marca error.

Si tu campo [IDCampaign] fuera de tipo texto la comparacion seria IDCampaign= "B" entre comillas la letra.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Extraer campos de una consulta mediante recordset

Publicado por Anonimo (3312 intervenciones) el 17/08/2017 17:57:24
Tenemos esto:
Opción 1:
Set rs = CurrentDb.OpenRecordset("Select EmailAddress From Consulta3 Where IDCampaign=36")
Opción 2:
Set rs = CurrentDb.OpenRecordset("Select EmailAddress From Consulta3 Where IDCampaign=B")

Y nos interesa la segunda opción, es sencillo, solo hay que 'sacar fuera de las comillas' a la variable, si esta 'dentro' no podrá ser evaluada como tal variable y se utilizara su definición (no su contenido).

Lo correcto es así:

Opción 2:
Set rs = CurrentDb.OpenRecordset("Select EmailAddress From Consulta3 Where IDCampaign=" & B )

Si el dato esta en un cuadro de texto (que se llamase 'La_Campaña') del mismo formulario en que esta el código, se podría escribir así:
Set rs = CurrentDb.OpenRecordset("Select EmailAddress From Consulta3 Where IDCampaign=" & Me.La_Campaña )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 26
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Extraer campos de una consulta mediante recordset

Publicado por David (10 intervenciones) el 17/08/2017 20:19:46
Funciona!!! Muchas gracias, he probado las dos opciones:

& B )
& Me.La_Campaña )


Y las dos funcionan perfectamente.;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar