Je ne veux pas créer DataSet à partir de code et le définir comme source de données pour le rapport Crystal.
Je ne veux pas créer un fichier DataSet xsd dans VS si je n’ai pas à le faire. Juste du code pur.
DataSet ds = new DataSet();
DataTable tbl = new DataTable();
DataColumn cln = new DataColumn();
// I fill row, columns, table and add it to ds object
...
Puis, quand j'ai besoin d'un rapport, j'utilise:
myReport.SetDataSource(ds);
Le problème ici est que je ne sais pas comment lier cela à un rapport? Comment ajouter des champs?
J'ai un texte et des données binaires (image).
Il n'y a qu'une seule issue. Comme suggéré par rosado. Un peu expliqué 1. Créer un fichier RPT. 2. Créez un fichier XSD avec les colonnes souhaitées. 3. Faites glisser les colonnes sur le rpt. Formatez-le selon les besoins. 4. Maintenant, créez une connexion, utilisez adaptateur pour remplir cet ensemble de données. 5. Remplir le jeu de données remplira automatiquement les colonnes du rapport.
Vous trouverez ci-dessous un exemple de code d'un projet de la mine.
Invoice invoice = new Invoice(); // instance of my rpt file
var ds = new DsBilling(); // DsBilling is mine XSD
var table2 = ds.Vendor;
var adapter2 = new VendorTableAdapter();
adapter2.Fill(table2);
var table = ds.Bill;
var adapter = new BillTableAdapter();
string name = cboCustReport.Text;
int month = int.Parse(cboRptFromMonth.SelectedItem.ToString());
int year = int.Parse(cboReportFromYear.SelectedItem.ToString());
adapter.Fill(table, name,month,year);
ds.AcceptChanges();
invoice.SetDataSource(ds);
crystalReportViewer1.ReportSource = invoice;
crystalReportViewer1.RefreshReport();
essayez comme ça ...
DataSet ds = new DataSet();
oleAdapter.Fill(ds);
ReportDocument rpt = new ReportDocument();
rpt.load();
rpt.Database.Tables[0].SetDataSource(ds.Tables[0]);
this.crystalReportViewer1.ReportSource = rpt;
// Use dummy image data column namely Photo, to store file system Images into data base table
GlobalVar.sql = " SELECT rollno AS reg_no, CAST(0xADB AS image) As Photo FROM mast_roll Where Rollno IN ('120512','120518') ";
GlobalVar.da = new OleDbDataAdapter(GlobalVar.sql, GlobalVar.con);
GlobalVar.ds = new DataSet();
GlobalVar.da.Fill(GlobalVar.ds, "st_detail");
// load photo into data table
foreach (DataRow dr in GlobalVar.ds.Tables["st_detail"].Rows)
{
// complete path of photo file
imgPath = @"D:\ImageSt\" + dr["reg_no"].ToString() + ".jpg";
// read photo from file
FsImage = Image.FromFile(imgPath);
// convert image file to array
byte[] PhotoArr;
using (MemoryStream ms = new MemoryStream())
{
FsImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
PhotoArr = ms.ToArray();
}
// update photo
dr["photo"] = PhotoArr;
// end array conversion
}
// end loading
Ajoutez un objet de jeu de données (.xsd) dans visual studio et remplissez-le avec un ou plusieurs tableaux de données contenant les mêmes noms de champs que vous avez obtenus avec votre DataSet ds = new DataSet();
.
Ensuite, accédez à votre fichier .rpt: champs de la base de données -> expert de la base de données -> données du projet -> ensembles de données ADO.Net, puis sélectionnez le jeu de données que vous venez de créer et concevez le rapport selon vos souhaits.
Utilisez le rapport comme d'habitude.
myReport.SetDataSource(ds);