Creer une référence commune et automatique à plusieurs tables

Fermé
riencompris Messages postés 5 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012 - 3 déc. 2012 à 18:40
 riencompris - 11 déc. 2012 à 11:27
Bonjour,
Je viens d'acheter Access 10.
(Précision, ma dernière utilisation d'une base de données date du logiciel RapidFile)
Je voudrais créer une base de données pour mes livres (4000 unités). Je vais me lancer comme bouquiniste.

J'ai procédé de cette façon:

Création de 26 tables simples pour pouvoir faire du remplissage automatique en liste de choix à une ou plusieurs valeurs.
Table= 01Reflivre ;; 02Rayonnage ;; 03Genrelittéraire ;; 04Auteur ;; 05Villedition ;; 06editeur et ainsi de suite. Chacune de ces tables comportant 2 champs (un champ ID en Numauto et un champ Texte avec les descriptifs type, toutes indexées sans doublon)

Création de 8 tables plus importantes:
50Entrelivre ;; 51Livre ;; 52Relieur ;; 53Illustration ;; 54Descriptif ;; 55image ;; etc....
Ces tables ont des champs texte en liste de choix et des champs simples du type Datentrée, Prixachat, etc... et toutes ces tables ont un champ indexé commun nommé " Reference"

Ma démarche est la suivante : Il n'y a qu'un livre et uniquement un livre (le fait de l'avoir en 10 exemplaires ne définit pas qu'il soit identique à un autre (éditeur illustrateur différents, relié ou pas, bon ou mauvais état, etc....)

Je voudrais créer une petite table REFER permettant de créer une référence automatique s'implémentant automatiquement dans le champ Réference des tables 50, 51, 52 ....

Cette référence sera ainsi construite : LAMO1, LPRC2, JDBO3, LBDE4 et ainsi de suite.
Les 4 premières lettres provenant d'une liste de choix de 10 valeurs de la table 01Reflivre c'est donc une liste de choix à valeur unique.
Le chiffre sera un numéro auto de la nouvelle table REFER.

Mon problème est de créer la référence dans la table REFER et de la dupliquer automatiquement dans les champs Reference des tables 50, 51, 52, etc... :

En champ calculé []&[] dans une table, je ne peux pas l'utilisé pour une relation 1-1.
En extraction de valeur "gauche([];4)" d'une liste de choix au format texte: il ne reconnait pas le résultat (extraction d'une valeur d'une liste de choix)pour une relation 1-1

Si quelqu'un(e) avait une solution simple et pas trop compliquée.

Merci pour vos réponses. Christophe





A voir également:

20 réponses

tessel57 Messages postés 26 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 6 décembre 2012 4
3 déc. 2012 à 22:54
Bonsoir,
Il me semble que ta base est bien compliquée pour pas grand-chose, et qu'elle va être très lourde inutilement. 26 tables pour un répertoire !!!! ... Diantre !
Je ne vois pas l'intérêt de construire des tables à 2 champs (Id + libellé unique) sauf si ce libellé est trop long, mais est-ce bien le cas s'il ne s'agit que de la ville de l'édition, le nom du graveur, etc. Il paraîtrait plus simple de rentrer ces données directement dans la table principale par l'intermédiaire d'une liste de choix ouverte qui se compléterait à mesure que de nouveaux noms sont rentrés. Cela au moins pour les noms simples qui peuvent être dupliqués facilement, la base serait allégée d'autant. A priori les liaisons entre tables sont plutôt faites pour les cas où plusieurs données renvoient à une même, par exemple nom + adresse + tél + Email etc.
Par ailleurs, les champs calculés n'ont rien à faire dans une table parce qu'ils sont justement conçus pour alléger la table en combinant des données qui y figurent séparément. Idem pour les extractions du type "Gauche( [.....], ??)"
Enfin, ta table REFER, la question à se poser, et que je me pose, n'est pas "Comment la construire?", mais "A quoi sert-elle ? Et comment vais-je l'utiliser ?" . Bien que t'ayant lu avec attention je n'ai pas compris. Bien à toi. Et si tu peux répondre à ces questions, je ferais de mon mieux pour essayer de t'aider.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
4 déc. 2012 à 00:42
Bonjour
https://www.cjoint.com/?BLeaLVt2VeE
Une petite base sur bibliotheque
0
tessel57 Messages postés 26 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 6 décembre 2012 4
4 déc. 2012 à 01:20
A regarder. Un bon exemple même si elle n'est pas ce que tu souhaites exactement. Mais un nbre réduit de tables (4) dont une table Aller-Retour (2 champs ; ISBN et Id Auteur) qui facilite les passages entre les auteurs et les ouvrages, et réciproquement, puisque ils ont choisi de ne pas lier un ouvrage directement à son auteur mais à son ISBN et à son éditeur.
0
riencompris Messages postés 5 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012
4 déc. 2012 à 09:51
Bonjour Tessel et Castours,
Je vous remercie pour vos réponses.
J'ai regardé l'exemple, mais j'ai très peu de livres avec un numéro ISBN ( moins d'une cinquantaine). Je n'ai que des livres anciens publiés avant 1940, principalement relié, voir broché ou en feuille, avec ou sans boîtage etc...

Pour décrire correctement un livre, il faut 36 champs. (sans les photos et les codes de référencement pour les sites de vente).
Certains libellés sont très longs (200 caractères) et répétitifs.

Pour compléter une liste de choix, je préfère utiliser des formulaires séparés, car avec le temps je peux avoir (DUPONT, Marie et DUPONT Marie qui sont le même auteur mais prennent 2 lignes à cause de la Virgule après DUPONT) donc dans une recherche par auteur je perdrais virtuellement un livre.

Intellectuellement, on ne peut pas mémoriser plus de 500 livres, donc ma référence principale me sert à trouver rapidement " quel type de livre et quel rayonnage) Ex: LBCC (Livre Broché Couvert Cristal) ; LCPL (Livre Collection PLeiade) ; LPRC (Livre Pleine Reliure Cuir).. etc.. et se trouvent donc à tel endroit du rayonnage.

Voilà pourquoi je veux une référence 4 lettres et incrément auto.

J'ai 8 tables principales (01Reference, 02Livre, 03Relieur, 04Illustrateur, 05Descriptif, 06image, 07Sitevente, 08Vente). Il est certain que je peux me contenter de 2 tables, mais elle risque d'être très lourdes et difficilement publiable ultérieurement sur un site web perso.

Si vous le souhaitez, je peux vous envoyer la structure de la base.

J'ai essayé de créer cette référence par des requêtes, j'obtiens le résultat souhaité, mais je n'arrive pas lier le résultat aux autres tables.

Merci pour vos réponses et bonne journée sous le soleil.

Christophe
0
tessel57 Messages postés 26 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 6 décembre 2012 4
4 déc. 2012 à 23:34
Bonsoir,
Bien évidemment la base que t'as donnée Castours est un modèle et non pas une base à prendre telle quelle. Il ne faut pas s'attacher à l'ISBN mais plutôt regarder comment chacune des tables est construite et comment elles sont liées les unes aux autres, car c'est bien là la question fondamentale et le fait que tu aies besoin de 36 champs ou plus ne change rien à l'affaire.
La question que tu poses implicitement est d'avoir une référence bibliographique qui soit en même temps référence informatique; et je crois que c'est une erreur. En l'occurrence, je pense que tu devrais garder ton Id de livre (N°Auto) qui sera toujours invisible, et distincte ta référence bibliographique, visible, laquelle peut être absente de tes tables mais apparente pour l'utilisateur-lecteur. Pour cela il suffit que tu aies 4 champs de lettres A, B, C, D et un champs numérique que tu concatènes avec "&". Mais ça, apparemment tu sais faire; par contre ce que tu ne sais peut être pas, c'est que Access te permets des listes de choix de valeurs à champs multiples qui te permettent de rentrer une valeur dans le champs de ton formulaire mais de le faire figurer sous une autre valeur dans ta table; la seule chose à ne pas oublier est qu'alors ta liste de choix est fermée et que tu ne peux pas entrer de nouvelles valeurs à mesure que ta table prends de l'importance; il te faut alors une table annexe pour pouvoir compléter les valeurs possibles de tes champs. Tu peux alors faire apparaître un classement de tes livres selon le champs concaténé ou indifféremment les champs séparés; ce qui te donne le rayon et l'ordre de ton rangement. Inversement, pour retrouver tes bouquins, comme tu sais à quoi correspondent tes références ABCD###, tu peux les dé-concaténer par l'intermédiaire d'un formulaire de recherche et une requête dont la table de base est la requête précédente comportant les opérations "gauche([...], 1,1)", "gauche([...], 1,2)", "gauche([...], 1,3)", etc.
A défaut d'avoir complètement répondu à ta question, j'espère avoir pu te donner quelques idées pour te mettre sur la voie. Bon courage !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
5 déc. 2012 à 00:08
Bonjour
Si dans un formulaire, a partir d'un liste deroulante de LPBC, LCPL et la suite, il se crée un champ automatique par exemple LPBC-1, LPBC2, LCPL3 etc
te convient
0
tessel57 Messages postés 26 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 6 décembre 2012 4
5 déc. 2012 à 00:47
Bonsoir Castours,
J'ai bien repéré ta très bonne connaissance de Access; merci de nous en dire plus sur ce "champs automatique", je ne connais pas. Salut !
0
riencompris Messages postés 5 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012
5 déc. 2012 à 09:41
Bonjour, et merci pour vos réponses.

J'ai vu l'utilité des champs à valeurs multiples que j'ai prévus d'utiliser dans certains champs (03genrlittéraire pour Culture; Art; .... sur un même ouvrage)

Pour mettre à jour une table de sélection, j'ai prévu de mettre des contrôles du type lien Hypertexte.

Pour la référence du type LCPL1, il y a un champ Numauto qui s'incrémente à chaque enregistrement LCPL, LAMO, LDRC, etc... exactement comme le dis Castours.

J'ai une table 01RefLivre à 2 champs:
Refliv : au format texte contenant les valeurs LCPL, LDRC, LPRC...etc
DetailRef: L'explicatif du lettrage précédent.
Il n'y a pas de champ Id sur cette table ( 13 références qui en principe n'augmenterons pas, voir très peu)

J'ai commencé à trouver une solution par l'intermédiaire d'un formulaire::

J'ai créé une table REF comprenant les 3 champs suivant : ID (numauto avec index), Reflivre (Texte simple ) et Reference (Texte simple). Sans liste de choix.

Ensuite le formulaire :

Champ Id (basé sur la table REF), numéro auto.

Champ Reflivre, (basé sur la table 01Reflivre) qui là, est une devenu une liste de choix : SELECT [01RefLivre].[Ref01], [01RefLivre].[DetailRef] FROM 01RefLivre ORDER BY [Ref01]; (dans la case (Données/contenu))

Un contrôle Zone de texte (Text9) avec : =Gauche([Reflivre];4) pour extraire la valeur du champ précédent et la renvoyer dans le champ Reflivre de la table REF.

Jusque là pas de souci.

Puis, un autre contrôle Zone de texte (Text18) avec : =[Texte9] & [ID] dans la case (Données/source contrôle) pour concaténer le résultat du contrôle Text9 avec l'ID.

J'ai bien le résultat espéré :

Maintenant, je veux renvoyer le résultat de ce contrôle dans ma table REF champ Reference afin de pouvoir créer mes jointures.
Et c'est là que le bât blesse........

Merci pour vos réponses.

Bonne journée, Christophe
0
riencompris Messages postés 5 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012
5 déc. 2012 à 09:54
Re Bonjour,
Le fond de cette référence est la suivante:
Pouvoir exporter/sauvegarder chaque table et dont le lien entre ces tables (50,51,52...) est cette référence.
Si demain, le logiciel de création de cette base de données n'est plus mis à jour et que l'évolution du système d'exploitation ne vous permet plus de la lire/utiliser , vous aurez toujours des fichiers texte pouvant être lié.
Les fabricants de logiciel/runtime et autres pilotes disparaissent et ce sont vos porte-monnaie et temps de travail qui trinquent.....

Voili, voilou... Christophe

Bonne journée sous le soleil.
0
tessel57 Messages postés 26 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 6 décembre 2012 4
5 déc. 2012 à 10:54
Bonjour,
Pas facile d'essayer de se représenter un projet sans l'avoir sous les yeux. Si j'ai compris qqch à ta démarche, il te faut contourner ta difficulté en établissant des liaisons multiples entre des champs simples de tes tables plutôt qu'une seule liaison entre tes champs concaténés.
0
tessel57 Messages postés 26 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 6 décembre 2012 4
5 déc. 2012 à 11:32
Pour enregistrer définitivement ta ref concaténée dans ta table Ref, il te faut une requête Mise-à-jour qui te calcule ta référence et la rentre dans ton champs prévu.
0
riencompris Messages postés 5 Date d'inscription lundi 3 décembre 2012 Statut Membre Dernière intervention 5 décembre 2012
5 déc. 2012 à 14:08
Bonjour tessel57,
Exactement.
On ne peut pas créer de liaisons avec des champs calculés et/ou concaténés.
J'ai bien essayé avec une requête Màj, mais elle réajoute les valeurs, de plus il me faut créer les valeurs, puis exécuter la requête puis réouvrir avec le risque d'erreurs de manip/doublon que cela comporte. Pareil avec la requête ajout.

Il me faut trouver une formulation (SQL, VBA ou autre) me permettant de réinscrire automatiquement dans mon champ Reference de ma table REF le résultat calculé du contrôle Text18 situé dans le formulaire.

Si vous le souhaitez, je vous envoie la base.

Bonne journée. Christophe
0
bonjour
Tu peux joindre ta base sur le site
0
Bonjour
http://cjoint.com/?BLfvHhRuSNV
Voici un lien qui te calcule automatiquement une clé pour chaque livre du type
Type LCPL-6
Il est fait a partir du champ ref et du N°Auto
Si tu veux enlever le trait, il faudra modifier le code VBA DuChamp Ref dans le formulaire en mode creation sur evenement
Derriere cette référence tu pourras rentrer les information sur l'ouvrage.
0
tessel57 Messages postés 26 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 6 décembre 2012 4
5 déc. 2012 à 22:31
Je persiste à penser que ce n'est pas la bonne méthode de vouloir établir les liaisons à partir d'un champs calculé ou concaténé: il me parait meilleur de garder ce champs comme une donnée passive et d'établir les liaisons avec les autres champs quitte à en avoir plusieurs, ou encore, ce que je préconiserais, utiliser l'identifiant N°Auto si c'est le bon sens de la liaison. Quant aux re-calculs et risques d'erreurs et doublons, il suffit de demander à la requête de ne calculer votre REF que pour les ouvrages qui en sont dépourvus ( with REF isnull).
Enfin, la requête-ajout est en la circonstance inopérante puisqu'elle ajoute des enregistrements d'une table à une autre. Cela n'a d'intérêt que pour une grande quantité d'enregistrements.
A défaut je veux bien essayer de regarder un exemple.
0
Bonjour
Dans ce que je propose c'est d'avoir un identifiant unique pour chaque ouvrage suivant sont classement. On peut mettre le champ RefLivre comme clé primaire. Ce qui n'est pas fait dans l'exemple envoyé sur ce site.
J'ai proposé une methode de calcul à partir d'une ref de classement, un N°Auto.
Celui ci assure un N° unique dans la combinaison.
0
tessel57 Messages postés 26 Date d'inscription lundi 26 novembre 2012 Statut Membre Dernière intervention 6 décembre 2012 4
6 déc. 2012 à 20:54
Je n'avais pas reçu ta proposition quand j'ai ouvert le site et préparé ma réponse précédente. Ta proposition est très bonne et devrait convenir à RienCompris. Une variante serait de compter les livres référencés AAAA et d'incrémenter de 1 avec la formule DCount("","",""). Pour ma part, je considère la réponse définitive acquise.
0
Bonjour Castour et Tessel,
Je vous remercie pour vos réponses.

""Je persiste à penser que ce n'est pas la bonne méthode de vouloir établir les liaisons à partir d'un champs calculé ou concaténé:""

Ce n'est pas une question de méthode, mais on ne peut pas créer de relation 1 à 1 avec intégrité référentielle à partir d'un champ calculé de table et/ou requête sous Access, j'ai déjà essayé.

Je vous remercie pour le fichier, mais hier j'étais absent toute la journée 5en salle des ventes), cela va être pareil ce jour et demain.

Je vais regarder le fichier ce soir, faire également un essai avec Dcount et je vous dirais lundi ce qui fonctionnne le mieux.

Je vais essayer de vous poster la base.

Bonne journée, Christophe
0
Re,
Voici le lien de la table.

http://cjoint.com/?0LhifwGggq6

Bonne journée.
0
Bonsoir, J'ai regardé votre base avec attention. Bien évidemment mes avis n'engagent que moi; ils ne sont que ceux d'un amateur complètement autodidacte, mais qui pratique la bête depuis une douzaine années par jeu même si j'y passe beaucoup moins de temps maintenant qu'auparavant. D'autres sont beaucoup plus compétents que moi mais j'ai malgré tout qq lumières. Enfin mes observations essaieront de rester purement techniques et je ne jugerai pas du bien fondé de certains choix mais seulement de la manière de procéder.

1 = Absolument proscrire les noms d'objets (tables, requêtes, etc...) et de champs qui comportent des espaces, des accents et tout autre caractère qui demande 2 touches. Ainsi ne pas nommer "08 Ajout du nombre de volume" ou "03 Ajout du genre littéraire" mais "AjoutDuNombreDeVolume" ou bien "08AjoutNombreVolume" et "AjoutGenreLitteraire" , cela facilite bien les choses dans VBA et en cas de passage à un autre format de base ou de version d'Access , la structure de votre base sera beaucoup plus stable, ce qui peut éviter des catastrophes, une expérience m'a suffit avec plus de 3 mois de travail de réécriture de toute une base. Je ne parle que des noms des objets et des champs, pas des valeurs contenues bien sûr.

2 = Vous ne semblez pas avoir saisi l'avantage des listes de choix ouvertes (Propriété "Limiter à liste"), elles permettent d'ajouter toutes les valeurs nécessaires à mesure que le besoin se fait sentir, sans avoir une table annexe puisque la liste de choix se génère à partir des valeurs présentes dans le champs correspondant de la table. Pour éviter que la liste ne présente toutes les valeurs du champs avec les doublons, triplets, quadruplets de la même valeur, il suffit de sélectionner la propriété de la requête de contenu sur "valeurs distinctes". Par ce moyen vous pourrez éviter de multiplier les tables comme "09Langue" ou"03GenreLitter" qui ne sont pas destinées à être démesurées.

3 = Reste le cas des tables annexes dont les champs sont multiples ou destinés à l'être, et celles dont le champs de libellé est important et donc inadéquat à une utilisation en liste de choix ou à tout le moins pour lesquels il est peu judicieux de les reproduire. Dans ce cas, une liste à champs multiple parait plus adaptée, mais vous devez garder à l'esprit que ces listes ne sont pas modifiables directement, vous devez donc ouvrir la liste ou la requête-source pour ajouter les nouvelles valeurs. Vous semblez avoir suivi ce moyen, mais compte-tenu de la mise en forme je me demande si vous n'alourdissez pas inutilement la base en adjoignant un formulaire spécialement créé pour cet usage quand l'ouverture de la table elle-même suffisait, après tout une telle table ne comporte que 2 champs. Par ailleurs, le fait que ces liste de choix sont fermées ne vous empêche pas de définir une requête de mise en ordre pour le contenu.
NB: Access2007 a ajouté une propriété "Autoriser les modifications de la liste des valeurs" et "Formulaire de modification des valeurs" dont j'ignore le fonctionnement parce que précédemment j'utilisais Access2000.

4 = A voir les exemples que vous présentez, je suis conforté dans l'idée que vous devez utiliser l' Id N°Auto pour vos jointures et de n'utiliser votre Référence concaténée que pour votre lecture de bouquiniste. Un code pour l'usage quotidien n'est pas la même chose, et n'a pas à l'être, qu'un code pour l'ordinateur.

5 = Quant à la fonction DCount("","","") +1 , ou bien DLast("","","") +1 , elle vous permettrait une continuité dans la numérotation d'une même référence ABCD, EFGH, mais il faut reconnaître qu'elle serait plus lourde que la reprise du N°Auto, et nécessiterait peut-être l'activation d'un code ou d'une macro pour être certain qu'il vous recalcule à chaque entrée le nombres des saisies précédentes.

6 = Dommage que vous n'ayez joint un modèle complet, même provisoire, du formulaire final et de sa requête-source. Nous aurions pu nous faire une idée plus précise de votre souhait.

Bon courage !
0
Bonjour Tessel57,
Merci pour votre réponse.

J'avais bien noté de faire les corrections nécessaires sur les points 1,2 et3 afin d'améliorer le fonctionnement/utilisation de la base. Par habitude, je règle les soucis les uns après les autres pour ne pas me mélanger les pinceaux.

J'ai utilisé Dlast et Dcount dans le formulaire REFER pour aller sur le dernier enregistrement et compter les enregistrements.

J'utilise l' ID numauto, mais j'ai sans doute mal expliquer mon besoin :
LBDE1 ; LPRC2 ; JDBO3 ; LAMO4 ....
Le chiffre s'incrémente automatiquement puis je choisis ma valeur de 4 lettres et j'ai ma référence.
(Je n'ai pas besoin d'un LBDE1, LBDE2, LBDE3, LAMO1, LAMO2, LAMO3....)

Et dans l'absolu, je veux faire quelque chose de simple à utiliser car je donnerais ce modèle à quelque uns de mes amis.

Bonne journée sous le mistral. Christophe
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
Modifié par castours le 8/12/2012 à 10:40
Bonjour riencompris
Je n'ai pas pu telecharger le lien?
As tu regarder mon exemple?
Il doit repondre a ton besoin
Dans mon exemple tu peux faire LBDE1 ; LPRC2 ; JDBO3 ; LAMO4 ; LBDE5;LPRC7;LBDE8
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
8 déc. 2012 à 18:49
Bonjour
https://www.cjoint.com/?BLisR5jFX2j
Dans ce lien l'exemple modifié.
Ajout d'une liste deroulante et 2 formulaires de recherche.
L'un pour avoir tout les livre de la meme Ref et l'autre recherche d'un livre par sa RefLivre
Toujours pas pu telecharger ton exemple
Guy
0
Bonjour Castour,

Pour le lien, c'est curieux, j'ai du faire "enregistrer la cible sous" pour récupérer le fichier... les mystères de l'informatique...

J'ai utilisé ton exemple, c'est exactement le résultat attendu à 2 détails près:

1- J'aurais souhaité que la "liste de valeurs (LPBC;LCPL;LBCC)" du champ Ref soit plutôt une liste de choix. Si demain on veut ajouter une référence, il faudra aller dans les propriétés du formulaire ce qui ne sera pas à la portée d'un de mes collègues.

2- J'ai ajouté une table T_auteur à ton exemple avec 3 champs, ID, Refliv et Auteur puis j'ai essayé de créer une relation entre le Reflivre des 2 tables. Il me la refuse en Intégrité référentiel pour " Index unique introuvable".
Dans le pire des cas je ferais une relation sur l'ID avec une requête de recopie de la référence dans les autres tables.

Par contre j'ai réussi la manip avec un formulaire, il me faut maintenant un bout de code pour transférer ce le résultat dans la table.

Voili, voilou, Bonne journée. Christophe
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
8 déc. 2012 à 15:12
Tu peux remettre ta base complete sur le site pour pouvoir l'ouvir.
Par je ne sais pas le choix que tu veux faire par la suite.
Pour moi, il vaudrait mieux de faire une relation 1 a plusieurs entre auteur et livre sur le principa d'un auteur plusieurs livres.
Maintenant est ce qu'un auteur peut avoir plusieur reference?
Merci
0
Re-Bonjour, Je me permets d'ajouter mon grain de sel.
Le modèle de Castour est excellent et mon ajout n'était qu'une suggestion pour le cas où tu aurais voulu une numérotation suivie dans les références alphabétiques.
Pour ce qui est du choix de ces références, Castours t'as mis une liste de valeurs pour rester simple, il te suffit de changer la propriété "Origine Source" en "Table/requête" au lieu de "Liste valeurs", et d'entrer la requête de sélection dans "Contenu" =
"SELECT DISTINCT T_Livres.Ref FROM T_Livres ORDER BY T_Livres.Ref" .
Avec celle-là ton problème sera résolu et tout le monde pourra l'utiliser sans ouvrir des propriétés de formulaires. Pour ce qui est du code VBA de la concaténation je te suggère de l'intégrer plutôt dans la propriété "Après MaJ", ce qui est logique.

2_: Quant à ta liaison elle me parait bizarre. Tu veux entrer la RefLiv dans la table T_Auteur, c'est le contraire qu'il te faut pour avoir un lien un_à_plusieurs puisque tes auteurs ont écrit plusieurs ouvrages. Pour cela tu as plusieurs solutions; soit un formulaire Auteur avec un sous-formulaire Ouvrages qui te sort tous les ouvrages que tu as pour le même auteur, soit un champs Auteur dans ton formulaire Livre qui est alors une liste de choix à champs multiples et qui te présente le nom de l'auteur mais qui travaille avec son Id.
Bonne journée
0
Re Tessel 57,
Il n'y a pas de souci "grain de sel"

Pour le point 2 : Ton raisonnement est exact pour une bibliothèque de prêt ou autre. Là, je vends 1 livre (une référence). Comme je l'ai dis au début, je peux avoir 5 exemplaires du même Titre/Auteur et ils seront tous différents physiquement. Après je ferais des Requêtes/Formulaire pour Auteur / Editeur / Illustrateur / Relieur ..... Un acheteur de livre peut être soit un lecteur/chercheur soit un collectionneur par Auteur/Editeur/ Année Ed./Relieur/Illustrateur etc...

Pour le point 1 : Déjà fait, mais du coup je ne peux créer de relation 1-1 avec intégrité référentielle, Access ne l'accepte pas.

Voila la réponse :
Me![Nom du champ de la table stockant le calcul] = Me![Nom du champ calculé du formulaire]
A intégrer dans le code du du formulaire et non pas du contrôle

Merci le Grenier Access.

Je vous souhaite à tous deux un excellent weekend sous le soleil, et encore merci.

Christophe
0
Je crois avoir enfin compris ton problème par delà les réponses qu'on a pu te donner jusque là. Mais du coup la question est celle de la recherche d'un ouvrage, càd les requêtes et non pas le référencement. Puisque chaque livre est identifié par son Id N°Auto ET par sa REF AlphaNumérique laquelle est unique qqsoit le bouquin il te faut faire travailler tes requêtes avec l'Id numérique, quitte à les masquer, pendant que les utilisateurs raisonnent en terme de Ref AlphaNumérique. Mais je le répète ce n'est pas une question de liens mais de détermination de l'entrée du critère de recherche, La REF AlphaNumérique n'étant alors qu'un nom particulier parmi d'autres qui te permets de situer le livre dans tes rayonnages. Ton erreur, si je peux me permettre, est d'assimiler mentalement répertoire informatique et répertoire de l'emplacement physique. Salut
0
Bonjour Guy,

J'ai téléchargé ton exemple et je vais le sauvegarder.

Voici un nouveau lien pour la table.

http://cjoint.com/?0LjkvXSshRk

J'espère qu'il va fonctionner.

Je la mettrais à jour au fur et à mesure de son avancement.
Bon Dimanche Christophe
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
9 déc. 2012 à 12:01
Bonjour
Je ne sais pas comment tu fais pour le lien mais il faut le compresser en en un fichier zip puis faire le lien.
Cjoint ne reconnait pas les fichiers MDB
Bon dimanche
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
11 déc. 2012 à 10:34
Bonjour
Problemes résolus?
0
Bonjour Castours,
Oui, cela fonctionne parfaitement.
Maintenant, je suis entrain de rationaliser les tables et formulaires pour éliminer les doubles emplois,
Quand j'aurais fini le formulaire d'entrée des livres, je le posterais sur cjoint.
Ensuite je ferais les requêtes d'interrogation, puis les tables/formulaires Client/Fact.

J'avais oublier de préciser que la référence LAMO1, LBDE2, JDBO3 allait me servir également à numéroter les images.

Voili, voilou... Merci encore et bonne semaine. Christophe
0