2013-01-12 2 views
1

Bonjour,Qu'est-ce qui peut provoquer un rapport Crystal dans Visual Studio 2010 pour afficher Gibberish?

Après avoir regardé de nombreux tutoriels en ligne et la lecture de la documentation, j'ai décidé de la main sur les Crystal Reports pour l'exécution de Visual Studio. Je crois comprendre que l'exécution de SAP Crystal Reports ne prend pas en charge de façon native les connexions à une base de données MySQL. Je crois donc que j'ai tout fait correctement pour extraire les enregistrements de base de données dans un objet Dataset. Je peux voir les enregistrements dans le jeu de données et ils correspondent à ce qui se trouve dans la base de données. Malheureusement, lorsque je lance un aperçu du rapport, tout est "charabia" sauf pour les champs Date.

Je suis perplexe et je ne sais pas quoi faire maintenant, toute aide serait grandement appréciée. Les captures d'écran ci-dessous montrent les enregistrements de l'ensemble de données ainsi que l'aperçu du rapport. Par ailleurs, le classement sur le serveur et la table sont tous les deux réglés sur "Latin1 - Collation par défaut". Vous ne savez pas si cela fait une différence.

Image # 1: VUE RECORDS DataSet

enter image description here Cliquez ici pour agrandir l'image: https://dl.dropbox.com/u/55174425/Dataset%20Records.jpg

IMAGE # 2: CONCEPTION VUE RAPPORT

enter image description here Cliquez ici pour agrandir l'image: https://dl.dropbox.com/u/55174425/Design%20View%20of%20Report.jpg

IMAGE # 3: APERÇU DU RAPPORT

enter image description here Cliquez ici pour agrandir l'image: https://dl.dropbox.com/u/55174425/Preview%20of%20Report.jpg

+0

vous n'avez pas encore exécuté le programme, celui que vous voyez ci-dessous sont échantillon données seulement. –

+0

Merci, mais je ne pense pas que c'était le problème. Au moment de l'exécution, le rapport est vide - ne montrant que les en-têtes de colonnes. Voici la capture d'écran https://dl.dropbox.com/u/55174425/Runtime%20Screenshot.jpg –

+0

Comment avez-vous fourni la source de données pour le rapport? –

Répondre

2

Bonjour SO,

j'ai réussi à répondre à ma propre question et a décidé de partager ma réponse en cas quelqu'un là-bas se heurte à ce même problème.

Eh bien, ce n'est pas vraiment un problème car c'est la façon dont l'exécution de Crystal Reports pour Visual Studio est supposée fonctionner (du moins en ce qui concerne MySQL). Ce que je n'ai pas réalisé, c'est que, parce que l'exécution de CR pour VS ne supportait pas une connexion native à une base de données MySQL, il était nécessaire d'utiliser Visual Studio pour créer une connexion serveur en utilisant le .Net Connector vous installez le Connecteur).

Une fois la connexion au serveur établie, j'ai pu créer un DataSet et le remplir avec les enregistrements de la base de données. Malheureusement, ce que je n'ai pas réalisé, c'est que cet ensemble de données permet simplement la sélection des champs/colonnes nécessaires à la conception du rapport (fichier .rpt). Maintenant, voici où mon problème de "charabia" était. En fait, j'ai découvert que le runtime CR utilise délibérément du texte/des caractères aléatoires lorsque vous concevez le rapport et si vous prévisualisez le rapport, vous le verrez. En outre, si vous déboguez l'application, vous obtiendrez un rapport vide avec uniquement les en-têtes de colonne.

La solution consiste à interroger par programme la base de données, créer et remplir un DataTable et l'affecter à une nouvelle instance du rapport que vous venez de créer comme source de données. Et alto, le rapport montre maintenant l'information que je cherchais.Donc, voici le code que je fini par utiliser au moment de l'exécution afin d'obtenir mon rapport pour afficher les données que je cherchais:

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Try 
     'Define the MySQL Connection String. 
     Dim myConnectionString As String = "Server=server_address;Port=3306;Uid=user_id;Password=password;Database=schema_name;" 

     'Create a new MySqlConnection object and assign the Connection String to it. 
     Dim dbConn As New MySqlConnection(myConnectionString) 

     'Define your Query. 
     Dim dbQuery As String = "SELECT * FROM users" 

     'Create a new MySqlDataAdapter object and assign the Query and Connection String objects to it. 
     Dim dbAdapter As New MySqlDataAdapter(dbQuery, dbConn) 

     'Create a new DataTable object and fill it with the contents of the MySqlDataAdapter object. 
     Dim dbTable As New DataTable 
     dbAdapter.Fill(dbTable) 

     'Create a new instance of the report you previously designed and set its DataSource to the DataTable. 
     Dim report As New rptUserList 
     report.SetDataSource(dbTable) 

     'Set the ReportSource of the CrystalReportViewer control to your report. 
     CrystalReportViewer1.ReportSource = report 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

End Sub 
Questions connexes