Condition pour ajouter un enreg.

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Tisane
Le #6224761
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

Raymond [mvp]
Le #6224731
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" 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
Serge L
Le #6224561
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





Serge L
Le #6224551
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" 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





Raymond [mvp]
Le #6224541
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" 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
| >
| >
Fabien
Le #6224531
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" 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à


Serge L
Le #6224521
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" 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
| >
| >





Raymond [mvp]
Le #6224511
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" 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" | > 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
| >
| >
| >
Serge L
Le #6224501
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" 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à





Serge L
Le #6224471
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" 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" | > 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
| >
| >
| >





Publicité
Poster une réponse
Anonyme