Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

9 réponses
Avatar
Chichile
Bonjour

J'ai dans ma db des formulaires =E0 compl=E9ter. Pour faciliter la t=E2che
de l'utilisateur, j'ai cr=E9=E9 une Requ=EAte MAJ qu'il peut ex=E9cuter via=
un
bouton pour compl=E9ter automatiquement plusieurs champs sur base d'un
ID qu'il encode.
Or ma table de r=E9f=E9rence ne contient pas forc=E9ment de donn=E9es pour
tous les ID possibles. Si l'utilisateur entre un ID absent, Access =AB
ajoute 0 lignes =BB si vous voyez ce que je veux dire (mais les messages
sont d=E9sactiv=E9s).
Dans ce cas, je voudrais ajouter un message disant que la proc=E9dure a
bien fonctionn=E9, mais qu'il n'y a pas de donn=E9es disponibles pour l'ID
entr=E9.

J'ai donc besoin de coder avec la condition =AB si Access veut ajouter 0
ligne =BB, ou =AB si la requ=EAte ne fournit pas de r=E9sultats pour l'ID=
=BB, ou
=AB si l'ID encod=E9 n'est pas dans la table de r=E9f=E9rence =BB 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=E9cile

9 réponses

Avatar
Fabien
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

Avatar
Thierry (ze Titi)
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

Avatar
Chichile
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
Avatar
Thierry (ze Titi)
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

Avatar
Chichile
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

Avatar
Eric
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


Avatar
Chichile
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

Avatar
Eric
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


Avatar
Chichile
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