Demande de correction de code

cs_abou ilyas Messages postés 33 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 17 avril 2014 - 1 mai 2010 à 21:28
cs_abou ilyas Messages postés 33 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 17 avril 2014 - 4 mai 2010 à 02:09
salut
j'ai un MSHFLEXGRID lié à une table qui contient un champ [date_ech], je veux que MSHFLEXGRID affiche juste les valeurs du champ date_ech dont la différence de jours avec la date système est 10.

j'ai fait un code comme suit mais ça marche qu'avec un Msgbox qui affiche une seule date. alors que je veux avoir toutes les dates qui accomplissant la condition.
Mon code:
Private Sub Command1_Click()
MaConnection
Dim y As Date
sql = "select * FROM regle "
If rs.State = adStateOpen Then rs.Close
rs.Open sql, DB, adOpenKeyset, adLockPessimistic
y = rs!date_ech
If DateDiff("d", Date, y) = 10 Then
sqlz = "select * from regle where date_ech=y"
If rr.State = adStateOpen Then rr.Close
rr.Open sqlz, DB, adOpenKeyset, adLockPessimistic
Set ms2.DataSource = rr
End If
End sub

Merci !!

5 réponses

cs_abou ilyas Messages postés 33 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 17 avril 2014
2 mai 2010 à 02:11
salut
j'ai un MSHFLEXGRID lié à une table qui contient un champ [date_ech], je veux que MSHFLEXGRID affiche juste les valeurs du champ date_ech dont la différence de jours avec la date système est 10.

j'ai fait un code comme suit mais ça ne marche qu'avec un Msgbox qui affiche une seule date. alors que je veux avoir sur MSHFLEXGRID toutes les dates accomplissant la condition dans toute la base de données.
Mon code:
Private Sub Command1_Click()
MaConnection
Dim y As Date
Dim ms2 as Mshflexgrid
sql = "select * FROM regle "
If rs.State = adStateOpen Then rs.Close
rs.Open sql, DB, adOpenKeyset, adLockPessimistic
y = rs!date_ech
If DateDiff("d", Date, y) = 10 Then
sqlz = "select * from regle where date_ech=y"
If rr.State = adStateOpen Then rr.Close
rr.Open sqlz, DB, adOpenKeyset, adLockPessimistic
Set ms2.DataSource = rr
End If
End sub


Merci !!
0
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
2 mai 2010 à 02:32
Salut
"j'ai un MSHFLEXGRID lié à une table"
Liée comment ?
Par DataSource / DataMember ?

Pourquoi avoir dimensionné 'ms2' si tu as ce composant installé sur ta forme ?
Comment penses-tu que VB6 peut deviner que 'ms2' représente la HFlexGrid de ta forme ?
Il n'y a que nous qui faisons de la voyance, pas VB6.

Dans ton programme, tu charges toute ta table dans un truc nommé 'rs' que je devine être un RecordSet (encore de la voyance).
Pourquoi faire ?

Si tu dois charger les fiches de ta table ayant exactement 10 jours d'écart avec la date actuelle, pourquoi ne pas le dire dès la première requète ?
Il te faut calculer la Date - 10 jours avant de faire ta requète :
y = DateDiff(...)
Comme tu l'auras découvert en lisant les diverses sources du site qui parlent de base de données ou encore les centaines de questions du forum qui parlent de format de date, tu sais donc qu'il faut que le format des dates fournies dans une requète soit au format US, c'est à dire MM/DD/YYYY
--> Voir commande Format
y = Format(y, "mm/dd/yyyy")

Pour ensuite te servir de y dans ta requète.
Sachant que y est une variable VB, il faut la faire ressortir de ta chaine de requète :
sqlz "select * from regle where date_ech " & CStr(y)
ou surement
sqlz "select * from regle where date_ech #" & CStr(y) & "#"
si ton champ date_ech est déclaré en type Date dans ta table.

Je pense que quelques lectures de sources à propos des requètes seraient la meilleure solution pour attaquer ce genre de sujet.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_abou ilyas Messages postés 33 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 17 avril 2014
3 mai 2010 à 17:44
Salut Jack !
Merci de m'avoir répondu,

Ce que je tente faire:
- Dans la table "regle" il y a un champ[date_ech] qui contient bien évidemment des dates.
- je veux afficher dans Mshflexgrid tous les enregistrements dont les valeurs du champ [date_ech] ont 10 jours de différence avec la date système.
Merci..
0
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
4 mai 2010 à 00:47
Ok, donc je t'ai correctement répondu.
Fais fonctionner la connexion à ta DB + une requète qui tienne la route, le dépouillement des résultats vers la FlexGrid n'étant que de la cosmétique.
Relis ce que je t'ai écrit : Il y a des questions sur des points noirs que tu peux résoudre avec un peu de bon sens.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_abou ilyas Messages postés 33 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 17 avril 2014
4 mai 2010 à 02:09
Merci Jack!!
c'est fait grâce à vous
Dim y As Date
y = Date + 10
MaConnection
sqlz = "select * from regle where date_ech=#" & CStr(Format(y, "MM/DD/YYYY")) & "#"
If rr.State = adStateOpen Then rr.Close
rr.Open sqlz, DB, adOpenKeyset, adLockPessimistic
Set ms2.DataSource = rr

Merci !!
0
Rejoignez-nous