2009-11-11 3 views
2

J'essaie de confirmer ou de nier si vous pouvez définir une colonne de table dans MS Access 2003 en tant qu'ensemble. Il semble que est implémenté dans Office 2007 - vous pouvez définir une colonne pour avoir une 'liste de sélection multiple' dans la requête/recherche, mais cette fonctionnalité semble être unique au nouveau format de fichier d'accès 2007 autant que possible déterminer.Est-ce que Microsoft Access 2003 contient des ensembles ou des multisets?

LIBELLEES une autre façon, MS Access 2003 n'ont l'équivalent de l'instruction SQL:

CREATE TABLE mytable (foo VARCHAR(10), bar VARCHAR(5) MULTISET); 

Ou est-il une solution intelligente pour obtenir quelque chose de similaire? J'accepterais une réponse fournissant des informations sur n'importe quel constructeur de collection dans Access 2003.

Répondre

4

Faites-vous référence au moteur de base de données Access multivalued data types? Si oui, alors oui, ils sont nouveaux dans la version ACE (2007) du moteur et ne sont pas disponibles dans Jet 4.0 étant la version du moteur d'Access2003. FWIW J'ai essayé votre SQL dans Access2007 en utilisant le mode de requête ANSI-92 (OLE DB, type de moteur = 5) et le mot clé MULTISET n'a pas été reconnu.

Notez que vous pouvez ne pas avoir besoin de types à valeurs multiples et ne pas en avoir besoin. Une critique particulière est que le service d'expressions Access Database SQL DML n'a pas été modifié pour tenir compte des types à valeurs multiples. En outre, consultez cet article Multivalued datatypes considered harmful:

deux Suraj [Poozhiyil, le MS Access Gestionnaire de programmes] et je suis d'accord de tout coeur que les développeurs ne besoin d'utiliser des champs à valeurs multiples. Les personnes qui comprennent les bases de données ont déjà un bon moyen de implémentant de nombreuses relations et ne tireront aucun avantage des champs à plusieurs valeurs.

Donc, mon conseil clair et certain aux développeurs est de ne pas utiliser les champs à valeurs multiples. Ils n'ont rien à nous offrir sauf une douleur potentielle.

MISE À JOUR:

MULTISET est un nouveau type de données officiellement commençant par SQL: 2003 donc je suis deviner une partie de la raison de l'ajout dans Access 2007 est d'être entièrement conforme aux la norme SQL

C'est presque amusant. L'équipe d'accès n'a montré aucun intérêt à ajouter une syntaxe SQL conforme à toute norme SQL. [Quand l'équipe SQL Server modifiait Jet pour sa version 4.0, elle voulait atteindre la conformité à SQL-92 mais en était empêchée par l'équipe Windows dont les composants dépendaient de certaines fonctionnalités non-conformes ... mais c'est une autre histoire. L'équipe d'accès a son propre personnel privé de la base de code, donc ils n'ont pas une telle excuse ... à moins que l'équipe SharePoint a maintenant une influence indue? Je digresse...]

Tenir compte cette citation du document relatif à la norme SQL2003:

Les valeurs d'un type MULTISET peut être créé soit par l'énumération des éléments individuels ou en fournissant les éléments par une expression de requête ; par exemple,

MULTISET[1, 2, 3, 4]

ou

MULTISET( SELECT grades FROM courses )

... A l'inverse, une valeur multi-ensemble peut être utilisé comme référence de la table dans la clause FROM utilisant le UNNEST opérateur.

L'équipe Access n'a ajouté aucune nouvelle expression ni aucun opérateur à la syntaxe ACE SQL DML. Donc, non, cela n'a rien à voir avec les standards SQL et tout ce qui concerne SharePoint.

David W. Fenton: Non, [soutien types multivaluées] a été ajouté au format ACCDB (pas ACE, comme @onedaywhen dit ...)

Considérez cette citation de the Access Team's own blog:

la principale caractéristique, nous avons ajouté au nouveau moteur d'accès est un soutien pour « données complexe ».

Il est sans aucun doute une caractéristique du moteur!

+0

champs ... Je suis d'accord multivoques avec vous dire que c'est une drôle d'idée! Je ne comprends même pas pourquoi il a été mis en œuvre dans Access 2007. Il est certainement un concept trompeur et confus, lorsqu'ils traitent avec des bases de données relationnelles –

+3

nous En fait les types de développement comme la prise en charge d'une solution créée par l'utilisateur à l'aide de valeurs multiples. C'est ce qu'on appelle les heures facturables. –

+0

Oui, le type de données à valeurs multiples est exactement ce que je jouais avec Access 2007. FYI, MULTISET est un nouveau type de données commençant officiellement par SQL: 2003 http://www.sigmod.org/record/issues/0403/E.JimAndrew -standard.pdf - donc je devine une partie de la raison de l'ajouter dans Access 2007 est d'être entièrement conforme à la norme SQL. Il a existé dans Oracle pendant un certain temps (d'où vient mon exemple) - Désolé aurait dû le mentionner. J'ai utilisé MULTISETS avant de configurer une table en tant que masque de bits. Très utile. – DaveParillo

Questions connexes