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