2013-03-19 32 views
0

我想寫一個從excel表格的單元格中獲取輸入的sql查詢語句。如何編寫從excel表格的單元格中輸入輸入的sql查詢

例如,如果有3列像數據庫中的EmpID,EmpName,Salary,Address和我想連接到SQL Server數據庫並使用Excel表中的按鈕更新數據庫。

我寫了這樣的代碼

Dim rst As ADODB.Recordset 
Dim Cnxn As ADODB.Connection 
Dim strCnxn As String 
Dim strSQL As String 

' Open connection 
Set Cnxn = New ADODB.Connection 
strCnxn = "Provider=SQLOLEDB;" & _ 
      "Data Source=ABC\SQLEXPRESS;" & _ 
      "Initial Catalog=Trail;" & _ 
      "Integrated Security=SSPI;" & _ 
      "Application Name=MyExcelFile" 

Cnxn.Open strCnxn 
Set rst = New ADODB.Recordset 
Dim Ename As Variant 
Ename = Worksheets("DBSheet").Cells(2, 2).Value 
Dim Eno As Variant 
Eno = Int(Worksheets("DBSheet").Cells(2, 1).Value) 
strSQL = "UPDATE Employee SET EmpName='Micro' WHERE EmpID=1" 
rst.Open strSQL, Cnxn, adOpenDynamic, adLockOptimistic, adCmdText 
Cnxn.Close 
Set rst = Nothing 
Set Cnxn = Nothing 

在這裏,在上面的代碼我寫了一個更新的查詢,比如集合EmpName =「微」 WHERE的EmpID = 1,我在這裏提到的EmpName和的EmpID手動,而不是我想填充一個Excel工作表的單元格的值更新查詢像

strSQL = "UPDATE Employee SET EmpName=Worksheets("AB').Cells(2,2).Value WHERE EmpID=Worksheets("AB').Cells(2,1).Value" 

但是因爲在EmpName和的EmpID值以「」(雙引號)的格式來了,這是不工作查詢但sqlquery不會接受任何格式的東西,以便執行它應該以''(單引號)的格式。

因此,如果任何人知道如何將excel工作表的單元格值填充到sql查詢中,請告訴我該怎麼做。

回答

2

使用此代碼

strSQl="UPDATE Employee SET EmpName='" & sheets("AB").Cells(2,2).Value & "' WHERE EmpID='" & sheets("AB").Cells(2,1).Value & "'" 
1

使用參數:

1)創建一個命令對象,並初始化它。

Dim cmd as adodb.command 

set cmd = new adodb.command 

2)更改SQL:

strSQL = "UPDATE Employee SET EmpName= ? WHERE EmpID = ? " 

3)使用在命令對象的.createParameter功能命令對象創建參數。

dim parId as adodb.parameter 
dim parEmp as adodb.parameter 

set parId = new adodb.parameter 
set parEmp = new adodb.parameter 

set parId = cmd.createParameter(...) 
set parEmp = cmd.createParameter(...) 

4)將參數添加到命令對象中的參數集合中。

cmd.parameters.append(parId) 
cmd.parameters.append(parEmp) 

注意:按照它們在SQL語句中的順序添加參數。

5)打開你的記錄

rst.open cmd 

6)環之類的東西

7)關閉和去初始化一切。

+0

哎呀,沒有想到... 很明顯,SQL應該是一個SELECT打開記錄集。但是,如果你只是想運行一個更新,那麼用Exec in命令對象來做。 對不起。 – user1644564 2013-03-20 14:23:00

相關問題