OVH Cloud OVH Cloud

Erreur dans un appel de fonction

8 réponses
Avatar
Antoine
Rebonjour,

Dans une appli, je souhaite tester les droits d'un opérateur pour une
action. Dans ma table "OPERATEUR" j'ai un champ "Forçage" qui est un booléen,
coché si l'opérateur a le droit à la fonction en question.
J'ai donc écrit la fonction suivante :

Public Function test_droits(opérateur, action) As Boolean

Dim stroperateur As String
Dim rcdoperateur As DAO.Recordset

stroperateur = "SELECT * FROM OPERATEUR WHERE ((Prénom & "" "" & Nom)='" &
opérateur & "')"
Set rcdoperateur = CurrentDb.OpenRecordset(stroperateur)

If rcdoperateur! & "[" & action & "]" = -1 Then.........

J'appelle la fonction comme ceci : if test_droits(opeactif,Forçage) = true
then.....
et je reçois un message d'erreur rapport au type de données déclaré de mon
recordset. N'y at'il pas une erreur dans : If rcdoperateur! & "[" & action &
"]" = -1

D'avance Merci

8 réponses

Avatar
Gafish
Bonjour,

Le message d'erreur que tu as fait penser à un problème de réference, as-tu
la référence à DAO de cochée ?

Arnaud

"Antoine" a écrit dans le message de
news:
Rebonjour,

Dans une appli, je souhaite tester les droits d'un opérateur pour une
action. Dans ma table "OPERATEUR" j'ai un champ "Forçage" qui est un
booléen,

coché si l'opérateur a le droit à la fonction en question.
J'ai donc écrit la fonction suivante :

Public Function test_droits(opérateur, action) As Boolean

Dim stroperateur As String
Dim rcdoperateur As DAO.Recordset

stroperateur = "SELECT * FROM OPERATEUR WHERE ((Prénom & "" "" & Nom)='" &
opérateur & "')"
Set rcdoperateur = CurrentDb.OpenRecordset(stroperateur)

If rcdoperateur! & "[" & action & "]" = -1 Then.........

J'appelle la fonction comme ceci : if test_droits(opeactif,Forçage) = true
then.....
et je reçois un message d'erreur rapport au type de données déclaré de mon
recordset. N'y at'il pas une erreur dans : If rcdoperateur! & "[" &
action &

"]" = -1

D'avance Merci



Avatar
Gafish
Et ensuite il est vrai que ta ligne If rcdoperateur! & "[" & action &
"]" = -1
doit contenir une erreur.

Tu veux récupèrer le contenu d'un champ ?
Si oui c'est rdcoperateur.Fields("TonChamp")

"Antoine" a écrit dans le message de
news:
Rebonjour,

Dans une appli, je souhaite tester les droits d'un opérateur pour une
action. Dans ma table "OPERATEUR" j'ai un champ "Forçage" qui est un
booléen,

coché si l'opérateur a le droit à la fonction en question.
J'ai donc écrit la fonction suivante :

Public Function test_droits(opérateur, action) As Boolean

Dim stroperateur As String
Dim rcdoperateur As DAO.Recordset

stroperateur = "SELECT * FROM OPERATEUR WHERE ((Prénom & "" "" & Nom)='" &
opérateur & "')"
Set rcdoperateur = CurrentDb.OpenRecordset(stroperateur)

If rcdoperateur! & "[" & action & "]" = -1 Then.........

J'appelle la fonction comme ceci : if test_droits(opeactif,Forçage) = true
then.....
et je reçois un message d'erreur rapport au type de données déclaré de mon
recordset. N'y at'il pas une erreur dans : If rcdoperateur! & "[" &
action &

"]" = -1

D'avance Merci



Avatar
Raymond [mvp]
Bonjour.

pour récupérer les champs du recordset tu dois opérer de la même façon pour
tous les champs:
If rcdoperateur("action") = -1 Then.........
ou
If rcdoperateur("action") Then.........

If rcdoperateur("Forçage") Then.........

le champ action est bien dans la table ?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine" a écrit dans le message de
news:
Rebonjour,

Dans une appli, je souhaite tester les droits d'un opérateur pour une
action. Dans ma table "OPERATEUR" j'ai un champ "Forçage" qui est un
booléen,

coché si l'opérateur a le droit à la fonction en question.
J'ai donc écrit la fonction suivante :

Public Function test_droits(opérateur, action) As Boolean

Dim stroperateur As String
Dim rcdoperateur As DAO.Recordset

stroperateur = "SELECT * FROM OPERATEUR WHERE ((Prénom & "" "" & Nom)='" &
opérateur & "')"
Set rcdoperateur = CurrentDb.OpenRecordset(stroperateur)

If rcdoperateur! & "[" & action & "]" = -1 Then.........

J'appelle la fonction comme ceci : if test_droits(opeactif,Forçage) = true
then.....
et je reçois un message d'erreur rapport au type de données déclaré de mon
recordset. N'y at'il pas une erreur dans : If rcdoperateur! & "[" &
action &

"]" = -1

D'avance Merci



Avatar
Raymond [mvp]
.../...
je n'ai pas vu que action était passé en paramètre, excuses
If rcdoperateur(action) Then.........
le champ action est bien dans la table ? ou où ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

pour récupérer les champs du recordset tu dois opérer de la même façon
pour

tous les champs:
If rcdoperateur("action") = -1 Then.........
ou
If rcdoperateur("action") Then.........

If rcdoperateur("Forçage") Then.........

le champ action est bien dans la table ?


Avatar
Antoine
Lorsque je tape rcdoperateur(action), je récupère le message "Element non
trouvé dans la collection"


..../...
je n'ai pas vu que action était passé en paramètre, excuses
If rcdoperateur(action) Then.........
le champ action est bien dans la table ? ou où ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

pour récupérer les champs du recordset tu dois opérer de la même façon
pour

tous les champs:
If rcdoperateur("action") = -1 Then.........
ou
If rcdoperateur("action") Then.........

If rcdoperateur("Forçage") Then.........

le champ action est bien dans la table ?







Avatar
Gafish
Essaie alors avec le code suivant :
If rdcoperateur.fields(action) = ....
comme action est une variable contenant le nom de ton champ

"Antoine" a écrit dans le message de
news:
rcdoperateur("action") ne marche pas.
Le nom du champ de la table n'est pas "action", c'est "forçage". Cependant
dans ma table j'ai plusieurs champs qui correspondent à des droits
différents

(ex : forçage, annulation, qualité).

Pour n'écrire qu'une seule fonction de test des droits je l'appelle ainsi
:

if test_droits(opeactif,Forçage) = true then....., dans lequel je peux
remplacer "Forçage" par "Annulation" ou "Qualité"....

Avec ce code :If rcdoperateur! & "[" & action & "]" = -1 je veux tester le
droit de l'opérateur pour la fonction précise.



Bonjour.

pour récupérer les champs du recordset tu dois opérer de la même façon
pour


tous les champs:
If rcdoperateur("action") = -1 Then.........
ou
If rcdoperateur("action") Then.........

If rcdoperateur("Forçage") Then.........

le champ action est bien dans la table ?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine" a écrit dans le message de
news:
Rebonjour,

Dans une appli, je souhaite tester les droits d'un opérateur pour une
action. Dans ma table "OPERATEUR" j'ai un champ "Forçage" qui est un
booléen,

coché si l'opérateur a le droit à la fonction en question.
J'ai donc écrit la fonction suivante :

Public Function test_droits(opérateur, action) As Boolean

Dim stroperateur As String
Dim rcdoperateur As DAO.Recordset

stroperateur = "SELECT * FROM OPERATEUR WHERE ((Prénom & "" "" &
Nom)='" &



opérateur & "')"
Set rcdoperateur = CurrentDb.OpenRecordset(stroperateur)

If rcdoperateur! & "[" & action & "]" = -1 Then.........

J'appelle la fonction comme ceci : if test_droits(opeactif,Forçage) true
then.....
et je reçois un message d'erreur rapport au type de données déclaré de
mon



recordset. N'y at'il pas une erreur dans : If rcdoperateur! & "[" &
action &

"]" = -1

D'avance Merci










Avatar
Raymond [mvp]
si tu indiques
rcdoperateur! & "[" & action & "]" = -1
c'est que tu veux lire le champ dont le nom est contenu dans action. si
action n'est pas un champ, alors ? faut revoir les explications je crois,
avec les champs et ce que tu veux faire mais sans code.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine" a écrit dans le message de
news:
rcdoperateur("action") ne marche pas.
Le nom du champ de la table n'est pas "action", c'est "forçage". Cependant
dans ma table j'ai plusieurs champs qui correspondent à des droits
différents

(ex : forçage, annulation, qualité).

Pour n'écrire qu'une seule fonction de test des droits je l'appelle ainsi
:

if test_droits(opeactif,Forçage) = true then....., dans lequel je peux
remplacer "Forçage" par "Annulation" ou "Qualité"....

Avec ce code :If rcdoperateur! & "[" & action & "]" = -1 je veux tester le
droit de l'opérateur pour la fonction précise.



Bonjour.

pour récupérer les champs du recordset tu dois opérer de la même façon
pour


tous les champs:
If rcdoperateur("action") = -1 Then.........
ou
If rcdoperateur("action") Then.........

If rcdoperateur("Forçage") Then.........

le champ action est bien dans la table ?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine" a écrit dans le message de
news:
Rebonjour,

Dans une appli, je souhaite tester les droits d'un opérateur pour une
action. Dans ma table "OPERATEUR" j'ai un champ "Forçage" qui est un
booléen,

coché si l'opérateur a le droit à la fonction en question.
J'ai donc écrit la fonction suivante :

Public Function test_droits(opérateur, action) As Boolean

Dim stroperateur As String
Dim rcdoperateur As DAO.Recordset

stroperateur = "SELECT * FROM OPERATEUR WHERE ((Prénom & "" "" &
Nom)='" &



opérateur & "')"
Set rcdoperateur = CurrentDb.OpenRecordset(stroperateur)

If rcdoperateur! & "[" & action & "]" = -1 Then.........

J'appelle la fonction comme ceci : if test_droits(opeactif,Forçage) true
then.....
et je reçois un message d'erreur rapport au type de données déclaré de
mon



recordset. N'y at'il pas une erreur dans : If rcdoperateur! & "[" &
action &

"]" = -1

D'avance Merci










Avatar
Raymond [mvp]
à problème bien énoncé, réponse appropriée !
si la variable log contient le nom , login windows.
tu recherches directement dans la table.

If Not IsNull(DLookup("Qualité", "OPERATEUR", "[Nom] = '" & Log & "'")) Then
' ici c'est bon
Else
' ici ce n'est pas bon
End If
tu fais pareil pour chaque champ. tu n'as pas besoin de passer par une
fonction.
si tu as besoin de tester plusieurs fois la valeur tu fais ceci.
Ilalaqualité = DLookup("Qualité", "OPERATEUR", "[Nom] = '" & Log & "'")
If Ilalaqualité then
------------------------
je ne sais pas si ceci fonctionne , tu peux toujours essayer:
If Not IsNull(DLookup("Qualité", "OPERATEUR", "[Nom] & "" "" & [Prénom] = '"
& Log & "'")) Then
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine" a écrit dans le message de
news:
Ma table "OPERATEUR" est faite ainsi :

Nomchamp Typechamp

Nom Texte
Prénom Texte
Forçage Booléen
Qualité Booléen
Annulation Booléen

Forçage, Annulation et Qualité corresponde à des droitsque j'accorde ou
non

à un opérateur. Suivant ces droits il aura droit(1) ou pas(0) d'effectuer
des

actions.

Avec une fonction, je veux tester si l'opérateur qui est loggé a le droit
ou

non à l'action (Forçage,Qualité, ou annulation). Par exemple en appelant
la

fonction test_droits (Martin,Forçage) je souhaiterais savoir si pour
l'opérateur Martin le booléen "Forçage" est à 1 ; en appelant la fonction
test_droits (Raymond,Qualité) je souhaiterais savoir si pour l'opérateur
Raymond le booléen "Qualité" est à 1.

J'espere avoir été plus clair