OVH Cloud OVH Cloud

Sous-formulaires et relations

17 réponses
Avatar
Jean-Marc
Bonjour à toutes et à tous,

Une question probablement simple pour certains, mais sur laquelle je butte :
Je dois faire une bdd pour saisir des points (numériques) qui se trouvent
dans des secteurs (numériques).
Il y a donc une table "PP" avec les infos sur les points et une table
"Secteurs" avec des infos sur les secteurs.
Les clés primaires sont NrPoint et NrSecteur
Toutefois, il existe des points à la frontière des secteurs. Ils sont donc
dans plusieurs secteurs.
J'ai créé un formulaire pour la saisie des points.
Dans ce formulaire, un sous-formulaire pour les secteurs dans lesquels se
trouvent ces points.

C'est LÀ le problème.
Lorsque je saisis un point, pas de pbl. Mais lorsque j'essaye de mettre un
numéro de secteur dans le sous-formulaire, je reçois invariablement le
message : "Modification non effectuée : risque de doublons dans le champs
index, clé primaire ou relation interdisant les doublons. Modifiez les
données des champs contenant les doublons, enlevez ou redéfinissez l'index
pour permettre les doublons et recommencez."
Je butte sur ce message depuis ce matin.
C'est quoi qui n'est pas correct dans les tables, dans ma relation ou dans
mon formulaire ?

Comme tous les numéros de secteurs sont déjà dans la table avec leurs
spécifications, j'ai une relation un à plusieurs où j'inclus tous les
enregistrements de la table PP et les enregistrements de la table Secteurs
pour lesquels les champs joints sont égaux.

Merci de vos z'avis z'avisés,
Jean-Marc

10 réponses

1 2
Avatar
Tisane
Bonjour Jean-Marc,

Une question probablement simple pour certains, mais sur laquelle je butte
:
Je dois faire une bdd pour saisir des points (numériques) qui se trouvent
dans des secteurs (numériques).
Il y a donc une table "PP" avec les infos sur les points et une table
"Secteurs" avec des infos sur les secteurs.
Les clés primaires sont NrPoint et NrSecteur
Toutefois, il existe des points à la frontière des secteurs. Ils sont donc
dans plusieurs secteurs.
J'ai créé un formulaire pour la saisie des points.
Dans ce formulaire, un sous-formulaire pour les secteurs dans lesquels se
trouvent ces points.
C'est LÀ le problème.
Lorsque je saisis un point, pas de pbl. Mais lorsque j'essaye de mettre un
numéro de secteur dans le sous-formulaire, je reçois invariablement le
message : "Modification non effectuée : risque de doublons dans le champs
index, clé primaire ou relation interdisant les doublons. Modifiez les
données des champs contenant les doublons, enlevez ou redéfinissez l'index
pour permettre les doublons et recommencez."
Je butte sur ce message depuis ce matin.
C'est quoi qui n'est pas correct dans les tables, dans ma relation ou dans
mon formulaire ?
Comme tous les numéros de secteurs sont déjà dans la table avec leurs
spécifications, j'ai une relation un à plusieurs où j'inclus tous les
enregistrements de la table PP et les enregistrements de la table Secteurs
pour lesquels les champs joints sont égaux.


Dans ton sous-formulaire, le champ numéro de secteur est bien celui de la
table côté "plusieurs" de la relation ?

--
Tisane

Avatar
Jean-Marc
J'ai essayé les 2 côtés, et le message est toujours le même.


"Tisane" a écrit dans le message de news:

Bonjour Jean-Marc,

Une question probablement simple pour certains, mais sur laquelle je
butte :
Je dois faire une bdd pour saisir des points (numériques) qui se trouvent
dans des secteurs (numériques).
Il y a donc une table "PP" avec les infos sur les points et une table
"Secteurs" avec des infos sur les secteurs.
Les clés primaires sont NrPoint et NrSecteur
Toutefois, il existe des points à la frontière des secteurs. Ils sont
donc dans plusieurs secteurs.
J'ai créé un formulaire pour la saisie des points.
Dans ce formulaire, un sous-formulaire pour les secteurs dans lesquels se
trouvent ces points.
C'est LÀ le problème.
Lorsque je saisis un point, pas de pbl. Mais lorsque j'essaye de mettre
un numéro de secteur dans le sous-formulaire, je reçois invariablement le
message : "Modification non effectuée : risque de doublons dans le champs
index, clé primaire ou relation interdisant les doublons. Modifiez les
données des champs contenant les doublons, enlevez ou redéfinissez
l'index pour permettre les doublons et recommencez."
Je butte sur ce message depuis ce matin.
C'est quoi qui n'est pas correct dans les tables, dans ma relation ou
dans mon formulaire ?
Comme tous les numéros de secteurs sont déjà dans la table avec leurs
spécifications, j'ai une relation un à plusieurs où j'inclus tous les
enregistrements de la table PP et les enregistrements de la table
Secteurs pour lesquels les champs joints sont égaux.


Dans ton sous-formulaire, le champ numéro de secteur est bien celui de la
table côté "plusieurs" de la relation ?

--
Tisane



Avatar
Dan
Salut Jean-Marc,

Perso, j'aurais créé trois tables :
- secteurs (N° de secteur, description,...)
- points (N° de point, description...)
- sectorisations (N° de point, N° de secteur, description...)
Ce qui te permettrait de faire des relations de 1 point à plusieurs
secteurs...

A+ Dan

"Jean-Marc" a écrit dans le message de
news: bdlhg.22012$
J'ai essayé les 2 côtés, et le message est toujours le même.


"Tisane" a écrit dans le message de news:

Bonjour Jean-Marc,

Une question probablement simple pour certains, mais sur laquelle je
butte :
Je dois faire une bdd pour saisir des points (numériques) qui se
trouvent dans des secteurs (numériques).
Il y a donc une table "PP" avec les infos sur les points et une table
"Secteurs" avec des infos sur les secteurs.
Les clés primaires sont NrPoint et NrSecteur
Toutefois, il existe des points à la frontière des secteurs. Ils sont
donc dans plusieurs secteurs.
J'ai créé un formulaire pour la saisie des points.
Dans ce formulaire, un sous-formulaire pour les secteurs dans lesquels
se trouvent ces points.
C'est LÀ le problème.
Lorsque je saisis un point, pas de pbl. Mais lorsque j'essaye de mettre
un numéro de secteur dans le sous-formulaire, je reçois invariablement
le message : "Modification non effectuée : risque de doublons dans le
champs index, clé primaire ou relation interdisant les doublons.
Modifiez les données des champs contenant les doublons, enlevez ou
redéfinissez l'index pour permettre les doublons et recommencez."
Je butte sur ce message depuis ce matin.
C'est quoi qui n'est pas correct dans les tables, dans ma relation ou
dans mon formulaire ?
Comme tous les numéros de secteurs sont déjà dans la table avec leurs
spécifications, j'ai une relation un à plusieurs où j'inclus tous les
enregistrements de la table PP et les enregistrements de la table
Secteurs pour lesquels les champs joints sont égaux.


Dans ton sous-formulaire, le champ numéro de secteur est bien celui de la
table côté "plusieurs" de la relation ?

--
Tisane







Avatar
Jean-Marc
Salut Dan,

Je ne vois qu'à moitié ce dont tu parles.
Dans la table sectorisation, tu mets quoi ? Pq une description ?
Il y aura plusieurs fois le même point avec plusieurs fois le même secteur,
c'est bien ça ?
Enfin, pas dans le même enregistrement bien sur, je veux dire dans le style
du tableau ci-dessous.

Point Secteur
100 10
100 12
101 10
102 12
103 12
103 14


Est-ce que j'ai bien compris ?
Mais je ne comprends toujours pas le but du champs description puisque cette
table serait "juste" une table intermédiaire entre la table de points et la
table de secteurs, avec leurs descriptions respectives.

Merci de ton aide,
Jean-Marc

"Dan" a écrit dans le message de news:
44867ac1$0$928$
Salut Jean-Marc,

Perso, j'aurais créé trois tables :
- secteurs (N° de secteur, description,...)
- points (N° de point, description...)
- sectorisations (N° de point, N° de secteur, description...)
Ce qui te permettrait de faire des relations de 1 point à plusieurs
secteurs...

A+ Dan

"Jean-Marc" a écrit dans le message de
news: bdlhg.22012$
J'ai essayé les 2 côtés, et le message est toujours le même.


"Tisane" a écrit dans le message de news:

Bonjour Jean-Marc,

Une question probablement simple pour certains, mais sur laquelle je
butte :
Je dois faire une bdd pour saisir des points (numériques) qui se
trouvent dans des secteurs (numériques).
Il y a donc une table "PP" avec les infos sur les points et une table
"Secteurs" avec des infos sur les secteurs.
Les clés primaires sont NrPoint et NrSecteur
Toutefois, il existe des points à la frontière des secteurs. Ils sont
donc dans plusieurs secteurs.
J'ai créé un formulaire pour la saisie des points.
Dans ce formulaire, un sous-formulaire pour les secteurs dans lesquels
se trouvent ces points.
C'est LÀ le problème.
Lorsque je saisis un point, pas de pbl. Mais lorsque j'essaye de mettre
un numéro de secteur dans le sous-formulaire, je reçois invariablement
le message : "Modification non effectuée : risque de doublons dans le
champs index, clé primaire ou relation interdisant les doublons.
Modifiez les données des champs contenant les doublons, enlevez ou
redéfinissez l'index pour permettre les doublons et recommencez."
Je butte sur ce message depuis ce matin.
C'est quoi qui n'est pas correct dans les tables, dans ma relation ou
dans mon formulaire ?
Comme tous les numéros de secteurs sont déjà dans la table avec leurs
spécifications, j'ai une relation un à plusieurs où j'inclus tous les
enregistrements de la table PP et les enregistrements de la table
Secteurs pour lesquels les champs joints sont égaux.


Dans ton sous-formulaire, le champ numéro de secteur est bien celui de
la table côté "plusieurs" de la relation ?

--
Tisane











Avatar
Dan
Jean-Marc,

Tu as parfaitement compris le principe !
Quant à la présence du champ Description, elle est bien sûr totalement
optionnelle !

Du coup, dans ton formulaire des Secteurs, un sous-formulaire SFSecteurs te
permettrait de saisir ou de consulter les points du secteur, et dans ton
formulaire des Points, un sous-formulaire SFPoints te permettrait de saisir
ou de consulter les secteurs du point.

A+ Dan
Avatar
Jean-Marc
Re-salut Dan,

J'ai essayé cela.
J'ai créé la table Sectorisation avec un champs numauto comme clé primaire
(quoi que je ne sois pas certain que ce soit nécessaire), un champs secteurs
et un champs points.
Dans mes relations, j'ai fait un lien un-à-plusieurs entre la table Points
et la table Sectorisation et un autre lien un-à-plusieurs entre la table
Secteurs et la table Sectorisation.
Par contre, j'ai toujours un problème dans mon formulaire.
J'ai un formulaire basé sur la table Points avec le numéro de point et un
sous-formulaire dans lequel je veux pouvoir entrer les secteurs dans
lesquels les points se trouvent. Ce sous-formulaire doit être de quelle
table ? Sectorisation, parce qu'avec Secteurs ça ne marche pas. ?

Merci,
Jean-Marc


"Dan" a écrit dans le message
de news: 4486d3e9$0$866$
Jean-Marc,

Tu as parfaitement compris le principe !
Quant à la présence du champ Description, elle est bien sûr totalement
optionnelle !

Du coup, dans ton formulaire des Secteurs, un sous-formulaire SFSecteurs
te permettrait de saisir ou de consulter les points du secteur, et dans
ton formulaire des Points, un sous-formulaire SFPoints te permettrait de
saisir ou de consulter les secteurs du point.

A+ Dan



Avatar
Dan
"Jean-Marc" a écrit dans le message de
news: KMAhg.25042$
Re-salut Dan,

J'ai essayé cela.
J'ai créé la table Sectorisation avec un champs numauto comme clé primaire
(quoi que je ne sois pas certain que ce soit nécessaire), un champs
secteurs et un champs points.
Dans mes relations, j'ai fait un lien un-à-plusieurs entre la table Points
et la table Sectorisation et un autre lien un-à-plusieurs entre la table
Secteurs et la table Sectorisation.
Par contre, j'ai toujours un problème dans mon formulaire.
J'ai un formulaire basé sur la table Points avec le numéro de point et un
sous-formulaire dans lequel je veux pouvoir entrer les secteurs dans
lesquels les points se trouvent. Ce sous-formulaire doit être de quelle
table ? Sectorisation, parce qu'avec Secteurs ça ne marche pas. ?

Merci,
Jean-Marc




D'abord, tes tables ont l'air OK... La clé en NumAuto, pour moi c'est bon;
les champs Secteur et Point de la table sectorisation doivent être Indexés
avec doublons...

Ensuite, ton formulaire Points :
- le form principal doit être basé sur la table Points
- le sous form doit être basé sur la table Sectorisations
- dans champ père et champ fils (propriétés du sous-form), tu dois avoir
respectivement le champ Point et le champ Secteur de la table Sectorisation.
- pour saisir le secteur, je te propose une liste déroulante, basée sur la
table Secteurs, dans laquelle tu récupères le code du Secteur...


A+ DAn

Avatar
Jean-Marc
Bon,
J'ai fini par trouver.
En effet en mettant Sectorisation en sous-formulaire, ça fonctionne.
Il me reste un tout petit problème à régler :
Dans le formulaire Points, je peux sélectionner les secteurs auxquels
appartiennent le point parce que ma table secteurs est déjà alimentée.
Mais dans l'autre sens ça ne fonctionne pas, parce que les points ne sont
pas encore créés dans la table de points.
Pourquoi ?
Parce que les secteurs utilisés démarrent à 1 et montent. C'est donc facile
à créer et on n'a pas trop de pertes.
Pour les points, il y a plus de points qui "tombent" que de points qui
restent (et qui doivent donc être encodés). Par exemple, je peux avoir les
points 15675, puis passer au 16385 puis au 16386.
Si je travaille à partir de la table des points, pas de pbl, puisque je crée
le point dans le formulaire principal, mais ça m'empêche de créer le point à
partir du formulaire des secteurs.

Est-de réalisable ?
Je suppose que c'est "juste" une question de liaison et d'intégrité. Comment
faire pour que tout ça reste cohérent et utilisable par l'utilisateur Lambda
(qui risque parfois de ne pas se rendre compte qu'il crée un pbl si
l'intégrité n'est plus respectée ?

Merci,
Jean-Marc


"Dan" a écrit dans le message
de news: 4486d3e9$0$866$
Jean-Marc,

Tu as parfaitement compris le principe !
Quant à la présence du champ Description, elle est bien sûr totalement
optionnelle !

Du coup, dans ton formulaire des Secteurs, un sous-formulaire SFSecteurs
te permettrait de saisir ou de consulter les points du secteur, et dans
ton formulaire des Points, un sous-formulaire SFPoints te permettrait de
saisir ou de consulter les secteurs du point.

A+ Dan



Avatar
Dan
Dans ce cas, tu peux verrouiller la saisie dans le form Secteurs : groupe de
propriétés Données du formulaire : Modif, Suppr, Ajout, Entrée de données à
Non...
Le sous-form servira juste à visualiser les points du secteur courant...

A+ Dan
Avatar
Jean-Marc
C'est à peu près ce que j'ai fais, sauf la liste déroulante, puisque chaque
point peut-être attribué à plusieurs secteurs (s'il est sur la frontière de
2 secteurs, il sert aux 2 secteurs et doit donc se retrouver dans les 2). De
même, chaque secteur contient plusieurs points.
Cela fonctionne, maintenant.

Mais là je suis à l'étape suivante et je bute sur autre chose.

Dans chaque secteur il y a un nombre de lots (un champs numérique dans la
table secteur)
Il existe des points avants et des points arrières (un champs oui/non dans
la table Points)

Pour qu'un secteur soit valide, il faut qu'il y ait au moins 1 point par 3
lots. Il faut aussi que 20% des points du secteur soient des points
arrières.
Je pensais créer 2 champs dans le formulaire Secteurs. Dans un champs,
serait écrit qu'il y a un point par X lots dans ce secteur et dans l'autre
champs, le pourcentage de points arrières, mais je bute la requête à faire.


"Dan" a écrit dans le message
de news: 4486de68$0$895$

"Jean-Marc" a écrit dans le message de
news: KMAhg.25042$
Re-salut Dan,

J'ai essayé cela.
J'ai créé la table Sectorisation avec un champs numauto comme clé
primaire (quoi que je ne sois pas certain que ce soit nécessaire), un
champs secteurs et un champs points.
Dans mes relations, j'ai fait un lien un-à-plusieurs entre la table
Points et la table Sectorisation et un autre lien un-à-plusieurs entre la
table Secteurs et la table Sectorisation.
Par contre, j'ai toujours un problème dans mon formulaire.
J'ai un formulaire basé sur la table Points avec le numéro de point et un
sous-formulaire dans lequel je veux pouvoir entrer les secteurs dans
lesquels les points se trouvent. Ce sous-formulaire doit être de quelle
table ? Sectorisation, parce qu'avec Secteurs ça ne marche pas. ?

Merci,
Jean-Marc




D'abord, tes tables ont l'air OK... La clé en NumAuto, pour moi c'est
bon; les champs Secteur et Point de la table sectorisation doivent être
Indexés avec doublons...

Ensuite, ton formulaire Points :
- le form principal doit être basé sur la table Points
- le sous form doit être basé sur la table Sectorisations
- dans champ père et champ fils (propriétés du sous-form), tu dois avoir
respectivement le champ Point et le champ Secteur de la table
Sectorisation.
- pour saisir le secteur, je te propose une liste déroulante, basée sur la
table Secteurs, dans laquelle tu récupères le code du Secteur...


A+ DAn





1 2