Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2012, 15h53   #1
Nouveau Membre du Club
 
Homme Thib Oxur
apprenti ingénieur en informatique et réseaux
Inscription : octobre 2010
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Thib Oxur
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : apprenti ingénieur en informatique et réseaux
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 49
Points : 30
Points : 30
Par défaut Trop peu de paramètres. erreur 3061

Bonjour, je m'attaque au VBA sous access.
Je souhaite executer une requete "ajout" que j'ai crée sous access.
Je veux lancer cette requête plusieurs fois (d'où la boucle, je veux tester plusieurs valeurs dans ma requête).

Cependant, j'obtiens l'erreur suivante:
Citation:
Erreur d'execution '3061
Trop peu de paramètres. 6 attendus
J'ai cherché sur internet, mais j'arrive pas à savoir exactement d'où ça vient...
Voici mon VBA:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function ProximiteCodif()
Dim LocationBegin As Variant 'déclaration de la variable de début
Dim LocationEnd As Variant 'déclaration de la variable de fin
Dim i As Variant
Dim qdf As DAO.QueryDef
 
Set qdf = CurrentDb.QueryDefs("ProxLocDansPerimetreVBA")
 
LocationBegin = Forms!ProximiteReference.LocationBegin
LocationEnd = Forms!ProximiteReference.LocationEnd
 
For i = LocationBegin To LocationEnd
Forms!ProximiteReference.LocationBegin = i
qdf.Execute
Next i
 
End Function
Merci

EDIT: Arf, je crois que ça vient du fait que j'appelle des variables originaire d'un formulaire dans ma requête....
tibjedi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h53   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 090
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 090
Points : 11 622
Points : 11 622
Bonjour,

Problème connu.

Tu dois inscrire tes liens vers les formulaire en Parameters.

Il y a une option dans le ruban qui s'appelle Paramètres lorsque tu es en mode création de la requête.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 18h05   #3
Nouveau Membre du Club
 
Homme Thib Oxur
apprenti ingénieur en informatique et réseaux
Inscription : octobre 2010
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Thib Oxur
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : apprenti ingénieur en informatique et réseaux
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 49
Points : 30
Points : 30
Yes merci!
j'ai rajouté ça :
Code :
1
2
qdf.Parameters(0).Value = [Forms]![ProximiteReference]![LocationPivot]
qdf.Parameters(1).Value = [Forms]![ProximiteReference]![DistanceProximite]
mais j'ai une erreur de conversion de données :/
mes données formulaires sont tous deux des entiers.
tibjedi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 18h25   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 876
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 876
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
hello,

peut-on voir le code SQL de la requete appelée stp ?
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 19h01   #5
Nouveau Membre du Club
 
Homme Thib Oxur
apprenti ingénieur en informatique et réseaux
Inscription : octobre 2010
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Thib Oxur
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : apprenti ingénieur en informatique et réseaux
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 49
Points : 30
Points : 30
oui biensur :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
INSERT INTO codificationProximite ( LocationPivot, LocationCible, CoefficentSimilitude )
SELECT ProxLocationPivotVBA.LOCATION, ProxGeoEmplacement.LOCATION, 
IIf([P] Like Mid([ProxLocationPivotVBA]![ITM_NUM],8,1),3,0)
+IIf([S] Like Mid([ProxLocationPivotVBA]![ITM_NUM],8,1),2,0)
+IIf([T] Like Mid([ProxLocationPivotVBA]![ITM_NUM],8,1),1,0)
+IIf([S] Like Mid([ProxLocationPivotVBA]![ITM_NUM],9,1),3,0)
+IIf([P] Like Mid([ProxLocationPivotVBA]![ITM_NUM],9,1),2,0)
+IIf([T] Like Mid([ProxLocationPivotVBA]![ITM_NUM],9,1),2,0)
+IIf([T] Like Mid([ProxLocationPivotVBA]![ITM_NUM],10,1),3,0)
+IIf([S] Like Mid([ProxLocationPivotVBA]![ITM_NUM],10,1),2,0)
+IIf([P] Like Mid([ProxLocationPivotVBA]![ITM_NUM],10,1),1,0) AS coefCodif
FROM ProxLocationPivotVBA, (ProxGeoEmplacement INNER JOIN CATALYST_LOCATION ON ProxGeoEmplacement.LOCATION = CATALYST_LOCATION.LOCATION) 
INNER JOIN CATALYST_LOCCLASS ON ProxGeoEmplacement.LOC_CLASS = CATALYST_LOCCLASS.LOC_CLASS
WHERE (((ProxGeoEmplacement.LOCATION) Like Mid([ProxLocationPivotVBA]![location],1,4) & "*") 
AND ((ProxGeoEmplacement.L) Between ([ProxLocationPivotVBA]![L]-([Formulaires]![ProximiteReference]![DistanceProximite]*([CATALYST_LOCATION]![WIDTH]/142))) 
And ([ProxLocationPivotVBA]![L]+([Formulaires]![ProximiteReference]![DistanceProximite]*([CATALYST_LOCATION]![WIDTH]/142)))) 
AND ((ProxGeoEmplacement.H) Between ([ProxLocationPivotVBA]![H]-([Formulaires]![ProximiteReference]![DistanceProximite]*([CATALYST_LOCATION]![HEIGHT]/132))) 
And ([ProxLocationPivotVBA]![H]+([Formulaires]![ProximiteReference]![DistanceProximite]*([CATALYST_LOCATION]![HEIGHT]/132)))) 
AND ((IIf(Mid([Formulaires]![ProximiteReference]![LocationPivot],4,2) Mod 2=1,[ProxGeoEmplacement]![MeubleImpaiir],[ProxGeoEmplacement]![MeublePair])) Not Like ""));
j'essaye de le mettre en forme de façon le plus lisible...

Merci
tibjedi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 20h07   #6
Nouveau Membre du Club
 
Homme Thib Oxur
apprenti ingénieur en informatique et réseaux
Inscription : octobre 2010
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Thib Oxur
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : apprenti ingénieur en informatique et réseaux
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 49
Points : 30
Points : 30
bon je viens de voir qu'il faut aussi mettre les paramètre dans la requete sous access. Donc plus d'erreur de conversion. Parcontre, je comprends pas comment affecté les paramètres vis-a-vis du chiffre (0,1,....)
Et il me met qu'il attend 8 parametres, or je n'ai pas 8 paramètres qui viennent d'un formulaire. Est-ce que le fait que j'appelle via cette requete une autre requete dnas lequel il y a des champs parametres?

Merci de votre aide et éclairages ^^
tibjedi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 08h31   #7
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 876
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 876
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
Hello,

comme dans la plupart des collections d'objets, outre le numéro d'identifiant, tu peux simplement passer par le nom du paramètre

exemple:
Code :
qdf.Parameters("LocationPivot").Value = [Forms]![ProximiteReference]![LocationPivot]
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 08h36   #8
Nouveau Membre du Club
 
Homme Thib Oxur
apprenti ingénieur en informatique et réseaux
Inscription : octobre 2010
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Thib Oxur
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : apprenti ingénieur en informatique et réseaux
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 49
Points : 30
Points : 30
Merci, j'ai repris ce que tu viens de me dire, mais il me sort l'erreur suivante :
Citation:
Element non trouvé dans cette collection
il faut que je mette :
Code :
qdf.Parameters("[Formulaires]![ProximiteReference]![DistanceProximite]").Value = [Forms]![ProximiteReference]![DistanceProximite]
Par contre, je dois effectuer cela seulement pour les requêtes formulaires non? donc vu mon code SQL, seulement pour "distance proximité" et "locationPivot"?


EDIT: voici mon code VBA :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function ProximiteCodif()
Dim LocationBegin As Variant   'déclaration de la variable de début
Dim LocationEnd As Variant 'déclaration de la variable de fin
Dim i As Variant
Dim qdf As DAO.QueryDef
 
Set qdf = CurrentDb.QueryDefs("ProxLocDansPerimetreVBA")
LocationBegin = Forms!ProximiteReference.LocationBegin
LocationEnd = Forms!ProximiteReference.LocationEnd
 
' fournit valeur du 1er paramètre
qdf.Parameters("[Formulaires]![ProximiteReference]![DistanceProximite]").Value = [Forms]![ProximiteReference]![DistanceProximite]
qdf.Parameters("[Formulaires]![ProximiteReference]![LocationPivot]").Value = [Forms]![ProximiteReference]![LocationPivot]
 
qdf.Execute
 
End Function
il me redit qu'il attend 7 parametres :'(
tibjedi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 09h00   #9
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 090
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 090
Points : 11 622
Points : 11 622
Bonjour,
Tu as traité aussi les paramètres de la requête ProxLocationPivotVBA et les éventuellement les autres utilisées ?

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 09h01   #10
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 876
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 876
Points : 10 740
Points : 10 740
Envoyer un message via MSN à jpcheck
Adapte ce qui est indiqué dans la
http://access.developpez.com/faq/?page=SQL#ReqParamVar
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 09h18   #11
Nouveau Membre du Club
 
Homme Thib Oxur
apprenti ingénieur en informatique et réseaux
Inscription : octobre 2010
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Thib Oxur
Localisation : France, Drôme (Rhône Alpes)

Informations professionnelles :
Activité : apprenti ingénieur en informatique et réseaux
Secteur : Industrie

Informations forums :
Inscription : octobre 2010
Messages : 49
Points : 30
Points : 30
ok merci vous deux.

Oui justement dans les requêtes appelé par ma requête, j'ai également des paramètres venant d'un formulaire, je dois les rajouter dans le même code?
voici mes autres requetes :
ProxLocationPivotVBA:
Code :
1
2
3
4
PARAMETERS [Formulaires]![ProximiteReference]![LocationBegin] Short;
SELECT ProxGeoEmplacement.LOCATION, ProxGeoEmplacement.L, ProxGeoEmplacement.H, ProxGeoEmplacement.ITM_NUM
FROM ProxGeoEmplacement
WHERE (((ProxGeoEmplacement.LOCATION) Like "P" & [Formulaires]![ProximiteReference]![LocationEnd]));
et ProxGeoEmplacement:
Code :
1
2
3
4
SELECT CATALYST_LOCATION.LOCATION, CATALYST_LOCATION.LOC_CLASS, CATALYST_LOCATION.HEIGHT, CATALYST_LOCATION.WIDTH, ((0.5*[CATALYST_LOCATION]![WIDTH])+(Int(Mid([CATALYST_LOCATION]![LOCATION],9,2))-1)*[CATALYST_LOCATION]![WIDTH])+IIf(Int(Mid([CATALYST_LOCATION]![LOCATION],5,2)) Mod 2=1,285*(Int(Mid([CATALYST_LOCATION]![LOCATION],5,2))/2-0.5),285*(Int(Mid([CATALYST_LOCATION]![LOCATION],5,2))/2-1))-IIf([CATALYST_LOCATION]![LOCATION] Not Like "P302*" And [CATALYST_LOCATION]![LOCATION] Not Like "P304*" And [CATALYST_LOCATION]![LOCATION] Not Like "P306*",570,0)+IIf((Mid([CATALYST_LOCATION]![LOCATION],5,2) Like "01" Or Mid([CATALYST_LOCATION]![LOCATION],5,2) Like "05" Or Mid([CATALYST_LOCATION]![LOCATION],5,2) Like "09" Or Mid([CATALYST_LOCATION]![LOCATION],5,2) Like "13" Or Mid([CATALYST_LOCATION]![LOCATION],5,2) Like "17") And ([CATALYST_LOCATION]![LOCATION] Like "P302*" Or [CATALYST_LOCATION]![LOCATION] Like "P304*"),125,IIf([CATALYST_LOCATION]![LOCATION] Like "P30421*" Or "P30221*",145,0)) AS L, ((0.5*[CATALYST_LOCATION]![HEIGHT])+(Int(Mid([CATALYST_LOCATION]![LOCATION],7,2))-1)*[CATALYST_LOCATION]![HEIGHT]) AS H, IIf(Mid$([CATALYST_LOCATION]![LOCATION],5,2) Mod 2=0,Mid$([CATALYST_LOCATION]![LOCATION],5,2),"") AS MeublePair, IIf(Mid$([CATALYST_LOCATION]![LOCATION],5,2) Mod 2=1,Mid$([CATALYST_LOCATION]![LOCATION],5,2),"") AS MeubleImpaiir, CATALYST_ITEMLOC.ITM_NUM
FROM CATALYST_ITEMLOC INNER JOIN (CATALYST_LOCATION INNER JOIN CATALYST_LOCCLASS ON CATALYST_LOCATION.LOC_CLASS = CATALYST_LOCCLASS.LOC_CLASS) ON CATALYST_ITEMLOC.LOCATION = CATALYST_LOCATION.LOCATION
WHERE (((CATALYST_LOCATION.LOCATION) Like "P3*") AND ((CATALYST_LOCATION.LOC_CLASS) Between 8800 And 8870))
ORDER BY CATALYST_LOCATION.LOCATION;

et voici mon code VBA adapté :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function ProximiteCodif()
Dim LocationBegin As Variant   'déclaration de la variable de début
Dim LocationEnd As Variant 'déclaration de la variable de fin
Dim i As Variant
Dim qdf As DAO.QueryDef
 
Set qdf = CurrentDb.QueryDefs("ProxLocDansPerimetreVBA")
LocationBegin = Forms!ProximiteReference.LocationBegin
LocationEnd = Forms!ProximiteReference.LocationEnd
 
      With qdf
         .Parameters("[Formulaires]![ProximiteReference]![DistanceProximite]").Value = [Forms]![ProximiteReference]![DistanceProximite]
         .Parameters("[Formulaires]![ProximiteReference]![LocationEnd]").Value = [Forms]![ProximiteReference]![LocationEnd]
         .Execute
      End With
 
End Function

EDIT: Yes merci à vous deux!! en fait ça bloqué car dans ma requete final (rquete d'ajout donc) il y avait des champs qui n'avait pas de destination dans ma table... et donc du coup il plantait!
Merci beaucoup, vous gérez sur ce forum!
tibjedi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h30.


 
 
 
 
Partenaires

Hébergement Web