web-dev-qa-db-fra.com

Comment utiliser la requête paramétrée dans Excel en utilisant la colonne comme paramètre?

J'essaie de développer une feuille de calcul qui peut localiser les enregistrements correspondants dans une source de données externe. Supposons donc que j'ai la colonne A avec une liste de valeurs d'identité. Je veux développer la colonne B, qui montre peut-être un nombre de lignes dans la table avec cette valeur. Quelque chose comme:

A              B
758348    "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$1"
173483    "=SELECT COUNT(*) FROM MYTABLE WHERE IDVALUE=$A$2"

... etc. J'ai donc pensé utiliser une requête paramétrée (où IDVALUE =?), Mais cela m'invite à saisir la valeur du paramètre, pas à utiliser la valeur de la cellule de gauche. Existe-t-il un moyen de le faire?

8
Jay Imerman

J'utiliserais une requête paramétrée (où IDVALUE =?), Mais cela m'invite à saisir la valeur du paramètre

D'après ce que vous avez mentionné, je comprends que vous utilisez MS Query et vous devez suivre les étapes suivantes

Étapes pour effectuer une requête paramétrée dans Excel utiliser une valeur de cellule comme paramètre

  1. Allez d'abord dans l'onglet Données dans Excel et sélectionnez MS Query sous Sources de données externes

MS Query

  1. Une fenêtre contextuelle vous demande de choisir la source de données. Sélectionnez la source de données ou ajoutez une nouvelle source de données et sélectionnez-la. Assurez-vous de décocher Use the query wizard to create or edit queries ce n'est pas très utile dans la plupart des cas

Data Source

  1. Ensuite, une fenêtre contextuelle vous demande d'ajouter une table, sélectionnez n'importe quelle table pour l'instant. Il est préférable de sélectionner un tableau avec moins de lignes.

add table

  1. Ensuite, une fenêtre de requête apparaît avec le tableau que vous avez sélectionné et ses données

query window

  1. Cliquez ensuite sur le menu view et décochez tables. Cela supprime la représentation graphique dans la fenêtre de requête et facilite la modification de votre requête SQL

View menu

  1. Cliquez sur le bouton SQL sous le menu format dans la fenêtre de requête. Une fenêtre contextuelle apparaît où vous pouvez modifier la requête comme vous le souhaitez. Assurez-vous d'ajouter des points d'interrogation pour le ou les paramètres souhaités.

edit query

  1. Ensuite, un pop-up apparaît vous demande la ou les valeurs de paramètre entrez une valeur valide pour l'instant

parameter

  1. Ensuite, la fenêtre de requête affiche le résultat de la requête en fonction du paramètre entré

result

  1. Cliquez sur le bouton exit sous le menu view dans la fenêtre de requête. Ensuite, la fenêtre de requête se ferme et la fenêtre contextuelle Importer des données vous demande où dans Excel afficher le résultat. Choisissez en conséquence

import

  1. Cliquez ensuite sur le bouton Propriétés à gauche avant de cliquer sur OK. Une nouvelle fenêtre contextuelle apparaît avec l'onglet d'utilisation par défaut sélectionné.

Properties

  1. Apportez les modifications nécessaires dans cet onglet et cliquez sur l'onglet Definition. Cliquez sur le bouton Parameters en bas de la fenêtre contextuelle à côté de edit query bouton

Definition

  1. Parameters une fenêtre contextuelle affiche les paramètres utilisés dans la requête. Ici, vous devez sélectionner le Get the value from following cell bouton radio pour sélectionner la valeur de la cellule comme paramètre pour la requête. Cliquez sur OK et vous devriez avoir terminé.

    parameter value


Cette méthode est destinée aux personnes sans expérience VBA. Si vous connaissez VBA, référez-vous à ceci réponse pour obtenir quelque chose de similaire en utilisant VBA.

18
Ram

Donc, pour ce faire, je créerais un UDF et le backend de cette fonction se connecte à votre base de données d'accès. Quelque chose comme ça:

Public Function countMyTable(IDValue As Double) As Long
'Requires:// Microsoft Access 16.0 Object Library
'Requires:// Microsoft Office 16.0 Access database engine Object Library
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = Access.DBEngine.Workspaces(0).OpenDatabase(DBFilePath, False, False)
Set rs = db.OpenRecordset("SELECT COUNT(1) FROM MyTable WHERE IDValue = " & IDValue, dbOpenSnapshot)
rs.MoveLast
countMyTable = rs(0)
db.close
End Function

J'espère que cela vous aide, TheSilkCode

0
TheSilkCode