Al Grano.. Formulario... con Botón propio "GUARDAR REGISTRO" que a la vez que guarda, manda a imprimir dos Informes: Uno de Etiquetas (Inf_Etiquetas) y otro de Pulseras (Inf_Pulseras).
Aparte existen otros dos Botones para Imprimir Estos dos informes por separados.
Con distintas macros como la siguiente, se abren los informes (lo ideal es que ni siquiera SE ABRIERAN, ya que no es indispensables verlos) y después sale el Cuadro de Diálogo de Impresión para elegir sólo la impresora de cada Formulario (son distintas).
Código: Seleccionar todo
REM ------------------------------------- ABRIR Informe de Etiquetas
Sub ImprEtiquetas (Evento)
Dim oForm As Object
Dim Control as Object
Dim oRegistro as integer
Dim oConsulta as Object
Dim oReporte As Object
Dim oCampoRegistro As Object
'El formulario activo
oForm = Evento.Source.Model.Parent
'El campo con el ClavePaciente
oCampoRegistro = oForm.GetByName("NReg")
'Debe ser mayor a cero
If oCampoRegistro.BoundField.Int > 0 Then
'La consulta en la que se basa el reporte
oConsulta = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName ("conImprimir")
'Modificamos la consulta de modo que tome el registro actual
oConsulta.Command = "SELECT * FROM ""Tb_Pacientes"" WHERE ""NReg"" = " & oCampoRegistro.BoundField.Int
'El informe a mostrar ------- Etiquetas
oReporte = ThisDatabaseDocument.ReportDocuments.getByName ("Inf_Etiquetas")
'Mostramos el reporte
oReporte.Open
Wait (1000)
'Abrimos Cuadro de Impresoras
GlobalScope.BasicLibraries.LoadLibrary("Tools")
DispatchSlot(5504)
end if
End Sub
1.- Se podría Imprimir directamente sin tener que abrir el Informe?
2.- Se le puede asignar directamente a cada Informe el nombre de la Impresora a la que se dirigiría? (Ahora mismo le pondríamos como nombre "Microsoft Print to PDF")
3.- En caso contrario, Se puede cerrar automáticamente el Informe después de Impreso?
Bueno.. Con el siguiente código (que lo he tenido que quitar) logro que se cierren, después de Impresos, pero SÓLO SI SE ABREN por separados y no Juntos (con el Botón GUARDAR (e Imprimir))
Código: Seleccionar todo
Sub CerrandoInformes()
oDocumentos = StarDesktop.getComponents() ' Documentos que hay en el escritorio
oEnumeraDocumentos = oDocumentos.createEnumeration() ' Enumeramos los documentos
Do While oEnumeraDocumentos.hasMoreElements() ' Mientras haya más elementos
oDocumento = oEnumeraDocumentos.nextElement() ' Vamos al siguiente
If HasUnoInterfaces(oDocumento, "com.sun.star.frame.XModel") Then ' Si tiene modelo
If left(oDocumento.getTitle(),4)="Inf_" Then
oDocumento.close(True)
End if
End if
Loop
end sub
He buscado algún Evento "DESPUÉS DE IMPRIMIR" pero no lo encuentro por ningún lado...
Bueno.. si podéis echarle un vistazo... os lo agradecería enormemente...
Un Saludo desde Canarias...