Bonjour,
Mon application vb utilise une base de données sql. Dans mon application j'ai des champs monétaires. Lorsque je veux générer un rapport mensuel, j'extrais mes données afin de les envoyer dans une table temporaire et mon rapport affiche ses données. J'ai vérifié mon code en mode débug et mes données monétaires appraissent toujours avec les cents, mais lorsque je vais dans ma table temporaire les cents sont toujours à ,00.....
Voici mon code:
[code]
Voici mon code pas à pas , si ça peut vous aider.
'************************************************************
Bouton qui actionne la création du RAPPORT MENSUEL DEPOTS EN CIRCULATION *
'************************************************************
Private Sub cmdGenerer5_Click()
clique5 = clique5 + 1
verifierDate
If dateOk = True Then
verifierMois
If moisOk = True Then
supprimerChampsDepot
fonctionGenerer5
creerNouvelleTable2
test = recevoirMois(txtAnnee.Text, mois)
Call frmZRapports.AfficherRapportMensuelDepot
Else
MsgBox "Mois inexistant dans la base de données"
txtMois.SetFocus
End If
Else
MsgBox "Année inexistante dans la base de données"
txtAnnee.SetFocus
End If
End Sub
[/code]
Code de la fonction FonctionGenerer5 :
[code]
'************************************************************
' Fonctions qui crée la CINQUIEME flex grid selon les dates entrées par l'utilisateur *
'************************************************************Private Sub fonctionGenerer5()
NouvelleDepot.Clear
CreerNouvelleDepot
Dim longueur As Integer
Dim compteur As Integer
Dim compte As Integer
compte = 0
longueur = GrilleDepot.Rows
convertirDate
For compteur = 0 To longueur - 1
If GrilleDepot.TextMatrix(compteur, 1) <= dateFin Then
NouvelleDepot.Rows = compte + 2
NouvelleDepot.TextMatrix(compte + 1, 1) = GrilleDepot.TextMatrix(compteur, 1)
NouvelleDepot.TextMatrix(compte + 1, 2) = GrilleDepot.TextMatrix(compteur, 2)
NouvelleDepot.TextMatrix(compte + 1, 3) = GrilleDepot.TextMatrix(compteur, 3)
NouvelleDepot.TextMatrix(compte + 1, 4) = GrilleDepot.TextMatrix(compteur, 4)
compte = compte + 1
End If
Next compteur
End Sub
[/code]
J'ai vérifié avec un msgbox les cents apparaissent lors de l'execution de la ligne :
[code]
NouvelleDepot.TextMatrix(compte + 1, 3) = GrilleDepot.TextMatrix(compteur, 3)
[/code]
Code de la Fonction CréerNouvelleTable2 :
[code]
'************************************************************
' Fonctions qui envoies les données dans une table de ma base de données *
'************************************************************
Private Sub creerNouvelleTable2()
Dim cnx As New ADODB.Connection
cnx.ConnectionString = "Provider=SQLOLEDB;Data Source=MTLVILLE02;Initial Catalog=CaisseDCN;User ID=truch02;Password=bleuet;"
cnx.Open
Dim longueur As Integer
Dim compteur As Integer
longueur = NouvelleDepot.Rows
For compteur = 1 To longueur - 1
TxtDateDepot.Text = NouvelleDepot.TextMatrix(compteur, 1)
TxtDepot2.Text = NouvelleDepot.TextMatrix(compteur, 2)
TxtSomme.Text = NouvelleDepot.TextMatrix(compteur, 3)
TxtEncaisse2.Text = NouvelleDepot.TextMatrix(compteur, 4)
If TxtDateDepot.Text <> "" Then cnx.Execute ("INSERT INTO DepotTempo ( DateDepot, Depot, Somme, Encaisse) values ('" & TxtDateDepot.Text & "', '" & TxtDepot2.Text & "', CONVERT(MONEY, " & TxtSomme.Text & "), '" & TxtEncaisse2.Text & "');")
Next compteur
cnx.Close
Set cnx = Nothing
End Sub
[/code]
C’est la même chose les cents apparaissent (vérifié avec msgbox):
[code]
If TxtDateDepot.Text <> "" Then cnx.Execute ("INSERT INTO DepotTempo ( DateDepot, Depot, Somme, Encaisse) values ('" & TxtDateDepot.Text & "', '" & TxtDepot2.Text & "', CONVERT(MONEY, " & TxtSomme.Text & "), '" & TxtEncaisse2.Text & "');")
[/code]
Code Call frmZRapports.AfficherRapportMensuelDepot :
[code]
'************************************************************
' Création du rapport dynamique Dépots du menu DÉPANNAGE *
'**********************************************************
Public Sub AfficherRapportMensuelDepot()
Dim cnx As New ADODB.Connection
Dim rst As New ADODB.Recordset
cnx.ConnectionString = "Provider=SQLOLEDB;Data Source=NomServeur;Initial Catalog=NomBase;User ID=CodeUtilisateur;Password=PW;"
cnx.Open
rst.Open " SELECT * FROM DepotTempo WHERE encaisse = 'N';", cnx
Set rptMensuelDepotsCirculation.DataSource = rst
rptMensuelDepotsCirculation.Show vbModal
cnx.Close
Set cnx = Nothing
End Sub
[/code]
Ici il fait seulement prendre les données de la table tempo pour les envoyer dans mon rapport….
Avez-vous une idée ou dois-je déplacer mon message dans Langage SQL?
Je crois que le problème vient de la ligne:
[code]
If TxtDateDepot.Text <> "" Then cnx.Execute ("INSERT INTO DepotTempo ( DateDepot, Depot, Somme, Encaisse) values ('" & TxtDateDepot.Text & "', '" & TxtDepot2.Text & "', CONVERT(MONEY, " & TxtSomme.Text & "), '" & TxtEncaisse2.Text & "');")
[/code]
C'est CONVERT (MONEY, " & TxtSomme.Text &") qui remet à ,00 mais comment corriger ce bug???
Kat40