none
Resultados de consulta por mail RRS feed

  • Pregunta

  • Hola Estimados, he creado un trabajo que realiza una consulta y debe enviar el resultado por mail.

    Si lo hago generando un excel por ejemplo, no tengo inconvenientes.

    Pero necesito que el resultado de la consulta llegue en el cuerpo del mail, o sea no en un documento adjunto.

    Esto es posible ? 

    miércoles, 7 de agosto de 2019 12:13

Todas las respuestas

  • Deleted
    miércoles, 7 de agosto de 2019 12:21
  • Gracias por la respuesta

    Le puse esta instrucción

    @attach_query_result_as_file = 1

    pero el mail llega sin el resultado de la consulta.

    miércoles, 7 de agosto de 2019 12:38
  • Coloco la instrucción, si la ejecuto en el sql directamente funciona bien, si la pongo en el paso del trabajo, da error de sintaxis donde dice (TRANSAC.CODCMP = 'pv') 

    Que está incorrecto allí  ? 

    SELECT TRANSAC.FECHA,
    TRANSAC.PREFIJO ,
    TRANSAC.NUMERO,
    CTACTES.NOMBRE ,
    ITEMS.CODITM ,
    ITEMS.DESCRIPCION ,
    MVSITEMS.CANTIDAD - dbo.MVSITEMS.CANTUSADA ,
    MVSITEMS.FECHAENT ,
    TRANSACCONTROL.FECHAREG ,
    DATEDIFF(day, dbo.TRANSACCONTROL.FECHAREG, MVSITEMS.FECHAENT),
    DATEDIFF(day, dbo.TRANSACCONTROL.FECHAREG, GETDATE()) AS Atraso2, mvsitems.CANTIDAD*mvsitems.PRECIO 
    FROM TRANSAC INNER JOIN
              MVSITEMS ON TRANSAC.NROTRANS = MVSITEMS.NROTRANS INNER JOIN
              CTACTES ON TRANSAC.CODCTACTE = CTACTES.CODCTACTE INNER JOIN
              ITEMS ON MVSITEMS.CODITM = ITEMS.CODITM INNER JOIN
              TRANSACCONTROL ON TRANSAC.NROTRANSAUT = TRANSACCONTROL.IDENTIDAD
    WHERE (MVSITEMS.CANTIDAD > MVSITEMS.CANTUSADA) AND (MVSITEMS.FECHAENT <
            (SELECT CONVERT(char(8), DATEADD(day, - 0, getdate()), 12))) AND (TRANSAC.NROTRANSELIM IS NULL) AND (TRANSAC.CODCMP = 'pv')  AND (CTACTES.CUEPREFI = 'c') AND (ITEMS.CODITM <> 'desc') AND (ITEMS.CODITM <> 'd') 
            AND (ITEMS.CODITM <> 'descxx') AND (ITEMS.CODITM <> '.') AND
            (TRANSAC.NROTRANSAUT IS NOT NULL)/* and (transac.prefijo = 20)*/
    ORDER BY Atraso2 DESC, TRANSAC.CODCTACTE, TRANSAC.NUMERO


    miércoles, 7 de agosto de 2019 13:03
  • El problema es que no toma las comillas en los campos donde comparo, sucede en cualquiera. 

    Que es lo incorrecto ? 

    AND (TRANSAC.CODCMP = 'pv')  AND (CTACTES.CUEPREFI = 'c') 

    si quito el primer and, el error de sintaxis pasa al segundo y así sucesivamente

    miércoles, 7 de agosto de 2019 13:56
  • Deleted
    • Propuesto como respuesta eRiver1 miércoles, 7 de agosto de 2019 14:50
    miércoles, 7 de agosto de 2019 14:21
  • gracias, ahora el problema es otro, sqlstate 42000 error 22050 probablemente parámetros inválidos. 

    Donde dice base de datos, selecciono msdb para que ejecute sp_send_dbmail

    que parámetro está mal ? 

    EXEC sp_send_dbmail @profile_name='Bas Mail', 
    @recipients='silgol@gmail.com', 
    @subject='Mensaje de prueba', 

    @query = N'SELECT baseprueba.TRANSAC.FECHA, baseprueba.TRANSAC.PREFIJO , baseprueba.TRANSAC.NUMERO, .CTACTES.NOMBRE , baseprueba.ITEMS.CODITM ,
    baseprueba.ITEMS.DESCRIPCION , baseprueba.MVSITEMS.CANTIDAD - baseprueba.MVSITEMS.CANTUSADA , baseprueba.MVSITEMS.FECHAENT ,
    baseprueba.TRANSACCONTROL.FECHAREG , 
    DATEDIFF(day, dbo.baseprueba.TRANSACCONTROL.FECHAREG, baseprueba.MVSITEMS.FECHAENT),
    DATEDIFF(day, dbo.baseprueba.TRANSACCONTROL.FECHAREG, GETDATE()) , baseprueba.mvsitems.CANTIDAD*baseprueba.mvsitems.PRECIO 
    FROM baseprueba.TRANSAC INNER JOIN
              baseprueba.MVSITEMS ON baseprueba.TRANSAC.NROTRANS = baseprueba.MVSITEMS.NROTRANS INNER JOIN
              baseprueba.CTACTES ON TRANSAC.CODCTACTE =baseprueba. CTACTES.CODCTACTE INNER JOIN
              ITEMS ON baseprueba.MVSITEMS.CODITM = baseprueba.ITEMS.CODITM INNER JOIN
              baseprueba.TRANSACCONTROL ON baseprueba.TRANSAC.NROTRANSAUT = baseprueba.TRANSACCONTROL.IDENTIDAD
    WHERE AND (baseprueba.TRANSAC.CODCMP = ''pv'')  AND (baseprueba.CTACTES.CUEPREFI = ''c'') and
    (baseprueba.MVSITEMS.CANTIDAD > baseprueba.MVSITEMS.CANTUSADA) AND (baseprueba.MVSITEMS.FECHAENT <
            (SELECT CONVERT(char(8), DATEADD(day, - 0, getdate()), 12))) AND (baseprueba.TRANSAC.NROTRANSELIM IS NULL)  
                     AND (baseprueba.ITEMS.CODITM <>''desc'') AND (baseprueba.ITEMS.CODITM <> ''d'') 
            AND (baseprueba.ITEMS.CODITM <> ''descxx'' AND (baseprueba.ITEMS.CODITM <>''.'') AND
            (baseprueba.TRANSAC.NROTRANSAUT IS NOT NULL)
            ORDER BY baseprueba.TRANSAC.CODCTACTE, baseprueba.TRANSAC.NUMERO',


    @attach_query_result_as_file = 0,
    @body='prueba'

    miércoles, 7 de agosto de 2019 15:26
  • Deleted
    miércoles, 7 de agosto de 2019 17:13
  • Gracias ! ahora no dió errores, ejecutó la tarea pero el mail llegó sin el resultado de la consulta.

    O sea solo con el texto "prueba" en el cuerpo del mail  , que es lo que aparece en 

    @body='prueba

    Como debo hacer para que aparezca el resultado de la consulta ?

    miércoles, 7 de agosto de 2019 17:27
  • llegó el mail sin el texto (prueba) que estaba en el body pero sin el resultado de la consulta
    miércoles, 7 de agosto de 2019 17:47
  • Deleted
    miércoles, 7 de agosto de 2019 18:01
  • Lo agregué y llega igual. Debería aparecer un error en algún lado con la linea que agregamos ? 
    • Propuesto como respuesta eRiver1 miércoles, 7 de agosto de 2019 18:49
    miércoles, 7 de agosto de 2019 18:13
  • Con esta codificación llegó el mail con los datos pero todo en una secuencia sin separaciones, etc.

    Como agrego instrucciones para darle un formato entendible ?

    EXEC sp_send_dbmail @profile_name='Bas Mail', 
    @recipients='silgol@gmail.com', 
    @subject='Mensaje de prueba', 
    @query = 
    N'SELECT casiba.dbo.TRANSAC.FECHA, casiba.dbo.TRANSAC.PREFIJO, casiba.dbo.TRANSAC.NUMERO, casiba.dbo.CTACTES.NOMBRE, casiba.dbo.ITEMS.CODITM, 
            casiba.dbo.ITEMS.DESCRIPCION, casiba.dbo.MVSITEMS.CANTIDAD, casiba.dbo.MVSITEMS.CANTUSADA, casiba.dbo.MVSITEMS.FECHAENT, 
             casiba.dbo.TRANSACCONTROL.FECHAREG, DATEDIFF(day, casiba.dbo.TRANSACCONTROL.FECHAREG, casiba.dbo.MVSITEMS.FECHAENT) , 
             DATEDIFF(day, casiba.dbo.TRANSACCONTROL.FECHAREG, GETDATE()) , (casiba.dbo.mvsitems.CANTIDAD * casiba.dbo.mvsitems.PRECIO) 
        FROM casiba.dbo.TRANSAC 
             INNER JOIN casiba.dbo.MVSITEMS ON TRANSAC.NROTRANS = casiba.dbo.MVSITEMS.NROTRANS 
             INNER JOIN casiba.dbo.CTACTES ON TRANSAC.CODCTACTE = casiba.dbo.CTACTES.CODCTACTE 
             INNER JOIN casiba.dbo.ITEMS ON MVSITEMS.CODITM = casiba.dbo.ITEMS.CODITM 
             INNER JOIN casiba.dbo.TRANSACCONTROL ON casiba.dbo.TRANSAC.NROTRANSAUT = casiba.dbo.TRANSACCONTROL.IDENTIDAD
       WHERE (casiba.dbo.TRANSAC.CODCMP = ''pv'') 
             AND (casiba.dbo.CTACTES.CUEPREFI = ''c'') 
             and (casiba.dbo.MVSITEMS.CANTIDAD > casiba.dbo.MVSITEMS.CANTUSADA)
             AND (casiba.dbo.MVSITEMS.FECHAENT < CONVERT(char(8), DATEADD(day, -0, getdate()), 12)) 
             AND (casiba.dbo.TRANSAC.NROTRANSELIM IS NULL) 
             AND (casiba.dbo.ITEMS.CODITM <> ''desc'') 
             AND (casiba.dbo.ITEMS.CODITM <> ''d'') 
             AND (casiba.dbo.ITEMS.CODITM <> ''descxx'') 
             AND (casiba.dbo.ITEMS.CODITM <> ''.'') 
             AND (casiba.dbo.TRANSAC.NROTRANSAUT IS NOT NULL) ',
    @append_query_error = 1,
    @body_format = 'HTML',
    @attach_query_result_as_file = 0

    miércoles, 7 de agosto de 2019 19:40
  • Deleted
    miércoles, 7 de agosto de 2019 20:18