Ayuda con un stored procedure por favor!!!
hola tengo un problema con un stored procedure que llamo desde visual
basic estoy usando adodb y por alguna razon no lo puedo ejecutar esto
es lo que estoy haciendo...
(el codigo lo encontre en un foro)
Set oCmd = New ADODB.Command
oCmd.Parameters.Append oCmd.CreateParameter("Nombre", adVarChar,
adParamInput, 80, lsNombre)
oCmd.CommandText = "sp_Traer_Cliente"
oCmd.CommandType = adCmdStoredProc
Set oCmd.ActiveConnection = oCon
set rs = oCmd.Execute
rs un ADODB.recorset
tambien trate de meterlo en un string todo
"exec sp_Traer_Cliente 'Parametro"
y despues hacer un set rs = conexxion.execute y pasarle el string
pero no funciona
El error que me da es:
"operation is not allowed when the object is close"
(cuando pregunto por rs.eof)
no se si es problema de permisos ya que le dí todos los permisos
por favor si alguien me puede dar una mano ...
basic estoy usando adodb y por alguna razon no lo puedo ejecutar esto
es lo que estoy haciendo...
(el codigo lo encontre en un foro)
Set oCmd = New ADODB.Command
oCmd.Parameters.Append oCmd.CreateParameter("Nombre", adVarChar,
adParamInput, 80, lsNombre)
oCmd.CommandText = "sp_Traer_Cliente"
oCmd.CommandType = adCmdStoredProc
Set oCmd.ActiveConnection = oCon
set rs = oCmd.Execute
rs un ADODB.recorset
tambien trate de meterlo en un string todo
"exec sp_Traer_Cliente 'Parametro"
y despues hacer un set rs = conexxion.execute y pasarle el string
pero no funciona
El error que me da es:
"operation is not allowed when the object is close"
(cuando pregunto por rs.eof)
no se si es problema de permisos ya que le dí todos los permisos
por favor si alguien me puede dar una mano ...
Analice este codigo y vea que le hace falta:
Algunas veces es necesario que un procedimiento almacenado nos devuelva no un recorset
como ya hemos visto,sino recoger valores devueltos,
como un código o el número de registros afectados, etc..,
-- Procedimientos con parametros de salida .....
Create procedure spAñadirCliente
@Nombre varchar(80),
@id int output
as
set nocount off
insert into clientes values(@nombre)
set @id=@@identity
go
-- para probar que funciona..
Declare @id int
exec spAñadircliente 'Miguel Egea',@id output
print @id
go
-- Ahora desde Visual Basic ...
Option Explicit
Dim oCon As New ADODB.Connection
Dim oCmd As ADODB.Command
Private Sub cmdAñadirCliente_Click()
Dim lsNombre As String
Dim lnNumero As Long
lsNombre = InputBox("Introduzca un nombre de cliente", "Añadir clientes")
If lsNombre <> "" Then
msConectar
Set oCmd = New ADODB.Command
oCmd.Parameters.Append oCmd.CreateParameter("Nombre", adVarChar, adParamInput, 80, lsNombre)
oCmd.Parameters.Append oCmd.CreateParameter("id", adInteger, adParamOutput, 3, lnNumero)
oCmd.CommandText = "spAñadirCliente"
oCmd.CommandType = adCmdStoredProc
Set oCmd.ActiveConnection = oCon
oCmd.Execute
MsgBox "El Código es " & oCmd.Parameters(1).Value
msDesconectar
End If
End Sub
Private Sub msConectar()
oCon.Provider = "sqloledb"
oCon.Properties("Data Source").Value = "SUSERVIDOR" ' Ponga aquí el nombre de su servidor
oCon.Properties("Initial Catalog").Value = "SUBASEDEDATOS"
oCon.Properties("User id").Value = "sa" ' o nombre de usuario que desee.
oCon.Properties("Password") = ""
oCon.Open
End Sub
Private Sub msDesconectar()
oCon.Close
End Sub
Algunas veces es necesario que un procedimiento almacenado nos devuelva no un recorset
como ya hemos visto,sino recoger valores devueltos,
como un código o el número de registros afectados, etc..,
-- Procedimientos con parametros de salida .....
Create procedure spAñadirCliente
@Nombre varchar(80),
@id int output
as
set nocount off
insert into clientes values(@nombre)
set @id=@@identity
go
-- para probar que funciona..
Declare @id int
exec spAñadircliente 'Miguel Egea',@id output
print @id
go
-- Ahora desde Visual Basic ...
Option Explicit
Dim oCon As New ADODB.Connection
Dim oCmd As ADODB.Command
Private Sub cmdAñadirCliente_Click()
Dim lsNombre As String
Dim lnNumero As Long
lsNombre = InputBox("Introduzca un nombre de cliente", "Añadir clientes")
If lsNombre <> "" Then
msConectar
Set oCmd = New ADODB.Command
oCmd.Parameters.Append oCmd.CreateParameter("Nombre", adVarChar, adParamInput, 80, lsNombre)
oCmd.Parameters.Append oCmd.CreateParameter("id", adInteger, adParamOutput, 3, lnNumero)
oCmd.CommandText = "spAñadirCliente"
oCmd.CommandType = adCmdStoredProc
Set oCmd.ActiveConnection = oCon
oCmd.Execute
MsgBox "El Código es " & oCmd.Parameters(1).Value
msDesconectar
End If
End Sub
Private Sub msConectar()
oCon.Provider = "sqloledb"
oCon.Properties("Data Source").Value = "SUSERVIDOR" ' Ponga aquí el nombre de su servidor
oCon.Properties("Initial Catalog").Value = "SUBASEDEDATOS"
oCon.Properties("User id").Value = "sa" ' o nombre de usuario que desee.
oCon.Properties("Password") = ""
oCon.Open
End Sub
Private Sub msDesconectar()
oCon.Close
End Sub
