Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

parametre de OpenRecordset ???

2 réponses
Avatar
Orel
bonjour a tous !

je travail sous environement XL97 - ACCESS97 .
je manipule ma base access BDD.mbd a partir d'excel via VBA

je me connect comme ceci :

Set myDB = DBEngine.OpenDatabase("c:...BDD.mbd")

ca c ok !

ensuite qd je veux faire une requete sur ma base j'envoie mon instruction
SQL a une autre fonction qui me retourne un recordset :

Function DoRequete(ByVal myReq As String)
Dim myQuery As QueryDef
Dim rs As Recordset

Set myQuery = ModData.myDB.CreateQueryDef("", myReq)
Set rs = myQuery.OpenRecordset()

Set DoRequete = rs
End Function

le probleme est que je ne sias pas quoi mettre en parametre de OpenRecordset
. les parametre sont facultatifs mais qd je n'en met pas ca me jette ....

J'avais essayer "dbOpenDynaset" qui marche pour bon nombre de mes requetes
mais plante pour celle ci :
"SELECT * FROM [port0503] WHERE [IDPRODUIT] = 461"
et me dis : erreur 3061 trop peu de parametres . 1 attendu


merci a vous
orel

2 réponses

Avatar
Xavier HUE
Bonjour,

Essaie plutôt (plus directe):

Function DoRequete(ByVal myReq As String) As Recordset
Dim rs As Recordset

Set DoRequete = myDB.OpenRecordset(myReq, dbOpenDynaset)
End Function

Ceci dit, pourquoi une fonction pour juste intialiser un
recordset.

Tu peux avantageusement remplacer les lignes qui appellent
DoRequete, ressemblant à quelque chose comme:
Set TonRecordSet = DoRequete("SELECT * FROM
[port0503] WHERE [IDPRODUIT] = 461")

par
Set TonRecordSet = myDB.OpenRecordset("SELECT * FROM
[port0503] WHERE [IDPRODUIT] = 461", dbOpenDynaset)

Non?

Est-ce que ca plante toujours comme ça?
Si oui, vérifier:
- Nom de la table port0503. Existe-t-elle dans la base?
Bein orthographiée?
- Nom de la zone IDPRODUIT. Existe? Orthographe? Type de
valeur (doit être numérique au vue de ton SQL)

Espérant t'avoir aidé.
Cordialement.

PS: enlever blurg dans l'adresse mail.
Avatar
Orel
salut !
effectivement plus simple ta methode ...

et le "pourquoi j'ai fais ca" : et bien tout simplement car je debute en
prog VBA access et y a des ficelles que je ne connais pas encore nickel ...
et je code selon les exemples que je vois ....donc merci du coup de main.

orel

"Xavier HUE" a écrit dans le message news:
0cd101c346c5$909f81a0$
Bonjour,

Essaie plutôt (plus directe):

Function DoRequete(ByVal myReq As String) As Recordset
Dim rs As Recordset

Set DoRequete = myDB.OpenRecordset(myReq, dbOpenDynaset)
End Function

Ceci dit, pourquoi une fonction pour juste intialiser un
recordset.

Tu peux avantageusement remplacer les lignes qui appellent
DoRequete, ressemblant à quelque chose comme:
Set TonRecordSet = DoRequete("SELECT * FROM
[port0503] WHERE [IDPRODUIT] = 461")

par
Set TonRecordSet = myDB.OpenRecordset("SELECT * FROM
[port0503] WHERE [IDPRODUIT] = 461", dbOpenDynaset)

Non?

Est-ce que ca plante toujours comme ça?
Si oui, vérifier:
- Nom de la table port0503. Existe-t-elle dans la base?
Bein orthographiée?
- Nom de la zone IDPRODUIT. Existe? Orthographe? Type de
valeur (doit être numérique au vue de ton SQL)

Espérant t'avoir aidé.
Cordialement.

PS: enlever blurg dans l'adresse mail.