Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

llamar procedimientos almacenados

Estas en el tema de llamar procedimientos almacenados en el foro de Visual Basic clásico en Foros del Web. holas: estoy trabajando con un sql server 2000 y al tratar de llamar el procedimiento almacenado me arroja un error de que el objeto recorset ...
  #1 (permalink)  
Antiguo 10/01/2006, 11:21
Avatar de Hell08  
Fecha de Ingreso: enero-2005
Mensajes: 174
Antigüedad: 19 años, 3 meses
Puntos: 0
llamar procedimientos almacenados

holas:
estoy trabajando con un sql server 2000 y al tratar de llamar el procedimiento almacenado me arroja un error de que el objeto recorset esta cerrrado y por lo tanto deduzco que no logro abrir el procedimiento almaceado. aca va el codigo por si me pueden ayudar ... gracias.
Código:
Dim bomba As ADODB.Recordset
    Dim conexion As String
    conexion = "Provider=SQLOLEDB;Data Source=127.0.0.1;" & _
               "User id=sa;Password=mipass;Initial Catalog=master"
    Set bomba = New ADODB.Recordset
    bomba.Open "EXEC PA_PUMPCONTROLER 1,70,1", _
                conexion, adOpenDynamic, adLockOptimistic
    
    FlexDatos.Rows = FlexDatos.FixedRows
    
    Do Until bomba.EOF
      FlexDatos.AddItem "" & bomba!id
      bomba.MoveNext
    Loop
    bomba.Close
    Set bomba = Nothing
le hice un select a la base de datos y si me devuelve datos por lo que el problema no es la conexion con la base de datos.

saludos.
__________________
existen 10 tipos de personas los que entienden los numeros binarios y los que no :cool:
  #2 (permalink)  
Antiguo 11/01/2006, 03:01
Avatar de Jefe_Negro  
Fecha de Ingreso: diciembre-2005
Mensajes: 50
Antigüedad: 18 años, 4 meses
Puntos: 0
Un ejemplo:

Código:
Public Function CallSPWithRS(objCN As ADODB.Connection, strProcedimiento As String, ParamArray varParametros() As Variant) As ADODB.Recordset

    Dim cmmExec As ADODB.Command
    Dim intX    As Integer
    Dim intTipo As DataTypeEnum
    
    On Error GoTo FuncError
    
    Set cmmExec = New ADODB.Command
    
    cmmExec.ActiveConnection = objCN
    cmmExec.CommandText = strProcedimiento
    cmmExec.CommandType = adCmdStoredProc
    
    For intX = LBound(varParametros) To UBound(varParametros)
        If IsDate(varParametros(intX)) Then
            cmmExec.Parameters.Append cmmExec.CreateParameter(, adDate, adParamInput, , varParametros(intX))
        Else
            cmmExec.Parameters.Append cmmExec.CreateParameter(, adVariant, adParamInput, , varParametros(intX))
        End If
    Next
    
    Set CallSPWithRS= cmmExec.Execute
    
Fin:
    Exit Function

FuncError:
    MsgBox Error
    Resume Fin
    
    
End Function
Esta funcion llama a un procedimiento almacenado cuyo ultimo parametro es un cursor de tipo OUT. En tu caso se llamaria asi

Set Bomba = CallSPWithRS( conexion, "PA_PUMPCONTROLER", 1, 70, 1 )
__________________
Un Saludo
Jefe Negro.


PDF desde ASP ó VB6 Gratis: http://www.oPDF.tk
  #3 (permalink)  
Antiguo 11/01/2006, 07:32
Avatar de Hell08  
Fecha de Ingreso: enero-2005
Mensajes: 174
Antigüedad: 19 años, 3 meses
Puntos: 0
gracias por la respuesta me funciona perfectamente .... pero creo que mi problema es el procedimiento almacenado que tengo que llamar, ya que cuado lo llamo me aparece un error de que no se puede leer el recorset pq esta cerrado. creo que es pq el procedimiento nunca devolvio los valores.

y me asalto una duda... el comando execute tiene tiempo limite de respuesta o no?? pq le quita hartas lineas al procedimiento y corrrio perfecto.

gracias..... saludos
__________________
existen 10 tipos de personas los que entienden los numeros binarios y los que no :cool:
  #4 (permalink)  
Antiguo 11/01/2006, 10:54
Avatar de Hell08  
Fecha de Ingreso: enero-2005
Mensajes: 174
Antigüedad: 19 años, 3 meses
Puntos: 0
holas .... yo denuevo molestando ... ya encontre el problema, pero no se como solucionarlo. el problema cosiste en que dentro de mi procedimiento almacenado existe un update, y debido a esto al ejecutar el procedimiento desde codigo visual este le devuelve el resultado del update antes de llegar al select, por lo que no devuelve ningun dato.

no se como podria solucionar esto ... si alguien me puede orientar o decirme que estoy equivocado .... se le agradece mucho.

saludos.
__________________
existen 10 tipos de personas los que entienden los numeros binarios y los que no :cool:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:20.