2009-08-16 37 views
28

Tôi đang sử dụng MS Excel để lấy dữ liệu từ cơ sở dữ liệu MySQL thông qua ODBC.
Tôi đã nhận được dữ liệu thành công bằng truy vấn SQL. Nhưng bây giờ tôi muốn truy vấn đó được tham số hóa.
Vì vậy, tôi tự hỏi Nếu có thể sử dụng giá trị ô (ô bảng tính) làm tham số cho truy vấn như vậy.
Ví dụ, đối với truy vấn này:Excel: Sử dụng giá trị ô làm tham số cho truy vấn SQL

select name from user where id=1 

tôi muốn có được giá trị id từ, nói rằng, ô D4 của bảng tính.

Đó có phải là cách tiếp cận thích hợp để tham số hóa truy vấn không? và làm thế nào tôi có thể làm điều đó?

Cảm ơn.

Trả lời

30

Tôi có cùng vấn đề với bạn, Noboby có thể hiểu tôi, Nhưng tôi đã giải quyết nó theo cách này.

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

bạn cần chèn một tham số trong tờ khác, SQL sẽ xem xét thông tin đó như là cơ sở dữ liệu, sau đó bạn có thể chọn các thông tin và so sánh chúng vào tham số bạn muốn.

+0

Cảm ơn, tôi không biết về điều đó. Tôi sẽ thử nó. – GetFree

+0

Xin chào, xin lỗi vì câu hỏi muộn, tôi tự hỏi tôi, chúng tôi cũng có thể sử dụng chức năng có tên/tên dải ô/có tên là ô tham số? –

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

Tôi đoán tôi phải làm điều đó trong tập lệnh VBA, phải không? Tôi không nghĩ rằng tôi có thể gõ biểu thức đó bên trong cửa sổ SQL. – GetFree

+0

Đó là VBA, có – barrowc

10

Nếu bạn đang sử dụng truy vấn microsoft, bạn có thể thêm "?" cho truy vấn của bạn ...

chọn tên từ người dùng có id =?

sẽ bật lên một cửa sổ nhỏ yêu cầu ô/dữ liệu/v.v khi bạn quay lại excel.

Trong cửa sổ bật lên, bạn cũng có thể chọn "luôn sử dụng ô này làm thông số", không cần phải xác định ô đó mỗi khi bạn làm mới dữ liệu của mình. Đây là tùy chọn dễ nhất.

1

SQL có phần giống như cú pháp của MS SQL.

SELECT * FROM [table$] WHERE *; 

Điều quan trọng là tên bảng được kết thúc bằng ký hiệu $ và toàn bộ nội dung được đưa vào dấu ngoặc vuông. Như điều kiện bạn có thể sử dụng bất kỳ giá trị nào, nhưng cho đến nay Excel không cho phép tôi sử dụng những gì tôi gọi là "SQL Apostrophes" (´), do đó, một tiêu đề cột trong một từ được khuyến khích.

Nếu bạn có dùng được liệt kê trong một bảng gọi là "Người dùng", và id là trong một cột có tiêu đề "id" và tên trong một cột có tiêu đề "Tên", truy vấn của bạn sẽ trông như thế này:

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

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan