Restricting Reports / Dates

Hello Experts,

I have restricted employees from accessing past sales reports using If Date() > Me.txtDate

However, I was just informed that employees just change their system date to overcome this. Simple yet clever

Is there a way to prevent this?

Can I restrict non-admin users from restricting date changes? - this is why I'm also posting in XP Category.

The BE fil is on a network drive, but i can move it to a PC that can't be physically accessed by employes, and somehow use that system date in my FE?  Perhaps, running a .vbs at 12am to update a .txt file, and use that?
APD TorontoAsked:
Who is Participating?
 
Jeffrey CoachmanConnect With a Mentor MIS LiasonCommented:
APD_Toronto,

Just a note here...
<employees just change their system date>

Sadly, the Access issue is not the worst thing...
Changing the system date can screw up Outlook something fierce, as Outlook is "Date Based"
Events will fire, alerts will go out, task will expire, Things that were done may be marked undone, Date stamps may be come invalid, Time limited events will fire, "Auto Archive"...etc.

Finally, it will screw up the event logs...

You can see these links to prevent users from changing the date/time
http://www.experts-exchange.com/Security/Operating_Systems_Security/Q_23827738.html
http://www.experts-exchange.com/Software/Server_Software/File_Servers/Active_Directory/Q_27251411.html
et al:
http://www.google.com/search?q=site%3Awww.experts-exchange.com+prevent+users+from+changing+the+time

JeffCoachman
0
 
Nick67Commented:
I prefer the trust yet verify model.
It is easy enough to create a table that will record who opened the report and when each time it opens.
Since these records would be created serially, you can let the users know that attempts to circumvent the restriction will be obvious, and traceable.
Another method is to look and see if there are records with a Date greater than today

Dim rs as recordset
set rs = currentdb.openrecordset("select SomeID from SomeTable where RecordDate >= (Date() +1)
if rs.recordcount > 0 then
    Msgbox "Hmm...You seem to have gone back in time to look at a past report.  I am coming with a stick now!"
end if
0
 
APD TorontoAuthor Commented:
Nick, could you elaborate a bit more?
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
Nick67Commented:
Presumably, your records have a date in them.
If you are only allowed to check today's records, there should be no 'tomorrow' records yet
So, ergo, if you check for records with a date of tomorrow or later, the only way they could exist is if you messed with the system clock.

Busted
0
 
Nick67Connect With a Mentor Commented:
It is nice for hunting down screw-ups to have a field that shows the datetime an important record is created, anyway.
Add a datetime field, call it DateCreated, and give it a default value of Now()

You can then test for misbehavior
Sub FutureJobs()
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("select SomeID, DateCreated from SomeTable where DateCreated > #" & (Date + 1) & "# And isnull(DateCreated) = false;", dbOpenDynaset, dbSeeChanges)
If rs.RecordCount > 0 Then
    MsgBox "Hmm...You seem to have gone back in time to look at a past report.  I am coming with a stick now!"
End If

End Sub

Changing the time also requires Local Administrator priviledges on the box.
Which should NOT be standard operating procedure

0
All Courses

From novice to tech pro — start learning today.