{Access} champ clé concqténé est ce faisable?

Résolu/Fermé
Rhyton le boyar - 9 déc. 2009 à 07:16
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 10 déc. 2009 à 10:49
Bonjour,

Je suis en train de concevoir une base pour mon service et j’aurais besoin de conseils :

1. Je souhaite savoir s’il est possible de faire d’un champ concatené un champ clé ?

En effet, quand je remplis mon formulaire, ou le champs clé concaténé s’affiche correctement, dés que je veux passer au sous formulaire suivant, ou quitter il m’affiche le message comme quoi le champ clé ne peut pas contenir une valeur nulle, et effectivement il n’est pas renseigné dans la table quand je l’ouvre.

2. si ce problème n’est pas contournable à cause du caractère clé de ce champ, puis je faire différemment en l’indexant ?

Merci d’avance de votre aide,
A voir également:

3 réponses

OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
9 déc. 2009 à 14:17
Tu parle de l'évenement Avant MAJ non? Oui

Que faudrait il que je mette dedans pour qu'il fasse ce que je veux?

Le nom du contrôle pour lequel la valeur est indispensable dans ta table.
Appelons ce contrôle "txtFKMaTable", tu aurais quelques chose comme :

Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(txtFKMaTable) Then
txtFKMaTable = MaValeur
End If
End Sub

Disons que j'ai par exemple deux tables, une table T_Demande avec comme champ "Code Clt Int" et "Nr Demande" que je concatène pour avoir un "Final Nr D" ce champs devenant ma clé qui est liée avec mise a jour en cascade avec ma deuxième table T_Order-int, ou je retrouve donc mon "Final Nr D" et "Code Buyer" et "Nr Order Int", ce dernier champ étant a son tour la concaténation des deux autre champ de la table 2 et se retrouvant dans la table 3 ...

Si je ne me trompe pas je ne peux pas paramètrer directement dans ma table pour qu'il concatene mes champs, donc je passe par un formulaire. Si ! Vous vous trompez :
1) Aller en mode Design de la table
2) Dans Default value il est possible de mettre une valeur et aussi, une fonction ...
Vous devinez le reste bien entendu, il suffirait de créer une fonction qui retourne cette clé.

Pour être honnête, je pense que vous vous compliquez la vie.
Access peut gérer tout seul les valeurs des Foreign Key en créant un formulaire et un sous-formulaire.
1
Rhyton le boyar
10 déc. 2009 à 10:12
Merci pour ces explication OlivrT,

Je suis un peu novice en BDD et en programmation, je suis d'accord avec toi quand au clé de manière générale mais je dois partir d'une base existante en terme de process et de codification au long du process d'ou ma demande quand à ces possibilité de concaténation, merci en tout cas de tes réponses et du temps que tu m'a accordé,

Rhyton
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
9 déc. 2009 à 09:48
La réponse est oui MAIS c'est inutile. Dans Access tu disposes d'un évènement "Before_Update" dans lequel tu rempliras le champ nécessaire. Dès lors lorsque Access enregistre les données tu n'auras plus le problème, ni de message bien entendu.
0
Rhyton le boyar
9 déc. 2009 à 10:17
Tu parle de l'évenement Avant MAJ non?
Que faudrait il que je mette dedans pour qu'il fasse ce que je veux?

Disons que j'ai par exemple deux tables, une table T_Demande avec comme champ "Code Clt Int" et "Nr Demande" que je concatène pour avoir un "Final Nr D" ce champs devenant ma clé qui est liée avec mise a jour en cascade avec ma deuxième table T_Order-int, ou je retrouve donc mon "Final Nr D" et "Code Buyer" et "Nr Order Int", ce dernier champ étant a son tour la concaténation des deux autre champ de la table 2 et se retrouvant dans la table 3 ...

Si je ne me trompe pas je ne peux pas paramètrer directement dans ma table pour qu'il concatene mes champs, donc je passe par un formulaire.

Là, que dois je remplir, en source controle dans l'onglet donnée, et ensuite dans l'onglet évenement ?

J'ai déjà essayé en source controle de mettre = [Code Clt Int] & [Nr Demande] et ensuite de mettre une macro actualiser dans avant maj mais apparement ça marche pas....

Merci déjà de ta premiere réponse cela confirme déjà que cela doit être faisable,
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
10 déc. 2009 à 10:49
Mais ce n'est pas parce que avant un gars à fait n'importe quoi qu'il faut continuer ... J'ai vu cela des dizaines de fois et à chaque fois que j'ai expliqué à mon client le bien fondé de re-partir sur une bonne base, jamais aucun ne s'y est opposé. D'autant plus que le ou les développeurs qui passeront derrière gagneront en temps aussi et le client y gagnera en argent ... ;-)
Merci de clôturer le call en statut résolut
0