Resumen Filtros en Data Report-Solución

Mensaje enviado por "Ricardo Vargas" <rvargas@senati.edu.pe>

Muchísimas gracias a los que se dieron un tiempo para contestarme y para aquellos a quienes interese les comento cuál es la solución:

Cuando se ejecuta un objeto Command es creado también un RecordSet con un nombre igual al nombre del comando pero con el prefijo "rs". Así, si se ejecuta el comando cmdClientes, se crea el RecordSet rsCmdClientes y queda abierto. El asunto es que cuando se ejecuta un reporte por segunda vez, este RecordSet no se regenera pues Visual Basic cree que esto sería un desperdicio de recursos. Considero que la intención del equipo de Microsoft fue buena, pero desgraciadamente no contemplaron que el programador podía querer que sí se vuelva a crear mediante el método Execute del objeto Command.

Afortuandamente Roger me ilustró a este respecto y pude entender que lo que había que hacer era invocar al método Close del objeto RecordSet inmediatamente después de mostrar el DataReport. Así, debo escribir:

 if optN=true then
 strcomando="Select * from clientes Where codZona='N'"
 else
 strcomando="Select * from clientes Where codZona='S'"
 end if
 entorno1.commands("cmdClientes").commandtext=strcomando
 entorno1.commands("cmdClientes").execute
 rptClientes.Referesh
 rptClientes.show
 entorno1.rsCmdClientes.close
 ====
 Donde:
 entorno1=Entorno de datos
 cmdClientes=comando de conexión dentro del entorno
 rptClientes= Data Report


Muchas gracias, nuevamente


Ricardo Vargas

----- Mensaje original -----
De: Ricardo Vargas <rvargas@senati.edu.pe>
> ¡Hola!
>
> Ojalá alguien pueda ayudarme con este problema:
>
> Tengo un Data Report que muestra el listado de los registros de la tabla
> Clientes de una BD de Access 2000. He creado un par de botones de opción
de
> modo que pueda elegir mostrar sólo a los de la zona "N" o sólo los de la
> zona "S".
> Después de hacer la elección, hago clic en un botón que tiene más o menos
el
> siguiente código:
>
> if optN=true then
> strcomando="Select * from clientes Where codZona='N'"
> else
> strcomando="Select * from clientes Where codZona='S'"
> end if
> entorno1.commands("cmdClientes").commandtext=strcomando
> entorno1.commands("cmdClientes").execute
> rptClientes.Referesh
> rptClientes.show
>
> ====
> Donde:
> entorno1=Entorno de datos
> cmdClientes=comando de conexión dentro del entorno
> rptClientes= Data Report
>
>
> El problema es que funciona bien la primera vez pero si no cierro el
> proyecto y hago clic en la otra opción para volver a mostrar el comando...
> ¡El Data Report no se refresca!
>
> ¿Alguien sabe cómo resolver este problema y desea compartir su conocimineto
> conmigo?



Resumen Resumen

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com