Can we know if a user delete a row from a table?

  • Thread starter Thread starter Mota
  • Start date Start date
M

Mota

Hi;
For some reasons i have to enable DB window for my users and so all tables
in mde file are accessible.I have just one table named [MonthlyHistoryTBL]
that deleting its rows is very important for me.The AllowDeletion property
of its bound form is set to No but the table itself has not such a
property.Therefor a user can simply delete a row,and hide this from me.
Is there a way to find out if a user has deleted a row directly from a
table,or prevent it?
Thank you in advance for your help.
 
Not that I know of, which is why you shouldn't let the user have access to
the database window. If they don't need direct access to this table, you may
try hiding the table, but this won't work for all users. Some of them will
know how to go find the table, but hopefully, "out of sight, out of mind".
To hide the table, right click the table in design mode, choose properties,
then click the Hidden textbox. If you need to get to the table again, go to
Tools|Options|View tab and check Hidden Objects.
 
Hi;
For some reasons i have to enable DB window for my users and so all tables
in mde file are accessible.I have just one table named [MonthlyHistoryTBL]
that deleting its rows is very important for me.The AllowDeletion property
of its bound form is set to No but the table itself has not such a
property.Therefor a user can simply delete a row,and hide this from me.
Is there a way to find out if a user has deleted a row directly from a
table,or prevent it?
Thank you in advance for your help.

In addition to Wayne's suggestion, you can implement Access workgroup
security on your database, and don't give the users Delete permission
on the table. Security is rather complicated to implement; get a copy
of the Access 2000 Security Whitepaper (nothing much has changed) from
support.microsoft.com, READ IT CAREFULLY, and follow its instructions
to the letter. It's quite possible to have a database that seems
secure but is wide open, or lock it up so that nobody including you
can get in; so MAKE A BACKUP first.

John W. Vinson[MVP]
 
I had thought about this trick before,but unfortunately this table is one of
the most interested tables for my users.So,what happens if for example in a
new version they face to a file,lacking a favorite table,while its form
exists yet !!!
For such reasons now im searching for a way to track these changes,rather
than avoiding them.
I hoped access can help using its built in tables (I mean "Msys" tables).Is
there a clue?
Thank you for your help.

Wayne Morgan said:
Not that I know of, which is why you shouldn't let the user have access to
the database window. If they don't need direct access to this table, you
may try hiding the table, but this won't work for all users. Some of them
will know how to go find the table, but hopefully, "out of sight, out of
mind". To hide the table, right click the table in design mode, choose
properties, then click the Hidden textbox. If you need to get to the table
again, go to Tools|Options|View tab and check Hidden Objects.

--
Wayne Morgan
MS Access MVP


Mota said:
Hi;
For some reasons i have to enable DB window for my users and so all
tables in mde file are accessible.I have just one table named
[MonthlyHistoryTBL] that deleting its rows is very important for me.The
AllowDeletion property of its bound form is set to No but the table
itself has not such a property.Therefor a user can simply delete a
row,and hide this from me.
Is there a way to find out if a user has deleted a row directly from a
table,or prevent it?
Thank you in advance for your help.
 
"Security is rather complicated to implement..."
and for i want to package and deploy my DB,i avoid this kind of security as
far as i can.
I wish to get a clue about using access built in tables,such as MsysObjects
and so on,to track row deletions in user made tables.Do you know about the
data these tables carry?
Thanx so much for your help.

John Vinson said:
Hi;
For some reasons i have to enable DB window for my users and so all tables
in mde file are accessible.I have just one table named [MonthlyHistoryTBL]
that deleting its rows is very important for me.The AllowDeletion property
of its bound form is set to No but the table itself has not such a
property.Therefor a user can simply delete a row,and hide this from me.
Is there a way to find out if a user has deleted a row directly from a
table,or prevent it?
Thank you in advance for your help.

In addition to Wayne's suggestion, you can implement Access workgroup
security on your database, and don't give the users Delete permission
on the table. Security is rather complicated to implement; get a copy
of the Access 2000 Security Whitepaper (nothing much has changed) from
support.microsoft.com, READ IT CAREFULLY, and follow its instructions
to the letter. It's quite possible to have a database that seems
secure but is wide open, or lock it up so that nobody including you
can get in; so MAKE A BACKUP first.

John W. Vinson[MVP]
 
As the others have told you, there's no way to automate what you want.

You're going to have to bite the bullet and use the advice you've been
given.

--
Doug Steele, Microsoft Access MVP

(no e-mails, please!)


Mota said:
I had thought about this trick before,but unfortunately this table is one of
the most interested tables for my users.So,what happens if for example in a
new version they face to a file,lacking a favorite table,while its form
exists yet !!!
For such reasons now im searching for a way to track these changes,rather
than avoiding them.
I hoped access can help using its built in tables (I mean "Msys" tables).Is
there a clue?
Thank you for your help.

Not that I know of, which is why you shouldn't let the user have access to
the database window. If they don't need direct access to this table, you
may try hiding the table, but this won't work for all users. Some of them
will know how to go find the table, but hopefully, "out of sight, out of
mind". To hide the table, right click the table in design mode, choose
properties, then click the Hidden textbox. If you need to get to the table
again, go to Tools|Options|View tab and check Hidden Objects.

--
Wayne Morgan
MS Access MVP


Mota said:
Hi;
For some reasons i have to enable DB window for my users and so all
tables in mde file are accessible.I have just one table named
[MonthlyHistoryTBL] that deleting its rows is very important for me.The
AllowDeletion property of its bound form is set to No but the table
itself has not such a property.Therefor a user can simply delete a
row,and hide this from me.
Is there a way to find out if a user has deleted a row directly from a
table,or prevent it?
Thank you in advance for your help.
 
Do they absolutely have to have access to the table or could you use a form
in datasheet view? If you could use the form in datasheet view, you can put
code in the form to control what they're doing.

I would recommend that you not do anything to the Msys* tables, but if you
must, don't do anything that will allow you to alter them.
 
I wish to get a clue about using access built in tables,such as MsysObjects
and so on,to track row deletions in user made tables

Access DOES NOT RECORD user changes to tables, in MSysObjects or
anywhere else.

The information you are asking for DOES NOT EXIST, period, anywhere.
So there's no way you can track it.

Sorry, but that's the way Access works.

John W. Vinson[MVP]
 
John said:
Access DOES NOT RECORD user changes to tables, in MSysObjects or
anywhere else.

The information you are asking for DOES NOT EXIST, period, anywhere.
So there's no way you can track it.

Sorry, but that's the way Access works.

John W. Vinson[MVP]

What you can do is the obvious. Upon the user opening the database, have
Access make a copy of the table under a new name. Put the code for this in an
Autoexec macro and put the macro in your database startup.

Similarly, upon closing the database, have Access verify that the 'old' table
doesn't have fewer records than the 'new' table. If it does, delete the old
table, and rename the new table as the old table.

Of course, this can be embellished; verify that individual records haven't
been tampered with, etc.
 
Sam Landy via AccessMonster.com said:
What you can do is the obvious. Upon the user opening the database, have
Access make a copy of the table under a new name. Put the code for this in
an
Autoexec macro and put the macro in your database startup.

Similarly, upon closing the database, have Access verify that the 'old'
table
doesn't have fewer records than the 'new' table. If it does, delete the
old
table, and rename the new table as the old table.

Of course, this can be embellished; verify that individual records haven't
been tampered with, etc.

It depends on whether Mota is trying to prevent deliberate or accidental
deletions.

If the user is determined to delete the data, presumably they'd be capable
of deleting from the copied table as well.
 
Thank you.

Douglas J Steele said:
As the others have told you, there's no way to automate what you want.

You're going to have to bite the bullet and use the advice you've been
given.

--
Doug Steele, Microsoft Access MVP

(no e-mails, please!)


Mota said:
I had thought about this trick before,but unfortunately this table is one of
the most interested tables for my users.So,what happens if for example in a
new version they face to a file,lacking a favorite table,while its form
exists yet !!!
For such reasons now im searching for a way to track these changes,rather
than avoiding them.
I hoped access can help using its built in tables (I mean "Msys" tables).Is
there a clue?
Thank you for your help.

Not that I know of, which is why you shouldn't let the user have access to
the database window. If they don't need direct access to this table,
you
may try hiding the table, but this won't work for all users. Some of them
will know how to go find the table, but hopefully, "out of sight, out
of
mind". To hide the table, right click the table in design mode, choose
properties, then click the Hidden textbox. If you need to get to the table
again, go to Tools|Options|View tab and check Hidden Objects.

--
Wayne Morgan
MS Access MVP


Hi;
For some reasons i have to enable DB window for my users and so all
tables in mde file are accessible.I have just one table named
[MonthlyHistoryTBL] that deleting its rows is very important for
me.The
AllowDeletion property of its bound form is set to No but the table
itself has not such a property.Therefor a user can simply delete a
row,and hide this from me.
Is there a way to find out if a user has deleted a row directly from a
table,or prevent it?
Thank you in advance for your help.
 
Its a good idea.In fact i tried this,with the difference that i put the
backup table in another (hidden) DB.But since both Syncronizing and
comparing accomplishes in a closing and opening the main DB,it doesnt work
when deletion happen in the same session,without reopening the file.
Thank you for your comment.
 
Im not going to handle or edit that tables,just wanted to read them if they
could help me.But John says,Msys tables are out of my business.So there is
no hope in them.
Thank you for your attention.
 
Back
Top