cs_laglobule
Messages postés29Date d'inscriptionmardi 16 juillet 2002StatutMembreDernière intervention 1 août 2002
-
16 juil. 2002 à 09:48
Jerrymcfly
Messages postés29Date d'inscriptionvendredi 8 mars 2002StatutMembreDernière intervention26 juillet 2002
-
19 juil. 2002 à 10:21
Alors voila, g un formulaire avec 2 controles :
- un me donnant un mois
- l autre me donnant une annee
Avec ca, je dois calculer le chiffre d affaire de ce mois (de cette annee) : par exemple le CA effectue en juin 2002.
Pb : je sens que ma requete pue un peu du fait qu'il me sort tjs le meme resultat : 250 €.
Pourtant, la structure de mes tables est correcte (je suis étudiant en maitrise d'informatique). En effet, Date_contrat est un champs de type date et Id et Id_contrat sont de type Long, Cout et Prix sont egalement de type Long....
PS : c'est la premiere fois que je fait du VB, alors soyez indulgent :)
Voici ma source :
Private Sub Commande120_Click()
Dim annee_recherche As String
Dim mois_recherche As String
Dim dbf As Database
Dim tuple As Recordset
Dim requete As String
Dim date_debut As Date
Dim date_fin As Date
Dim chiffre_affaire As Long
Dim marge As Long
Dim i As Integer
If (IsNull(Forms![Résultat - calcul du CA pour un mois donné]![Modifiable118].Value) Or (IsNull(Forms![Résultat - calcul du CA pour un mois donné]![Modifiable116].Value))) Then
MsgBox "Un champ n'a pas été rempli... :("
Else
annee_recherche = Forms![Résultat - calcul du CA pour un mois donné]![Modifiable118].Value
mois_recherche = Forms![Résultat - calcul du CA pour un mois donné]![Modifiable116].Value
Select Case mois_recherche
Case "Janvier"
date_debut = CDate("01/01/" & annee_recherche)
date_fin = CDate("31/01/" & annee_recherche)
Case "Février"
date_debut = CDate("01/02/" & annee_recherche)
date_fin = CDate("28/02/" & annee_recherche)
Case "Mars"
date_debut = CDate("01/03/" & annee_recherche)
date_fin = CDate("31/03/" & annee_recherche)
Case "Avril"
date_debut = CDate("01/04/" & annee_recherche)
date_fin = CDate("30/04/" & annee_recherche)
Case "Mai"
date_debut = CDate("01/05/" & annee_recherche)
date_fin = CDate("31/05/" & annee_recherche)
Case "Juin"
date_debut = CDate("01/06/" & annee_recherche)
date_fin = CDate("30/06/" & annee_recherche)
Case "Juillet"
date_debut = CDate("01/07/" & annee_recherche)
date_fin = CDate("31/07/" & annee_recherche)
Case "Août"
date_debut = CDate("01/08/" & annee_recherche)
date_fin = CDate("31/08/" & annee_recherche)
Case "Septembre"
date_debut = CDate("01/09/" & annee_recherche)
date_fin = CDate("30/09/" & annee_recherche)
Case "Octobre"
date_debut = CDate("01/10/" & annee_recherche)
date_fin = CDate("31/10/" & annee_recherche)
Case "Novembre"
date_debut = CDate("01/11/" & annee_recherche)
date_fin = CDate("30/11/" & annee_recherche)
Case "Décembre"
date_debut = CDate("01/12/" & annee_recherche)
date_fin = CDate("31/12/" & annee_recherche)
Case Else
MsgBox "Le mois que vous venez d'insérer est incorrect..."
End Select
If tuple.RecordCount = 0 Then
MsgBox "Il n'existe pas de contrat enregistré pendant ce mois..."
Else
chiffre_affaire = 0
For i = 1 To tuple.RecordCount
marge = CLng(tuple("Prix").Value) - CLng(tuple("Cout").Value)
chiffre_affaire = chiffre_affaire + marge
tuple.MoveNext
Next i
MsgBox "Chiffre d'affaire sur la période comprise entre le " & CStr(date_debut) & " et le " & CStr(date_fin) & " : " & vbCrLf & vbCrLf & vbTab & chiffre_affaire & " €"
End If
cs_laglobule
Messages postés29Date d'inscriptionmardi 16 juillet 2002StatutMembreDernière intervention 1 août 2002 16 juil. 2002 à 11:42
C gentil de m'aider.
mais ceci ne marche tjs po
Il retourne 250 € alors qu il devrait retouner 700 € comme CA
je pense qu il a du mal avec les dates : je sais po si il pige bien (le VB) ce que je veux --> en effet, j ai pas l impression qu il comprenne ce que veut dire Date_contrat >= #01/07/2002#
Jerrymcfly
Messages postés29Date d'inscriptionvendredi 8 mars 2002StatutMembreDernière intervention26 juillet 2002 19 juil. 2002 à 10:21
Salut.
J'ai eu ce probleme, j'ai galéré un bon moment et j'ai la solution :
Si tu débug et que t'affiches des dates dans ta requetes, tu vas t'appercevoir que quand tu passes une varible type date de VBA vers SQL, il faut la passer formatée de la sorte :
MM/JJ/AAAA.
Sinon, ton 01/03/2002 est interprété comme le 3/01/2002,
et ton 31/03/2002 va etre interprété comme... je sais plus trop quoi qmais c'est pas joli à voir :)
Donc la solution c'est celle de notre ami Xime, avec un format "mm/dd/yyyy".