[jawsscripts] Re: inserting yesterday's date with a script

  • From: "Jason Boston" <jwb3301@xxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Sat, 20 Feb 2010 11:49:10 -0600

Paul,
First, Let me say, I'm extremely grateful for your assistance. This will
save me that much more time at work.
That is excellent code. I was able to drop it right into my script with very
little change. When I asked the original question, I had something like your
solution in mind,  I was just at a loss as to how I would separate the
pieces of the date string into a int instead of a string. I also didn't know
how to use the constant declaration the way you did. I was also hoping
someone like yourself would give me what I needed to paste in the prior date
so I could build on it to be able to paste the previous date for the last 4
days. It took a little working, but I greatly expanded your idea and made
it work.  I wrote the code in my notepad script for easy testing. I'll port
it over to MS Access later. For each successive prior date, I wrote a
function. I assigned each one to control+shift+1, control+shift+2, etc.

If anyone can find a flaw based on some date I didn't think to try, please
do so. I would love to fix it now rather then later. :) I tested it on leap
years from march 1 through march 8 and I also tested jan 1 and 2. Of course
I tested the current date too, but that was easy since it didn't affect the
prior month.

Control+shift+1 uses the function and script you sent me.
Control+shift+2 pastes in the date for 2 days ago.
Control+shift+3 paste in the date for 3 days ago 
Control+shift+4 pastes in the date for 4 days ago.

I've included the code below so you can see what I did. 

*** start copy ***

CONST
PreviousMonthLastDay = "31|31|28|31|30|31|30|31|31|30|31|30"

CONST
PreviousMonthLast2Day = "30|30|27|30|29|30|29|30|30|29|30|29"

CONST
PreviousMonthLast3Day = "29|29|26|29|28|29|28|29|29|28|29|28"

CONST
PreviousMonthLast4Day = "28|28|25|28|27|28|27|28|28|27|28|27"

String Function PreviousDaysDate ()

var

INT Day,
INT Month,
INT year

LET Day = StringToInt (SysGetDate ("dd"))
LET Month = StringToInt (SysGetDate ("MM"))
LET Year = StringToInt (SysGetDate ("yyyy"))

IF (Day > 1) THEN ; not first day of month

LET Day = Day - 1

ELSE ;day=1, so last day of previous month needed, then previous month also
needed

LET Day = StringToInt (StringSegment (PreviousMonthLastDay, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 29

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was first day of month, or not

; all integers now set to the previous day

RETURN (SysGetDate ("MM/dd/yyyy", Month, Day, Year))

EndFunction


Script WritePreviousDaysDate ()

TypeString (PreviousDaysDate ())
EnterKey ()

EndScript


String Function Previous2DaysDate ()

var
INT Day,
INT Month,
INT year

LET Day = StringToInt (SysGetDate ("dd"))
LET Month = StringToInt (SysGetDate ("MM"))
LET Year = StringToInt (SysGetDate ("yyyy"))

IF (Day > 2) THEN
; if today is > then the 2nd do this to adjust back 2 days
LET Day = Day - 2
Else

; tests to see if today is the 2nd of the month.
IF (Day == 2) THEN

LET Day = StringToInt (StringSegment (PreviousMonthLastDay, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 29

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was 2nd day of month

IF (Day == 1) THEN

LET Day = StringToInt (StringSegment (PreviousMonthLast2Day, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 28

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was 1st day of month

EndIf

; all integers now set to the previous day

RETURN (SysGetDate ("MM/dd/yyyy", Month, Day, Year))

EndFunction


Script WritePrevious2DaysDate ()

TypeString (Previous2DaysDate ())

EnterKey ()

EndScript

String Function Previous3DaysDate ()

var
INT Day,
INT Month,
INT year

LET Day = StringToInt (SysGetDate ("dd"))
LET Month = StringToInt (SysGetDate ("MM"))
LET Year = StringToInt (SysGetDate ("yyyy"))

IF (Day > 3) THEN
; if today is > then the 2nd do this to adjust back 3 days
LET Day = Day - 3
Else

; test to see if today is the 3rd of the month
IF (Day == 3) THEN

LET Day = StringToInt (StringSegment (PreviousMonthLastDay, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 29

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was 3rd day of month


; tests to see if today is the 2nd of the month.
IF (Day == 2) THEN

LET Day = StringToInt (StringSegment (PreviousMonthLast2Day, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 28

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was 2nd day of month

IF (Day == 1) THEN

LET Day = StringToInt (StringSegment (PreviousMonthLast3Day, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 27

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was 1st day of month

EndIf

; all integers now set to the previous day

RETURN (SysGetDate ("MM/dd/yyyy", Month, Day, Year))
EndFunction


Script WritePrevious3DaysDate ()

TypeString (Previous3DaysDate ())

EnterKey ()

EndScript


String Function Previous4DaysDate ()
var
INT Day,
INT Month,
INT year

LET Day = StringToInt (SysGetDate ("dd"))
LET Month = StringToInt (SysGetDate ("MM"))
LET Year = StringToInt (SysGetDate ("yyyy"))

IF (Day > 4) THEN
; if today is > then the 4th do this to adjust back 4 days
LET Day = Day - 4
Else

; test to see if today is the 4th of the month
IF (Day == 4) THEN

LET Day = StringToInt (StringSegment (PreviousMonthLastDay, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 29

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was 3rd day of month



; test to see if today is the 3rd of the month
IF (Day == 3) THEN

LET Day = StringToInt (StringSegment (PreviousMonthLast2Day, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 28

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was 3rd day of month


; tests to see if today is the 2nd of the month.
IF (Day == 2) THEN

LET Day = StringToInt (StringSegment (PreviousMonthLast3Day, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 27

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was 2nd day of month

IF (Day == 1) THEN

LET Day = StringToInt (StringSegment (PreviousMonthLast4Day, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 26

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was 1st day of month

EndIf

; all integers now set to the previous day

RETURN (SysGetDate ("MM/dd/yyyy", Month, Day, Year))
EndFunction


Script WritePrevious4DaysDate ()

TypeString (Previous4DaysDate ())

EnterKey ()

EndScript


Script EnterCurrentDate ()
Var
String sDate
Let sDate = SysGetDate ("MM/dd/yyyy")
TypeString(sDate)
EnterKey ()

EndScript



*** end copy ***


-----Original Message-----
From: jawsscripts-bounce@xxxxxxxxxxxxx
[mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Paul Magill
Sent: Friday, February 19, 2010 6:21 AM
To: jawsscripts@xxxxxxxxxxxxx
Subject: [jawsscripts] Re: inserting yesterday's date with a script

Hi Jason,

I think the below function may do what you need...

The constanc is required to 'look up'  the number of the last day in the
previous month when the current date is the first day of a month.

- it acts as a list/table, with the first number being the number of days in
December, so when the current month is January, month 1  retrieves the last
day in the first position in the list/table.

If the current  date  is March the first, then the third position in the
list is retrieved, 28 days for Febuary.

There is a check for leap years

begin required lines:


CONST

PreviousMonthLastDay = "31|31|28|31|30|31|30|31|31|30|31|30"



String Function PreviousDaysDate ()

var

INT Day,

INT Month,

INT year

LET Day = StringToInt (SysGetDate ("dd"))

LET Month = StringToInt (SysGetDate ("MM"))

LET Year = StringToInt (SysGetDate ("yyyy"))

IF (Day > 1) THEN ; not first day of month

LET Day = Day - 1

ELSE ;day=1, so last day of previous month needed, then previous month also
needed

LET Day = StringToInt (StringSegment (PreviousMonthLastDay, "|", Month))

LET Month = Month - 1

IF (Month == 2) && ((Year % 4) == 0) THEN ;is Febuary in a leap year

LET Day = 29

ENDIF ; is Febuary in a leap year

IF (Month == 0) THEN ; month is January, so December of previous year
required

LET Month = 12

LET year = year - 1

ENDIF ;month was January

ENDIF ; was first day of month, or not

; all integers now set to the previous day

RETURN (SysGetDate ("MM/dd/yyyy", Month, Day, Year))

EndFunction



End required lines. see below for use.



Script WritePrevious daysDate ()



TypeString (PreviousDaysDate ())

; your other lines

EndScript

Regards,
Paul from Aust

----- Original Message ----- 
From: "Jason Boston" <jwb3301@xxxxxxx>


HI all,
I work in MS Access much of my day at work and have written a script I find
very useful for pasting in  today's date based on the computers system date.
Below is the script I use assigned to the key stroke "ctrl+shift+v".
However,  I would like to create a similar script that pastes in yesterday's
date based on the system date. Since the method I'm using defines the system
date as a string, I can't figure out how to make it go back one day. Could
anyone suggest how to accomplish this with JFW 11 and MS Access?

Here's the script I use for pasting the  current date. BTW it works in a
table, query, or a form.

Script EnterCurrentDate ()
Var
String sDate
Let sDate = SysGetDate ("MM/dd/yyyy")
TypeString(sDate)
' next 2 lines takes focus away from current cell and brings it back quickly
so jaws automatically reads you what was just posted.
{tab}
ShiftTabKey ()
EndScript


__________ 
Visit and contribute to The JAWS Script Repository http://jawsscripts.com

View the list's information and change your settings at 
//www.freelists.org/list/jawsscripts

__________ 
Visit and contribute to The JAWS Script Repository http://jawsscripts.com

View the list's information and change your settings at 
//www.freelists.org/list/jawsscripts

Other related posts: