L'ajout d'une Constante Ligne de Résultat de Requête SQL - MS Access
Dire que j'ai une table "tblItems":
*ID* | *Name*
1 | First Item
2 | Second Item
et je veux que ce soit peuplée dans une liste déroulante dans un formulaire. Comment pourrais-je ajouter une ligne:
ALL | SHOW ALL
pour devenir
*ID* | *Name*
1 | First Item
2 | Second Item
ALL | SHOW ALL
avec une seule requête à la place de la Row Source
pour la zone de liste modifiable? Je n'ai pas été en mesure de trouver la syntaxe d'Accès pour ce faire..
Autant que je sache, j'ai besoin d'une syntaxe similaire à
SELECT ID, Name FROM tblItems
UNION
SELECT 0, "All" FROM SOME.SYSTEM.DUMMY.TABLE
ce que je ne trouve pas l'Accès en est la version de la table factice. Je n'ai pas vraiment envie d'avoir un tableau distinct seulement pour stocker une ligne pour une forme... mais de ce que j'ai lu, j'ai peut-être.
- Voir stackoverflow.com/questions/3486299/...
- Est en utilisant la même table plus rapide que la création d'une seule rangée de table factice, et le référencement qui? Vous montrer à l'aide de la même
TableA
pour les deux parties de la requête, mais si TableA est grand, il est plus efficace d'utiliser un dédié table factice? - Vous pouvez choisir n'importe quelle table qui est la garantie de ne pas être supprimé. Cependant, je ne pense pas d'une très grande table est adapté pour un contrôle combobox, donc cela semble être quelque peu théorique.
- Ce n'est pas la sortie de la zone de liste modifiable qui sera grand qu'il y a des clauses where sur la base d'autres matières, mais le tableau peut être plus de 1000 entrées. Serait-ce un impact sur les performances lors de l'utilisation de l'Union de simplement retourner mon constantes?
Vous devez vous connecter pour publier un commentaire.
vous pourriez faire quelque chose comme ceci:
si vous avez toujours voulu qu'il s'affiche sur le fond, vous auriez à être un peu plus compliqué.
Par les commentaires, j'ai compris que l'Accès ne prend pas en charge un
SELECT
déclaration sansFROM
clause, ce qui est ennuyeux. Une solution serait de créer une tabletblAll
(syntaxe peut nécessiter de modification):alors vous pouvez faire:
ID
comme une chaîne de valeur pour obtenir que cela fonctionne, je ne suis pas sûr de savoir comment MSAccess poignées.Row Source
pointant vers 'Query2' qui contient votre syntaxe ci-dessus. J'ai essayé de simplifier mon code et je ne peux pas obtenir cette syntaxe fonctionne pour l'Accès? J'ai essayé directement à partir de la Query2 fenêtre (en mode feuille de données jette la même erreur)SELECT 0, "All"
mais pas quand l'Union avais. Vous (apparemment) doit fournir une table factice, qui est la même que de nombreux systèmes DB. La seule limite à Jet, c'est qu'il n'a pas intégré dans la table factice, et vous devez créer une ligne unique de mannequin tableau avec des types de données approprié. J'étais juste en espérant que quelqu'un savait de la table factice, mais plus je regarde, il n'en est pas une.Ce que je fais c'est d'utiliser un
SELECT TOP 1
déclaration et utiliser le nom de la table, de sorte qu'il ressemble à ceci:Qui vous donnera à la ligne avec le choix de votre table existante. Vous pouvez utiliser n'importe quel tableau que vous souhaitez pour le
TOP 1
ligne.Vous pouvez utiliser
UNION ALL
, cependant, vous avez un décalage entre les constantes et les colonnes ("TOUS" n'est pas un entier). Vous pourriez faire quelque chose comme:Sur le côté application, interpréter ID de 0 comme "TOUT AFFICHER". Ou, convertir ID à une chaîne.
Voulez juste de fixer Jeremy Holovacs réponse de travailler dans MS Access. De cette façon, vous pouvez utiliser la même table et ne pas avoir à créer une table factice.
Rappelez-vous, le suivant ne fonctionne que s'il y a des lignes dans la table, si vous avez une table vide, il ne fonctionnera pas.