DAO : Aide sur la recherche

Signaler
Messages postés
12
Date d'inscription
samedi 30 juin 2001
Statut
Membre
Dernière intervention
17 janvier 2006
-
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
-
Bonjour !
Voici un code trouvé ici sur vbfrance.
Mon but serait, a partir d'une base de donnée, récupéré toute les champs qui sont associé.

Exemple :


040554 26/03/06 08:10


052247 26/03/06 14:00


054445 21/01/06 12:05


055788 25/03/06 04:00


098871 26/01/06 12:14

J'aimerai que le programme récupere tout les lignes associé au 26/03/06 et puisse me les placer dans un MSFlexGrid.

Sachez que j'utilise l'ADO.
Ce code source fonctionne très bien, mais dès que je change la requete SQL, voici ce que j'obtiens :


Erreur de synthaxe dans la clause FROM

Dim maBase As Database
Dim monRecordset As Recordset


'On a une base nommée 'BaseTest' qui contient une table 'users'.
'Cette table contient 2 champs: 'nick' et 'host'.

Set maBase = OpenDatabase("c:\test.mdb")
Set monRecordset = maBase.OpenRecordset( _
"SELECT * FROM table WHERE date>=#26/03/06#", dbOpenSnapshot)


With monRecordset
.MoveLast ' Remplit l'objet Recordset.
.MoveFirst


Do While Not .EOF 'puis parcours les enregistrements
List1.AddItem !nick
.MoveNext
Loop


.Close 'fermeture du recordset
End With


maBase.Close 'fermeture de la base de données


Donc, ma question, en gros :


Comment faire pour récuperer mes ligne associée au date et les placer dans un MSFlexGrid ?


Merci beaucoup à tout ceux qui prendront le temps de répondre.

2 réponses

Messages postés
12
Date d'inscription
samedi 30 juin 2001
Statut
Membre
Dernière intervention
17 janvier 2006

J'ai oublié de précisier :

Dans ma base de donnée, tout est en champs texte.

Merci pour votre aide.
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
7
Ben tu donnes toi même la réponse si je ne m'abuse.
Tous tes champs sont au format texte.

Ta requête SQL cherche un format Date/Heure (c'est pour cela que ta requête s'écrit entre # :
SELECT * FROM table WHERE date>=#26/03/06#

Pour que cela fonctionne, il faut que tes champs dans la base de données soient au format Date/heure.
Ensuite, à vérifier, mais tu risques d'avoir un problème de format, il me semble qu'en SQL, la date est au format Anglo-saxon ( mm/jj/aa ). A toi d'adapter la requête.

Si tu transformes ta requête pour une recherche au format texte ( double cotte au lieu du # pour encadrer la valeur), tu obtiendras un résultat incorrect : seules les dates qui commenceront par 26 et au plus seront remontée, ce sera un classement alphabétique en fait.

Molenn