2010-03-25 8 views

Répondre

2

Je pense que cela a à voir avec la clé primaire. Supposons que votre PK soit basé sur du texte, MS Access le triera par ordre alphabétique. Si vous voulez avoir le contrôle de l'Ordre, utilisez un NuméroAuto comme PK.

3

Vous ne devriez pas vous soucier de l'ordre des données est stockée dans un tableau. L'ordre est un problème de couche de présentation et lorsque vous voulez un ordre particulier, spécifiez un ordre de tri (ORDER BY dans SQL). Si vous utilisez des feuilles de données de table dans votre application et attendez l'ordre de tri souhaité, vous devez utiliser un formulaire avec un ordre de tri défini (dans les propriétés du formulaire ou dans la source d'enregistrements sous-jacente) ou dans une feuille de données de requête. lieu de la fiche technique de la table. L'accès vous permet également de définir un ordre de tri dans une feuille de données de table et de l'enregistrer avec la table, mais ce n'est pas conseillé. Les fiches de données de la table sont pratiques, mais vous ne devriez pas en dépendre autrement que pour une vue rapide et sale des données.

+0

Bien pour une base de données Access Je suis d'accord avec vous, vous n'avez pas à vous soucier de l'ordre des données. Mais quand il s'agit d'un vrai SGBD, l'ordre peut avoir de l'importance -> Clustered Index. – gsharp

+0

Vous voudrez peut-être lire les PKs de Jet/ACE, qui utilisent un index clusterisé. Le PK est le seul index qui peut être mis en cluster, cependant. Votre commentaire sur les «vrais DMBS» est faux, car en théorie relationnelle, les tables n'ont pas d'ordre. Dans certains cas, vous pouvez trouver que connaître l'ordre de stockage physique dans votre tableau de données peut vous aider à améliorer les performances, mais ce n'est pas censé être cela d'un point de vue théorique. –

1

Au sein d'une base de données, si vous avez besoin des documents à retourner dans un certain ordre, vous devez spécifier une «ORDER BY clause dans votre code de lecture:

SELECT Field1, Field2 FROM Table ORDER BY Field1 

Tout autre n'a aucune garantie de travail allant vers l'avant .

+0

Merci pour la réponse, mais j'utilise la connexion OLE DB via C# .Net, j'exporte des données (qui sont déjà dans l'ordre trié) à l'accès ms, dans lequel l'ordre de tri est configuré automatiquement et mes données triées initialement n'étaient pas là tel. Toutefois, j'ai trouvé une solution de contournement, insérez les enregistrements dans MS Access en utilisant d'abord des noms temporaires, puis utilisez select dans la requête avec l'ordre des champs devant être triés vers la table souhaitée. Cela donne un certain soulagement mais c'est un double travail avec un coup de performance. A partir de maintenant Aucun autre ne va pour moi. – KSH

+0

Si c'est le cas, vous pouvez le faire aussi en plaçant une colonne Autonumber sur la table puis en lisant une requête qui commande de façon explicite par cette vue, ce qui peut s'avérer plus simple. – eftpotrm

Questions connexes