cs_amoun2009
Messages postés31Date d'inscriptionlundi 12 janvier 2009StatutMembreDernière intervention25 décembre 2014
-
23 avril 2012 à 08:44
cs_gide_x
Messages postés37Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention20 mai 2016
-
24 avril 2012 à 19:04
En effet, j'utilise ce code pour imprimé un état selon des paramètres que je l'indique moi même, la source des données est un seul table mais je ne veut pas sélectionner tous les données avec les mêmes conditions c pour cela j'utilise deux requêtes sql
Mon code est en Visual basic 2010, ma base de données est Access et j'utilise Crystal Report pour la création des états et des rapports.
Voici mon code :
Dim ds, ds1, dst As New DataSet
Dim objRpt, objRpt1 As New CrystalReport1
Dim dta As OleDbDataAdapter
Dim dta1 As OleDbDataAdapter
Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
Dim con As New OleDb.OleDbConnection
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Editiondescycle.mdb"
Dim Mycommand As OleDbCommand = con.CreateCommand()
Mycommand.CommandText "select [Num fiche], Commande, Client, Tissu, Coloris, Saison, [Dtae creation], Commentaire from Fichetraitement where [Commande] '" & TextBox1.Text & "' and [Num etape] = '" & TextBox2.Text & "'"
con.Open()
Dim myreader As OleDbDataReader = Mycommand.ExecuteReader()
dta = New OleDbDataAdapter(Mycommand.CommandText, con)
dta.Fill(ds, "Fichetraitement")
Dim Mycommand1 As OleDbCommand = con.CreateCommand()
Mycommand1.CommandText "select [Num etape], Etape, Machine, Temp, Eau, [Température], [Produit1], [Concentration1], [Produit2], [Concentration2], [Produit3], [Concentration3] from Fichetraitement where Commande '" & TextBox1.Text & "'"
Dim myreader1 As OleDbDataReader = Mycommand1.ExecuteReader()
dta1 = New OleDbDataAdapter(Mycommand1.CommandText, con)
dta1.Fill(ds1, "Fichetraitement")
objRpt.SetDataSource(ds.Tables("Fichetraitement"))
objRpt.SetDataSource(ds1.Tables("Fichetraitement"))
CrystalReportViewer1.ReportSource = objRpt
CrystalReportViewer1.ReportSource = objRpt1
CrystalReportViewer1.Refresh()
lors de l’exécution de ce code deux boites de dialogue du Crystal report s'affichent avec l'erreur "erreur du chargement des données" et lorsque j'appuie sur la bouton OK des deux boites le rapport sera chargé avec le premier ligne enregistré dans ma base de données.
N.B : lors de l’exécution aucune erreur n'est indiquée au niveau des ligne de programme.
cs_gide_x
Messages postés37Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention20 mai 20161 24 avril 2012 à 18:49
Salut !
... euhh ... Je suis pas certain de bien comprendre la conception de ton rapport, mais si j'ai bien compris, tu as des champs provenant de deux tables, qui sont à la base, issues de la même table dans la base de donnée mais avec des champs différent... (pas très clair non-plus comme j'explique ça... enfin bref, on verra plus bas si j'ai compris juste )
Perso, je fais des choses identiques avec MySQL mais cela ne doit pas être très différent. Seule chose que je ne sais pas c'est si les multiples requêtes fonctionne avec ADO et Access....
Et si tu fais dans ce genre, ça donne quoi ?
Dim ds As New DataSet
Dim objRpt As New CrystalReport1
Dim dta As OleDbDataAdapter
Dim da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
Dim con As New OleDb.OleDbConnection
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Editiondescycle.mdb"
Dim Mycommand As OleDbCommand = con.CreateCommand()
Mycommand.CommandText "select [Num fiche], Commande, Client, Tissu, Coloris, Saison, [Dtae creation], Commentaire from Fichetraitement where [Commande] '" & TextBox1.Text & "' and [Num etape] = '" & TextBox2.Text & "'; " & _
"select [Num etape], Etape, Machine, Temp, Eau, [Température], [Produit1], [Concentration1], [Produit2], [Concentration2], [Produit3], [Concentration3] from Fichetraitement where Commande = '" & TextBox1.Text & "';"
con.Open()
Dim myreader As OleDbDataReader = Mycommand.ExecuteReader()
dta = New OleDbDataAdapter(Mycommand.CommandText, con)
dta.Fill(ds)
ds.tables(0).TableName = "Fichetraitement1"
ds.tables(1).TableName = "Fichetraitement2"
'mets deux noms de table différent dans la création de ton report
'théoriquement pas besoin de le faire si après ton nom de table dans le select, tu ajoutes "AS Fichetraitement1"...
objRpt.SetDataSource(ds)
CrystalReportViewer1.ReportSource = objRpt
CrystalReportViewer1.Refresh()
cs_gide_x
Messages postés37Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention20 mai 20161 24 avril 2012 à 19:04
P.S: juste au cas ou.... pour changer le nom de tes tables dans Crystal, vas dans le menu "DataBase", "Database Expert" et dans la fenêtre qui s'ouvre, dans la partie de droite, tu vois toutes tes tables utilisées. Cliques sur une table presse F2 (double cliques lent) et tu peux changer le nom de la table
De préférence, évites le mélange majuscule-minuscule dans les noms de tables, car crystal est case-sensitive et tu te retrouveras avec des erreurs que tu chercheras pendant des heures pour rien (expérience faite...)