如何编写从excel表格的单元格中输入输入的sql查询
问题描述:
我想写一个从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查询中,请告诉我该怎么做。
答
使用此代码
strSQl="UPDATE Employee SET EmpName='" & sheets("AB").Cells(2,2).Value & "' WHERE EmpID='" & sheets("AB").Cells(2,1).Value & "'"
答
使用参数:
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)关闭和去初始化一切。
哎呀,没有想到... 很明显,SQL应该是一个SELECT打开记录集。但是,如果你只是想运行一个更新,那么用Exec in命令对象来做。 对不起。 – user1644564 2013-03-20 14:23:00