René Nyffenegger's collection of things on the web
René Nyffenegger on Oracle - Most wanted - Feedback -
 

Date arithmetic [DAO]

option explicit

sub date_arithmetic()

  dim db     as dao.database
  dim mdb_file_name as string 

  mdb_file_name = "c:\temp\date_arithmetic_test.mdb"

  kill_file_if_exists(mdb_file_name)

  set db = dao.createDatabase(mdb_file_name, dbLangGeneral, 0)

  dim table_field as dao.field
  dim table_def   as dao.tableDef

  set table_def = db.createTableDef("table_with_dates")

  set table_field = table_def.createField("txt", dbText, 42)
  table_def.Fields.append table_field

  set table_field = table_def.createField("upd", dbText, 42)
  table_def.Fields.append table_field

  set table_field = table_def.createField("dt" , dbDate)
  table_def.Fields.append table_field

  db.tableDefs.append table_def

  dim rs as dao.recordSet
  set rs = db.openRecordSet("table_with_dates", dbOpentable)

  rs.addNew
     rs("txt") = "now()"
     rs("dt" ) =  now()
  rs.update

  rs.addNew
     rs("txt") = "A year from now"
     rs("dt" ) =  dateAdd("yyyy", 1, now())
  rs.update

  rs.addNew
     rs("txt") = "Two months from now"
     rs("dt" ) =  dateAdd("m", 2, now())
  rs.update

  rs.addNew
     rs("txt") = "Three days from now"
     rs("dt" ) =  dateAdd("d", 3, now())
  rs.update

  rs.addNew
     rs("txt") = "Four hours from now"
     rs("dt" ) =  dateAdd("h", 4, now())
  rs.update

  rs.addNew
     rs("txt") = "Five minutes from now"
     rs("dt" ) =  dateAdd("n", 5, now()) ' n, not m!
  rs.update

  rs.addNew
     rs("txt") = "Six seconds from now"
     rs("dt" ) =  dateAdd("s", 6, now()) ' n, not m!
  rs.update

  db.execute("update table_with_dates set upd = 'more than 4 days away' where dateDiff('d', now(), dt) > 4")

  set rs = nothing
  set db = nothing

end sub

private sub kill_file_if_exists(file_name as string)
  dim fso     as  fileSystemObject 
  set fso   = new fileSystemObject

  if fso.fileExists(file_name) then
     fso.deletefile(file_name)
  end if

end sub