2017-10-19 56 views
1
private void Form1_Load(object sender, EventArgs e) 
    { 
     // TODO: This line of code loads data into the 'DataSet1.sp_GetRent1' table. You can move, or remove it, as needed. 
     this.sp_GetRent1TableAdapter.Fill(this.DataSet1.sp_GetRent1, "@RentNo1", "@AppPath"); 
     //this.GetSPResult(); 
     this.reportViewer1.RefreshReport(); 
    } 

private void button1_Click(object sender, EventArgs e) 
    { 
     DataTable dt = new DataTable(); 
     reportViewer1.Visible = true; 
     reportViewer1.LocalReport.ReportPath = "Report1.rdlc"; 
     reportViewer1.LocalReport.DataSources.Clear(); 
     reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1",dt)); 
     GetSPResult(); 
    } 

private DataTable GetSPResult() 
    { 
     DataTable ResultsTable = new DataTable(); 
     SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=RentACar1;Integrated Security=True");// ProviderName = "System.Data.SqlClient"); 
     try 
     { 
      SqlCommand cmd = new SqlCommand("sp_GetRent1",conn); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.AddWithValue("@RentNo1", "9905-10-2017"); 
      cmd.Parameters.AddWithValue("@AppPath", @"E:\Rent A Car\RentACar1\RentACar\bin\Debug"); 
      conn.Open(); 
      //cmd.ExecuteNonQuery(); 
      SqlDataAdapter adaptor = new SqlDataAdapter(cmd); 
      adaptor.SelectCommand = cmd; 
      adaptor.Fill(ResultsTable); 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
     return ResultsTable; 
    } 

Ce code ne me montre rien dans le rapport RDLC. Si j'ouvre dataset1.xsd, et que je donne les mêmes paramètres au SP, j'obtiens des valeurs dans la grille. Mais je suis incapable d'obtenir des valeurs dans RDLC.Rapport RDLC (procédure stockée) avec 2 paramètres

+1

Pourquoi le ferais-je? Vous donnez une table vide au rapport et _then_ appelle la méthode qui envoie les données dans la table _another_. – DonBoitnott

+0

pouvez-vous m'aider avec le code –

Répondre

0

Votre button1_Click devrait ressembler à ceci:

private void button1_Click(object sender, EventArgs e) 
{ 
    DataTable dt = GetSPResult(); 
    reportViewer1.Visible = true; 
    reportViewer1.LocalReport.ReportPath = "Report1.rdlc"; 
    reportViewer1.LocalReport.DataSources.Clear(); 
    reportViewer1.LocalReport.DataSources.Add(new 
    Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", dt)); 
} 

Notez que le DataTable est revenu de GetSPResult devrait être ajouté au rapport non une nouvelle table vide comme dans le code yourt.