Scusa se rispondo solo ora. Non è una cosa di poco conto, anzi è un'anomalia molto insidiosa del controllo DE, sopratutto se si trattano dati numerici. Difatti si rischia di stampare dati non aggiornati ..., con tutte le conseguenze. Io dopo molti tentativi ho risolto in questo modo (sarebbe comunque opportuno predisporre due righe di codice per verificare se ciò che va in stampa corrisponde ai dati aggiornati):
codice:
'Da inserire nel modulo del DE
Private Sub DataEnvironment_Initialize()
'Si connette con stringa di connessione ed attiva la connessione:
With DataEnvironment1.ConnectionE1
.ConnectionString = DataConnessione
.Open
End With
End Sub
Private Sub DataEnvironment_Terminate()
'Chiude la connessione ed azzera i riferimenti:
With DataEnvironment1.ConnectionE1
.Close
End With
Unload Me
End Sub
codice:
' Da inserire nel modulo del DR
'Visualizza e stampa il report:
Public Sub rptFormCF1_Load()
On Error Resume Next
Load DataEnvironment1
'Verifica e se del caso Apre ed aggiorna il recorset:
With DataEnvironment1
If .rsCommandCF1.State = 0 Then
.rsCommandCF1.Open
.rsCommandCF1.MoveFirst
'.rsCommandCF1.Update
End If
End With
'Imposta i margini del Report:
With Me
.Orientation = rptOrientLandscape
.TopMargin = 100
.BottomMargin = 500
.LeftMargin = 400
.RightMargin = 400
.ReportWidth = 12400
'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:
RptCashFlowPP.Sections(1).Controls("Label2").Caption = FrmProva.TxtNomeCF1.Text
'Visualizza il nome del file nella pagina di stampa:
RptCashFlowPP.Sections(1).Controls("Label3").Caption = FrmProva.CommonDialogCF2.FileTitle
'Visualizza il Reportper la stampa:
'DataEnvironment1.rsCommandCF1.Update
RptCashFlowPP.Refresh
RptCashFlowPP.Show vbModal
'Chiude il recorset ed annulla la connessione:
With DataEnvironment1
If .rsCommandCF1.State <> 0 Then
.rsCommandCF1.Close
'Set .rsCommandCF1.ActiveConnection = Nothing
End If
End With
'Rinvia all'evento Terminate del DataEnvironment per chiudere la connessione:
Unload DataEnvironment1
End Sub
Spero che sia chiaro, come vedi nulla di eccezionale, solo qualche accorgimento.