Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Mandar un mail por cada registro que trae una consulta

Estas en el tema de Mandar un mail por cada registro que trae una consulta en el foro de SQL Server en Foros del Web. Buenas, la consulta que tengo es la siguiente: Necesito hacer un DTSX que traiga los registros de una tabla si se da la condicion, y ...
  #1 (permalink)  
Antiguo 17/09/2013, 14:42
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 15 años
Puntos: 3
Exclamación Mandar un mail por cada registro que trae una consulta

Buenas, la consulta que tengo es la siguiente:

Necesito hacer un DTSX que traiga los registros de una tabla si se da la condicion, y que por cada registro envie un mail con los datos que se trajeron. Por ejemplo:

EMail Nro
Pepe 1
Jose 2


Si me trae estos datos necesito enviar un mail a Pepe y otro a Jose con el nro que le corresponde.

Espero me puedan ayudar. Desde ya les agradesco.


Saludos
  #2 (permalink)  
Antiguo 17/09/2013, 15:39
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Mandar un mail por cada registro que trae una consulta

¿Ya tienes la consulta?, ¿ya levantaste el servicio de correo?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 23/09/2013, 15:27
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 15 años
Puntos: 3
De acuerdo Respuesta: Mandar un mail por cada registro que trae una consulta

Hola iislas, Gracias por la respuesta. Logre solucionarlo de la siguiente forma, lo subi a mi blog para poder poner las imagenes.
Cita:
Editado: Las soluciones deben ser puestas en el foro, para que sean compartidas a todos.
Si la solución es por programación, correspondería postearlo como un "Aporte" en el foro del lenguaje.

Lo que hice fue crear un “Execute SQL Task”, “Foreach Loop Container” y un “Send Mail Task”. El “Execute SQL Task” llena una variable de tipo Object que luego recorro desde el “Foreach Loop Container”. En el “Foreach Loop Container” meto los campos de la consulta en varibles y las paso al “Send Mail Task” que envia los mails.


Saludos

Última edición por gnzsoloyo; 23/09/2013 a las 16:17 Razón: Leer las normas del Foro de BBDD, por favor.
  #4 (permalink)  
Antiguo 24/09/2013, 09:56
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Mandar un mail por cada registro que trae una consulta

¿Ya arrancaste o configuraste el servicio de correo?

Cuidado !!, suponiendo que tu consulta trae mas de 200 mil registros, ¿enviaras 200 mil correos?
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 24/09/2013, 11:44
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 15 años
Puntos: 3
Respuesta: Mandar un mail por cada registro que trae una consulta

Hola. Si, lo que traiga la consulta es lo que envia, si trae 1millon de registros envia 1millon de mails. En mi caso yo lo necesitaba para usarlo en una tabla de alertas, las cuales se agregan a mano y las controlo yo. Pero si esta bueno aclarar que si se tinen una tabla muy grande y no se la controla bien puede que se tilde o no funcione como se esperaba. Realmente no se si la consulta trae 1 millon de registros que pase, talves se encolen en el smtp y termine no enviando nada.
Saludos
  #6 (permalink)  
Antiguo 24/09/2013, 11:52
Avatar de mau_87lp  
Fecha de Ingreso: diciembre-2009
Ubicación: La Plata,Buenos Aires.
Mensajes: 72
Antigüedad: 15 años
Puntos: 3
Respuesta: Mandar un mail por cada registro que trae una consulta

Recien me doy cuenta que la buena gente del foro me borro el link que habia puesto. asi que voy a tratar de poner lo mismo que puse en el otro foro.






Hay que crear un proyecto “ Integration Services project”. Luego hay que crear un “Execute SQL Task”, “Foreach Loop Container” y un “Send Mail Task”.

Para empezar hay que crear las variables. Una tiene que ser de tipo Object para llenarla con lo que devuelve la consulta del “Execute SQL Task” y las demas para llenar los con los campos tambien de la consulta, pero esto dentro del ”Foreach Loop Container”.

¡Aclaracion!

No se si hay otra forma de hacerlo, pero yo tube que llenar las variables para que funcionen. Igual cuando se ejecuta estas se limpian y se llenan con lo que trae la consulta. Pero para que se pueda ejecutar tube que llenarlas.




En el “Execute SQL Task Editor” dentro de “General” hay que seleccionar:

ResultSet: Full result set





Código:
create table #tabla1
(
id int identity(1,1) primary key,
Asunto varchar(100),
Cuerpo varchar(200),
toMail varchar(150),
fromMail varchar(150)
)

– Modificar las direcciones de E-Mail para hacer la prueba
INSERT INTO #tabla1 (Asunto,Cuerpo,toMail,fromMail) values (‘Asunto de Prueba 1′,’Cuarpo del E-Mail.’,'[email protected]’,'[email protected]’)
INSERT INTO #tabla1 (Asunto,Cuerpo,toMail,fromMail) values (‘Asunto de Prueba 2′,’Cuarpo del E-Mail.’,'[email protected]’,'[email protected]’)
INSERT INTO #tabla1 (Asunto,Cuerpo,toMail,fromMail) values (‘Asunto de Prueba 3′,’Cuarpo del E-Mail.’,'[email protected]’,'[email protected]’)

SELECT Asunto,Cuerpo,toMail,fromMail FROM #tabla1













En “Expressions” si se quiere agregar texto por ejemplo se puede hacer de la siguiente forma:

“Texto: ” + @[User::Variable1]

Esto devuelve “Texto: ” y lo que hay dentro de la variable





Mail que se enviaron:









Saludos

Etiquetas: email, integration, services, sql2008, ssis
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:36.