2010-06-22 40 views
33

Tôi thường sử dụng Get External Data của MS Excel để tạo các báo cáo đơn giản - chạy các truy vấn đối với cơ sở dữ liệu và hiển thị độc đáo trong Excel. Các tính năng tuyệt vời của Excel như lọc và bảng tổng hợp và giao diện quen thuộc cho người dùng làm cho nó khá tốt cho việc này. Tuy nhiên, một hạn chế với Microsoft Query là bạn không thể thêm tham số vào các truy vấn không thể hiển thị đồ họa, điều này hạn chế đáng kể SQL bạn có thể viết.Cách thêm thông số vào truy vấn dữ liệu ngoài trong Excel không thể hiển thị đồ họa?

Có giải pháp nào cho lỗi "thông số không được phép trong các truy vấn không thể hiển thị đồ họa" không?

Trả lời

5

Nếu bạn có Excel 2007, bạn có thể viết VBA để thay đổi kết nối (tức là truy vấn dữ liệu ngoài) trong sổ làm việc và cập nhật thuộc tính CommandText. Nếu bạn chỉ cần thêm ? nơi bạn muốn tham số, thì lần sau khi bạn làm mới dữ liệu, nó sẽ nhắc các giá trị cho kết nối! ma thuật. Khi bạn nhìn vào các thuộc tính của nút Kết nối các tham số bây giờ sẽ hoạt động và có thể sử dụng như bình thường.

Ví dụ: Tôi muốn viết một macro, bước qua nó trong trình gỡ lỗi, và làm cho nó đặt CommandText một cách thích hợp. Khi bạn đã thực hiện việc này, bạn có thể xóa macro - đó chỉ là phương tiện để cập nhật truy vấn.

Sub UpdateQuery 
    Dim cn As WorkbookConnection 
    Dim odbcCn As ODBCConnection, oledbCn As OLEDBConnection 
    For Each cn In ThisWorkbook.Connections 
     If cn.Type = xlConnectionTypeODBC Then 
      Set odbcCn = cn.ODBCConnection 

      ' If you do have multiple connections you would want to modify 
      ' the line below each time you run through the loop. 
      odbcCn.CommandText = "select blah from someTable where blah like ?" 

     ElseIf cn.Type = xlConnectionTypeOLEDB Then 
      Set oledbCn = cn.OLEDBConnection 
      oledbCn.CommandText = "select blah from someTable where blah like ?" 
     End If 
    Next 
End Sub 
-1

CÓ - giải pháp là lưu sổ làm việc vào tệp XML (ví dụ: 'Bảng tính XML 2003') và chỉnh sửa tệp này dưới dạng văn bản trong notepad! sử dụng chức năng "TÌM KIẾM" của notepad để tìm văn bản truy vấn và thay đổi dữ liệu của bạn thành "?".

lưu và mở trong excel, hãy thử làm mới dữ liệu và excel sẽ là monit về thông số.

22

Dễ Cách giải quyết (không VBA cần)

  1. Right Click Bảng, mở rộng "Bảng" bối cảnh manu, chọn "bên ngoài liệu Properties"
  2. Bấm nút "Properties Connection" (dán nhãn tooltip chỉ)
  3. Tab di chuyển "Định nghĩa"

Từ đây, chỉnh sửa SQL trực tiếp bằng cách thêm '?' bất cứ nơi nào bạn muốn có một tham số. Hoạt động theo cách tương tự như trước, ngoại trừ bạn không bị nagged.

+2

Cảm ơn! Đây là một giải pháp tuyệt vời --- nhanh chóng, dễ dàng, không có nags, và cho phép trực tiếp lựa chọn ô Excel sẽ giữ tham số. ** Tôi nghĩ rằng đây nên là câu trả lời được chấp nhận ** –

+0

Có một vài bước nữa so với điều này tôi tìm thấy, nhưng tôi đã tìm thấy câu trả lời này hữu ích nhất. Từ đây tôi có thể chơi đùa với nó. Cảm ơn! –

+0

Bất cứ khi nào tôi thử giải pháp này, Excel bị treo. Nếu tôi cụ thể giá trị rõ ràng, nó hoạt động tốt. Nhưng sau đó cố gắng để thêm các thông số, nó chỉ bị treo và kết thúc lên đâm! – jamiebarrow

45

Excel ' s giao diện   cho truy vấn SQL Server sẽ không cho phép bạn có thông số tùy chỉnh.   Cách xung quanh việc này là tạo một truy vấn Microsoft   chung, sau đó thêm tham số, sau đó dán truy vấn được tối ưu hóa của bạn trong thuộc tính kết nối ' s.   đây đây là các bước chi tiết cho Excel 2010:

  1. mở Excel
  2. Chuyển đến liệu tab
  3. Từ các nguồn khác nút chọn Từ của Microsoft Query
  4. Các " Chọn Data Source " cửa sổ sẽ xuất hiện.   Chọn nguồn dữ liệu và nhấp vào OK.
  5. Thắc mắc truy vấn
    1. Chọn Cột: cửa sổ sẽ xuất hiện.   Mục đích là tạo một truy vấn chung. Tôi khuyên bạn nên chọn một cột từ một bảng nhỏ.
    2. Lọc dữ liệu: Chỉ cần nhấp Tiếp
    3. Xếp theo thứ tự: Chỉ cần nhấp Tiếp
    4. Kết thúc: Chỉ cần nhấp Hoàn.
  6. Các " Import Data " cửa sổ sẽ xuất hiện:
    1. Nhấp vào Properties ... nút.
      1. Chọn Definition tab
      2. Trong văn bản " Command: " phần thêm một   ĐÂU   khoản   trong đó bao gồm các thông số Excel.   Nó ' s quan trọng để thêm   tất cả các thông số mà bạn   muốn bây giờ.   Ví dụ: nếu tôi muốn có hai tham số, tôi có thể thêm thông số này:
        WHERE 1 =? và 2 =?
      3. Bấm OK để có được trở lại " Import Data " cửa sổ
    2. Chọn Báo cáo PivotTable
    3. Bấm OK
  7. Bạn sẽ được nhắc nhở để nhập giá trị tham số cho mỗi tham số .
  8. Một khi bạn đã nhập các thông số bạn sẽ có mặt tại bảng pivot của bạn
  9. Go batck đến liệu tab và nhấp vào kết nối Thuộc tính nút
    1. Nhấp vào Definition tab
    2. Trong " Văn bản lệnh: " phần, Dán trong truy vấn SQL thực mà bạn muốn với cùng số thông số mà bạn đã xác định trước đó.
    3. Nhấp vào thông số ... nút  
      1. nhập các giá trị Prompt cho mỗi tham số
      2. Bấm OK
    4. Bấm OK để đóng hộp thoại Properties cửa sổ
  10. Xin chúc mừng, bây giờ bạn có thông số.
+0

Bạn có thể thực hiện việc này để thêm tham số vào truy vấn SQL Server không? tức là kết nối với một DB SQL Server? – Dan

+0

Tuyệt vời. Tôi đã luôn luôn tự hỏi làm thế nào để có được những thông số trong đó. –

+0

Làm việc tốt nhưng có một số vấn đề với LIKE. Nếu tôi đặt một số văn bản, đó là làm việc tốt tưởng tượng LIKE? trong văn bản lệnh và 'foobar' trong ô, nhưng sử dụng foo% không hoạt động –

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