0

Excel シートのセルから入力を取得する SQL クエリを作成したいと考えています。

たとえば、データベースに EmpID、EmpName、Salary、Address のような 3 つの列があり、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

上記のコードでは、SET EmpName='Micro' 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 クエリに入力する方法を知っている人がいる場合は、その方法を提案してください。

4

2 に答える 2

2

このコードを使用

strSQl="UPDATE Employee SET EmpName='" & sheets("AB").Cells(2,2).Value & "' WHERE EmpID='" & sheets("AB").Cells(2,1).Value & "'"
于 2013-03-19T11:20:24.530 に答える
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) すべてを閉じて初期化解除します。

于 2013-03-20T14:16:07.360 に答える