[英]VBA stored procedure SQL Server
我正在嘗試將數據從 excel 電子表格發送到 sql 服務器。 代碼運行正常,但狀態更改未完成。 在這些步驟之前,我已經在另一個進程中添加了帶有請求編號(或 ID)的數據,所以我想更改來自 excel 的請求編號與 sql 服務器中的請求編號相同的信息。 有人看到我可能錯過的東西嗎? 非常感謝提前
VBA代碼:
Dim mobjConn As ADODB.Connection
Dim strConn As String
Dim mobjCmd As ADODB.Command
Dim stat As String
Set mobjConn = New ADODB.Connection
strConn = "mystrConn"
mobjConn.Open strConn
Set mobjCmd = New ADODB.Command
stat = "DONE"
'INSERT
With mobjCmd
.ActiveConnection = mobjConn
.CommandText = "MySQL_Command"
.CommandType = adCmdStoredProc
.CommandTimeout = 0
End With
With mobjCmd
'
.Parameters.Item("@Param1") = Date
.Parameters.Item("@Maturity") = CStr(StartRange.Offset(nRow, 6).Value)
.Parameters.Item("@Param3") = StartRange.Offset(nRow, 13).Value
.Parameters.Item("@Status_Request") = stat
.Parameters.Item("@RequestNumber") = StartRange.Offset(nRow, 16).Value
lineExecute:
.Execute
End With
SQL 存儲過程獲取參數並嘗試用相同的編號請求更新其他參數:
ALTER PROCEDURE [dbo].[MySQL_Command]
@Param1 AS date = '',
@Maturity AS nvarchar(50) = '',
@Param3 AS nvarchar(50) = '',
@Status_Request AS nvarchar(10) = '',
@RequestNumber AS int = ''
AS
BEGIN
SELECT CONVERT(nvarchar(50),@Maturity)
IF NOT EXISTS (SELECT * FROM myTable WHERE RequestNumber = @RequestNumber)
BEGIN
INSERT INTO DCI_Requests_Table (Param1,
Maturity,
Param3,
Status_Request,
RequestNumber)
VALUES (@Param1,
@Maturity,
@Param3,
@Status_Request,
@RequestNumber)
END
ELSE
BEGIN
UPDATE DCI_Requests_Table
SET
Param1= ISNULL(@Param1,Param1),
Maturity= ISNULL(@Maturity,Maturity),
Param3= ISNULL(@Param3,Param3),
Status_Request= ISNULL(@Status_Request,Status_Request),
RequestNumber= ISNULL(@RequestNumber,RequestNumber)
WHERE RequestNumber = @RequestNumber
END
END
GO
這就是我做這種事情的方式。
Sub RunSProc()
Dim cn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim strConn As String
Set cn = New ADODB.Connection
strConn = "Provider=SQLOLEDB;"
strConn = strConn & "Data Source=your_server_name;"
strConn = strConn & "Initial Catalog=Northwnd;"
strConn = strConn & "Integrated Security=SSPI;"
cn.Open strConn
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = "MyOrders"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Refresh
cmd.Parameters(1).Value = ActiveSheet.Range("E1").Text
cmd.Parameters(2).Value = ActiveSheet.Range("E2").Text
Set rs = cmd.Execute()
If Not rs.EOF Then
Worksheets("sheet2").Range("A5:D500").CopyFromRecordset rs
rs.Close
End If
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.