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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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)
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.
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.
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" <xavier.hueblurg@systeme-u.fr> a écrit dans le message news:
0cd101c346c5$909f81a0$a101280a@phx.gbl...
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)
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)