OVH Cloud OVH Cloud

message d'erreur après lancement requête

7 réponses
Avatar
Francoise B.
Bonjour

J'ai dans un sous-formulaire deux champs annee min et=20
ann=E9e max qui me permettent selon les valeurs entr=E9es de=20
lancer une requ=EAte pour obtenir tous les enregistrements=20
de mon formulaire principale dont les ann=E9es entrent dans=20
la tranche d'ann=E9e demand=E9e.(Toutes entre 1700 et 2004)

Ma requ=EAte fonctionne bien mais si l'utilisateur lance=20
(par erreur)la requ=EAte sans avoir entr=E9 les deux valeurs=20
ou s'il entre des valeurs qui ne sont pas possibles (ex.=20
ann=E9e min:1205, et ann=E9e max:1569)est il possible=20
d'obtenir un message genre "aucun enregistrement ne=20
correspond =E0 ces valeurs) plutot que d'arriver dans un=20
message d'erreure du code vba?

J'esp=E8re que je suis assez claire...

Merci de votre aide

FB

7 réponses

Avatar
3stone
Salut,

"Francoise B."

J'ai dans un sous-formulaire deux champs annee min et
année max qui me permettent selon les valeurs entrées de
lancer une requête pour obtenir tous les enregistrements
de mon formulaire principale dont les années entrent dans
la tranche d'année demandée.(Toutes entre 1700 et 2004)

Ma requête fonctionne bien mais si l'utilisateur lance
(par erreur)la requête sans avoir entré les deux valeurs
ou s'il entre des valeurs qui ne sont pas possibles (ex.
année min:1205, et année max:1569)est il possible
d'obtenir un message genre "aucun enregistrement ne
correspond à ces valeurs) plutot que d'arriver dans un
message d'erreure du code vba?



Et comment déclenche tu ta requête ?

car il suffit de vérifier les zones de texte AVANT de lancer la requête!

if isnull(txtDateDe) or isnull(txtDateA) Then
msgbox "Saisir 2 dates..."
exit sub
end if


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Avatar
Le méruvien
bonjour françoise,
pour commencer, dans les propriétées du champ "année min" a la ligne "valide
si:" tu met :>2000 Et <=Format(Date();"aaaa")
et a la ligne en dessous, tu met le texte du message d'erreur que que veut.
pour le champ "année max", tu peut mettre la même chose.
bien sur 2000 n'est qu'un exemple, tu met l'année la plus petite de ta
table.
roger


"Francoise B." a écrit dans le message
de news: e1c701c43c21$a8705d20$
Bonjour

J'ai dans un sous-formulaire deux champs annee min et
année max qui me permettent selon les valeurs entrées de
lancer une requête pour obtenir tous les enregistrements
de mon formulaire principale dont les années entrent dans
la tranche d'année demandée.(Toutes entre 1700 et 2004)

Ma requête fonctionne bien mais si l'utilisateur lance
(par erreur)la requête sans avoir entré les deux valeurs
ou s'il entre des valeurs qui ne sont pas possibles (ex.
année min:1205, et année max:1569)est il possible
d'obtenir un message genre "aucun enregistrement ne
correspond à ces valeurs) plutot que d'arriver dans un
message d'erreure du code vba?

J'espère que je suis assez claire...

Merci de votre aide

FB
Avatar
patloup
Comment l'usager a-t'il accès à ta requête ? Via un
bouton de commande sur un formulaire ? Si c'est le cas,
il y a possibilité de "paramètrer" les dates, et
d'afficher un message comme tu le souhaites.

Patloup
-----Message d'origine-----
Bonjour

J'ai dans un sous-formulaire deux champs annee min et
année max qui me permettent selon les valeurs entrées de
lancer une requête pour obtenir tous les enregistrements
de mon formulaire principale dont les années entrent dans
la tranche d'année demandée.(Toutes entre 1700 et 2004)

Ma requête fonctionne bien mais si l'utilisateur lance
(par erreur)la requête sans avoir entré les deux valeurs
ou s'il entre des valeurs qui ne sont pas possibles (ex.
année min:1205, et année max:1569)est il possible
d'obtenir un message genre "aucun enregistrement ne
correspond à ces valeurs) plutot que d'arriver dans un
message d'erreure du code vba?

J'espère que je suis assez claire...

Merci de votre aide

FB
.



Avatar
Francoise B.
Salut!!!

Je te remercie pour ta réponse. J'ai essayé ce que tu m'as
dit, mais je ne crois pas que ce soit juste car ma requête
est lancé par un bouton qui est relié à une macro qui
ordonne l'ouverture d'un état, filtré par ma requête.

Au début du code du bouton, j'ai mis le code que tu m'as
donné, et ca ne change rien.
.....................................................

Private Sub Commande4_Click()

On Error GoTo Err_Commande4_Click

If IsNull(Annee_min) Or IsNull(Annee_max) Then
MsgBox "Saisir 2 dates..."
Exit Sub
End If


DoCmd.GoToRecord , , acLast

Exit_Commande4_Click:
Exit Sub

Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click

End Sub
.........................................................

Ce que je ne comprends pas, c'est que quand je laisse les
champs libres ou si je mets des données que la requête ne
peut pas trouver, c'est sur ce message que j'arrive, et il
n'a pas de lien avec cette commande.

Private Sub Détail_Format(Cancel As Integer, FormatCount
As Integer)
Dim strBase, strChemin
-> If Me.photo <> "" Then
' Répertoire de base
strBase = "" & CurrentProject.Path

' Chemin complet de l'image
strChemin = strBase & "" & Me.photo

' Charger l'image
Me.imgApercu.Picture = strChemin
Me.imgApercu.Visible = True
Else
Me.imgApercu.Picture = ""
Me.imgApercu.Visible = False
End If
End Sub

Est ce que c'est au niveau de ma requête que je devrais
changer quelque chose?

SELECT T_Fiche_Inventaire.Annee_min,
T_Fiche_Inventaire.Annee_max, T_Fiche_Inventaire.ID_Objet
FROM T_Fiche_Inventaire
WHERE (((T_Fiche_Inventaire.Annee_min)>=[Formulaires]!
[SF_Recherche_Annee]![Annee_min] And
(T_Fiche_Inventaire.Annee_min)<=[Formulaires]!
[SF_Recherche_Annee]![Annee_max])) OR
(((T_Fiche_Inventaire.Annee_max)>=[Formulaires]!
[SF_Recherche_Annee]![Annee_min] And
(T_Fiche_Inventaire.Annee_max)<=[Formulaires]!
[SF_Recherche_Annee]![Annee_max])) OR
(((T_Fiche_Inventaire.Annee_min)<[Formulaires]!
[SF_Recherche_Annee]![Annee_min]) AND
((T_Fiche_Inventaire.Annee_max)>[Formulaires]!
[SF_Recherche_Annee]![Annee_max]));


Bon, c'est pas évident... mais merci si tu vois ou est mon
problème!

FB




.>-----Message d'origine-----
Salut,

"Francoise B."

J'ai dans un sous-formulaire deux champs annee min et
année max qui me permettent selon les valeurs entrées de
lancer une requête pour obtenir tous les enregistrements
de mon formulaire principale dont les années entrent dans
la tranche d'année demandée.(Toutes entre 1700 et 2004)

Ma requête fonctionne bien mais si l'utilisateur lance
(par erreur)la requête sans avoir entré les deux valeurs
ou s'il entre des valeurs qui ne sont pas possibles (ex.
année min:1205, et année max:1569)est il possible
d'obtenir un message genre "aucun enregistrement ne
correspond à ces valeurs) plutot que d'arriver dans un
message d'erreure du code vba?



Et comment déclenche tu ta requête ?

car il suffit de vérifier les zones de texte AVANT de
lancer la requête!


if isnull(txtDateDe) or isnull(txtDateA) Then
msgbox "Saisir 2 dates..."
exit sub
end if


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------




.



Avatar
Francoise B
Salut roger

D'abord merci, ca marche pour les années!!! Seulement ca
ne marche pas si je laisse les champs vide. J'obtiens
toujours ce message vba :expression sans paramètre qui n'a
rien a voir avec ce sous formulaire et cette requête:

Private Sub Détail_Format(Cancel As Integer, FormatCount
As Integer)
Dim strBase, strChemin
-> If Me.photo <> "" Then
' Répertoire de base
strBase = "" & CurrentProject.Path

' Chemin complet de l'image
strChemin = strBase & "" & Me.photo

' Charger l'image
Me.imgApercu.Picture = strChemin
Me.imgApercu.Visible = True
Else
Me.imgApercu.Picture = ""
Me.imgApercu.Visible = False
End If
End Sub


-----Message d'origine-----
bonjour françoise,
pour commencer, dans les propriétées du champ "année min"
a la ligne "valide

si:" tu met :>2000 Et <=Format(Date();"aaaa")
et a la ligne en dessous, tu met le texte du message
d'erreur que que veut.

pour le champ "année max", tu peut mettre la même chose.
bien sur 2000 n'est qu'un exemple, tu met l'année la plus
petite de ta

table.
roger


"Francoise B." a
écrit dans le message

de news: e1c701c43c21$a8705d20$
Bonjour

J'ai dans un sous-formulaire deux champs annee min et
année max qui me permettent selon les valeurs entrées de
lancer une requête pour obtenir tous les enregistrements
de mon formulaire principale dont les années entrent dans
la tranche d'année demandée.(Toutes entre 1700 et 2004)

Ma requête fonctionne bien mais si l'utilisateur lance
(par erreur)la requête sans avoir entré les deux valeurs
ou s'il entre des valeurs qui ne sont pas possibles (ex.
année min:1205, et année max:1569)est il possible
d'obtenir un message genre "aucun enregistrement ne
correspond à ces valeurs) plutot que d'arriver dans un
message d'erreure du code vba?

J'espère que je suis assez claire...

Merci de votre aide

FB


.



Avatar
Francoise B.
Encore une chose roger...

Quand il n'y a aucun résultat à ma recherche, pourquoi est
ce que mon état ne s'ouvret-il pas tout simplement "vide"
A la place, il y a encore ce message d'erreur vba.
Avatar
3stone
Salut,

"Francoise B."
Je te remercie pour ta réponse. J'ai essayé ce que tu m'as
dit, mais je ne crois pas que ce soit juste car ma requête
est lancé par un bouton qui est relié à une macro qui
ordonne l'ouverture d'un état, filtré par ma requête.


Dès que tu émets le souhait d'aprofondir Access,
oublie les macro et passe au VBA...


Au début du code du bouton, j'ai mis le code que tu m'as
donné, et ca ne change rien.
.....................................................

Private Sub Commande4_Click()

On Error GoTo Err_Commande4_Click

If IsNull(Annee_min) Or IsNull(Annee_max) Then
MsgBox "Saisir 2 dates..."
Exit Sub
End If



Les deux zones de texte, tu les mets sur le formulaire!
Et les critères de ta requête viennent pointer ces contrôles.


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------