2010-01-07 3 views
0

que je fais une petite base de données relationnelle, être utilisée par une personne sur un seul ordinateur. J'ai choisi la base d'OpenOffice.org (version 3.1.1) parce que c'est gratuit et devrait être plus que suffisant pour ce cas. La version simplifiée de mon problème est:Mettre en œuvre simple plusieurs à-plusieurs dans un formulaire dans la base de OpenOffice.org

J'ai une table articles, avec des colonnes: ID, titre, contenu, etc ....
J'ai un tableau de mots-clés avec des colonnes: ID, mot-clé.
J'ai une table de relations avec des colonnes: ID, ArticleID, KeywordID

Juste un exemple basique et classique d'une relation plusieurs-à-plusieurs. Puis j'ai créé un formulaire (pour l'utilisateur utilisant la base de données) en utilisant la 'Vue de conception' dans Base et lié à la table Articles, qui fonctionne bien, et me permet d'afficher, modifier et créer des lignes dans la table Articles .

Mon problème est comment inclure la relation aux mots-clés dans cette même forme. C'est-à-dire que je souhaite que l'utilisateur puisse voir et choisir quel (s) mot (s) -clé (s) appartient à l'article en cours de visualisation dans le formulaire.

Le nombre de mots-clés est fini (probablement 5-15) si cette matière. Une configuration préférée serait une liste de mots-clés (liée dynamiquement à la table Mots-clés) dans le formulaire mentionné précédemment que j'ai déjà créé avec une case à cocher devant chaque mot-clé

J'ai essayé Google tout mots-clés possibles et j'ai trouvé rien de applicable à mon cas. Je crois que la réponse est en quelque sorte en utilisant SubForms, ou peut-être une syntaxe SQL que je ne connais pas. Toute aide appréciée.

Répondre

1

J'ai fait un peu plus de recherche et finalement trouvé une solution.

Un fil expliquant cette questions très (entre autres questions), la création de formulaire pour une base de données contenant plusieurs à-plusieurs dans la base à l'aide d'une table du milieu, se trouve à:

http://user.services.openoffice.org/en/forum/viewtopic.php?p=16159#p16159

A Exemple de base de données avec un formulaire fonctionnel par l'un des affiches du fil ci-dessus (DrewJensen) peut être trouvé et téléchargé à la page 2 du fil posté ci-dessus. (Nommé movies_2.odb)

Une brève description de la solution en utilisant mes exemples de tableaux et des colonnes de poste orginales:
L'astuce réside dans la création d'un sous-forme liée à la table des relations au sein de la forme que j'avais créé . Ce sous-formulaire doit contenir un contrôle de table. Une colonne doit ensuite être créée dans ce contrôle de table. La colonne doit être affectée à la colonne KeywordID. Le champ "Contenu de la liste" pour cette colonne doit alors contenir: SELECT "Mot clé", "ID" FROM "Relations".
(Il suffit de consulter le lien ci-dessus si mes instructions sont cryptiques)

3

Pour répondre à cela dans un peu plus en détail, car il arrive tôt sur la recherche Google, s'il vous plaît se référer à la vidéo suivante de la création des films.fichier ODB à partir de zéro:

http://www.youtube.com/watch?v=GYawYO8u3_s

Quelques autres notes sur la création de ce:

Configuration des tables

  • Les tables doivent en principe avoir une clé primaire entier qui est réglé sur AutoValue
  • La table de liaison doit avoir une clé primaire à plusieurs colonnes et les deux colonnes doivent être des entiers.
  • Les relations de table doivent être définies dans les relations ...
  • de dialogue
  • Les relations disparaissent si les options sont mis à jour changé Aucune action de

Configuration du sous-formulaire

  • Le sous-formulaire de données >> Contenu doit être défini sur la table de mappage
  • Les champs Subform Données> Liaison maître et Liaison esclave doivent être définis sur les champs associés (conformément à la boîte de dialogue Relations ... évoquée ci-dessus)
  • trol doivent être nuls (accent doit être mis sur le sous-masque à l'époque, de telle sorte que le contrôle de la table se situe en dessous du sous-formulaire dans le navigateur Form
  • Une colonne doit être insérée dans le contrôle de table
  • La colonne de données >> champ Données doit être défini sur l'ID des données associées
  • La colonne Données >> Type du contenu de la liste doit être définie sur "sql"
  • La colonne Date >> Liste de contenu doit être définie sur "SELECT" Genre Name "," GenreID " FROM "Genre" "(où Genre Name est le champ pertinent de la table correspondante, GenreID est la clé primaire de cette table, et Genre est la table correspondante)
+0

+1 Merci d'avoir ajouté cette info, heureusement sera utile aux autres. – GummiV

Questions connexes