2010-06-30 8 views
4

J'ai créé un rdlc où je l'ai pris comme ensemble de données utilisé un nouvel élément dans l'explorateur de solution pour la conception de mon rapport. Après la liaison de mon rapport de cette datasource qui est désigné comme Dataset1. J'ai créé son objet et a essayé de remplir ce datasource utilisant le codage. Maintenant, quand je cours le code suivant, je n'obtiens aucun résultat.Comment exécuter un rdlc en utilisant un codage

Que peut-être la question?

reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local; 
LocalReport localReport = reportViewer1.LocalReport; 
localReport.DataSources.Clear(); 
localReport.ReportPath = @"E:\Projects\Manojp\AARFID_SSRS_Report\WindowsFormsApplication1\WindowsFormsApplication1\Local Report\rptTest.rdlc"; 

// DataSet dataset = new DataSet("AARFID_Report"); 
DataSet1 ds = new DataSet1(); 

// fill the Data Set from DataBase. 
//ds.Tables.Remove("M_GUEST"); 
ds.Tables.Clear(); 
GetData(ref ds); 

// 
// Create a report data source for the sales order data 

ReportDataSource rds = new ReportDataSource(); 
rds.Name = "AA"; 
rds.Value = ds.Tables[0]; 
localReport.DataSources.Add(rds); 
// reportViewer1.LocalReport.DataSources.Add(rds); 


reportViewer1.RefreshReport(); 
localReport.DataSources.Clear(); 

GetData() faire:

connection.Open(); 
ad.Fill(ds,"M_GUEST"); 
connection.Close(); 

Dans le rapport voir un message apparaît comme:

Une instance de source de données n'a pas été fourni pour la source de données 'dtaset1_m_guest'

Répondre

1

Assurez-vous que les noms des jeux de données dans le fichier RDL et le match générateur de rapport!

La façon la plus simple serait d'avoir un DataSet, DataSource et les instances nommées « M_GUEST ». En outre, n'effacez pas les sources de données avant le rendu.

1

Cette ligne

rds.Name = "AA"; 

doit correspondre au nom de l'ensemble de données définies dans le rapport. Dans votre cas, ce serait

rds.Name = "dtaset1_m_guest"; 
0

Lorsque vous ajoutez rapport .rdlc dans votre projet par l'assistant puis par défaut, il prend le nom de jeu de données « DataSet1 ». Maintenant, si vous voulez lier dynamiquement un nouveau jeu de données, le nom de cet ensemble de données doit être 'DataSet1'. Essayez de le modifier et vérifiez également que Table [0] contient des données (lignes) pour lesquelles DataType est associé au dataType d'origine de 'DataSet1'. Si DataType ne correspond pas alors les données ne viendront pas dans votre ReportViewer. Essayez ce code: -

string exeFolder = (Path.GetDirectoryName(Application.StartupPath)).Substring(0, (Path.GetDirectoryName(Application.StartupPath)).Length - 3); 
string reportPath = Path.Combine(exeFolder, @"Reports\SessionReport.rdlc"); 
Microsoft.Reporting.WinForms.ReportDataSource rds = new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", ds.Tables[0]); 
this.reportViewer1.LocalReport.DataSources.Add(rds); 
this.reportViewer1.LocalReport.ReportPath = reportPath; 
this.reportViewer1.RefreshReport(); 

Pour plus de détails sur le rapport .rdlc (logique de base) Confier le lien suivant How to create report (RDLC) without database?

0

Si la source de données dans la liaison est nommé « Dataset1 », puis celui que vous votre code en devrait aussi nommer le même.

je l'ajoute comme cela fonctionne parfaitement faire cela comme ci-dessous:

reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Dataset1", ds.Tables[0])); 
Questions connexes