IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Etat crystal report qui ne donne aucune donnée


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Points : 33
    Points
    33
    Par défaut Etat crystal report qui ne donne aucune donnée
    Bonjour à tous,
    Je débute en crystal report et je rencontre qqes soucis malgré que j'essaie de m'aider de différents tuto présents sur ce site.
    J'ai donc créé un état basique avec l'assistant (nommé etat pour l'occaz), une seule table (stock) est utilisée.
    Ensuite dans une winform, j'ai mis un crystalreportviewer et au chargement de la forme ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Try
     
    ' ici nous remplissons notre DataSet (dts)
    db.servar("gestion")
    dts = db.mysqlquery("SELECT * FROM Stock")
     
    ' ici on crée une instance de notre état, nous précisons que ca source est notre DataSet 
    'et que l'on veut l'afficher dans notre crystalreportviewer
    Dim report As New etat
    report.SetDataSource(dts)
    crystalreportviewer.ReportSource = report
     
    Cursor.Current = Cursors.Default
    Catch ex As Exception
    MsgBox(ex.Message.ToString)
    End Try
    Cependant, rien ne fonctionne.
    J'ai regardé: le dataset est correctement rempli et crystalreportviewer contient bien les données mais celles-ci ne s'affichent pas, je n'ai que les libellés des colonnes!
    Je ne comprends pas pourquoi et je m'arrache les cheveux depuis hier matin, il ne m'en reste plus beaucoup!
    Merci d'avance pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Salut,

    Tu ne définis pas l'état crystal à remplir donc il est normal qu'il ne puisse pas afficher les données ^^

    Rajoute au dessus de ton setDataSource :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    report = New Le nom de rapport (sans .rpt)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Autant pour moi, il y a une autre erreur aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim report as ReportDocument
    report = new Le nom de rapport (sans .rpt)
    Là, ça devrait marcher ^^

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Salut,
    tout d'abord merci pour ton aide.
    Si l'état crystal est défini dans:
    De plus chez moi ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim report As ReportDocument
    génère une erreur:

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Place cette ligne en haut du fichier qui contient tes lignes de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports CrystalDecisions.CrystalReports.Engine
    Si ça ne marche pas essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim report as CrystalDecisions.CrystalReports.Engine.ReportDocument

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    Salut, je ne suis pas un virtuose de VB.Net et encore moins de Crystal Report mais je fais ceci :

    Je crée le rapport CR01.RPT avec l'assistant (sur base d'un dataset existant).
    et puis une form1 avec un Crystalreportviewer CRV01

    Le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Imports CrystalDecisions.CrystalReports.Engine
    Public Class Form1
    Private Sub CB01_Click(ByVal sender As System.Object, 
       Dim cryRpt As New ReportDocument
       cryRpt.Load("c:\VBN\CR01.RPT")
       cryRpt.SetDataSource(Me.DSPROJETS)
       CRV01.ReportSource = cryRpt
       CRV01.Refresh()
    End Sub

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    J'ai adapté le code posté précédemment afin de filtrer les données par une requête SQL et là j'ai le même problème que toi : le rapport est vide, seules les entêtes de colonnes apparaissent.

    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Imports System.Data
     
    Public cs As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    Public dr As String = "C:\_01\"
    Public db As String = "PRO.mdb"
    Public tb1 As String = "Table1"
    Public cn As String = cs & dr & db
    Public sql As String
     
    Private Sub Form2_Load
      sql = "SELECT * FROM Table1"
      Dim Dta As New OleDb.OleDbDataAdapter(sql, cn)
      Dim Dts As New DataSet("result")
      Dim crd As New ReportDocument
      Dta.Fill(Dts) 'remplissage du dataset
     
      crd.Load("c:\VBN\CR01.RPT")
      crd.SetDataSource(Dts)
      CRV01.ReportSource = crd 'CRV01 = Crystalreportviewer
      CRV01.Refresh()
    End Sub

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Ah ca me rassure!!!
    Merci beaucoup de ton aide et d'avoir testé qqes trucs.
    En espérant que quelqu'un puisse nous aider

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Points : 451
    Points
    451
    Par défaut
    Bonsoir,
    Voici un petit bout de code
    DSBD= un dataset
    CR+ = un contrôle crystalReportviewer
    CRTrous = un rapport créé avec l'assistant intégré de crystal report de visual studio
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dim DSBD As New DSBDS
    ......
    'chargement des tables du dataset
    ......
    Dim RPT As CRTrous
     RPT = New CRTrous
     RPT.SetDataSource(DSBD)
     CRV.ReportSource = RPT
     CRV.Visible = True
    J'espère que cela va t'aider.
    Mais si tu as le titre des colonnes, c'est que la table liée au rapport est vide ou si tu as mis un filtre, celui-ci ne retourne aucune ligne.
    Bon courage
    Jean

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Salut et merci de ton implication.
    Malheureusement, ce code ne résout pas les problèmes que nous rencontrons Dakota77 et moi.

    Nous avons le titre des colonnes car lorsque l'on utilise l'assistant pour créer un état crystal report, ce dernier met automatiquement le titre des colonnes en entête de page.

    Nous n'avons aucun problème lorsque l'on utilise un dataset instancié par un autre un dataset préconfiguré. Le problème se passe avec les dataset créés à la volée par du code. C'est à se moment là qu'aucune donnée ne s'affiche. Pourtant, le dataset est réellement rempli, j'ai fait le test.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Tu parlais à qui Machine ? Tu as essayé ce que je t'avais mis ?

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    Salut Sebnantes, merci pour ton aide. J'ai apparemment le même souci que Machine Head. Et le code que tu as suggéré ne fonctionne pas ni pour lui ni pour moi. Toujours le même problème : le rapport est vide. Ca marche si on utilise un dataset créé avec l'assistant.
    Le code de création du dataset est probablement incorrect ...

    cn=connection string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    sql = "SELECT * FROM LOG"
    Dim Dta As New OleDb.OleDbDataAdapter(sql, cn)
    Dim Dts As New DataSet("result")
    Dta.Fill(Dts) 'remplissage du dataset
     
    Dim rpt As CRTrous
    rpt = New CRTrous
    rpt.SetDataSource(Dts)
    CRV01.ReportSource = rpt
    CRV01.visible=true
    CRV01.Refresh()

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Bonjour sebnantes, je parlais à JPelli.
    Mais je n'ai pas plus de résultats avec ton code que j'ai essayé hier pour les mêmes raisons qu'exposées par Dakota77

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    J'ai peut être trouvé l'explication mais ca ne résout pas notre pb.
    En parcourant différents tutos, je suis tombé sur çà:
    Pour que notre état puisse consommer les données de notre dataset celui-ci doit être fortement typé. En effet, lors de la création de l'état il faut bien que Crystal Reports puisse déterminer le nom et le type des champs pour les données qui lui serviront à générer le rapport.
    C'est le .xsd d'un dataset fortement typé qui contient toutes ces informations.
    Donc ca explique pourquoi un dataset créé à la volée ne peut remplir un état crystal aussi facilement.

    Par contre, je pense que l'on doit pouvoir arriver à nos fins car lorsque tu ajoutes un contrôle crystalreport viewer dans ta forme, il te propose de choisir un groupe de données non typé donc sans schéma.C'est sans doute plus compliqué mais cela doit être possible.
    Reste à trouver des tuto pour savoir comment faire!
    Si tu trouves avant moi dakota, je suis preneur!

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    Merci pour les infos Machine Head.

    Effectivement le problème semble venir du dataset qui n'est pas rempli correctement. Malheureusement je n'ai toujours pas trouvé de solution non plus.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    Salut Machine Head,

    J'ai contourné le problème du dataset en utilisant un dataview.
    Voici le code qui fonctionne et qui permet de filtrer les enregistrements du rapport. En espérant que cela puisse t'aider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub Form2_Load
    Dim RD As New ReportDocument
    Dim DV As New DataView
    Dim so As String = "DTC ASC" 'tri
    Dim we As String = "QUI = 'NONNA'" 'filtrage des données
    DV.Table = Form1.DSCONSO.Tables("LOG")
    DV.Sort = so
    DV.RowFilter = we
    RD.Load("c:\_01\VBN\CR01.RPT")
    RD.SetDataSource(DV)
    CRV01.ReportSource = RD
    CRV01.Refresh()
    End Sub

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Merci Dakota, je pense que ce code me sera utile très prochainement.
    A bientôt pour nos galères avec Crystal Report...

  18. #18
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut code complet C#
    Tout d'abord, merci pour vos conseil, je me permets de résumer les étapes :

    1. Ajouter 1 crystal report.
    2. Ajouter 1 DataSet. Dans DataSet1 : ajouter 1 DataTable1 -> ajouter tous les colonnes que vous voulez afficher dans votre report.
    3. Dans CrystalReport1.rpt -> Dans Mes connexions -> sélectionner DataTables1 dans DataSet1
    4. Dans Explorer des champs : Vous n'avez qu'à ajouter vos colonnes dans votre report.
    5. Code dans C# :

    OleDbDataAdapter objDataAdapter = new OleDbDataAdapter();
    DataSet objDataSet = new DataSet();
    objDataSet.Clear();
    objDataAdapter.SelectCommand = new OleDbCommand();
    objDataAdapter.SelectCommand.Connection = MyConnection;
    objDataAdapter.SelectCommand.CommandText = ("Select * from Contact");
    objDataAdapter.Fill(objDataSet, "Contact");
    DataTable DataTable1 = objDataSet.Tables["Contact"];
    DataView DV = new DataView();
    DV.Table = objDataSet.Tables["Contact"] ;
    CrystalDecisions.CrystalReports.Engine.ReportDocument cryRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
    cryRpt.Load(@"..\..\CrystalReport1.rpt");
    cryRpt.SetDataSource(DV);
    crystalReportViewer1.ReportSource = cryRpt;
    cryRpt.Refresh();

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/03/2014, 10h30
  2. Lien entre crystal reports et la base de données en production
    Par BILANGA dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 07/12/2011, 11h20
  3. Réponses: 2
    Dernier message: 06/06/2011, 15h28
  4. Réponses: 2
    Dernier message: 07/05/2010, 11h28
  5. [Crystal Reports] Sélection de Base de Données
    Par coucoucmoi dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 16/11/2004, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo