Pb Set rs = DB.OpenRecordset(Sql, dbOpenDynaset)

Résolu
Messages postés
45
Date d'inscription
jeudi 9 septembre 2004
Statut
Membre
Dernière intervention
8 août 2011
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Voila mon code, et j'ai une erreur d'execution ICI et je ne vois pas ce que c'est.
' -----
' Form1
' -----
'
Option Explicit
'
Public Typ As Long
'
'
Private Sub Form_Load()
Cmd(0).Caption = "Jeux"
Cmd(1).Caption = "DivX"
Cmd(2).Caption = "Logiciels"
End Sub
'
' groupe de contrôles : 3 boutons "Cmd"
Private Sub Cmd_Click(Index As Integer) 'index = 0 ou 1 ou 2
Typ = Index + 1
MsgBox CStr(Typ), 32


'Menu.Hide
'Liste.Show
Liste.Show
End Sub

' -----
' Form2
' -----
'
Option Explicit
'
'
Public Sub Form_Load()


Dim rs As Recordset
Dim Sql As String


' ouvre la base
On Error GoTo BaseNonTrouvee
Set DB = OpenDatabase(sPathBase, True, False, ";pwd=" & sPassBase)
On Error GoTo 0 '*FGE*


' execute la requête
Sql = "SELECT Titre " & _
"FROM CD_ROM " & _
"WHERE [Type] = '" & Menu.Typ & "'"


Set rs = DB.OpenRecordset(Sql, dbOpenDynaset)


' récupère le 1er résultat. à toi de comprendre comment gérer ta boucle
Dim sResult As String
sResult = rs("Titre")
MsgBox sResult, 32


' détruit l'instance rs
Set rs = Nothing


' ferme et détruit l'instance base
DB.Close
Set DB = Nothing


Exit Sub


BaseNonTrouvee:
Err.Clear
MsgBox "Base Introuvable", 32
End Sub


Private Sub Image1_Click()
Liste.Hide
Menu.Show
End Sub

et mon module

' --------
' Mod_Vars
' --------
'
' dans ce module : tes déclarations publiques.
' çà sera bien plus pratique pour te relire
'
Option Explicit
'
' * activer microsoft DAO3.6 dans Projet-references *
'
Public DB As Database
'
Public Const sPathBase As String = "CD.mdb" 'chemin base
Public Const sPassBase As String = "" 'password base

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
- Une variable ne peut pas être déclarée en Public dans une Form
- le caractère _ (comme le %) sont des symboles réservés à SQL, d'où l'utilité des [ et ]
- Si [Type] est numérique, il ne faut pas mettre de ' pour encadrer la donnée.
Tu n'as pas dû beaucoup chercher sur ce site, on répète ces phrases à longueur de journée !

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)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
salut.

vi, méprise bien identifiée^^.

donc ok pour les crochets à [CD_ROM]

++ PCPT [AFCK]
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
topic en doublon ;)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut biddal
Jamais tu lis les réponses à tes posts ? http://vbfrance.com/forum.v2.aspx?ID=614613
Renfiled t'a dit pourquoi.

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)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
Jack -> slt. pour la variable, autant la déclarer dans le module,
mais je ne vois pas en quoi c'est impossible sur une Form (mis à part
restriction VBA, donc inconnue pour ma part)

et pour le "_", je ne vois pas le problème puisque sql est une string.



je prend un peu la défense de biddal, voir son post d'origine...

++
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Parce que je te dis que _ et % sont des caractères interprétés par SQL comme des jokers.
_ peut remplacer un seul caractère, équivalent au ? sous DOS
% remplace un groupe de caractères, comme * sous DOS
C'est comme ça.
Donc, si tu utilises _ ou % dans ta chaine, tu risque d'avoir des surprises !


En relisant ton code, je comprends la méprise.


Je ne te parle pas des _ en fin de phrase de la syntaxe VB, mais du _ qui se trouve dans le nom de ta table CD_ROM --> [CD_ROM]

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)