Est-ce que Microsoft Access 2003 contient des jeux ou multijeux?
-
19-09-2019 - |
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.
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érateurUNNEST
.
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!