Bonjour à tous,
j'ai un petit soucis sur un recordset dont la déclaration est faite dans le général de la feuille avec :
Dim RSAptSousT As Recordset
Je dois avec ce recordset remplir une listbox avec des données d'une base de données.
Voici le code permettant normalement l'affichage dans la BD :
requete sql qui marche sur Access (même un msgbox de la requete me renvoie tout correctement)
chsql = "SELECT e.[Code étape], Désignation FROM Etapes AS e, Aptitudes AS a Where e.[Code étape] = a.[Code étape] And [Num sous-traitant] = " + ZTNumSousT.Text
'execution de la requête
Set RSAptSousT = CnxChantier.Execute(chsql) => c'est la ou ça bug en me disant type de donnée incompatible et je comprends pas pourquoi... Quelqu'un peut m'aider ?
'test pour savoir si il y a des occurrences dans RsAptSousT
If RSAptSousT.EOF = False Then ' il n'est pas vide
Do While RSAptSousT.EOF = False
'on ajoute les aptitudes du sous-traitant à la liste voulu
LstAptSousT.AddItem RSAptSousT("Désignation")
RSAptSousT.MoveNext
Loop
End If
Merci à tous
Bonjour,
Code étape, je ne le sens pas bien. Un terme avec un espace et un accent aigu....
La première chose que je ferai est de renommer le champ dans la table en Code_etape
Si ça ne règle pas le problème, il faut voir où est l'incompatibilité de type. pour ça il faudrait que tu donnes ici le structure de ta table et un peu plus de ton code, pour qu'on essaie de regarder
Bonjour,
merci de cette réponse mais changer les champs dans la BD n'a rien changer, j'ai toujours la même erreur au même endroit !
Voici les deux tables en question sur le schéma des relations :
Voici le formulaire VB :
Et voici le code que je veux exécuter au chargement de la feuille :
Private Sub Form_Load()
OngletSousT.Tab = 0 'on est sur la consultation des sous-traitants
'on crée une requête
LstAptSousT.Clear
chsql = "SELECT e.[Code étape], Désignation FROM Etapes AS e, Aptitudes AS a Where e.[Code étape] = a.[Code étape] And [Num sous-traitant] = " + ZTNumSousT.Text
'execution de la requête
Set RSAptSousT = CnxChantier.Execute(chsql) => Toujours ici que ça plante avec la même erreur
'test pour savoir si il y a des occurrences dans RsAptSousT
If RSAptSousT.EOF = False Then ' il n'est pas vide
Do While RSAptSousT.EOF = False
'on ajoute les aptitudes du sous-traitant à la liste voulu
LstAptSousT.AddItem RSAptSousT("Désignation")
RSAptSousT.MoveNext
Loop
End If
End Sub
Merci
Salut,
Tu ne précise pas, mais je suppose que tu travailles en DAO
Si c'est bien le cas et que CnxChantier représente ton database, alors il faut faire
Set RSAptSousT = CnxChantier.OpenRecordset(chsql, dbo_xxx) 'dbo_xxx à préciser
Merci à toi RichardB,
ce n'est pas ça mais ça ma permis de régler mon problème :D
il fallait juste que j'initialise correctement le recordset avec
Dim RSAptSousT As New ADODB.Recordset
Je vous remercie beaucoup