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

SDK Discussion :

Comment lier un rapport à une DataTable intégralement par le code [VB]


Sujet :

SDK

  1. #1
    Membre régulier Avatar de Miles Raymond
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 189
    Points : 83
    Points
    83
    Par défaut Comment lier un rapport à une DataTable intégralement par le code
    Bonjour,

    Voilà quelques jours que je planche sur l'outil Crystal Reports et j'ai quelques soucis. Je travail en WPF et je parviens à afficher le CrystalReportViewer et à lui appliquer un rapport que j'ai créé. J'arrive également à effectuer une recherche dans la base de donnée (par le code), à récupérer une DataTable (depuis une classe personnalisée) et à l'affecter à mon rapport. Voici le 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
    18
    19
     
    'Fonction retournant une dataTable en fonction de la requête passée en paramètre
    Dim DT As System.Data.DataTable = DataAccess.FindDataBySQL(query)
                'Si la requête ne renvoie aucune information on annule l'opération
                If DT.Rows.Count = 0 Then
                    MsgBox("Aucun résultat trouvé pour le filtre séléctionné.", MsgBoxStyle.Exclamation)
                    Exit Sub
                End If
                'Sinon on génère le rapport
                Dim report As New ClientsReport
                'Et on lui applique la DataTable retournée par la requête
                report.SetDataSource(DT)
                'Puis on ouvre le ViewModel des rapports en lui passant le nouveau rapport en paramètre
                Dim rvm As New ViewModels.ReportsWindowViewModel(New ClientsReport, "Liste des clients")
                Dim rw As New ReportsWindow
                'Et on défini le Datacontext de la vue de Rapport au ViewModel
                rw.DataContext = rvm
                'Et on affiche!
                rw.ShowDialog()
    Seulement comment ajouter les colonnes de ma base à mon rapport ? Je refuse d'utilisé les outils de connexion de Visual Studio car le déploiement me pose divers problème chez le client et les requêtes à envoyer au rapport demande pas mal de filtres différents. Comment faire pour définir un DataSource par le code pour un nouveau rapport et définir par la même les champs à afficher ?

    Par exemple que le champ de texte "id1" affiche les informations de la colonne "id" ? J'ai vu des possibilités de définir des valeurs pour des paramètres du rapport (avec SetParameterValue) mais pour moi il ne s'agit pas d'une valeur fixe, il s'agit de binder les champs d'une section de détail aux colonnes d'une DataTable SANS passer par l'interface.

    Merci de votre aide!

  2. #2
    Membre régulier Avatar de Miles Raymond
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 189
    Points : 83
    Points
    83
    Par défaut
    Alors pour info, après pas mal de tests si quelqu'un d'autre se trouve confronter au même problème :

    1. Il faut commencer par créer un DataSet (fichier XSD à l'aide du Designer Visual Studio), à l'intérieur, crééer la/les DataTables avec les colonnes désirée. J'ai créer un DataSet global et ajouté toutes les tables utilisées par mes rapports.
    2. Ensuite dans le rapport, ajouter les tables depuis ce DataSet et définir les colonnes (toujours depuis le designer Visual Studio).
    3. Finalement, par le code, faire un SetDataSource sur le rapport en lui passant une DataTable en paramètre (si vous utilisez une DataTable) contenant AU MOINS tous les champs définis dans le rapport (pour que crystal reports s'occupe tout seul de la correspondance des champs).

    Voilà j’espère avoir pu aider quelqu'un avec cette réponse!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/10/2008, 11h45
  2. Comment lier un treeview à une base de données ?
    Par Fngonka dans le forum ASP.NET
    Réponses: 5
    Dernier message: 22/05/2008, 16h33
  3. Comment lier un objet à une variable ?
    Par Nico128 dans le forum WinDev
    Réponses: 1
    Dernier message: 20/03/2008, 15h47
  4. Comment faire pour remplacer une donnée Null par une autre.
    Par Dpedrosa dans le forum Général VBA
    Réponses: 1
    Dernier message: 09/03/2008, 11h25
  5. Comment peut on attaquer une BD MYSQL par un fichier C
    Par adilovic2000 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 11/05/2006, 11h04

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