Export d'un etat crystal en fichier pdf puis envoie par mail de ce fichier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 598 fois - Téléchargée 28 fois

Contenu du snippet

Ce code permet de passer des paramètres à un état crystal report puis de l'exporter en fichier pdf. Enfin il envoie ce fichier par email et tout ca en une vingtaine de ligne de code seulement.

Source / Exemple :


Private Sub Form_Load()

Dim details As Integer
Dim debut As Date
Dim fin As Date
Dim destinatiare As Variant

'adresse du destinatire
destinataire = "moi@moi.fr"

'variables qui serviront de paramètre dans crystal
fin = LastDayOfMonth(Now) & "/" & Month(Now) & "/" & Year(Now)
debut = FirstDayOfMonth(Now) & "/" & Month(Now) & "/" & Year(Now)
details = 1

Dim appl As New CRAXDRT.Application
Dim rep As New CRAXDRT.Report
Set rep = appl.OpenReport("\\chemin\exemple.rpt", 1)

With rep
    'paramètres
    .ParameterFields.GetItemByName("datedeb").AddCurrentValue debut
    .ParameterFields.GetItemByName("datefin").AddCurrentValue fin
    .ParameterFields.GetItemByName("details").AddCurrentValue details

    'exporter dans exemple.pdf
  ' .ExportOptions.DestinationType = crEDTDiskFilegtef
    .ExportOptions.DestinationType = crEDTDiskFile
    .ExportOptions.DiskFileName = "c:\exemple.pdf"
    .ExportOptions.FormatType = crEFTPortableDocFormat
    
    'envoie du mail
    .ExportOptions.DestinationType = crEDTEMailMAPI
    .ExportOptions.MailSubject = "etat crystal datant du "& Now
    .ExportOptions.MailToList = destinataire

    .Export False
End With
 
End
 
End Sub

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
jeudi 12 mars 2009
Statut
Membre
Dernière intervention
20 mars 2009

'voici le code pour enregistrer le crystalreport en forma word
crystalreport1.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.WordForWindows, SaveFileDialog1.FileName & ".doc ")
Messages postés
1
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
20 mai 2008

Merci.
Messages postés
21
Date d'inscription
mercredi 3 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2005

Pour en revenir à votre problème c'est effectivement une question de dll, voici la liste des dll qui me sont necessaire dans mon projet: craxdrt.dll,craxddrt.dll,crviewer.dll,crpe32.dll,Cdo32.dll
pour les création de pdf: crxf_pdf.dll,crxf_pdf_res_fr.dll,u2dapp.dll,u2DDISK.DLL,u2DMAPI.DLL (mail)

en espérant que ça vous aide...
Messages postés
21
Date d'inscription
mercredi 3 décembre 2003
Statut
Membre
Dernière intervention
24 janvier 2005

Merci pour toutes ces explications.

Votre idées de mettre les indication qui me sont utiles dans l'objet du mail peut être une solution alternative.

Toute fois je reviens sur le fait que mon etat crystal n'est pas un fichier rpt, il est directement contenu dans mon executable je passe par des feuilles .DSR ce qui m'empeiche aussi de changer le nom de mon rapport.

En tout cas je pense que je vais m'orienter soit vers votre solution(objet du mail) soit vers un enregistrement du fichier en pdf et ensuite de sont envoye ce qui devrait me permettre de lui donner le nom que je desire.
Messages postés
4
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
13 novembre 2007

cette pièce jointe dont vous faite allusion est o fait est un etat crystal, qui est par la suite changer en format pdf, ce qui fait que le même nom du report est attribuer par défaut à cette pièce. la possibilité que vous avez c'est de nommer l'entête de vos courrier par
exemple :.ExportOptions.MailSubject = "etat crystal datant du "& Now en

.ExportOptions.MailSubject = "La facture d'achat (du) "& Now comme titre du courrier si vous avez besoin d'ajouter un quelconque numéro, vous pouvez passer directement des valeurs à ces variables au niveau de votre report,car outlook n'intervient que pour l'envoi or l'application qui se charge de conversion de format c'est toujours crystal

ensuite, referer vous déjà en amont vous avez passer des instructions pour dire ce qui suit
Set rep = appl.OpenReport("\\chemin\exemple.rpt", 1)
en precisant le chemin d'acces d'un fichier .rpt

et ensuite changer de format à ce stade

.ExportOptions.FormatType = crEFTPortableDocFormat

ce qui fait que l'envoi du courrier se joue sur le nom physique du rpt dont le chemin d'accès est déjà determiner. or par la méthode que vous voulez utiliser cela reviendrait à rénommer le fichier et et pour cela il faudrait trouver un moyen de rediriger le chemin,si ça peut être faisable mais pas avec ce script,

humblement c'est la petite idée que je puis que vous apporter, merci
Afficher les 23 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.