Visual Basic - REFERENCIA A INFORME

Life is soft - evento anual de software empresarial
 
Vista:

REFERENCIA A INFORME

Publicado por CHRISTIAN (2 intervenciones) el 04/01/2007 20:53:18
Amigos, ojala alguien tenga una solucion a esto:

Tengo un procedimiento que me permite imprimir informes. La idea es llamarlo y pasarle parametros para que me imprima los informes y ahorrar codigo. El procedimiento es:

Sub imprimirInforme(conStr As String, cmdNombre As String, cmdTxt As String, informe As Informes, vistaPrevia As Boolean)
Dim Listado As ADODB.Command 'Objeto de tipo comando
Dim Entorno As DataEnvironment1 'Nuestro entorno de datos

Screen.MousePointer = vbHourglass

'Iniciamos el entorno de datos.
Set Entorno = New DataEnvironment1

Entorno.deGestTRib.ConnectionString = conStr

Set Listado = Entorno.Commands(cmdNombre)

Listado.CommandType = adCmdText

Listado.CommandText = cmdTxt

Screen.MousePointer = vbDefault

Select Case informe
Case Is = Informes.GuiaCorreos
If Not vistaPrevia Then
drGuiaCorreo.PrintReport
Else
Load drGuiaCorreo
drGuiaCorreo.Show vbModal
End If

End Select
End Sub

Como veran, hasta el Select Case, configuró el DataEnvironment

El problema es que a medida que vaya creando nuevos informes, tendré que incrementar el Select Case y la Enumeracion Informes, pues dependiendo del informe a imprimir (Parametro Informe as Informes) tendre que elegir el camino para que se imprima dicho informe.

Lo que quiero es, pasar como parametro el informe, y cargarlo o imprimirlo directamente, esto me permitiria evitar el Select Case y la Enumeracion Informes.

Algo asi

Sub imprimirInforme(conStr As String, cmdNombre As String, cmdTxt As String, informe as Object ,vistaPrevia As Boolean)
Dim Listado As ADODB.Command 'Objeto de tipo comando
Dim Entorno As DataEnvironment1 'Nuestro entorno de datos

Screen.MousePointer = vbHourglass

'Iniciamos el entorno de datos.
Set Entorno = New DataEnvironment1

Entorno.deGestTRib.ConnectionString = conStr

Set Listado = Entorno.Commands(cmdNombre)

Listado.CommandType = adCmdText

Listado.CommandText = cmdTxt

Screen.MousePointer = vbDefault

If Not vistaPrevia Then
Informe.PrintReport
Else
Load Informe
Informe.Show vbModal
End If
End Sub

Si se fijan, me ahorraria muchas lineas (En caso de que sean muchos informes), y asi ya no vuelvo a tocar el codigo del procedimiento, incluso podria encapsularlo como DLL.

Ahora bien, el ultimo codigo me funciona.... pero no actualiza sus datos.

Ojala alguien entienda mi necesidad y tenga alguna idea.

Lo ultimo que se me acaba de ocurriir es algo asi

dim x as new Object
set x = informe

If Not vistaPrevia Then
Informe.PrintReport
Else
Load Informe
Informe.Show vbModal
End If

No se si al crear una nueva instancia del informe funcione, se me acabade ocurrir, y lo probare. Pero igual espero sus comentarios
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:REFERENCIA A INFORME

Publicado por Amigo (2 intervenciones) el 04/01/2007 23:07:57
Sí, lo mejor es que crees una nueva instancia del informe, aunque se os acabade ocurrir.
Cuando lo probes nos informas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar