Excel: użyj wartości komórki jako parametru zapytania SQL

Używam MS Excel do pobierania danych z bazy danych MySQL przez ODBC.
Pomyślnie uzyskuję dane za pomocą zapytania SQL. Ale teraz chcę, żeby to zapytanie zostało sparametryzowane.
Zastanawiam się więc, czy można użyć wartości komórki (komórki arkusza kalkulacyjnego) jako parametru dla takiego zapytania.
Na przykład dla tego zapytania:

select name from user where id=1

Chciałbym pobrać wartość id z komórki D4 w arkuszu kalkulacyjnym.

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

Dzięki.
 29
Author: GetFree, 2009-08-17

4 answers

Miałem ten sam problem co ty, nikt mnie nie zrozumie, ale rozwiązałem go w ten sposób.

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

Należy wstawić parametr w innym arkuszu, SQL uzna, że informacje takie jak bazy danych, następnie możesz wybrać informacje i porównać je do parametru, który lubisz.

 30
Author: Joaquim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-05 22:24:20

Jeśli używasz microsoft query, możesz dodać "?"na twoje zapytanie...

Select name from user where id= ?

To wyskakuje małe okno z pytaniem o komórkę / dane / etc po powrocie do Excela.

w wyskakującym oknie możesz również wybrać "Zawsze używaj tej komórki jako parametru", eliminując potrzebę definiowania tej komórki za każdym razem, gdy odświeżasz dane. Jest to najprostsza opcja.

 10
Author: pojomx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-03 10:00:01
queryString = "SELECT name FROM user WHERE id=" & Worksheets("Sheet1").Range("D4").Value
 4
Author: barrowc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-17 01:01:59

SQL jest nieco podobny do składni MS SQL.

SELECT * FROM [table$] WHERE *;

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

Jeśli masz użytkowników wymienionych w tabeli o nazwie "Users", a id znajduje się w kolumnie o nazwie "id", a nazwa w kolumnie o nazwie "Name", Twoje zapytanie będzie wyglądać tak: to:

SELECT Name FROM [Users$] WHERE id = 1;
Mam nadzieję, że to pomoże.
 1
Author: Kat Seiko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-01 15:59:33