{Access} ouvrir un recordset

Résolu/Fermé
sliverpopop Messages postés 924 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 6 janvier 2010 - 9 déc. 2009 à 10:22
sliverpopop Messages postés 924 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 6 janvier 2010 - 9 déc. 2009 à 11:44
Bonjour,

J'ai un petit problème concernant l'ouverture d'un recordset et l'affichage d'un de ses champs dans un formulaire.
Voici mon code :

Private Sub Commande14_Click()

Dim rs As recordset
Dim sqlstring As String
Dim str_test_type As String
Dim str_ID_Test As String

str_ID_Test = TestID_form.Value

sqlstring = "SELECT [Spec_test].Test_id, [Spec_test].Test_type AS T_type, [Spec_test].Instruction, [Spec_test].Waited_value, " & _
"[Spec_test].File_name, [Spec_test].Record_field, [Spec_test].Description " & _
"FROM [Spec_test] WHERE [Spec_test].Test_id = """ & str_ID_Test & """ ;"

Set rs = CurrentDb.OpenRecordset(sqlstring)
str_test_type = rs!T_type
MsgBox (str_test_type)
'[Forms]![Formulaire1]![Test_type] = str_test_type

Test_ID_form correspond correspond à une liste déroulante dans mon formulaire1.
J'ai déjà eu besoin d'un recordset, je m'en suis déjà servi, aucun problème, et cette fois, daube des daubes, il me dit ' type de données incompatibles dans l'expression du critère ' et me surligne en jaune cette ligne :
Set rs = CurrentDb.OpenRecordset(sqlstring)

Normalement il n'y a pas de problème de synthaxe dans l'expression de sqlstring , il y a juste une petite différence par rapport à mon code qui était bon, c'est dans :
Dim rs As recordset,
dans mon autre code, recordset a une majuscule donc c'est écrit Recordset, mais là impossible de l'écrire avec une majuscule,il me la change tout seul en minuscule.

Siouplait les CCMistes, aidez-moi, je ne comprend pas ce qui se passe (j'y suis depuis vendredi aprèm', demain, si j'y arrives toujours pas, je me fous la tête dans le four....).

Merci d'avance

SliverPopop


A voir également:

4 réponses

OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
9 déc. 2009 à 10:35
Si je puis me permettre:

1) n'utilisez pas Currentdb mais putôt :
Dim myDb as DAO.Database
Set myDb = CurrentDb
'votre code ...

Set myDb = Nothing

2) utilisez strsqlstring plutôt que sqlstring. Il FAUT utiliser les conventions synthaxiques, elles sont et seront utiles aux développeurs qui passeront derrière vous.

3) dans la constructio suivante :
sqlstring = "SELECT [Spec_test].Test_id, [Spec_test].Test_type AS T_type, [Spec_test].Instruction, [Spec_test].Waited_value, " & _
"[Spec_test].File_name, [Spec_test].Record_field, [Spec_test].Description " & _
"FROM [Spec_test] WHERE [Spec_test].Test_id = """ & str_ID_Test & """ ;"

Il vaut mieux pour faciler la lecture écrire ceci, car vous n'utilisez qu'une seule table :

sqlstring = "SELECT Test_id, Test_type AS T_type, Instruction, Waited_value, " & _
"File_name, Record_field, Description " & _
"FROM [Spec_test] WHERE Test_id = " & str_ID_Test & " ;"

4) Vérifiez dans le débugueur de VBA votre strSqlString, ainsi vous pourriez voir que vous cherche par exemple le test_id "53" plutôt que le 53 ;-)
1
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
9 déc. 2009 à 10:30
ben oui forcément, tu dois enlever les quotes dans ton stringsql :
WHERE [Spec_test].Test_id = """ & str_ID_Test & """ ;" doit être :

WHERE [Spec_test].Test_id = " & str_ID_Test & " ;"
0
sliverpopop Messages postés 924 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 6 janvier 2010 77
9 déc. 2009 à 11:12
En effet cela fonctionne, et je ne comprends pas pourquoi puisque dans mon code précédent (et j'ai revérifié), j'ai bien écrit """ & str_ID_Test & """.
Mais bon, l'important c'est que cela fonctionne.
J'ai une autre petite question, quand la valeur de str_test_type est la zone de texte de mon formulaire, est-il possible de faire en sorte que, lorsque je modifie mon champ de texte, cela modifie également ma table ?
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
9 déc. 2009 à 11:42
Cela fonctionne peut-être parce que ce champ clé est en alphanumérique ? à vérifier car pas conseiller
Pour répondre à la question, la réponse est oui, vous prenez l'Event OnChange du contrôle mais je déconseillerai cela fortement. J'ai développé une bonne centaine de bdd access et j'ai essayé ce genre de chose ... trop lourd vraiment. Essayez de voir comment contourner la chose.
0
sliverpopop Messages postés 924 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 6 janvier 2010 77
9 déc. 2009 à 11:44
Bon, merci, je vais voir si je peux faire autrement, mais en tout cas, merci pour la résolution de mon petit problème.
je mets ce post en résolu.

A+
0