TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 26 nov. 2006 à 13:12
Les expressions de type chaine de caractère doivent être passées encadrées par des guilllemets ou des simples quotes : (ici en rose, les simples quotes ou appostrophes manquantes)
.recourdsource "SELECT * FROM Habilitation WHERE PrestID '" & ctrlData1.Recordset!PrestID & "' ORDER BY HabID"
Oubien :.recourdsource "SELECT * FROM Habilitation WHERE PrestID " & chr(34) & ctrlData1.Recordset!PrestID & chr(34) & " ORDER BY HabID"
TMONOD
Messages postés256Date d'inscriptionmardi 25 novembre 2003StatutMembreDernière intervention 6 novembre 20091 27 nov. 2006 à 14:08
1/ RecordCount n'est renseigné que si tu as déplacé le curseur à la fin des enregistrements :
dim nombredenregistrements as integer,rst as recordset
'Sous Access
set rst=currentdatabase.openrecordset("select * from matable")
'Sous VB : .RecordSource=...
if not rst.eof then
rst.movelast
nombredenregistrements=rst.RecordCount
else
nombredenregistrements=0
end if
rst.close
2/La clause WHERE est suivie d'une expression qui doit renvoyer une valeur booléenne (TRUE ou FALSE)
...WHERE PrestID sera toujours vraie (si PrestID est différente de 0) et ne veux rien dire
WHERE PrestID="458977" renvoie vrai si l'égalité est vérifiée.
lap2
Messages postés36Date d'inscriptionmardi 3 août 2004StatutMembreDernière intervention 9 novembre 2007 27 nov. 2006 à 08:41
Merci à toi, je n'ai déjà plus cette erreur de syntaxe. Mais maintenant, le ctrlData2.RecordSet.RecordCount reste désespérément vide ! Malgré que la base contient des éléments qui répondent aux critères. Manque-t-il aussi des quotes pour encadrer l'expression :
With ctrlData2
.recourdsource = "SELECT * FROM Habilitation WHERE PrestID ?
Peux-tu encore m'aider ?
Le message d'erreur est : "pas d'enregistrement" et le plantage se passe au niveau de .Move Last du ctrlData2.