我在SQL Server中有此存储过程,它接受一个数据表和一个NewOwnerID作为参数,并更新ID与Datatable中的ID匹配的所有行。如何将用户定义类型的数组传递给存储过程
CREATE Procedure [dbo].[udpUpdateActivityLead]
@ActivityLeadTable ActivityLeadType READONLY,
@OwnerTo int
AS
BEGIN
UPDATE [tblActivity]
set [tblActivity].[employeeID] = @OwnerTo
from @ActivityLeadTable
where [tblActivity].[activityID] in (Select ID from [@ActivityLeadTable])
END
我从C#中使用过,这很简单。现在最糟糕的是,我需要从MS Access前端调用这个存储过程。我该怎么做呢?
我已经试过低于MSACCESS但得到错误
创建一个模块
Public Type MyIDs
ID As Long
End Type
在表单中的用户定义类型我称之为从类clsUpdateLeads的updateRecord功能 我得到错误在下面的代码的第四行
Dim IDList() As MyIDs
Dim objUL As clsUpdateLeads
Set objUL = New clsUpdateLeads
Call objUL.updateRecord(IDList, Me.updateEmployeeID)
updateRecord func在类classModule clsUpdateLeads
Public Sub updateRecord(activityIDs() As MyIDs, NewOwnerID As Long)
If Not (isConnectionOpen()) Then
OpenConnection
End If
Set ADOCom = New ADODB.Command
ADOCom.ActiveConnection = ADOConn
ADOCom.CommandType = adCmdStoredProc
ADOCom.CommandText = "[dbo].[udpUpdateActivityLead]"
ADOCom.Parameters.Append ADOCom.CreateParameter("@ActivityLeadTable", adArray, adParamInput, 10, activityIDs())
ADOCom.Parameters.Append ADOCom.CreateParameter("@OwnerTo", adBigInt, adParamInput, 10, NewOwnerID)
ADOCom.Execute
End Sub
为什么你想从MSACCESS前端到SQL服务器进行通信bac kend.instead将所有数据导入msaccess.Do就像这样。首先创建非常简单的proc而不使用表类型并查看它是否工作。 – KumarHarsh
@KumarHarsh感谢您的回复,但我试图保留几乎所有需要大脑的服务器级别,并将Access前端用作单纯的数据持有者。再一次感谢你。 – Shallo