Erreur dans BASE : Statut SQL: S0011 Code d'erreur: -170

Bonjour,

Je suis un nouvel utilisateur de Libre Office BASE.
J’essaie de créer une base pour gérer les adhérents de mon association.

Je suis bloqué sur la création d’un lien entre 2 tables avec le massage suivant :
Primary or unique constraint required on main table: “FONCTIONS” in statement [ALTER TABLE “ADHERENTS” ADD FOREIGN KEY (“NUM_Ectien”) REFERENCES “FONCTIONS” (“NUM_ECTIEN”)]

Je cherche à établir une relation avec le champ NUM_Ectien (format NUMERIC sur une longueur de 5).
J’ai bien vérifié que les champs des deux tables étaient de format identique.
Je ne comprend pas le blocage. Est ce que quelqu’un peux m’aider ?
Merci par avance,

en PJ ma base…
Base_Adhérents_ECTI.odb

Bonjour,

je en suis pas un spécialiste de Base mais je remarque déjà que le champ ID_Adherent devrait avoir une valeur automatique.
Base se plaint qu’il n’y a pas de champ primaire ou unique dans la table FONCTIONS.
Clic droit sur le début de la ligne NUM_ECTIEN et cocher clé primaire.

Il est maintenant possible de créer la relation.

Bon courage, Gérard

Bonjour Gérard,
J’ai répondu à ta réponse en répondant à ma question.
Je ne sais pas si c’est la bonne technique car je ne vois pas ce complément.
Cdlt

Bonjour Gérard,

Merci d’avoir regardé mon problème.
J’ai corrigé et mis la valeur automatique sur ID_Adhérent.
Par contre le problème existe toujours lorsque je veux lier les 2 tables avec NUM_ectien.
Concernant la table fonction, j’ai mis en clé primaire les 2 champs (Num_Ectien ET Code_FCT) car il peut y avoir plusieurs fonctions pour un Ectien (on le voit en regardant la vue ébauche d’Index).
Je pense que c’est pour cela que la coche “clé primaire” n’apparaît pas lorsque on regarde individuellement les champs.

Donc, problème toujours d’actualité :frowning:

Cordialement,
Yves

Là, ça va dépasser mes compétences, je n’ai jamais mis deux colonnes en primaire. La solution est habituellement d’avoir un champ primaire pour la table et un index sur deux colonnes, la clé étrangère n’est pas forcément primaire. Comme je n’ai pas compris ce qu’est un Ectien…
D’autre part, sur quelle version de LibreOffice travaillez-vous car c’est une base de données embarquées HSQL qui est maintenant déprécié. Ce serait dommage de commencer comme cela.

Gérard

Re, Gérard,

J’ai suivi vos conseils en définissant un id primaire sur la table Fonction et en définissant des index complémentaires. Par ailleurs, j’ai établit la liaison entre mes deux tables par l’ID adhérent qui est une clé primaire en lieu et place du NUM_Ectien. Et du coup la relation s’établit correctement. :slight_smile:

Question Version : je suis parti sur la 6.4.6.2 (64 bits). J’ai volontairement pris celle-ci au lieu de la V7 en pensant qu’elle serait plus stabilisée. Par ailleurs, mes besoins sont assez basiques à priori.
Qu’est ce que vous me conseillez comme version ?

Pour info, un “ECTIEN” est un adhérent de mon association ECTI.
(voir ECTI - Bénévolat Seniors de compétences - Entrer dans une dynamique de partage pour + d’infos)

Merci Beaucoup Gérard pour votre aide.
Cordialement,
Yves

Je ne travaille pas habituellement sur Base car habitué au php/mysql mais je n’aime pas laisse une question sans réponse…
LibreOffice a abandonné HSQL pour Firebird, c’est plutôt cela que je pointe, pas de problème pour la version 6.4.
Après tout dépend de la taille prévue. Je ne me vois utiliser ma bibliothèque (actuellement près de 12000 livres) sous base.
Gérard

Bonjour Gérard,

Merci d’avoir regardé mon problème.
J’ai corrigé et mis la valeur automatique sur ID_Adhérent.
Par contre le problème existe toujours lorsque je veux lier les 2 tables avec NUM_ectien (voir copie écran en PJ).
Concernant la table fonction, j’ai mis en clé primaire les 2 champs (Num_Ectien ET Code_FCT) car il peut y avoir plusieurs fonctions pour un Ectien (on le voit en regardant la vue ébauche d’Index).
Je pense que c’est pour cela que la coche “clé primaire” n’apparaît pas lorsque on regarde individuellement les champs.

Donc, problème toujours d’actualité :frowning:

En PJ, la copie d’écran de la vue “relations”.

Cordialement,
Yves

Problème résolu en organisant les tables avec un champ de clé-primaire en “auto-remplissage” ce que sait très bien faire le logiciel Base.