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

Condition pour ajouter un enreg.

16 réponses
Avatar
Serge L
J'ai un formulaire dont je me sert pour ajouter des données dans une table.
Dans cette table j'ai entre autre les champs [numero] et [jour] et une
variable public ''VarJour'' déclaré dans un module. La première information
que j'entre est sur le champ "numero". Je voudrais, suite a cette entré,
faire un code qui vérifie si il existe déjà dans la table un enregistrement
ayant:

- le même numéro ET
- [jour]=VarJour

si oui annuler l'enregistrement encours et si non continuer l'entré des
autres données de l'enregistrement encours.

J'espère avoir été assez clair.

Merci de votre aide

10 réponses

1 2
Avatar
Tisane
Bonjour Serge,

J'ai un formulaire dont je me sert pour ajouter des données dans une
table.
Dans cette table j'ai entre autre les champs [numero] et [jour] et une
variable public ''VarJour'' déclaré dans un module. La première
information
que j'entre est sur le champ "numero". Je voudrais, suite a cette entré,
faire un code qui vérifie si il existe déjà dans la table un
enregistrement
ayant:
- le même numéro ET
- [jour]=VarJour
si oui annuler l'enregistrement encours et si non continuer l'entré des
autres données de l'enregistrement encours.


Tu veux absolument par code (dans ce cas, attendre le réveil de nos pros ;-)
Ne suffirait-il pas d'indexer les 2 champs sans doublon ?

--
Tisane

Avatar
Raymond [mvp]
Bonjour.

Si la valeur à vérifier est la clé primaire, il est possible de ne rien
faire et access affichera une erreur de saisie lors de l'enregistrement.
sinon, il faut placer les champs à controler en début de saisie pour ne pas
faire travailler l'opérateur pour rien.
sur l'événement beforeupdate du et/ou des champs, exécuter une procédure
avec la fonction DLookup pour rechercher si cette valeur existe et dans ce
cas charger la variable cancel à true pour retourner à la saisie du/des
champ(s).

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Serge L" a écrit dans le message de
news:
| J'ai un formulaire dont je me sert pour ajouter des données dans une
table.
| Dans cette table j'ai entre autre les champs [numero] et [jour] et une
| variable public ''VarJour'' déclaré dans un module. La première
information
| que j'entre est sur le champ "numero". Je voudrais, suite a cette entré,
| faire un code qui vérifie si il existe déjà dans la table un
enregistrement
| ayant:
|
| - le même numéro ET
| - [jour]=VarJour
|
| si oui annuler l'enregistrement encours et si non continuer l'entré des
| autres données de l'enregistrement encours.
|
| J'espère avoir été assez clair.
|
| Merci de votre aide
Avatar
Serge L
Bonjour Tisane,
je ne peux pas indexer les deux champs sans doublon
puisque dans ma table il peux y avoir deux fois le même numéro mais avec des
jours different. Exemple:

Dans les champs il peux y avoir:
[numero] [jour]
1 1
1 2
1 3
2 1
2 3

mais pas:

[numero] [jour]
1 1
1 1

Autrement dis je veux que mon code m'empêche d'entrer deux fois les mêmes
valeur pour jour ET numero.

J'espère avoir été assez clair dans mes explications :)



Bonjour Serge,

J'ai un formulaire dont je me sert pour ajouter des données dans une
table.
Dans cette table j'ai entre autre les champs [numero] et [jour] et une
variable public ''VarJour'' déclaré dans un module. La première
information
que j'entre est sur le champ "numero". Je voudrais, suite a cette entré,
faire un code qui vérifie si il existe déjà dans la table un
enregistrement
ayant:
- le même numéro ET
- [jour]=VarJour
si oui annuler l'enregistrement encours et si non continuer l'entré des
autres données de l'enregistrement encours.


Tu veux absolument par code (dans ce cas, attendre le réveil de nos pros ;-)
Ne suffirait-il pas d'indexer les 2 champs sans doublon ?

--
Tisane





Avatar
Serge L
Bonjour Raymond,
aurais tu un exemple avec DLookup qui
s'appliquerais a mon exemple? Je vais faire mes recherches aussi car je ne
connais pas cette commande.

Merci de votre aide.


Bonjour.

Si la valeur à vérifier est la clé primaire, il est possible de ne rien
faire et access affichera une erreur de saisie lors de l'enregistrement.
sinon, il faut placer les champs à controler en début de saisie pour ne pas
faire travailler l'opérateur pour rien.
sur l'événement beforeupdate du et/ou des champs, exécuter une procédure
avec la fonction DLookup pour rechercher si cette valeur existe et dans ce
cas charger la variable cancel à true pour retourner à la saisie du/des
champ(s).

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Serge L" a écrit dans le message de
news:
| J'ai un formulaire dont je me sert pour ajouter des données dans une
table.
| Dans cette table j'ai entre autre les champs [numero] et [jour] et une
| variable public ''VarJour'' déclaré dans un module. La première
information
| que j'entre est sur le champ "numero". Je voudrais, suite a cette entré,
| faire un code qui vérifie si il existe déjà dans la table un
enregistrement
| ayant:
|
| - le même numéro ET
| - [jour]=VarJour
|
| si oui annuler l'enregistrement encours et si non continuer l'entré des
| autres données de l'enregistrement encours.
|
| J'espère avoir été assez clair.
|
| Merci de votre aide





Avatar
Raymond [mvp]
Tu peux très bien définir un index multi-champs unique.
cliquer sur l'icone index en modification de table.
tu définis un index avec un premier champ et en dessous un deuxième champ
sans indiquer de nom d'index, ce qui veut dire que àa se rapporte à l'index
au dessus.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Serge L" a écrit dans le message de
news:
| Bonjour Tisane,
| je ne peux pas indexer les deux champs sans doublon
| puisque dans ma table il peux y avoir deux fois le même numéro mais avec
des
| jours different. Exemple:
|
| Dans les champs il peux y avoir:
| [numero] [jour]
| 1 1
| 1 2
| 1 3
| 2 1
| 2 3
|
| mais pas:
|
| [numero] [jour]
| 1 1
| 1 1
|
| Autrement dis je veux que mon code m'empêche d'entrer deux fois les mêmes
| valeur pour jour ET numero.
|
| J'espère avoir été assez clair dans mes explications :)
|
|
|
| > Bonjour Serge,
| >
| > > J'ai un formulaire dont je me sert pour ajouter des données dans une
| > > table.
| > > Dans cette table j'ai entre autre les champs [numero] et [jour] et une
| > > variable public ''VarJour'' déclaré dans un module. La première
| > > information
| > > que j'entre est sur le champ "numero". Je voudrais, suite a cette
entré,
| > > faire un code qui vérifie si il existe déjà dans la table un
| > > enregistrement
| > > ayant:
| > > - le même numéro ET
| > > - [jour]=VarJour
| > > si oui annuler l'enregistrement encours et si non continuer l'entré
des
| > > autres données de l'enregistrement encours.
| >
| > Tu veux absolument par code (dans ce cas, attendre le réveil de nos pros
;-)
| > Ne suffirait-il pas d'indexer les 2 champs sans doublon ?
| >
| > --
| > Tisane
| >
| >
Avatar
Fabien
Bonjour Raymond,
aurais tu un exemple avec DLookup qui
s'appliquerais a mon exemple? Je vais faire mes recherches aussi car je ne
connais pas cette commande.

Merci de votre aide.


Bonjour.

Si la valeur à vérifier est la clé primaire, il est possible de ne rien
faire et access affichera une erreur de saisie lors de l'enregistrement.
sinon, il faut placer les champs à controler en début de saisie pour ne pas
faire travailler l'opérateur pour rien.
sur l'événement beforeupdate du et/ou des champs, exécuter une procédure
avec la fonction DLookup pour rechercher si cette valeur existe et dans ce
cas charger la variable cancel à true pour retourner à la saisie du/des
champ(s).

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Serge L" a écrit dans le message de
news:
| J'ai un formulaire dont je me sert pour ajouter des données dans une
table.
| Dans cette table j'ai entre autre les champs [numero] et [jour] et une
| variable public ''VarJour'' déclaré dans un module. La première
information
| que j'entre est sur le champ "numero". Je voudrais, suite a cette entré,
| faire un code qui vérifie si il existe déjà dans la table un
enregistrement
| ayant:
|
| - le même numéro ET
| - [jour]=VarJour
|
| si oui annuler l'enregistrement encours et si non continuer l'entré des
| autres données de l'enregistrement encours.
|
| J'espère avoir été assez clair.
|
| Merci de votre aide



Salut serge,


j'avais posté un réponse ce matin mais elle a du se perdre.
Dlookup("[Numéro]","TaTable","[Numero]= " & Me.Numero & " and [Jour]= "
& Varjour) Retourne Numéro s'il existe sinon retourne la valeur null
Tu place ce dllokup dans l'evenement 'aprés mise a jour' de ton controle
Numéro.
Genre

If Dlookup(....)<>null then
msgbox "On l'a déjà celui-là ;-)!!!"
me.numero.setfocus
else

End if
Voilà


Avatar
Serge L
Raymond .....je comprend la fonction des index multi-champs (du moins je le
pense :)) mais cela ne m'empêchera pas des entrés interdit selon mes
critères décrit précédemment. non?

Merci encore de votre patience



Tu peux très bien définir un index multi-champs unique.
cliquer sur l'icone index en modification de table.
tu définis un index avec un premier champ et en dessous un deuxième champ
sans indiquer de nom d'index, ce qui veut dire que àa se rapporte à l'index
au dessus.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Serge L" a écrit dans le message de
news:
| Bonjour Tisane,
| je ne peux pas indexer les deux champs sans doublon
| puisque dans ma table il peux y avoir deux fois le même numéro mais avec
des
| jours different. Exemple:
|
| Dans les champs il peux y avoir:
| [numero] [jour]
| 1 1
| 1 2
| 1 3
| 2 1
| 2 3
|
| mais pas:
|
| [numero] [jour]
| 1 1
| 1 1
|
| Autrement dis je veux que mon code m'empêche d'entrer deux fois les mêmes
| valeur pour jour ET numero.
|
| J'espère avoir été assez clair dans mes explications :)
|
|
|
| > Bonjour Serge,
| >
| > > J'ai un formulaire dont je me sert pour ajouter des données dans une
| > > table.
| > > Dans cette table j'ai entre autre les champs [numero] et [jour] et une
| > > variable public ''VarJour'' déclaré dans un module. La première
| > > information
| > > que j'entre est sur le champ "numero". Je voudrais, suite a cette
entré,
| > > faire un code qui vérifie si il existe déjà dans la table un
| > > enregistrement
| > > ayant:
| > > - le même numéro ET
| > > - [jour]=VarJour
| > > si oui annuler l'enregistrement encours et si non continuer l'entré
des
| > > autres données de l'enregistrement encours.
| >
| > Tu veux absolument par code (dans ce cas, attendre le réveil de nos pros
;-)
| > Ne suffirait-il pas d'indexer les 2 champs sans doublon ?
| >
| > --
| > Tisane
| >
| >





Avatar
Raymond [mvp]
vérifies cet exemple car je ne l'ai pas testé:

Private Sub jour_BeforeUpdate(Cancel As Integer)
If DLookup("numero", "table1", "[numero] = '" & Me.Numero & "'" & " and
[jour] = '" & VarJour & "'") Then
MsgBox "erreur"
Cancel = True
End If
End Sub

Private Sub numero_BeforeUpdate(Cancel As Integer)
If DLookup("numero", "table1", "[numero] = '" & Me.Numero & "'" & " and
[jour] = '" & VarJour & "'") Then
MsgBox "erreur"
Cancel = True
End If
End Sub


--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Serge L" a écrit dans le message de
news:
| Bonjour Raymond,
| aurais tu un exemple avec DLookup qui
| s'appliquerais a mon exemple? Je vais faire mes recherches aussi car je ne
| connais pas cette commande.
|
| Merci de votre aide.
|
|
| > Bonjour.
| >
| > Si la valeur à vérifier est la clé primaire, il est possible de ne rien
| > faire et access affichera une erreur de saisie lors de l'enregistrement.
| > sinon, il faut placer les champs à controler en début de saisie pour ne
pas
| > faire travailler l'opérateur pour rien.
| > sur l'événement beforeupdate du et/ou des champs, exécuter une procédure
| > avec la fonction DLookup pour rechercher si cette valeur existe et dans
ce
| > cas charger la variable cancel à true pour retourner à la saisie du/des
| > champ(s).
| >
| > --
| > @+
| > Raymond Access MVP http://OfficeSystem.Access.free.fr/
| > Pour débuter sur le forum: http://www.mpfa.info/
| > Pour les amoureux de l'Ardèche et de Joyeuse:
| > http://cppj.free.fr/
| >
| >
| > "Serge L" a écrit dans le message de
| > news:
| > | J'ai un formulaire dont je me sert pour ajouter des données dans une
| > table.
| > | Dans cette table j'ai entre autre les champs [numero] et [jour] et une
| > | variable public ''VarJour'' déclaré dans un module. La première
| > information
| > | que j'entre est sur le champ "numero". Je voudrais, suite a cette
entré,
| > | faire un code qui vérifie si il existe déjà dans la table un
| > enregistrement
| > | ayant:
| > |
| > | - le même numéro ET
| > | - [jour]=VarJour
| > |
| > | si oui annuler l'enregistrement encours et si non continuer l'entré
des
| > | autres données de l'enregistrement encours.
| > |
| > | J'espère avoir été assez clair.
| > |
| > | Merci de votre aide
| >
| >
| >
Avatar
Serge L
Merci Fabien, je pense que je peux tricoter avec cela ;)

merci encore tout le monde




Bonjour Raymond,
aurais tu un exemple avec DLookup qui
s'appliquerais a mon exemple? Je vais faire mes recherches aussi car je ne
connais pas cette commande.

Merci de votre aide.


Bonjour.

Si la valeur à vérifier est la clé primaire, il est possible de ne rien
faire et access affichera une erreur de saisie lors de l'enregistrement.
sinon, il faut placer les champs à controler en début de saisie pour ne pas
faire travailler l'opérateur pour rien.
sur l'événement beforeupdate du et/ou des champs, exécuter une procédure
avec la fonction DLookup pour rechercher si cette valeur existe et dans ce
cas charger la variable cancel à true pour retourner à la saisie du/des
champ(s).

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Serge L" a écrit dans le message de
news:
| J'ai un formulaire dont je me sert pour ajouter des données dans une
table.
| Dans cette table j'ai entre autre les champs [numero] et [jour] et une
| variable public ''VarJour'' déclaré dans un module. La première
information
| que j'entre est sur le champ "numero". Je voudrais, suite a cette entré,
| faire un code qui vérifie si il existe déjà dans la table un
enregistrement
| ayant:
|
| - le même numéro ET
| - [jour]=VarJour
|
| si oui annuler l'enregistrement encours et si non continuer l'entré des
| autres données de l'enregistrement encours.
|
| J'espère avoir été assez clair.
|
| Merci de votre aide



Salut serge,


j'avais posté un réponse ce matin mais elle a du se perdre.
Dlookup("[Numéro]","TaTable","[Numero]= " & Me.Numero & " and [Jour]= "
& Varjour) Retourne Numéro s'il existe sinon retourne la valeur null
Tu place ce dllokup dans l'evenement 'aprés mise a jour' de ton controle
Numéro.
Genre

If Dlookup(....)<>null then
msgbox "On l'a déjà celui-là ;-)!!!"
me.numero.setfocus
else

End if
Voilà





Avatar
Serge L
Ok j'ai essayé le code mais access m'indique une erreur 3464 ''Type de
données incompatible dans l'expression di critère''

Une idée?


vérifies cet exemple car je ne l'ai pas testé:

Private Sub jour_BeforeUpdate(Cancel As Integer)
If DLookup("numero", "table1", "[numero] = '" & Me.Numero & "'" & " and
[jour] = '" & VarJour & "'") Then
MsgBox "erreur"
Cancel = True
End If
End Sub

Private Sub numero_BeforeUpdate(Cancel As Integer)
If DLookup("numero", "table1", "[numero] = '" & Me.Numero & "'" & " and
[jour] = '" & VarJour & "'") Then
MsgBox "erreur"
Cancel = True
End If
End Sub


--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
Pour les amoureux de l'Ardèche et de Joyeuse:
http://cppj.free.fr/


"Serge L" a écrit dans le message de
news:
| Bonjour Raymond,
| aurais tu un exemple avec DLookup qui
| s'appliquerais a mon exemple? Je vais faire mes recherches aussi car je ne
| connais pas cette commande.
|
| Merci de votre aide.
|
|
| > Bonjour.
| >
| > Si la valeur à vérifier est la clé primaire, il est possible de ne rien
| > faire et access affichera une erreur de saisie lors de l'enregistrement.
| > sinon, il faut placer les champs à controler en début de saisie pour ne
pas
| > faire travailler l'opérateur pour rien.
| > sur l'événement beforeupdate du et/ou des champs, exécuter une procédure
| > avec la fonction DLookup pour rechercher si cette valeur existe et dans
ce
| > cas charger la variable cancel à true pour retourner à la saisie du/des
| > champ(s).
| >
| > --
| > @+
| > Raymond Access MVP http://OfficeSystem.Access.free.fr/
| > Pour débuter sur le forum: http://www.mpfa.info/
| > Pour les amoureux de l'Ardèche et de Joyeuse:
| > http://cppj.free.fr/
| >
| >
| > "Serge L" a écrit dans le message de
| > news:
| > | J'ai un formulaire dont je me sert pour ajouter des données dans une
| > table.
| > | Dans cette table j'ai entre autre les champs [numero] et [jour] et une
| > | variable public ''VarJour'' déclaré dans un module. La première
| > information
| > | que j'entre est sur le champ "numero". Je voudrais, suite a cette
entré,
| > | faire un code qui vérifie si il existe déjà dans la table un
| > enregistrement
| > | ayant:
| > |
| > | - le même numéro ET
| > | - [jour]=VarJour
| > |
| > | si oui annuler l'enregistrement encours et si non continuer l'entré
des
| > | autres données de l'enregistrement encours.
| > |
| > | J'espère avoir été assez clair.
| > |
| > | Merci de votre aide
| >
| >
| >





1 2