[AccessD] adhbCalendar returns INCORRECT value?! Extra info

Gustav Brock gustav at cactus.dk
Mon Feb 16 04:00:55 CST 2004


Hi Sander

I would check two things.

1. The input looks like coming from a textbox. If a Debug.Print shows
wrongly translated dates, try:

  Call CalculateDays(CDate(txtStartDatum), CDate(txtEindDatum), arrDates())

2. Date expression in SQL must be US formatted according to the Lembit
method:

  strWhere =
  "WHERE a.date = #" & Format(dtmCurrDate, "mm\/dd\/yyyy") & "# "

/gustav


> I'm creating a sql string to fill a table.
 
> The (source) table I'm using has a date field with no formatting. I'm linking this table and I'm NOT allowed to change it.
 
> The date from the adhbCalendar is used to determine wich date I must use for the WHERE statement.
 
> The destination table has also a datefield without formatting.
> I use this code to show the date on screen:
> txtEindDatum = adhDoCalendar(txtEindDatum)

> This date is put inside an array (date) like this:
> Dim arrDates() As Date
>    '-----------------------------------------------
>    'Step 1: Fill Date Array
>    '-----------------------------------------------
>    Call CalculateDays(txtStartDatum, txtEindDatum, arrDates())

> Function CalculateDays(dtmStartDatum As Date, dtmEindDatum As Date, ByRef arrDates() As Date) As Integer
>    Dim intCounter As Integer
   
>    On Error GoTo CalculateDays_Error
   
>    intCounter = 0
   
>    Do While (DateDiff("d", dtmStartDatum, dtmEindDatum) >= 0)
>       ReDim Preserve arrDates(intCounter)
>       arrDates(intCounter) = dtmStartDatum
      
>       If DateDiff("d", dtmStartDatum, dtmEindDatum) > 0 Then
>          intCounter = intCounter + 1
>          dtmStartDatum = dtmStartDatum + 1
>       Else
>          Exit Do
>       End If
>    Loop
   
>    'intCountDate = UBound(arrDates)
>    CalculateDays = UBound(arrDates)
>    'CalculateDays = intCountDate
> CalculateDays_Exit:
>    ' Collect your garbage here
>    Exit Function
> CalculateDays_Error:
>    ' Collect your garbage here
>    MsgBox "An error occured!" & vbCrLf & _
>             "Error number     : " & Err.Number & vbCrLf & _
>             "Error description: " & Err.Description & vbCrLf & _
>             "Error source     : " & Err.Source
>    GoTo CalculateDays_Exit
> End Function

> Then I build the select statement:
> For intCountDate = 0 To UBound(arrDates)
>       'dtmCurrDate = Format(arrDates(intCountDate), "mm/dd/yyyy")
>       dtmCurrDate = arrDates(intCountDate)
>       .....
>       .....
>     If IsWeekend(dtmCurrDate) Then
>                      'check if
>                      'Call MsgBox("This day (" & dtmCurrDate & ") is either a saturday or a sunday", vbInformation, "Weekend")
>                      strWhere = "WHERE a.date = #" & dtmCurrDate & "# "

> ...
> ....
 
> Function IsWeekend(dtmDate As Date) As Boolean
>    On Error GoTo IsWeekend_Error
>    'Check to See if Weekend
>    If (Weekday(dtmDate) = vbSaturday) Or (Weekday(dtmDate) = vbSunday) Then
>       IsWeekend = True
>    Else
>       IsWeekend = False
>    End If
   
> IsWeekend_Exit:
>    ' Collect your garbage here
>    Exit Function
> IsWeekend_Error:
>    ' Collect your garbage here
>    MsgBox "An error occured!" & vbCrLf & _
>           "Error number     : " & Err.Number & vbCrLf & _
>           "Error description: " & Err.Description & vbCrLf & _
>           "Error source     : " & Err.Source
>    GoTo IsWeekend_Exit
> End Function

> I don't see anything funny, anybody else?
> SD
 

> Gustav Brock <gustav at cactus.dk> wrote:
> Hi Sander

> It sounds like you have become a victim of non-internationalized code.
> But it is hard to tell with no code and no info on how you are using
> it. 

> /gustav


>> I'm going nuts! I'm using the calendar form from the ADHB 2000 and it returns the WRONG value!?

>> When I select januari 4th 2004 (wich is a sunday) it returns April 1st 2004!! How is this possible?

>> The function below has the following values (after selecting januari 4th 2004):
>> Year = 2004
>> Month = 1
>> Day = 4

>> Public Property Get Value() As Date
>> Value = DateSerial( _
>> Me.Year, Me.Month, Me.Day)
>> End Property

>> i'm using 
>> A2k english
>> Win2000 (reg settings => english; date = dd/mm/yyyy)




More information about the AccessD mailing list