Stev16
Messages postés7Date d'inscriptionsamedi 30 juillet 2005StatutMembreDernière intervention11 janvier 2008
-
8 mai 2007 à 11:34
Stev16
Messages postés7Date d'inscriptionsamedi 30 juillet 2005StatutMembreDernière intervention11 janvier 2008
-
8 mai 2007 à 18:18
Salut
voici mon Pb.
J'ai une table "Entretien_preventif" dans le quel se trouve un champ [Date_prochaine] de type Date. Je veux a l'aide d'un module, verifier trois chose dans la table
1) S' il ya une date > à aujourd'hui alors faire shpAlarme.Backcolor=Vbred
2)Si aucune date n'est > à aujourd'hui mais qu'il ya une date > à (la date d'aujourdh4hui -5) alors shpAlarme.Backcolor=VbYellow
3) Si aucune des premieres condition n'est verifié, alors shpAlarme.Backcolor=VbGreen
Merci pour la bonne comprehension !
Voici les codes que j' ai essayé, mais sans reussite.
Public Sub alarme()
Dim i As Integer
Dim sql As String
i = 1
connect
Set rs = New ADODB.Recordset
sql = "SELECT * FROM Entretien_preventif WHERE Date_prochaine<= #Date#"
rs.Open sql, cn, adOpenDynamic, adLockOptimistic
Do While Not rs.EOF
verif(i) = rs.Fields(0)
rs.MoveNext
i = i + 1
Loop
If i = 1 Then
rs.Close
sql = "SELECT * FROM Entretien_preventif WHERE Date_prochaine<= #(Date-5)#"
rs.Open sql, cn, adOpenDynamic, adLockOptimistic
Do While Not rs.EOF
verif(i) = rs.Fields(0)
rs.MoveNext
i = i + 1
Loop
If i = 1 Then
MDIForm1.ShpAlarme.BackColor = vbGreen
Else
MDIForm1.ShpAlarme.BackColor = vbYellow
End If
Else
MDIForm1.ShpAlarme.BackColor = vbRed
End If
End Sub
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 8 mai 2007 à 13:25
Salut
On suppose que c'est la ligne en rouge qui pose problème . . . pas clair
lol, tu as recopier l'exemple que t'a donné Exploreur mais tu n'as pas compris le sens :
Quand il t'a écrit qu'il fallait une requète SQL de cette forme :
"SELECT * FROM Entretien_preventif WHERE Date_prochaine<= #Date#"
il va de soi que le dernier #Date# correspond à TA date, celle que tu veux tester, pas les lettres d-a-t-e.
Nota : Pense à remettre les [ et ] autour de Entretien_preventif et Date_prochaine
Exemple 1 : Si tu veux tester qu'une date de la DB est antérieure à aujourd'hui :
"SELECT * FROM [Entretien_preventif] WHERE [Date_prochaine] <= Now"
Exemple 2 : Si tu veux tester qu'une date de la DB est antérieure au 24 décembre 2010 :
"SELECT * FROM [Entretien_preventif] WHERE [Date_prochaine] <= #24/12/2010#"
Exemple 2 bis : Même test avec une date contenue dans une variable VB :
"SELECT * FROM [Entretien_preventif] WHERE [Date_prochaine] <= #" & maVariableDate & "#"
Exemple 3 : Si tu veux tester qu'une date de la DB est comprise entre deux dates :
"SELECT * FROM [Entretien_preventif] WHERE [Date_prochaine] between #24/12/2010#" and #28/12/2010#
Ensuite, "Date-5" se traduit par les fonctions DateAdd (déjà dit) : regarde dans l'aide de cette fonction.
Attention : Ces syntaxes supposent que tu as déclaré ton champ [Date_prochaine] dans la DB ayant le type "Date générale"
Si tu l'as déclaré en "texte" : impossible de faire des tests cohérents
Tu risques de rencontrer un nouveau problème avec les dates.
Il arrive que les dates soient reconnues à l'américaine, c'est à dire MM/JJ/AAAA
Cherche parmi les centaines de questions à ce propos sur le forum.
La suite (...) :
Do While Not rs.EOF
verif(i) = rs.Fields(0)
rs.MoveNext
i = i + 1
Loop
If i = 1 Then
se traduit comme ceci :
If rs.RecordCount = 1 Then
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Stev16
Messages postés7Date d'inscriptionsamedi 30 juillet 2005StatutMembreDernière intervention11 janvier 2008 8 mai 2007 à 18:18
Merci grandement !
Je comprends enfi ce qu'il fallait faire. L'exemple est claire!! Mais entre temps, j'ai pu resoudre le pb avec la fonction dateDiff que tu m'a passé hier!!! lol
D'accord avec cette pensée Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)