Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2011, 10h55   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2011
Messages : 53
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 53
Points : 11
Points : 11
Par défaut tables modifiables depuis formulaires

Bonjour, j'ai créé un base de données comme ceci:

j'ai les tables suivantes avec leurs attributs:

[Ligne]: CLE= IndiceInterne (numérique)
[Itinéraire]: CLE= ID_Itinéraire (texte), IndiceInterne
[PointArret]: CLE= ID_PA (numérique)
[ArretLigne]: CLE= ID_ArretLigne (numérique), Accessibilité, ID_Itinéraire, ID_PA
[VisiteLigne]: CLE= Date, IndiceInterne
[VisitePointArret]: CLE= ID_Visite(numérique), Date, Pente(numérique), ID_ArretLigne

les liens entre ces tables:

[Ligne]1---n[VisiteLigne]1---n[VisiteArretLigne]
1...........................................................n
|...........................................................|
|...........................................................|
n...........................................................1
[Itinéraire]1----------------------n[ArretLigne]
........................................................n
........................................................|
........................................................|
........................................................1
..................................................[PointArret]


Je souhaite afficher pour une ligne donnée les dates de visite de la ligne et qu'automatiquement les points d'arrets liées à la ligne reprenne ses dates de visites pour que je n'ai qu'à rentrer les valeurs de pentes à chaque point d'arrêt en fonction de la ligne et de la date.

EX de formulaire souahité:

Ligne: 1

dates de visite: 01/01/2011
......................02/02/2011..........(en choisissant cette date j'ai ce qui suit)

Arret................Date..................Pente
arret1............02/02/2011...................
arret2............02/02/2011...................
arret3............02/02/2011...................

et je complète les pentes pour cette date sur le formulaire

Pour le moment j'affiche la ligne et les dates de visite mais je suis obligé de rentrer les points d'arrêts un par un alors que chaque itinéraire est déja définit.
Le problème vient-il des tables et des liens ou bien des requetes et formulaires?

Merci d'avance pour vos réponses
josi1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 12h34   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
bonjour,

Citation:
Envoyé par josi1986 Voir le message
Je souhaite afficher pour une ligne donnée les dates de visite de la ligne et qu'automatiquement les points d'arrets liées à la ligne reprenne ses dates de visites pour que je n'ai qu'à rentrer les valeurs de pentes à chaque point d'arrêt en fonction de la ligne et de la date.
Il faudrait une requête "Ajout" qui pour chaque VisiteLigne créée, remplirait la table VisiteArretLigne avec les arrêts correspondants.

Le problème que je vois c’est que pour une ligne donnée il y a plusieurs itinéraires possibles. Doit-on considérer que lorsqu’on visite une ligne, on visite les arrêts de tous les itinéraires possibles de la ligne ? Ou doit-on plutôt considérer une table [VisiteItineraireLigne] raccordée à [itineraire] ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 14h26   #3
Candidat au titre de Membre du Club
 
Inscription : juillet 2011
Messages : 53
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 53
Points : 11
Points : 11
Bonjour,

Une ligne possède 2 itinéraires, Aller et retour, et lorsqu'une visite est effectuée on passe par tous les points d'arrêts de la ligne.
josi1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 15h01   #4
Candidat au titre de Membre du Club
 
Inscription : juillet 2011
Messages : 53
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 53
Points : 11
Points : 11
j'ai essayé la requête ajout mais rien ne se passe. j'ai suivit les tutoriaux qu'on peut trouver sur le net car je ne l'ai jamais utilisé auparavant.

Si j'ai bien compris je dois ajouter la colonne "date" de visite ligne dans la colonne "date" de visitearretligne ?
josi1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 22h44   #5
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
Citation:
Envoyé par josi1986 Voir le message
Une ligne possède 2 itinéraires, Aller et retour...
Bah oui, suis-je bête

Citation:
Envoyé par josi1986 Voir le message
Si j'ai bien compris je dois ajouter la colonne "date" de visite ligne dans la colonne "date" de visitearretligne ?
Lors d’une visite, tous les arrêts sont visités à la même date, non ?
Dans ce cas, inutile de dupliquer la date de la visite dans [VisiteArretLigne].

Si j’ai bien compris, il s’agit pour une visite donnée,

1°) de récupérer tous les arrêts à visiter (en suivant le chemin VisiteLigne---Ligne---Itinéraire---ArretLigne) et de sélectionner les couples (identifiantVisiteLigne, identifiantArretLigne)

2°) d’insérer les couples sélectionnés au 1°) dans la table [VisiteArretLigne]

Pour 1°), requête de sélection faisant participer les tables jointes : VisiteLigne---Ligne---Itinéraire---ArretLigne avec un critère sur IdentifiantVisiteLigne.

Pour réaliser 2°), basculer la requête en mode "Ajout" et la compléter pour remplir les couples (identifiantVisiteLigne, identifiantArretLigne) de la table [VisiteArretLigne].

Cela te fera une requête à exploiter en VBA dans ton formulaire afin d’automatiser le processus.

à suivre...
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 09h32   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2011
Messages : 53
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 53
Points : 11
Points : 11
Bonjour,

le problème est que quand je fait ma requete ajout il m'ajoute également les données qui sont déja dans la table visitearretligne.
par exemple:

j'ai mis deux dates de visite de ma ligne1
mon formulaire m'affiche bien les deux dates et les points d'arrets liées à la ligne, donc comme ceci:
Ligne: 1

dates de visite: 01/01/2011
......................02/02/2011..........(en choisissant cette date j'ai ce qui suit)

Arret................Date..................Pente
arret1............02/02/2011...................
arret2............02/02/2011...................
arret3............02/02/2011...................


Mais quand je rentre une nouvelle date et que je fait appel à ma requete ajout j'ai bien ma 3eme date qui s'affiche avec les arrets sauf que les données de mes deux premieres dates sont également dupliquées. alors si je rajoute des dates de visites à chaque fois je dupliquerais les données des précédentes dates de visites, en gros j'ai ça:

arret1............01/01/2011...............5
arret1............01/01/2011...............5
arret1............02/02/2011...............5
arret1............02/02/2011...............5
arret1............03/03/2011...............5
arret1............03/03/2011...............5

et si je rajoute une quatrième date j'aurais ceci:

arret1............01/01/2011...............5
arret1............01/01/2011...............5
arret1............02/02/2011...............7
arret1............02/02/2011...............7
arret1............03/03/2011...............6
arret1............03/03/2011...............6
arret1............04/04/2011...............4
arret1............04/04/2011...............4

donc quand j'ai 50 arrets par ligne on image facilement la croissance exponentielle et la saturation
josi1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 11h53   #7
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
Bonjour,

quel est le code SQL de ta requête "Ajout" ?

Quel est le code VBA qui lance la requête ? A quoi ressemble ton formulaire, les contrôles, sous-formulaire,... ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 14h47   #8
Candidat au titre de Membre du Club
 
Inscription : juillet 2011
Messages : 53
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 53
Points : 11
Points : 11
je suis novice avec access et je ne sais utiliser SQL que pour creer des tables. et je n'ai jamais touché à VBA.

Donc quand je cré ma requete ajout le sql qui s'affiche est:

Code sql :
1
2
3
INSERT INTO VisiteArretLigne ( [Date], ID_ArretLigne, ID_Itineraire, Num_Arret, Num_GIPA )
SELECT DISTINCT VisiteLigne.Date, ArretLigne.ID_ArretLigne, ArretLigne.ID_Itineraire, ArretLigne.Num_Arret, ArretLigne.Num_GIPA
FROM (Ligne INNER JOIN (Itineraire INNER JOIN ArretLigne ON Itineraire.ID_Itineraire = ArretLigne.ID_Itineraire) ON Ligne.IndiceInterne = Itineraire.IndiceInterne) INNER JOIN VisiteLigne ON Ligne.IndiceInterne = VisiteLigne.IndiceInterne;

IndiceInterne = ID_ligne
Num_GIPA = ID_pointArret


Ensuite j'ai cré un formulaire ligne car je veux pouvoir rentrer les informations selon la ligne et la date de visite, voici à quoi ressemble mon formulaire (je ne sais pas insérer une image dans la discussion)

Indice interne (le numéro de la ligne)
--->
sous formulaire visite ligne qui affiche date (les différentes dates de visites de la ligne)
--->
sous formulaire visitearretligne qui affiche Date, ID_ArretLigne, ID_Itinéraire, NumeroArret(les arrets ont un numero selon lordre de passage de la ligne), Num_GIPA, Pente
josi1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 09h06   #9
Candidat au titre de Membre du Club
 
Inscription : juillet 2011
Messages : 53
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 53
Points : 11
Points : 11
j'avais oublié le critère sur la l'identifiantde visiteligne qui est la date. donc maintenant j'ai bien les données qui s'ajoute uniquement dans la visite que je souhaite. merci
josi1986 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h27.


 
 
 
 
Partenaires

Hébergement Web