Doublon access 2 clé primaire

rvdw Messages postés 2 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 26 novembre 2004 - 25 nov. 2004 à 10:55
zenon321 Messages postés 5 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 28 novembre 2004 - 26 nov. 2004 à 22:58
Salut!

Avis au pro access, car je rame!

j'ai créé une table avec 2 clé primaire (champA,ChampB), dans le but d'évité les doublons dans ces 2 champs
Dans ma form, j'ai un textbox (txtChB) qui reprend les données du champB.
Quid:
1)prq lorsque j'entre une valeur dans TxtChB, il ne détecte pas le doublon?(ne fait-il pas un update auto)
2)Après avoir créer une macro access, contenant la commande "requery", lors de son exécution il détecte le doublon, MAIS il interrompt par la boîte à message "action failed" sur le "requery", Quel est la cmd que je dois utilisé pour évité ce prbl?
3) Y a t'il un moyen de ne pas affiché cette boîte sans passé par VBA?

si autre facon de faire ou
si soluce par action VBA sur ce txtchb, je suis preneur

Merci,

3 réponses

cs_Prince Charmant Messages postés 34 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 30 novembre 2004
25 nov. 2004 à 11:23
Salut,

en fait, tu n'as pas forcément besoin de 2 champs pour faire une clé primaire (1 seul suffi et est parfois préférable, question de répercution de taille sur les usages en clés externes).

Sinon, il existe la fonction DLookUp("Champ","Table","Critére") qui va retourné Null si ton critère n'est pas vérifié.
Pour cela, il faut donc créer une Proc Event sur "Perte de Focus" de ta TxtChB. Dedans vérfie simplement que la saisie n'existe pas déjà, du style

Private Sub TxtChB_LostFocus()
  Dim Res As Variant
  
  If TxtChB="" Or IsNull(TxtChB) Then Exit Sub
  Res = DLookup("ChampB","MaTable","ChampB="+Cstr(TxtChB))
  If Not IsNull(Res) Then
    MsgBox "Erreur : "+vbCRLF+"La valeur saisie est déjà utilisée. Veuillez choisir une autre valeur.",vbinformation,"N° déjà utilisé"
    TxtChB.SetFocus
  End If
End Sub


A+
0
rvdw Messages postés 2 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 26 novembre 2004
26 nov. 2004 à 09:26
Prince charmant,

Je viens de faire ton test, mais j'ai le msg d'erreur suivant:

"'Run-Time error 64479'
The expression you entered as a query parameter produced this error: 'the object doesn't contain the automatisation object 'AVA"

où AVA est la valeur du champB de la table.

apparement c un prb de paramètre Est-ce que c le critère qui serait mauvais?? critère: nomchamp=cstr(valeur du txtbox).

@+
0
zenon321 Messages postés 5 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 28 novembre 2004
26 nov. 2004 à 22:58
Pourquoi ne laisses-tu pas access choisir lui-même la clé primaire?
Tu risques d'avoir des difficultés si ta base devient volumineuse, non?
Sinon, si tu y tiens, tu pourrais utiliser la date du jour suivie de caractères alphanumériques qui s'incrémenteraient automatiquement...
Ceci dit, tu es libre.

Sinon, pour éviter l'affichage du message standard, tu peux ajouter une gestion d'erreur à ta procédure:

OnError
MsgBox "Doublon!"
txtChB=""
txtChB.SetFocus

(je n'ai pas testé...)
0
Rejoignez-nous