Question

Je suis en train de confirmer ou d'infirmer si vous pouvez définir une colonne de table dans MS Access 2003 comme un ensemble. Il semble que ce est mis en œuvre dans Office 2007 - vous pouvez définir une colonne à une « liste multi-sélection » dans la requête / recherche, mais cette fonctionnalité semble être unique au nouveau format de fichier Access 2007 pour autant que je peux déterminer.

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'accepte une réponse fournissant des informations sur les constructeurs de collection dans Access 2003.

Était-ce utile?

La solution

Vous parlez les types de données de base de données Access Engine multivaluées ? Si oui, alors oui, ce sont nouveaux à la version ACE (2007) du moteur et ne sont pas disponibles en Jet 4.0 étant la version Access2003 du moteur.

Je FWIW essayé votre SQL en utilisant Access2007 ANSI-92 mode de requête (OLE DB, type de moteur = 5) et le mot-clé MULTISET n'a pas été reconnu.

Notez que vous ne pouvez pas besoin ni envie types multivaluées. Une critique particulière est que l'accès base de données service expressions SQL DML n'a pas été modifié pour tenir compte des types multivaluées. De plus, consultez cet article Multivalued nuisibles considérés comme types de données:

  

Les deux Suraj [Poozhiyil, l'accès MS   Gestionnaire de programmes] et je suis d'accord   de tout coeur que les développeurs ne le font pas   besoin d'utiliser des champs à valeurs multiples.   Les gens qui comprennent les bases de données   ont déjà une bonne façon de   la mise en œuvre de plusieurs à plusieurs   relations et gagnera aucun avantage   des champs à plusieurs valeurs.

     

Alors, mon clair et certains conseils à   les développeurs est de ne pas utiliser plusieurs valeurs   des champs. Ils ont rien à nous offrir   sauf la douleur potentielle.

Mise à jour:

  

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

C'est presque amusant. L'équipe d'accès ont montré aucun intérêt à ajouter la syntaxe SQL qui est conforme à une norme SQL.

[Lorsque l'équipe SQL Server modifiaient Jet pour sa version 4.0, ils voulaient atteindre la conformité SQL-92, mais ont été empêchés de le faire par l'équipe de Windows dont les composantes sont tributaires de certaines autres caractéristiques non conformes ... mais c'est une autre histoire. L'équipe d'accès ont leur propre peuple privé de la base de code de sorte qu'ils ont aucune excuse ... à moins que l'équipe SharePoint a maintenant une influence indue? Je me éloigne du sujet ...]

Considérez cette citation du document relatif à la norme SQL2003:

  

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

     

MULTISET[1, 2, 3, 4]

     

ou

     

MULTISET(            SELECT grades              FROM courses           )

     

... A l'inverse, une valeur peut être multiset   utilisé en tant que référence de la table dans la FROM   clause en utilisant l'opérateur UNNEST.

L'équipe d'accès n'a pas ajouté de nouvelles expressions, ni les opérateurs à la syntaxe SQL ACE DML. Donc, non, cela n'a rien à voir avec les normes SQL et tout à faire avec SharePoint.

  

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

Considérez cette citation de propre blog de l'accès de l'équipe :

  

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top