2009-08-16 11 views
28

Używam programu MS Excel do pobierania danych z bazy danych MySQL za pośrednictwem ODBC.
Udało mi się uzyskać dane za pomocą zapytania SQL. Ale teraz chcę sparametryzować to zapytanie.
Więc zastanawiam się, czy możliwe jest użycie wartości komórki (komórki arkusza kalkulacyjnego) jako parametru dla takiego zapytania.
Na przykład, dla tego zapytania:Excel: Użyj wartości komórki jako parametru dla zapytania SQL

select name from user where id=1 

Chciałbym uzyskać wartość ID z, powiedzmy, komórki D4 w arkuszu.

Czy to właściwe podejście do parametryzowania zapytania? i jak mogę to zrobić?

Dzięki.

Odpowiedz

30

Miałem ten sam problem co ty, Noboby może mnie zrozumieć, Ale rozwiązałem to w ten sposób.

SELECT NAME, TELEFONE, DATA 
FROM [sheet1$a1:q633] 
WHERE NAME IN (SELECT * FROM [sheet2$a1:a2]) 

trzeba wstawić parametr w drugim arkuszu, SQL uzna, że ​​informacje jak jak bazy danych, a następnie można wybrać informacje i porównać je do parametru chcesz.

+0

Dzięki, nie wiedziałem o tym. Spróbuję tego. – GetFree

+0

Cześć, przepraszam za późne pytanie, zastanawiam się, czy możemy również użyć nazwanej funkcji/nazwanego zakresu/nazwanej komórki jako parametru? –

3
queryString = "SELECT name FROM user WHERE id=" & Worksheets("Sheet1").Range("D4").Value 
+0

Chyba muszę to zrobić w skrypcie VBA, prawda? Nie sądzę, bym mógł wpisać to wyrażenie w oknie SQL. – GetFree

+0

To jest VBA, tak – barrowc

10

Jeśli używasz kwerendy microsoft, możesz dodać "?" do zapytania ...

wybierz nazwisko użytkownika, którego id =?

, które wyskoczy małe okienko z pytaniem o komórkę/dane/itd. Po powrocie do programu Excel.

W wyskakującym oknie możesz także wybrać "zawsze używaj tej komórki jako parametru", co eliminuje potrzebę definiowania tej komórki przy każdym odświeżaniu danych. To jest najłatwiejsza opcja.

1

SQL jest nieco podobny do składni MS SQL.

Ważne jest, aby nazwa tabeli została zakończona znakiem $, a cała rzecz została umieszczona w nawiasach. Jako warunki możesz użyć dowolnej wartości, ale do tej pory Excel nie pozwolił mi używać tego, co nazywam "apostrofami SQL" ("), dlatego zalecany jest tytuł kolumny w jednym słowie.

Jeśli użytkownicy wymienione w tabeli o nazwie „użytkownicy”, a identyfikator jest w kolumnie zatytułowanej „id” i nazwę w kolumnie zatytułowanej „Nazwa”, zapytanie będzie wyglądać następująco:

SELECT Name FROM [Users$] WHERE id = 1; 

Mam nadzieję, że to pomoże.

Powiązane problemy