Ciao jakula,
visto che l'hai richiesto, ed a risparmio di tempo per tutti, posto il codice del DataReport.
E' necessario obbligare l'utente a salvare il lavoro prima di visualizzare o stampare i dati elaborati. Io faccio sì che l'icona Anteprima di stampa o Stampa siano abilitate solo dopo aver salvato il file.
Tralascio l'implementazione del DataEnviroment, perché occorrerebbe molto tempo e spazio e posto una parte del codice che ho in uso.
Modulo del DataEnviroment:
codice:
Option Explicit
Private Sub DataEnvironment_Initialize()
'Si connette con stringa di connessione ed attiva la connessione:
With DataEnvironment1.ConnectionE1
.ConnectionString = DataConnessione
.Open
End With
End Sub
'Chiude la connessione ed azzera i riferimenti:
Private Sub DataEnvironment_Terminate()
With DataEnvironment1.ConnectionE1
.Close
End With
Unload Me
End Sub
Modulo del DataReport:
codice:
Option Explicit
'Visualizza e stampa il report Conto Economico 1^ Parte:
Public Sub rptForm_Load()
On Error Resume Next
Load DataEnvironment1
'Verifica e se del caso Apre ed aggiorna il recorset:
With DataEnvironment1
If .rsCommandE1.State = 0 Then
.rsCommandE1.Open
.rsCommandE1.MoveFirst
.rsCommandE1.Update
End If
End With
'Imposta i margini del Report:
With Me
.Orientation = rptOrientLandscape
.TopMargin = 320
.BottomMargin = 1440
.LeftMargin = 100
.RightMargin = 100
.ReportWidth = 11400
'Imposta larghezza del Report:
If Me.WindowState = vbNormal Then
.Width = Screen.Width 'Imposta la larghezza del form.
.Height = Screen.Height 'Imposta l'altezza del form.
.Left = (Screen.Width - .Width) / 2 'Centra il form orizzontalmente.
.Top = (Screen.Height - .Height) / 2 'Centra il form verticalmente.
End If
End With
'Visualizza il nome della Società nella pagina di stampa:
RptContoE1.Sections(1).Controls("Label2").Caption = FrmContoE1.TxtNomeE1.Text
'Visualizza il nome del file nella pagina di stampa:
RptContoE1.Sections(1).Controls("Label3").Caption = FrmContoE1.CommonDialogEco2.FileTitle
'Visualizza il Reportper la stampa:
DataEnvironment1.rsCommandE1.Update
RptContoE1.Refresh
RptContoE1.Show vbModal
'Chiude il recorset ed annulla la connessione:
With DataEnvironment1
If .rsCommandE1.State <> 0 Then
.rsCommandE1.Close
Set .rsCommandE1.ActiveConnection = Nothing
End If
End With
'Rinvia all'evento Terminate del DataEnvironment per chiudere la connessione:
Unload DataEnvironment1
End Sub
codice:
'Stampa senza visualizzare il repot:
Public Sub rptFormx_Load()
On Error Resume Next
Load DataEnvironment1
'Verifica e se del caso Apre ed aggiorna il recorset:
With DataEnvironment1
If .rsCommandE1.State = 0 Then
.rsCommandE1.Open
.rsCommandE1.MoveFirst
.rsCommandE1.Update
End If
End With
'Imposta i margini del Report:
With Me
.Orientation = rptOrientLandscape
.TopMargin = 320
.BottomMargin = 1440
.LeftMargin = 100
.RightMargin = 100
.ReportWidth = 11400
'Imposta larghezza del Report:
If Me.WindowState = vbNormal Then
.Width = Screen.Width 'Imposta la larghezza del form.
.Height = Screen.Height 'Imposta l'altezza del form.
.Left = (Screen.Width - .Width) / 2 'Centra il form orizzontalmente.
.Top = (Screen.Height - .Height) / 2 'Centra il form verticalmente.
End If
End With
'Visualizza il nome della Società nella pagina di stampa:
RptContoE1.Sections(1).Controls("Label2").Caption = FrmContoE1.TxtNomeE1.Text
'Visualizza il nome del file nella pagina di stampa:
RptContoE1.Sections(1).Controls("Label3").Caption = FrmContoE1.CommonDialogEco2.FileTitle
DataEnvironment1.rsCommandE1.Update
RptContoE1.Refresh
RptContoE1.PrintReport False
'Chiude il recorset ed annulla la connessione:
With DataEnvironment1
If .rsCommandE1.State <> 0 Then
.rsCommandE1.Close
Set .rsCommandE1.ActiveConnection = Nothing
End If
End With
'Rinvia all'evento Terminate del DataEnvironment per chiudere la connessione:
Unload DataEnvironment1
End Sub
Ciao