OVH Cloud OVH Cloud

Problème enregistrement avec index sans doublon

4 réponses
Avatar
André Houssonloge
Bonjour,

Sur une table "Commandes" j'ai placé un index sans doublon sur deux champs,
NPersonne et DateCommande. Très bien, mais lorsque on essaye de créer une
nouvelle commande pour un élève à la même date, le message d'erreur d'access
apparaît bien, mais lorsque je quitte le message, la commande est malgré
tout enregistrée. Comment cela est-il-possible ? Où dois-je court circuiter
l'enregistrement après l'apparition du message ?

Merci

André Houssonloge


PS: la création de l'enregistrement "Commandes" se fait par du code VBA.

4 réponses

Avatar
Jean
Access ne peut pas enregistrer un record si tu saisi sur
une clé primaire une donnée en double.

Vérifie que tes champs sont en clé primaire (petite clé
qui apparait à gauche du champ en création) et que tu a
bien sélectionné sans doublon.

Sinon tu appuie sur la petite clé dans le menu de table
pour la poser.

Si tu ne prend que l'option sans doublon sans définir de
clé primaire, c'est normal qu'il enregistre en double.
Avatar
André Houssonloge
Merci pour ces précisions.

Effectivement c'est une clé sans doublon, mais ce n'est pas la clé primaire.
Voici le code qui doit créer la commande

Private Sub InsertNewCommande_Click()
DoCmd.GoToRecord , , acNewRec
If Me.NewRecord Then
Me.DateCommande.SetFocus
Me.Dirty = True
VarNCommande = Me.IdCommande
Me.Requery
End If

Merci


"Jean" a écrit dans le message de
news: 006401c3b44b$faf51b20$
Access ne peut pas enregistrer un record si tu saisi sur
une clé primaire une donnée en double.

Vérifie que tes champs sont en clé primaire (petite clé
qui apparait à gauche du champ en création) et que tu a
bien sélectionné sans doublon.

Sinon tu appuie sur la petite clé dans le menu de table
pour la poser.

Si tu ne prend que l'option sans doublon sans définir de
clé primaire, c'est normal qu'il enregistre en double.
Avatar
Raymond [mvp]
Bonsoir.

si tu dois tester si la date est en doublon il faut le faire dans
l'événement beforeupdate du controle date. tu lances un dcount ou un dlookup
sur le champ date, dans la table avec le critère NPersonne = me.NPersonne .
dans ta procédure, tu te positionnes sur un nouvel enregistrement et ensuite
tu testes si tu es dessus, pourquoi ?
tu mets dirty à true , pourquoi ?
comment le varncommande peut-il être chargé alors qu'il n'y a pas eu de
saisie encore ?
pourquoi un requery ?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"André Houssonloge" a écrit dans le message de
news:
Merci pour ces précisions.

Effectivement c'est une clé sans doublon, mais ce n'est pas la clé
primaire.

Voici le code qui doit créer la commande

Private Sub InsertNewCommande_Click()
DoCmd.GoToRecord , , acNewRec
If Me.NewRecord Then
Me.DateCommande.SetFocus
Me.Dirty = True
VarNCommande = Me.IdCommande
Me.Requery
End If

Merci


"Jean" a écrit dans le message de
news: 006401c3b44b$faf51b20$
Access ne peut pas enregistrer un record si tu saisi sur
une clé primaire une donnée en double.

Vérifie que tes champs sont en clé primaire (petite clé
qui apparait à gauche du champ en création) et que tu a
bien sélectionné sans doublon.

Sinon tu appuie sur la petite clé dans le menu de table
pour la poser.

Si tu ne prend que l'option sans doublon sans définir de
clé primaire, c'est normal qu'il enregistre en double.




Avatar
André Houssonloge
Bonjour,

je clic sur un bouton "New commande" et je veux que mon record soit
immédiatement validé pour m'envoyer un formulaire indépendant qui me servira
à enregistrer le détail de la commande créée juste avant Si je ne fais pas
cela, je n'ai pas la valeur de mon IdCommande pour le lien avec la table des
DétailsCommandes.

Merci pour les explications préalables.

En espérant avoir expliqué plus ou moins bien mon cas.

Je suis de temps en temps sous Access...

Merci

André Houssonloge


"Raymond [mvp]" a écrit dans le message de
news:
Bonsoir.

si tu dois tester si la date est en doublon il faut le faire dans
l'événement beforeupdate du controle date. tu lances un dcount ou un
dlookup

sur le champ date, dans la table avec le critère NPersonne = me.NPersonne
.

dans ta procédure, tu te positionnes sur un nouvel enregistrement et
ensuite

tu testes si tu es dessus, pourquoi ?
tu mets dirty à true , pourquoi ?
comment le varncommande peut-il être chargé alors qu'il n'y a pas eu de
saisie encore ?
pourquoi un requery ?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"André Houssonloge" a écrit dans le message de
news:
Merci pour ces précisions.

Effectivement c'est une clé sans doublon, mais ce n'est pas la clé
primaire.

Voici le code qui doit créer la commande

Private Sub InsertNewCommande_Click()
DoCmd.GoToRecord , , acNewRec
If Me.NewRecord Then
Me.DateCommande.SetFocus
Me.Dirty = True
VarNCommande = Me.IdCommande
Me.Requery
End If

Merci


"Jean" a écrit dans le message de
news: 006401c3b44b$faf51b20$
Access ne peut pas enregistrer un record si tu saisi sur
une clé primaire une donnée en double.

Vérifie que tes champs sont en clé primaire (petite clé
qui apparait à gauche du champ en création) et que tu a
bien sélectionné sans doublon.

Sinon tu appuie sur la petite clé dans le menu de table
pour la poser.

Si tu ne prend que l'option sans doublon sans définir de
clé primaire, c'est normal qu'il enregistre en double.