Poser une condition "si l'Update query ne remplit aucune ligne"

Le
Chichile
Bonjour

J'ai dans ma db des formulaires à compléter. Pour faciliter la tâche
de l'utilisateur, j'ai créé une Requête MAJ qu'il peut exécuter via=
un
bouton pour compléter automatiquement plusieurs champs sur base d'un
ID qu'il encode.
Or ma table de référence ne contient pas forcément de données pour
tous les ID possibles. Si l'utilisateur entre un ID absent, Access «
ajoute 0 lignes » si vous voyez ce que je veux dire (mais les messages
sont désactivés).
Dans ce cas, je voudrais ajouter un message disant que la procédure a
bien fonctionné, mais qu'il n'y a pas de données disponibles pour l'ID
entré.

J'ai donc besoin de coder avec la condition « si Access veut ajouter 0
ligne », ou « si la requête ne fournit pas de résultats pour l'ID=
», ou
« si l'ID encodé n'est pas dans la table de référence » etc A=
vec mes
faibles connaissances en VBA, je ne vois pas trop comment poser une
telle condition.
Auriez-vous une piste pour moi ?

Merci d'avance !
Cécile
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #6294201
Bonjour

J'ai dans ma db des formulaires à compléter. Pour faciliter la tâche
de l'utilisateur, j'ai créé une Requête MAJ qu'il peut exécuter via un
bouton pour compléter automatiquement plusieurs champs sur base d'un
ID qu'il encode.
Or ma table de référence ne contient pas forcément de données pour
tous les ID possibles. Si l'utilisateur entre un ID absent, Access «
ajoute 0 lignes » si vous voyez ce que je veux dire (mais les messages
sont désactivés).
Dans ce cas, je voudrais ajouter un message disant que la procédure a
bien fonctionné, mais qu'il n'y a pas de données disponibles pour l'ID
entré.

J'ai donc besoin de coder avec la condition « si Access veut ajouter 0
ligne », ou « si la requête ne fournit pas de résultats pour l'ID», ou
« si l'ID encodé n'est pas dans la table de référence » etc... Avec mes
faibles connaissances en VBA, je ne vois pas trop comment poser une
telle condition.
Auriez-vous une piste pour moi ?

Merci d'avance !
Cécile

Bonjour Cécile.

Une solution c'est de faire une requete select identique a ta requete
Update et de tester avec un dcount le nombre d'enreg que ta requete
select trouve.
Si c'est 0 alors msg et pas d'update sinon update.
C'est qu'est ce que je ferais avec mes petits moyens ;-)
Fabien

Thierry (ze Titi)
Le #6294191
Salut Chichile !

La propriété RecordsAffected de l'objet QueryDef devrait t'aider.
Tout dépend de la façon dont tu exécutes ta requête MAJ.
Si c'est une exécution d'une requête stockée:

Dim qry as QueryDef
Set qry=Currentdb.QueryDefs("TaRequête")
qry.Execute
If qry.RecordsAffected=0 Then MsgBox "Requête exécutée mais aucune
donnée disponible pour l'ID entré"
set qry=nothing

A tester...

En ce jour exceptionnel du vendredi 06/07/2007, tu nous as très
généreusement gratifié du message suivant:

Bonjour

J'ai dans ma db des formulaires à compléter. Pour faciliter la tâche
de l'utilisateur, j'ai créé une Requête MAJ qu'il peut exécuter via un
bouton pour compléter automatiquement plusieurs champs sur base d'un
ID qu'il encode.
Or ma table de référence ne contient pas forcément de données pour
tous les ID possibles. Si l'utilisateur entre un ID absent, Access «
ajoute 0 lignes » si vous voyez ce que je veux dire (mais les messages
sont désactivés).
Dans ce cas, je voudrais ajouter un message disant que la procédure a
bien fonctionné, mais qu'il n'y a pas de données disponibles pour l'ID
entré.

J'ai donc besoin de coder avec la condition « si Access veut ajouter 0
ligne », ou « si la requête ne fournit pas de résultats pour l'ID», ou
« si l'ID encodé n'est pas dans la table de référence » etc... Avec mes
faibles connaissances en VBA, je ne vois pas trop comment poser une
telle condition.
Auriez-vous une piste pour moi ?

Merci d'avance !
Cécile


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Chichile
Le #6294181
Merci pour vos solutions ! Je vais tester ça.

Thierry : en fait pour le moment je ne stocke pas ma requête. Je fais
un bête RunSQL... Mais je vais essayer de modifier ça.

A suivre...

Cécile
Thierry (ze Titi)
Le #6294171
Ne modifie rien, il y a aussi une solution dans ce cas :

Change ton RunSQL en

Currentdb.Execute "tonCodeSQL"
If Currentdb.RecordsAffected=0 Then MsgBox "Requête exécutée mais
aucune donnée disponible pour l'ID entré"

Théoriquement, ça fonctionne.

En ce jour mémorable du vendredi 06/07/2007, tu as entrepris la lourde
tâche de taper sur ton clavier :
Merci pour vos solutions ! Je vais tester ça.

Thierry : en fait pour le moment je ne stocke pas ma requête. Je fais
un bête RunSQL... Mais je vais essayer de modifier ça.

A suivre...

Cécile


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Chichile
Le #6294121
Re bonjour,

Currentdb.Execute "tonCodeSQL"
If Currentdb.RecordsAffected=0 Then MsgBox "Requête exécutée mais
aucune donnée disponible pour l'ID entré"


La condition if n'a pas l'air de fonctionner ici. Il m'affiche le
message même quand il remplit les champs ! C'est-à-dire que pour
Access records affected est toujours =0 ...

A suivre encore...

Cécile

Eric
Le #6294091
Bonjour,

Il faut que tu déclares une variable-objet Database

Dim bd as DA0.Database
set bd= currentdb
bd.Execute "ton sql"
If bd.RecordsAffected = 0 Then MsgBox "Requête exécutée mais aucune
donnée disponible pour l'ID entré"
set bd=nothing

et là ça devrait fonctionner.

PS : Charger la référence Microsoft DAO 3.x Object Library (menu
Outils|Références)

Re bonjour,

Currentdb.Execute "tonCodeSQL"
If Currentdb.RecordsAffected=0 Then MsgBox "Requête exécutée mais
aucune donnée disponible pour l'ID entré"


La condition if n'a pas l'air de fonctionner ici. Il m'affiche le
message même quand il remplit les champs ! C'est-à-dire que pour
Access records affected est toujours =0 ...

A suivre encore...

Cécile





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Chichile
Le #6294071
Merci !

Juste encore une question :

PS : Charger la référence Microsoft DAO 3.x Object Library (menu
Outils|Références)


Pour moi pas de problème, c'était le cas, mais mon utilisateur
principal est sur Access 2000 : est-ce que ce sera OK pour lui ?

Un bon WE !

Cécile

Eric
Le #6294051
Bonjour Cécile,

Pas de problème, j'ai testé sous Access2K-SP3 mais il faut que cette
référence soit inscrite chez l'utilisateur. Par défaut, sous Access2k,
elle n'est pas inscrite dans les références.

Bon WE

Merci !

Juste encore une question :

PS : Charger la référence Microsoft DAO 3.x Object Library (menu
Outils|Références)


Pour moi pas de problème, c'était le cas, mais mon utilisateur
principal est sur Access 2000 : est-ce que ce sera OK pour lui ?

Un bon WE !

Cécile





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Chichile
Le #6294031
Un grand merci !

Ca va tout de suite mieux en déclarant les variables.
Mon problème est donc réglé...

Bon WE

Cécile
Publicité
Poster une réponse
Anonyme