none
Error en la carga de ListView1 en Visual basic 6.0 RRS feed

  • Pregunta

  • Buenas tardes expertos

    estoy cargando un ListView1 en Visual basic 6.0 desde un procedimiento almacenado en sql server.

    El problema es que cuando esta instrucción Rs.MoveFirst me da un error indicándome:

    La operación no esta permitida si el objeto esta cerrado.

    Y de verdad no se como abrir ese recorset.  Aquí les dejo el código.

    Gracias.

    con.Provider = "SQLOLEDB"
        strconnect = "Data Source=" & gsSQL_Server & ",1433;Network Library=DBMSSOCN;Initial Catalog=" & gsSQL_Database & ";User ID=" & gsSQL_User & ";Password=" & gsSQL_Password & ";Connect Timeout=3600"
        con.Open strconnect
        Set objCmd = New ADODB.Command
        
        objCmd.CommandType = adCmdStoredProc
        objCmd.CommandText = "sp_muestra_movimientos_ver_consulta_importacion"
        
        Set objCmd.ActiveConnection = con
        
        objCmd.Parameters.Append objCmd.CreateParameter("@c_codi_enti", adBSTR, adParamInput, , gsCodEmpresa)
        objCmd.Parameters.Append objCmd.CreateParameter("@c_codi_sucu", adBSTR, adParamInput, , gsCodSucursal)
        objCmd.Parameters.Append objCmd.CreateParameter("@c_codi_alma", adBSTR, adParamInput, , gsCodTdaAlm)
        objCmd.Parameters.Append objCmd.CreateParameter("@c_codi_orid", adBSTR, adParamInput, , "%")
        objCmd.Parameters.Append objCmd.CreateParameter("@c_sucu_orid", adBSTR, adParamInput, , "%")
        objCmd.Parameters.Append objCmd.CreateParameter("@c_fec_ini", adDBDate, adParamInput, , dtp1.Value)
        objCmd.Parameters.Append objCmd.CreateParameter("@c_fec_fin", adDBDate, adParamInput, , dtp2.Value)
        objCmd.Parameters.Append objCmd.CreateParameter("@c_codi_docu", adBSTR, adParamInput, , "%")
        objCmd.Parameters.Append objCmd.CreateParameter("@c_seri_docu", adBSTR, adParamInput, , "%")
        objCmd.Parameters.Append objCmd.CreateParameter("@c_nume_docu", adBSTR, adParamInput, , "%")
        objCmd.Parameters.Append objCmd.CreateParameter("@c_codi_tmov", adBSTR, adParamInput, , "%")
        objCmd.Parameters.Append objCmd.CreateParameter("@c_corr_movi", adBSTR, adParamInput, , "%")
        objCmd.Parameters.Append objCmd.CreateParameter("@c_flg_InSa", adBSTR, adParamInput, , "IN")
        
        Set Rs = objCmd.Execute
        Rs.MoveFirst
        ListView1.ListItems.Clear
        Dim li As ListItem


    Gerson Requena

    martes, 30 de junio de 2015 21:47

Respuestas

  • Los procedimientos almacenados retornan por defecto el número de registros afectados.

    La solución es incluir en el procedimiento almacenado la intrucción 
    SET NOCOUNT ON


    Saludos, Javier J

    • Marcado como respuesta Gerson Requena martes, 27 de septiembre de 2016 18:42
    jueves, 2 de julio de 2015 6:30

Todas las respuestas

  • Hola Garson,

    La ejecución del comando no te devuelve el recorset. Lo que debes hacer es, después de ejecutar el comando, cargar el recordset con

    Set Rs = NEw ADODB.Recordset

    Rs. Open "Select ....", con, adOpenDynamic, adLockOptimisitic


    Saludos, Javier J

    miércoles, 1 de julio de 2015 8:45
  • Muchas gracias Javier.

    El problema es como es la sintaxis del Rs.Open  cuando estoy utilizando un procedimiento almacenado.

    no es un consulta de tipo texto.

    Gracias.


    Gerson Requena

    miércoles, 1 de julio de 2015 13:30
  • Los procedimientos almacenados retornan por defecto el número de registros afectados.

    La solución es incluir en el procedimiento almacenado la intrucción 
    SET NOCOUNT ON


    Saludos, Javier J

    • Marcado como respuesta Gerson Requena martes, 27 de septiembre de 2016 18:42
    jueves, 2 de julio de 2015 6:30