Access - Array o recordset como parámetro a Store Procedure

 
Vista:
Imágen de perfil de Pelida
Val: 6
Ha disminuido su posición en 64 puestos en Access (en relación al último mes)
Gráfica de Access

Array o recordset como parámetro a Store Procedure

Publicado por Pelida (3 intervenciones) el 24/06/2020 23:25:42
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

¿ tenéis alguna idea o solución ?. Adjunto el código, muchas gracias de antemano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder