Priscila Lima 22/6/2011, 13:19
Não consegui fazer funcionar:
Segue todos códigos VBA que tenho neste relatório....
______________________________________________________________________________________________
Option Compare Database
Private Sub Rport_noData(Cancel As Integer)
'Se o periodo selecionado não contém dados, mostrar mensagem
MssBox "Não há dados para esse formulário. Cancelando relatório...", _
VblInformation
'E cancelar aberura do relatório
Cancel = -1
End Sub
Private Sub Report_Close()
'Ao fechar o relatório, fechar o formulário também
DoCmd.Close acForm, "FrmDatas"
End Sub
Substitui (Date1) (Date2)
Private Function CalculaPeriodo(DatadeAdmissão As Date, DatadeDemissão As Date)
If DataEntrada > DataHoje Then
MsgBox "Data Inicial não pode ser maior que Data actual!", vbExclamation, "Erro"
Exit Function
End If
Dim Anos, meses, dias
Dim iAnos As Double, iMeses As Double, Intervalo As Double
Data2 Data1
Intervalo = DatadeDemissão - DatadeAdmissão
' Um ano tem exatamente 365,2425 dias, ou
' 365 dias, 5 horas, 49 minutos e 12 segundos.
' Ou aproximadamente 365,25 dias.
iAnos = Intervalo / 365.2425
Anos = Int(iAnos)
iMeses = (iAnos - Anos) * 12
meses = Int(iMeses)
dias = DateDiff("d", DateSerial(DatePart("yyyy", DatadeAdmissão) + Anos, DatePart("m", DatadeAdmissão) + meses, Day(DatadeAdmissão)), DatadeDemissão)
Select Case dias
Case -1
dias = 30
meses = meses - 1
Case -2
dias = 29
meses = meses - 1
Case 30 Or 31
dias = 0
meses = meses + 1
End Select
If meses = 12 Then
meses = 0
Anos = Anos + 1
End If
Fim:
If Anos > 1 Then
Anos = Anos & " anos "
Else
Anos = Anos & " ano "
End If
If meses > 1 Then
meses = meses & " meses "
Else
meses = meses & " mês "
End If
If dias > 1 Then
dias = dias & " dias"
Else
dias = dias & " dia"
End If
CalculaPeriodo = Anos & meses & dias
End Function
Private Sub Report_Load()
Me.TxtDataResult.SetFocus
TxtDataResult = CalculaPeriodo(DatadeAdmissão, DatadeDemissão)
End Sub
Private Sub Report_Open(Cancel As Integer)
'Abre o formulário e determina o seu titulo, pois o mesmo
'formulário pode ser usado para qualquer relatório
'que necessite de filtro por datas.
DoCmd.OpenForm "FrmDatas", , , , , _
acDialog, "Transações por datas"
' Se o formulário estiver fechado, cancelar operação
If Not EstáAberto("FrmDatas") Then
Cancel = True
End If
End Sub
No formulário, crei uma Cx texto não acoplada e nomei com TxtDataResult