PB de date

Signaler
Messages postés
29
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
1 août 2002
-
Messages postés
11
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2004
-
Jour'

Bon voila ca fait + d une semaine que je bloque sur ce pb et tjs po de reponse :(

J ai une BD qui gere des contrats
Pour chaque contrat, j'ai plusieurs pieces ou prestations
Chaque pieces ou prestations a un prix et un cout pour la société

Or je voudrais connaitre la marge (cad prix-cout) des contrats compris entre 2 dates

Genre quel est le chiffre d affaire entre le 05/04/2002 et le 16/11/2002

Seulement, quelles que soient ces 2 dates, le prog me sort le chiffre d affaire compris entre le 01/01/2002 et ma date_fin, why ?

voici ma source :

Private Sub Image123_Click()
Dim annee_recherche As String
Dim mois_recherche As String
Dim mois As String

Dim dbf As Database
Dim tuple As Recordset
Dim requete As String

Dim date_debut As String
Dim date_fin As String

Dim chiffre_affaire As Long
Dim marge As Long
Dim i As Integer

Dim code_contrat As String

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
mois = mois_recherche

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


Set dbf = CurrentDb

requete = "SELECT Prix, Cout "
requete = requete & "FROM Contrat, Piece_prestation_formation "
requete = requete & "WHERE Contrat.Id=Piece_prestation_formation.Id_contrat "
requete = requete & "AND (Contrat.Date_contrat >= #" & date_debut & "#) "
requete = requete & "AND (Contrat.Date_contrat <= #" & date_fin & "#); "

Set tuple = dbf.OpenRecordset(requete)

If tuple.RecordCount = 0 Then
MsgBox "Il n'y a aucun contrat d'enregistré pour cette période..."
Else
With tuple
.MoveLast
.MoveFirst
End With

For i = 1 To tuple.RecordCount
marge = tuple("Prix").Value - tuple("Cout").Value
chiffre_affaire = chiffre_affaire + marge
tuple.MoveNext
Next i

tuple.Close
Set tuple = Nothing
dbf.Close
MsgBox "Chiffre d'affaire sur la période comprise entre le " & CStr(date_debut) & " et le " & CStr(date_fin) & " : " & vbCrLf & vbCrLf & vbTab & CStr(chiffre_affaire) & " €"
End If

End If
End Sub

mici pour la reponse

5 réponses

Messages postés
114
Date d'inscription
vendredi 3 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2014

Heuuu bon hum, ton code gère les dates d'une façon super zarbi. Mais pourtant ça devrait marcher.

Peux-tu faire un débuging pas à pas et nous donner la valeur de la variable 'requete' juste avant l'ouverture du RecordSet ?

--------------------
Skrol 29
www.skrol29.com
--------------------
0
Messages postés
29
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
1 août 2002

A vrai dire, je bosse sous access (logiciel que j ai ouvert la premiere fois de ma vie il y a 2 semaines), je ne connais po trop le VB et je ne sais absolument pas faire ce que tu me demandes....
0
Messages postés
29
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
1 août 2002

Ce que je ne comprends pas non plus, c que si je ne met le bout de code suivant :

with tuple
.movelast
.movefirst
end with

Ben j obtiens un resultat different
(qui n a pas la bonne valeur non plus)
0
Messages postés
344
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
4 avril 2011
1
met tes variables de date au format date, ça devrait etre mieux, puis, utilise la commande format(ma_date,"yy") pour comparer des date voici un bout de code qui devrait t'aider un peu (c'est un chronometre qui utilise la date systeme car le timer est trop imprécis en fait):

Dim debut, coucou, fin As Date
-------------------------------------------------------
Private Sub Command1_Click()
coucou = Format(Now(), "d/m/yy h:n:s")
Timer1 = True
End Sub
-------------------------------------------------------
Private Sub Timer1_Timer()
debut = Format(Now(), "d/m/yy h:n:s")
fin = CDate(debut) - CDate(coucou)
Label1.Caption = debut
Text1.Text = Format(CDate(fin), "h")
Text2.Text = Format(fin, "n")
Text3.Text = Format(fin, "s")
End Sub

ps : en espèrant avoir été clair, je te souhaite plein de petites date à gerer
nb : soit plus précis dans tes sujets
;)
David de lAVAL
0
Messages postés
11
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2004

Definit tes variables en Date et pas en String....

Exemple:
Dim Date_Deb As Date
et non
Dim Date_Deb As String

Avec ca devrait mieux fonctionner.

[Hk]GhostPiwiik
0