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 01/10/2011, 23h40   #1
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 584
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 584
Points : 886
Points : 886
Par défaut Requête et fonction personnalisée

Bonjour

J'ai créé une fonction perso à utiliser dans une requête.
La fonction est donc appelée par chaque enregistrement de la requête et fonctionne parfaitement si les arguments passés sont corrects.

J'ai voulu ajouter un contrôle et un message d'erreur afin de ne pas poursuivre le code de la fonction si un argument est incorrect.

Le problème est que je ne trouve pas comment interrompre la requête dans ce cas.
Le message d'erreur s'affiche autant de fois que d'enregistrements !
J'ai tenté une variable static mais dans ce cas c'est l'inverse, je n'ai le message d'erreur qu'au premier lancement en erreur.

Je cherche donc soit le moyen d'annuler la requête ou bien de détecter un nouveau lancement ou bien la fin de l'exécution...

Merci
78chris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 06h02   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Je n'ai pas testé, mais si tu lances ta requête par un code VB tu pourrais peut-être intercepté plus facilement l'erreur, non ? Ce n'est qu'une piste.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 11h33   #3
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 584
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 584
Points : 886
Points : 886
Bonjour

Merci Philippe : en fait l'idée est d'avoir une fonction utilisable dans toute requête...

La nuit portant conseil, j'ai décidé de supprimer le message d'erreur et de valoriser le résultat de la fonction avec une valeur négative pour attirer l'attention (la fonction renvoyant un double, même là j'ai du abandonner l'idée d'un message).

L'idéal aurait été, comme pour les fonctions intégrées, de contrôler un peu la syntaxe, mais j'imagine qu'il faudrait passer par des modules de classe, et là , j'atteins mes limites...
78chris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 13h02   #4
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
bonjour,

Citation:
Envoyé par 78chris Voir le message
Je cherche donc soit le moyen d'annuler la requête ou bien de détecter un nouveau lancement ou bien la fin de l'exécution.
je n'ai pas testé également mais tu peux peut-être exécuter ta requête (requête de type "Action" ??) au sein d'une transaction (voir tuto DAO).

- Tu démarres la transaction (beginTrans)
- Exécution de la requête avec la fonction puis si erreur--> annulation de l’exécution de la requête (Rollback)
- Sinon on valide la transaction (CommitTrans)

à voir...
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 20h40   #5
Membre émérite
 
Conseil + Formation
Inscription : février 2010
Messages : 584
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Conseil + Formation

Informations forums :
Inscription : février 2010
Messages : 584
Points : 886
Points : 886
Bonjour

Merci f-leb : il s'agit de bêtes requêtes SELECT où la fonction sert à effectuer un calcul qui n'existe pas nativement.

Néanmoins je garde précieusement ton idée que je vais tester (car je ne connaissais pas) : elle peut m'être très utile dans un cas de requête action où j'utiliserais une fonction.
78chris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h53.


 
 
 
 
Partenaires

Hébergement Web