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
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


0