Convidado 7/12/2012, 13:26
Grande Silvio.. vi isto gora cedo.. o que ocorre é que no módulo: MiniCalendario-Day Box CLick Code, existe um pequeno bug que quebrei a cabeça para resolver...
Esse erro consiste na linha que analiza as datas para verificar se é uma data de hoje ou maior, se for
agenda, caso contrário emite mensagem de data expirada... O que ocorre é que a caixa texto que ele utilizou... se o dia é de um digito apresenta a data no formato dd/mm/yyy e se for de dois apresenta mm/dd/yyyy !!!!
Ocorre que mesmo se eu formatesse a caixa texto na comparação... mesmo assim sempre invertia... e se dava certo para dezembro/2012 já não dava certo para Janeiro/2013..
Não havia jeito de arrumar essa comparação, então o que fiz... Criei uma nova variável (StrData) do tipo Data e carreguei ela com a variável CombinedDate... ai deu certo.
No módulo:
Option Compare Database
Option Explicit
Public StrData As Date
Function fDayclick(Dialog As Boolean, TextBoxNumber)
On Error GoTo TrataErro
Dim DayControl
Dim Month As String
Dim Year As Integer
Dim Day As Integer
Dim NumberOfDays
Dim CombinedDate As Date
Dim MonthNumber As Integer
Dim ReferenceNumber
Dim Msg As String
DayControl = "Day" & TextBoxNumber
NumberOfDays = Forms![frmAgendaStudio]![subfrmMiniCalendario].Form![NumberOfDays]
ReferenceNumber = Forms![frmAgendaStudio]![subfrmMiniCalendario].Form![ReferenceNumber]
ReferenceNumber = ReferenceNumber - 1
Month = Forms![frmAgendaStudio]![subfrmMiniCalendario].Form![Month]
MonthNumber = fMonthToNumber(Month)
Year = Forms![frmAgendaStudio]![subfrmMiniCalendario].Form![Year]
Day = TextBoxNumber - ReferenceNumber
If Day > 0 And Day <= NumberOfDays Then
CombinedDate = MonthNumber & "/" & Day & "/" & Year
'CombinedDate = DateSerial(Year, MonthNumber, Day)
StrData = CombinedDate
Forms![frmAgendaStudio]![subfrmMiniCalendario].Form!DataCombinada = CombinedDate
DoCmd.OpenForm "frmAgendaStudio", acNormal, "", "[dtData]=#" & [Forms]![frmAgendaStudio]![dtDia] & "#", , acNormal
If IsNull(Forms!frmAgendaStudio!dtData) Or Forms!frmAgendaStudio!dtData = "" Then
If StrData >= Format(Date, "dd/mm/yyyy") Then
If MsgBox("Dia sem horários agendados.Deseja Agendar?", vbQuestion + vbYesNo, "Agendar horário") = vbYes Then
[Forms]![frmAgendaStudio]![dtData] = [Forms]![frmAgendaStudio]![dtDia]
DoCmd.RunCommand acCmdSaveRecord
End If
Else
MsgBox "Data anterior ao dia de Hoje. Impossível Agendar.", vbCritical, "Data expirada"
End If
End If
Forms![frmAgendaStudio]!DataX = Format(CombinedDate, "mm/dd/yyyy")
StrData = Empty
End If
Exit Function
Exit_TrataErro:
DoCmd.Hourglass False
DoCmd.Echo True
Exit Function
TrataErro:
If err.Number = 2501 Then
Resume Next
Else
DoCmd.Hourglass False
DoCmd.Echo True
Msg = "Erro # " & Str(err.Number) & " gerado na: fDayclick()" _
& vbNewLine & vbNewLine & "Descrição: " & err.Description _
& vbNewLine & vbNewLine & "Por favor contate o Administrador de Sistema."
MsgBox Msg, vbMsgBoxHelpButton + vbCritical, "Erro", err.Helpfile, err.HelpContext
Resume Exit_TrataErro
End If
End Function
<\pre>
Cumprimentos.