2009-08-16 3 views
28

Sto utilizzando MS Excel per ottenere dati da un database MySQL tramite ODBC.
Ricevo correttamente i dati utilizzando una query SQL. Ma ora voglio che la query sia parametrizzata.
Quindi mi chiedo se sia possibile utilizzare un valore di cella (una cella del foglio di calcolo) come parametro per tale query.
Ad esempio, per questa query:Excel: utilizzare un valore di cella come parametro per una query SQL

select name from user where id=1 

mi piacerebbe ottenere il valore id da, diciamo, cella D4 nel foglio di calcolo.

è che l'approccio corretto per parametrizzare una query? e come posso farlo?

Grazie.

risposta

30

Ho avuto lo stesso problema di te, Noboby mi può capire, ma l'ho risolto in questo modo.

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

è necessario inserire un parametro in un altro foglio, lo SQL prenderà in considerazione che le informazioni come come di database, quindi è possibile selezionare le informazioni e confrontarli nel parametro che ti piace.

+0

Grazie, non lo sapevo. Lo proverò. – GetFree

+0

Salve, scusa per la domanda in ritardo, mi chiedo se possiamo usare anche la funzione denominata/intervallo denominato/cella denominata come parametro? –

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

Credo di doverlo fare in uno script VBA, giusto? Non penso che potrei digitare quell'espressione all'interno della finestra SQL. – GetFree

+0

Questo è VBA, sì – barrowc

10

Se si utilizza la query microsoft, è possibile aggiungere "?" alla tua richiesta ...

selezionare il nome da utente in cui id =?

che aprirà una piccola finestra per chiedere la cella/dati/ecc. Quando si ritorna ad eccellere.

Nella finestra popup, è anche possibile selezionare "usa sempre questa cella come parametro" eliminando la necessità di definire tale cella ogni volta che si aggiornano i dati. Questa è l'opzione più semplice.

1

L'SQL è un po 'come la sintassi di MS SQL.

SELECT * FROM [table$] WHERE *; 

E 'importante che il nome della tabella è conclusa con un segno $ e il tutto viene messo in parentesi. Come condizioni è possibile utilizzare qualsiasi valore, ma finora Excel non mi ha permesso di usare ciò che chiamo "Apostrofi SQL" ('), quindi è consigliabile un titolo di colonna in una parola.

Se si dispone di utenti elencati in una tabella chiamata "Utenti", e l'identificazione è in una colonna dal titolo "id" e il nome in una colonna intitolata "Nome", la query sarà simile a questa:

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

Spero che questo aiuti.