2010-07-14 67 views
0

我想將連接添加到工作表,以便每次刷新單元時,都會從SQL中傳入一個值。我希望它參考其中一張表格上的文本框,其中ID =與SQL的連接

如何將連接設置爲使用該值進行刷新。我在連接字符串中放什麼?我可以讓它靜態工作。

+0

哪種編程語言? – onurbaysan 2010-07-14 13:13:02

+0

VBA。如果他之前沒有設置標籤,他現在已經有了。 – PowerUser 2010-07-14 16:48:01

回答

0

Excel有一個稱爲「導入外部數據」的方便的小功能。這是我會做:

  1. 在您的Excel文件,轉到數據 - >導入外部數據 - >新建數據庫查詢(在你的情況,導入數據選項不會是最好的方法)

  2. 通過嚮導。選擇您的數據源等。除最後一個選項外,請選擇在Microsoft Query中查看數據或編輯查詢

  3. MS Query基本上是一個小查詢設計器。選擇顯示/隱藏條件圖標(看起來像眼鏡+漏斗)。

  4. 這個接口標準很像Access。選擇一個字段,而不是硬編碼值,使用[標準](或其他)。

  5. 關閉MS Query並返回Excel文件。

  6. 在新的數據範圍,單擊右鍵參數 - >從下面的單元格中獲得的價值

  7. 不要自動忘記刷新當單元格值更改

總之,您正在使用參數導入外部數據,並將該參數的值聲明爲文件中的單元格。那麼,這是我自己工作的一個很好的休息。我希望這有幫助。

0

是什麼導致細胞被刷新?連接字符串將取決於您正在使用的數據庫。下面的示例使用Access並需要對Microsoft ActiveX Dataobjects的引用2.8

數據放在sheet1上的單元格(1,1)中。 where子句取自sheet2上的textbox1:

Private Sub CommandButton1_Click() 

Dim sqlQuery As String 

sqlQuery = "SELECT * FROM myTable WHERE " & Worksheets("sheet2").TextBox1.Text 
fetchData "C:\file_databases\myDatabase.accdb", Worksheets("sheet1").Cells(1, 1), sqlQuery 

End Sub 

Private Function fetchData(databaseName As String, targetRange As Range, sqlQuery As String) 

Dim connection As New ADODB.connection 
Dim records As New ADODB.Recordset 
Dim connectionString As String 
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & databaseName & ";" 

connection.Open connectionString 
records.Open sqlQuery, connection 
targetRange.CopyFromRecordset records 

records.Close 
connection.Close 

End Function