none
Llenar un MSHFlexGrid en VB 6.0 desde un procedimiento almacenado RRS feed

  • Pregunta

  • Buenas tardes expertos.

    Tengo un inconveniente con el llenado de un MSHFlexGrid de VB 6.0.

    Lo estoy llenado desde un procedimiento almacenado en SQL Server 2008r2

    El problema es que me indica que no trae registros, pero cuando ejecuto el sp desde sql me trae los datos que necesito. Cuando hago la comparación de los parámetros están bien, no tengo error con eso, pero aun así no me trae datos.

    Después que abro el Rs pregunto If (Rs.RecordCount > 0) Then, si es mayor a cero me llama la función que me llena el MSHFlexGrid, sino me manda un mensaje de error.

    Aquí les dejo parte de mi código para ver si me pueden orientar.

    vObj1 = Format(dtp1.Value, "dd/MM/yyyy")
        vObj2 = Format(dtp2.Value, "dd/MM/yyyy")
        
        sSQL = "EXECUTE sp_muestra_movimientos_ver_consulta_importacion "
        sSQL = sSQL & "'" & gsCodEmpresa & "', "
        sSQL = sSQL & "'" & gsCodSucursal & "', "
        sSQL = sSQL & "'" & gsCodTdaAlm & "', "
        sSQL = sSQL & "'%', "
        sSQL = sSQL & "'%', "
        sSQL = sSQL & "'" & vObj1 & "', "
        sSQL = sSQL & "'" & vObj2 & "', "
        sSQL = sSQL & "'%', "
        sSQL = sSQL & "'%', "
        sSQL = sSQL & "'%', "
        sSQL = sSQL & "'%', "
        sSQL = sSQL & "'%', "
        sSQL = sSQL & "'IN'"
        
        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
        
        Rs.Open sSQL, con
        
        If (Rs.RecordCount > 0) Then
          Call Llenar_FlexGrid(con, Rs)
        Else
          MsgBox "No existe registros en el rango de fecha indicados", vbCritical
          'SE DESBLOQUEAN LOS CONTROLES

    Gracias....!!!!

     


    Gerson Requena

    jueves, 2 de julio de 2015 21:52

Respuestas

Todas las respuestas

  • Los procedimientos almacenados por defecto retornan el número de registros afectados por el proceso. Para que no te retorne el número de registros debes incluir en el procedimiento almacenado la línea SET NOCOUNT ON

    Saludos, Javier J

    viernes, 3 de julio de 2015 6:27
  • Gracias Javier.

    Pero lo que me indicas ya lo tiene, a inicio del sp. te dejo la muestra.

    	@c_fec_ini     CHAR(10)='2001/01/01', --YYYY/MM/DD    
    	@c_fec_fin     CHAR(10)='2003/03/31', --YYYY/MM/DD    
    	@c_codi_docu   CHAR(2)='%',     
    	@c_seri_docu   CHAR(3)='%',
    	@c_nume_docu   CHAR(8)='%',
    	@c_codi_tmov   CHAR(2)='%',
    	@c_corr_movi   CHAR(8)='%',
    	@c_flg_InSa    CHAR(2)='IN'
    	)
    AS
    BEGIN
    SET NOCOUNT ON
    IF @c_flg_InSa ='IN'
    	SELECT 	0 						as 'l_flag_sele',
    		a.c_codi_enti ,a.c_codi_sucu ,a.c_codi_alma ,
    		a.c_codi_docu ,a.c_seri_docu ,a.c_nume_docu ,
    		a.c_codi_orig ,a.c_sucu_orig,
    		b.c_sigl_docu            	       		as'c_desc_docu',
    		ISNULL(c.c_rzon_enti,'') 	       		as'c_rzon_enti',
    		ISNULL(d.c_nomb_sucu,'') 	       		as'c_sucu_enti',
    


    Gerson Requena

    viernes, 3 de julio de 2015 12:45
  • Precisamente hay que poner 

    SET NCOUNT OFF

    para que NO devuelva el contador.


    Saludos, Javier J

    • Marcado como respuesta Gerson Requena miércoles, 27 de abril de 2016 20:40
    viernes, 3 de julio de 2015 13:02