none
C# Datagrid to Crtystal Report RRS feed

  • Question

  • Bonjour, dans une application WPF j'ai deux Boutons : 

    Le 1er importe des données d'une base Access vers un DataGrid

    private void FillDataGridBtn_Click(object sender, RoutedEventArgs e)
    			{
    		    comm=new Oledbcommand("SELECT * FROM [Ma_Table]",conn);
    			comm.CommandType=CommandType.Text;
    			conn.Open();
                OleDbDataAdapter dap = new OleDbDataAdapter(comm);
                DataTable dt = new DataTable();
                dap.Fill(dt);
                MyDataGrid.ItemsSource = dt.DefaultView;
                conn.Close();
    			}

    Le second utilise cette DataGrid pour créer un rapport Crystal Report et c'est la mon soucis :

    comment faire pour que le datatable (dt) utilisé dans le code du bouton 1 soit reconnu (et non null) dans le code du 2eme bouton ?

    private void CreateCrystalReportBtn_Click(object sender, RoutedEventArgs e)
    			{
                dt.WriteXmlSchema("Requete_Qualite.xml"); // Null Reference Exception !
    			CrystalReport1 cr=new CrystalReport1();
    			cr.SetDataSource=(dt);
    			cr.ExportToDisk();
                conn.Close();
    			}


    JF Collombet ® CreateSpecificCulture

    mercredi 23 mai 2018 11:03

Réponses

  • Voici comment j'ai procédé du coup :

      public partial class IGPQueries_ABCPage : Page
        {
            OleDbConnection conn;
            OleDbCommand comm;
            Igp_QueriesReport igpRpt = new Igp_QueriesReport();
            public IGPQueries_ABCPage()
            {
                InitializeComponent();
                ConnectToDB();
                FillProdCB();
            }


    JF Collombet ® CreateSpecificCulture

    dimanche 27 mai 2018 07:25

Toutes les réponses

  • Bonjour,

    La datatable dt est visible seulement dans la méthode FillDataGridBtn_Click et elle n'est pas visible pour la méthode CreateCrystalReportBtn_Click. Vous pouvez la définir comme un champ ou une propriété de la classe MainWindow.

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 24 mai 2018 09:33
    Modérateur
  • Bonjour et merci de votre réponse.

    J'avais bien sur pensé à déclarer mon DataGrid comme champ :

      public partial class IGPQueries_ABCPage : Page
        {
            OleDbConnection conn;
            OleDbCommand comm;
            DataTable dt = new DataTable("Igp_Queries");
            public IGPQueries_ABCPage()
            {
                InitializeComponent();
                ConnectToDB();
                FillProdCB();
            }

    Bien sur maintenant mon DataGrid (dt) est visible par mes 2 codes mais renvoi une exception logique dans le 2eme puisque dt n'est associé à aucune table (à contrario du 1er code) :

     private void ExportIGPBtn_Click(object sender, RoutedEventArgs e)
            {
                string d = DateTime.Now.ToString("dd.MM.yyyy");
                string ExcelPath = ($"{ApplicationDirectories.dossierDoc}\\{ApplicationDirectories.appName}\\Dossiers {ApplicationDirectories.appName}\\Requetes_Simples");
                string ExcelName = ($"{ExcelPath}\\{CLICB.Text}-{ProdCB.Text}-{NumLotTxtBox.Text}_{d}.xls");
                Igp_QueriesReport cr = new Igp_QueriesReport();
                cr.SetDataSource(dt);
                cr.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.ExcelRecord, ExcelName);
            }


    JF Collombet ® CreateSpecificCulture

    jeudi 24 mai 2018 15:17
  • Voici comment j'ai procédé du coup :

      public partial class IGPQueries_ABCPage : Page
        {
            OleDbConnection conn;
            OleDbCommand comm;
            Igp_QueriesReport igpRpt = new Igp_QueriesReport();
            public IGPQueries_ABCPage()
            {
                InitializeComponent();
                ConnectToDB();
                FillProdCB();
            }


    JF Collombet ® CreateSpecificCulture

    dimanche 27 mai 2018 07:25