Création de Report (Crystal report) dans visual studio 2012
-
lundi 11 février 2013 14:00
Bonjour,
Créant une application utilisant un reportViewer, je souhaiterais insérer dans mon rapport une image.
Cette image est :
- Pour le rapport, elle est une source externe.
- Où se trouve l'image ? Le chemin complet de l'image est stocké dans un champ d'une base de données.
Voici donc mon problème :
Ayant créé un dataset typé, lors que je veux afficher le contenu du champ dans mon rapport ( et donc le contenu du champ qui correspond au chemin de mon image). Cela fonctionne parfaitement, c'est-à-dire qu'il m'affiche bien le chemin par exemple : d:\test.jpg.
Mais moi ce que je veux, ce n'est pas d'afficher le chemin mais l'image elle-même, alors j'y insère un objet de type image, je met la source en "External" et en "value" : =First(Fields!img.Value, "soc"). Cependant rien ne s'affiche.
Merci de répondre à ma question.
Bien à vous.
- Type modifié Aurel BeraMicrosoft Contingent Staff, Owner vendredi 15 février 2013 14:08 Discussion
- Type modifié Aurel BeraMicrosoft Contingent Staff, Owner lundi 18 février 2013 07:11 Question
Toutes les réponses
-
mardi 12 février 2013 10:27Propriétaire
Bonjour
Ici vous avez deux exemples pour insérer des images dans un Crystal Report.
http://www.codeproject.com/Articles/30860/How-to-dynamically-load-images-in-Crystal-Reports
http://www.codeproject.com/Articles/21095/Image-in-Crystal-Reports
Cordialement,
- Modifié Aurel BeraMicrosoft Contingent Staff, Owner mardi 12 février 2013 10:27
- Marqué comme réponse Aurel BeraMicrosoft Contingent Staff, Owner lundi 18 février 2013 07:12
-
mercredi 13 février 2013 06:55
Bonjour,
Merci de votre réponse mais celle-ci correspond à une image stocké en binaire dans la base de données, moi je stocke le chemin de l'image : exemple : d:\test.jpg. J'ai déjà vu ces solutions (stockage binaire) mais je dois changer une partie de ma base de données, ce que je ne veux pas.
Merci d'avance.
-
mercredi 13 février 2013 08:45Propriétaire
Bonjour
Les deux exemples ne font que lire une image sur le disque dur, et ajouter une colonne de type Byte [] avec le contenu de l’image – image trouve sur le disque dur.
Voir LoadImage pour le premier example.
Le premier exemple Modifie un Typed DataSet, et le deuxième ajoute une colonne de type Byte[] a un Dataset avec :
dt.Columns.Add("Image", System.Type.GetType("System.Byte[]"));
Cordialement,
-
jeudi 14 février 2013 14:10Propriétaire
Bonjour
Un petit retour SVP?
Merci
Cordialement,
-
vendredi 15 février 2013 14:08Propriétaire
Bonjour,
Nous changeons le type de votre question à « Discussion générale ». Si vous avez plus de temps pour réexaminer la question et fournir plus d'informations, n'hésitez pas à modifier le type du thread à « Question ». Si le problème est résolu, s’il vous plaît partagez la solution avec nous afin que la réponse puisse être trouvée et utilisée par d'autres membres de la communauté ayant des questions similaires.
Merci !
Cordialement,
-
dimanche 17 février 2013 17:36
Bonjour,
Merci pour vos solutions/exemples, mon problème est maintenant résolu, après quelques modif. voici mon code pour ce qui aurait le même problème par la suite :
Je travaille avec un dataset typé :
this.tbimageTableAdapter.Fill(this.Database1DataSet.tbimage);
try
{
DataRow drow;
//dt.Columns.Add("Image", System.Type.GetType("System.Byte[]")); --> pas la peine dans mon cas, je l'ai créé dans mon dataset typé
drow = Database1DataSet.tbimage.NewRow();FileStream fs;
BinaryReader br;
if (File.Exists("d:/test.jpg")) //--> ceci est un code test pour tester si une de mes images se trouve sur cette partition
{
fs = new FileStream("d:/test.jpg", FileMode.Open);
}
else
{
fs = new FileStream("d:/test.jpg"/*, FileMode.Open);
}
br = new BinaryReader(fs);
byte[] imgbyte = new byte[fs.Length + 1];
imgbyte = br.ReadBytes(Convert.ToInt32((fs.Length)));
drow["image_stream"] = imgbyte;
Database1DataSet.tbimage.Rows.Add(drow);
br.Close();
fs.Close();
reportViewer1.LocalReport.ReportPath = Application.StartupPath + @"\Report1.rdlc";
this.reportViewer1.RefreshReport();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}Voilà en espérant que ça peut aider.
- Modifié Laureyns b dimanche 17 février 2013 17:37
- Marqué comme réponse Aurel BeraMicrosoft Contingent Staff, Owner lundi 18 février 2013 07:11

