Code Vb 6

Stev16 Messages postés 7 Date d'inscription samedi 30 juillet 2005 Statut Membre Dernière intervention 11 janvier 2008 - 8 mai 2007 à 11:34
Stev16 Messages postés 7 Date d'inscription samedi 30 juillet 2005 Statut Membre Dernière intervention 11 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

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Stev16 Messages postés 7 Date d'inscription samedi 30 juillet 2005 Statut Membre Dernière intervention 11 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)
0
Rejoignez-nous