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 :
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 ?
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()
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!
Partager