Hola,
estoy tratando de pasar a un procedimiento almacenado en SQL Server un arreglo o un ADO recordset pero en ambos casos me da el mismo error
"Se ha producido un error 3001 en tiempo de ejecución: Argumentos incorrectos, fuera del intervalo o en conflicto con otros"
en el recordset solo hay un registro con dos columnas
Nombre FechaAlta CLIENTE 1 2018-10-25
adjunto el código, muchas gracias de antemano
CREATE TYPE [dbo].[Cliente] AS TABLE( [NOMBRE] varchar(100) NULL, [FECHAALTA] [date] NULL
) GO
CREATE PROCEDURE [dbo].[SP_PruebaConClientes] @para1 int,@para2 Cliente READONLY AS BEGIN SET NOCOUNT ON; SELECT Nombre,FechaAlta FROM CLIENTE WHERE Cliente = 1 END
Sub Prueba1() Dim con As ADODB.Connection Dim com As ADODB.Command Dim rs As ADODB.Recordset Dim rst As ADODB.Recordset Dim array1, array2 Set con = New ADODB.Connection Set com = New ADODB.Command Set rs = New ADODB.Recordset Set rst = New ADODB.Recordset con.ConnectionString = ConexionDSN con.Open rs.Open "SELECT Nombre,FechaAlta FROM CLIENTE WHERE Cliente = 1", con, adOpenKeyset, adLockReadOnly array1 = rs.GetRows array2 = TransposeArray(array1) Debug.Print array2(0, 0) & array2(0, 1) Set com = Nothing Set com = New ADODB.Command With com .ActiveConnection = con .CommandText = "SP_PruebaConClientes" .CommandType = adCmdStoredProc .Parameters.Append .CreateParameter("@para1", adBigInt, adParamInput, 1, 1) .Parameters.Append .CreateParameter("@para2", adArray, adParamInput, , array1) Set rst = .Execute End With con.Close Set con = Nothing Set com = Nothing Set rs = Nothing End Sub
|