Visites

   visiteurs

   visiteurs en ligne

Sujet n°58 Changer l'ordre des enregistrements d'une Table
    par Magalie le 09/01/2007 : 15:00

Bonjour je commence sur Accès et j'ai le problème suivant :

J'aimerais pouvoir changer l'ordre des enregistrements d'une Table. Je m'explique, j'ai une Table client ou l'ordre des enregistrements est sujet à changer régulièrement. Par exemple j'ai un client X qui correspond à l'enregistrement 3, j'aimerais que ce client devienne l'enregistrement 2. Comment faire ?

Merci pour votre aide !

Magalie


Réponse n° 1 par 3stone le 09/01/2007 : 15:55
Bonjour Magalie,

Tu est une utilisatrice de Excel, n'est ce pas ?  wink

En fait, l'ordre dans une table n'est que apparent. En réalité il n'y en a pas. L'ordre apparent, par défaut, est l'ordre dans lequel les enregistrements ont été saisi.
Une suppression, un compactage de la base ou autre action, peut suffire à modifier cet ordre apparent.

Quelqu'un à expliqué cela en prenant l'exemple d'un sac de billes. Quel est la première ou dernière bille ?

Il en va de même avec les tables qui ne sont qu'un conteneur où les données (les enregistrements) sont placées en vrac.

Pour avoir un ordre défini, tu dois créer une requête dans laquelle tu spécifies l'ordre souhaité. Cela ce fait dans la ligne "tri" sous le champ désiré.
De cette façon, tu pourras trier sur le nom du client, sur le numéro de facture ou tout autre champ disponible (tout comme lors du "tirage" des billes dans le sac).

Remarques:
  • On ne travaille jamais directement sur une table, mais par l'intermédiaire d'un formulaire.
  • Il n'est pas utile que les tables possèdent un ordre
Si tu souhaite modifier cet ordre, la raison est sûrement issue d'une mauvaise conception de ta base et des tables.

PS: Tu peux expliquer ce qui t'amènes à croire que tu as besoin d'un ordre dans la table ?

Amicalement,
Pierre


Réponse n° 2 par Magalie le 09/01/2007 : 22:18
Oui en effet je suis une ancienne utilisatrice d'Excel qui essaye de se convertir en utilisatrice d’Accès...
En fait, je n’ai aucun problème à utiliser une requête pour trier mes enregistrements. Je sais même comment le faire !
Par contre, je ne sais pas comment le faire pour la sorte de tri que j'ai besoin de faire. En effet, je crois que mon problème est un problème de conception.
Je vais essayer d’expliquer le plus simplement possible le résultat que je veux arriver.
J’ai une Table client qui correspond à des locateurs de conteneur. Ces clients louent des conteneurs. J’ai une autre Table Conteneur ou les conteneurs sont associés au client qui loue le conteneur. Ensuite, j’ai une requête Analyse croisée qui regroupe tous les conteneurs que loue un client et qui départage le type de conteneur (vidange/recyclage) et la journée de collecte. Ensuite, j’ai refait une analyse croisée à partir de la première pour séparer les conteneurs qui doit être vidés le lundi, ceux mardi, etc. Par la suite, j’ai fait un État pour les conteneurs à vider le lundi, un État pour mardi, etc.
Avec les États que j’ai créés, mes camionneurs connaissent les conteneurs qu’ils doivent vider le lundi, le mardi, etc. Mon problème c’est que j’aimerais que mes États donnent l’ordre de collecte des conteneurs. L’ordre de collecte que je dois créer est sujet à charger considérablement (Ajout de nouveau client, ajout de nouveau conteneur loué par un même client, modification de la cédule, inversion de la collecte pour une partie des secteurs de collecte) de plus, certains conteneurs doivent être vidés deux fois par semaines, l’ordre de collecte peut être différent selon la journée que le conteneur doit être vidé. J’ai prêt de 300 conteneurs à classer.
Noter que mes États énumèrent les bons conteneurs, mais l’ordre ne correspond pas à l’ordre de collecte. Beau petit casse-tête.
En fait, j’aimerais pouvoir dans mes Requêtes analyse croisée sélectionner une et même plusieurs lignes et la ou les faire glisser dans l’ordre de collecte qu’il doit apparaître dans l’État. Je sais que c’est une logique Excel, mais je n’ai pas encore développé la logique Accès…
Merci pour tous les petits trucs qui pourraient m’aider.
Je m’excuse pour le roman !
Magalie

Réponse n° 3 par 3stone le 09/01/2007 : 22:48
Bonsoir,

Hmm... cela demande en effet une analyse complète...

Mais, si je saisi (au moins en partie) ton problème, ne pourrais tu pas inclure un système de calcul de date lors de la location ?  Du style J+3 ?
Tu devrais peut-être aussi envisager une table des "fréquences" d'enlèvement - par client et/ou par conteneur.

Si tu n'arrive pas à introduire cette date, je dirais qu'à vue de nez, il ne te reste que la table intermédaire sur laquelle tu devras, via un formulaire et un champ supplémentaire, imposer ton ordre de tri.

Quoi qu'il en soit, un tri ne peut reposer que sur une suite logique, tu t'en doute, donc un champ qui possède cette qualité.

A+
Pierre


Réponse n° 4 par Magalie le 16/01/2007 : 14:29

Je crois que vais revoir ma base pour avoir un ordre logique.

 

Pour l’ordre de collecte des villes, j’ai résolu mon problème, mais ma solution n’est pas efficace. J’ai assigné un ordre de collecte au conteneur dans ma Table Conteneur. L’ordre de collecte est en fonction de la ville où est placé le conteneur, le type de conteneur et la journée de collecte. Entrer l’ordre de collecte une fois ça va, mais corriger l’ordre de collecte lorsqu’il y a des changements, c’est laborieux. J’aimerais automatiser le tout. J’aimerais utiliser une table ou une Requête ou j’assignerais l’ordre de collecte à une ville et un type de conteneur. J’airais cinq Tables de ce type, une pour chaque journée de collecte (Table OrdreCollecteLundi, Table OrdreCollecteMardi,etc)

 

Par la suite, j’aimerais avoir un lien entre ma TableConteneur et mes Tables OrdreCollecteX. Ainsi, lorsque dans ma TableConteneur [JoursCollecte] = « lundi » Accès assignerait à l’aide de la Table OrdreCollecteLundi les ordres de collectes à chacun des conteneurs selon la correspondance de la [Ville] et du [Type] serait = dans chacune des deux tables. Je crois que je ne suis pas clair alors voici un extrait pour lundi

 

Table OrdreCollecteLundi

[OrdreCollecte] [Ville]                 [Type]

      1                   Maria                Vidange

      2                   Bonaventure       Vidange

      3                   Carleton             Vidange

      4                   Bonaventure       Recyclage

      5                   Carleton             Recyclage

 

lien avec ma TableConteneur

[RefCont] [Ville] [Type] [JoursCollecte] [OrdreCollecte]

 J001       Maria   Vidange    lundi                    1

 J002       Maria   Vidange &nb

Réponse n° 5 par 3stone le 17/01/2007 : 17:43
Bonjour,

Pour l'ordre de collecte, tu devrais te créer une table qui contient le numéro d'ordre et le code postal par exemple (ou l'identifiant si tu utilises déjà une table ID, CodePostal, Ville).
Si tu dois disposer de plusieurs "circuits", il faut une table supplémentaire: TypeCircuit, description circuit. Cette table sera relié par TypeCircuit à la table CircuitCollecte.

Tu pourrais ainsi choisir l'une ou l'autre tournée...

Une table par circuit comme tu le propose n'est pas bon, puisque tu remarque qu'il te faut changer de table cry

Pour ce qui est de corriger l'ordre "à la main", il faudrait prévoir un champ qui serait considéré en priorité lors du tri.
Dans la requête, tu utiliserais la fonction  :

OrdreFinal:  iif(isnull(ordre_manuel);ordre_auto;ordre_manuel)

Bien sûr pour cela, il faudra prévoir une numérotation de l'ordre qui permette l'incertion d'une valeur. Et bien sûr un formulaire pour cette intervention "manuelle".

Note:
Tout est question de besoin. Sur une application importante, composée d'une infinité de "stations" de collecte, il faudrait aller jusqu'à prévoir un système de coordonnées complètes, avec calcul des distances entre les points de collectes. En démarrant au point "X", il faudrait recherché le point de collecte le plus proche et ainsi de suite...

Ce genre d'application existe "clé en main", mais n'est pas forcément justifiée et/ou nécessaire, sans parler du prix.

A+
Pierre

Réponse n° 6 par Magalie le 18/01/2007 : 17:00

Re bonjour Pierre,

Je viens de me rendre compte que mon message ne sait pas afficher complètement. Mais la suite n’était pas très pertinente pour la compréhension.

Je crois que je ne saisis pas tout ce que je dois mettre dans les différentes tables pour arriver à un début de solution. Pour ta première table, je l’ai nommé IdentificateurVille ou j’y trouve les champs suivants : [IDVille] , [Ville], [Type] (chaque nom de ville doit apparaître deux fois puisque dans un même circuit, je peux faire la collecte de vidange pour une ville, par la suite je peux faire la collecte pour d’autres villes et revenir à la même ville pour le recyclage.) L’ordre de collecte est influencé par le lieu du site de transbordement pour les matières recyclables et du site d’enfouissement pour les vidanges.

 

Pour le nombre de circuits, j’ai besoin de 5 circuits soit un circuit par jours ouvrable (CircuitLundi, CircuitMardi, etc.) ou l’ordre de collecte de chacune des villes et différente pour chaque circuit et où l’ordre de collecte des villes de chacun des circuits est sujet à changer. Selon ta suggestion, cette Table se nomme Circuit OK. Mais quels sont les champs de cette table ? [TypeCircuit] et [Description] ? Si [TypeCircuit] correspond à CircuitLundi, CircuitMardi, CricuitMercredi, etc. [Description] corresponds à quoi ? Et je la relie à CircuitCollecte dont ces champs sont quoi et correspondent à quoi ?

 

Ouf trouver une logique à mon problème c’est pas évident parce qu’il y a plusieurs variables à prendre en considération.

 

Je crois que je vais sortir un bout de papier et essayer de démêler tout ça !eek

Merci de consacrer du temps à mon gros problème, je comprends qu’il n’est pas évident de comprendre toutes les subtilités du problème. Puisqu’il ne s’agit pas de code Accès, mais bien de logique pour arriver à la solution.frown

 Magalie

Réponse n° 7 par 3stone le 19/01/2007 : 14:30
Bonjour Magalie,

Pour la table circuit, pour autant quelle soit nécessaire à cause de circuits différents, tu devrait y trouver le numéro du type de circuit (numéro du lundi), le numéro d'ordre dans ce circuit (pour trier sur cet ordre), la ville (le point de collecte).

A partir de là, en attribuant un TypeCircuit, tu pourrais trier selon l'ordre prédéfini pour ce circuit.

Lorsque l'on sait que cette analyse préliminaire, la  modelisation, et la normalisation  des données représente le gros du travail, tu te doute que je ne peux te donner que quelques pistes à explorer.

Pour t'aider un peu, tu peux regarder dans la section "Liens" ou tu trouvera un lien vers "Database Answers". Sur ce site sont collectés plus d'une centaine de modèle de base de données. Tu y trouveras éventuellement quelques idées.

A+
Pierre


[ Retour à la liste des sujets ]

Recherche



Préférences

Se reconnecter
---

Votre nom (ou pseudo) :

Votre code secret


 Nombre de membres 1 membre


Connectés :

( personne )

Haut