Also, If you did NOT know, since the DB is not damaged, those deleted rows 
are recovered fairly easily with R:Scope.
 
>From R:Scope

5.4.2.2 Manually Fixing the Data File
The Manual option allows you more control over the data file than the 
Automatic option. By using the
Manual option, you can:
· Rebuild pointers in the data file
· Find and undelete rows of deleted data


5.4.2.2.7 Restoring and Deleting Row s
You can restore deleted rows to a table or delete existing rows from a 
table by using R:Scope. If you
restore or delete rows, you will need to rebuild the indexes for the table.
Restoring Rows
R:BASE marks a row as deleted by making its row size a negative number.
To restore a deleted row:
1. Move the block cursor to the row you want to undelete.
2. Select the red button with the plus (+) or press the [Insert] key to 
undelete the row. R:Scope
restores the row and moves to the next wow in the table. The row size will 
now be a positive
number.

On Tuesday, March 15, 2022 at 10:10:45 AM UTC-4 Karen Tellef wrote:

> So some kind of login / logout table to show which users are in and out 
> of the database?  And then match up the list with the datetime of the 
> deletions?  Yeah, that could provide a clue.  I'll ask my contact if that 
> might work, not sure if everyone leaves the app up all day or they go in / 
> out (only 4 users)
>
> Karen
>
>
>
> -----Original Message-----
> From: baue...@gmail.com <baue...@gmail.com>
> To: RBASE-L <rba...@googlegroups.com>
> Sent: Tue, Mar 15, 2022 9:06 am
> Subject: Re: [RBASE-L] - Delete Trigger mystery?
>
> But you also know that when the deletion is limited to EXACT rows and not 
> random gaps in the data file, that the deletions are occurring from one of 
> two sources.  Programmatically or direct User.  That was why one of my 
> suggestions was to add a table with a datetime (and any other info you 
> might feel  germane  ) and in a delete trigger have that table updated with 
> the timestamp so it might point to a time period when certain users were in 
> the db, or at some time when no one should be.   
>
>
>
>
>
> On Monday, March 14, 2022 at 5:58:29 PM UTC-4 Karen Tellef wrote:
>
> But we have NO CLUE where/when these deletions are happening.  There is 
> nowhere in code that I can add the insertion of a delete flag, because 
> there honestly should be nowhere that a user (nor a program) is deleting 
> these rows.  This data has to do with lawsuits, and the data has to stay 
> there until the lawsuit is settled and then the record is archived at 
> monthend.  We know someone isn't running this monthend routine when they 
> shouldn't, because a bunch of other stuff would also happen at the same 
> time, and none of that is happening
>
> Karen
>
>
>
> -----Original Message-----
> From: baue...@gmail.com <baue...@gmail.com>
> To: RBASE-L <rba...@googlegroups.com>
> Sent: Mon, Mar 14, 2022 3:23 pm
> Subject: Re: [RBASE-L] - Delete Trigger mystery?
>
> A "Delete Flag" is just a single character field that excludes the record 
> from any results.  It is in lieu of "Actual" deletion.  Internally, I 
> believe R:Base does the same thing with deleted records and they stay "so 
> marked" until PACK or RELOAD occurs. 
>
> By doing this, you can then restrict to a single event that would occur 
> ONLY when one person, so authorized, has access to do so.
>
> The requirement for a password in advance of any deletions is a good 
> stopgap too, so long as the password is not widely known, but you know a 
> secret is only a secret when kept among 3 people and two of them are dead.
>
>
> On Monday, March 14, 2022 at 2:34:53 PM UTC-4 Karen Tellef wrote:
>
>
> Do you mean using GRANT to restrict deletion?  You know, I have never 
> once used GRANT in all the decades I've used RBase!!!  I'd have to read up 
> on how to use it.  Do you assign permission to delete to only specific 
> users?  And what "name" is it using to assign permissions?  Stuff like that 
> that I don't have the answers to, would have to read up on.
>
> Also, I have nowhere in my code where the user is allowed to delete a 
> record, so there wouldn't be anywhere to set some kind of "delete flag".  
> No program deletes a batch of records other than the one monthend program 
> which works fine to archive/delete records, we know that one works on the 
> last day of the month as intended.  Only one user has the password to run 
> that routine and the monthend date is never the one that is erroneously 
> deleting records.
>
>
> Karen
>
>
> -----Original Message-----
> From: baue...@gmail.com <baue...@gmail.com>
> To: RBASE-L <rba...@googlegroups.com>
> Sent: Sun, Mar 13, 2022 9:04 am
> Subject: Re: [RBASE-L] - Delete Trigger mystery?
>
> Well it might take a little work, but this is what I would do.   
> #1 - I would lock the table down with access control as tight as 
> practically possible.
>
> Add a single character field to the table to use as a Delete Flag 
> (hangover from the old DBase days, using   an asterisk (0x2A) as the marker 
> or something else as your choosing).  Having done that, you would have to 
> change your code to exclude those marked as deleted.
>
> To the above, you might also add another table with just a datetime column 
> that is added by a trigger from the main table that is updated ANY TIME the 
> table is accessed (this will give you a timeframe to point to user activity 
> involvement at the time of ANY access or deletions) 
>
> Add a second table, as you have already done to contain just the records 
> marked as deleted.  This would be to determine if there are any actual 
> deletions occurring in either table and if there are any deletions, is 
> there any commonality to the deletions.  
>
> It seems as the detective work is pointing to user access being the 
> culprit, but maybe by taking extraordinary steps, it can be conclusive one 
> way or another.
>
>
>
> On Saturday, March 12, 2022 at 2:45:33 PM UTC-5 Karen Tellef wrote:
>
> Adrian:  I am assuming they were actually deleted.  Since the trigger is 
> "before delete" and operates as it should other than giving me that null 
> DeletedBy, and I can't find them anywhere in the original table, I have to 
> think they were deleted.  If there was an issue with indexes or a database 
> problem itself, I would think it would show up on an Autochk.  This 
> database has never had a bad Autochk.
>
> Karen
>
>
> -----Original Message-----
> From: Adrian Huessy <a.hu...@huessy.com>
> To: rba...@googlegroups.com <rba...@googlegroups.com>
> Sent: Sat, Mar 12, 2022 11:14 am
> Subject: RE: [RBASE-L] - Delete Trigger mystery?
>
> Karen,
> Quick question: do you feel that records are/were effectively deleted or 
> do you have NULL entries even though nothing was deleted?
> BR, Adrian
>  
> *Von:* 'Karen Tellef' via RBASE-L [mailto:rba...@googlegroups.com] 
> *Gesendet:* Samstag, 12. März 2022 01:02
> *An:* rba...@googlegroups.com
> *Betreff:* [RBASE-L] - Delete Trigger mystery?
>  
>  
> Why I needed the before-delete trigger:  *no one* should ever be deleting 
> data from this table.  And although they have the full version of RBase, no 
> one knows how to "get to the R> prompt".  There is a monthend routine that 
> the senior user runs that will delete a batch of data, but that's all (we 
> remove the trigger before this monthend routine, then put it back on)
>  
> Yet every now and then we find data mysteriously disappeared.
>  
> So I created a before-delete trigger.  It takes the record to be deleted 
> and appends it to an archive table.  3 columns in the archive table will 
> hold the deleted date / time and the user who deleted it.  Works perfectly 
> at my development environment and when I test it at the place where the 
> database is installed.  Records the date, time and the user.
>  
> However, twice now we have found records in that archive table that had 
> been deleted (hundreds at a time).  The records had the deleted date/time 
> but had *NO *user name.  
>  
> Here's the code I use in my stored procedure.  The DeletedDate and 
> DeletedTime works fine, it gets updated every time.  There is no login to 
> this app, so I grab the NetUser (used many times in the application for 
> other things, successfully).  The first time that the archive had no user 
> name, I modified the stored procedure to grab the ComputerName.  But still, 
> nothing.....
>  
>  
>    SET VAR vText TEXT = NULL
>    SET VAR vText = (CVAL("NetUser"))
>    IF vText IS NULL THEN
>      SET VAR vText = (CVAL("ComputerName"))
>    ENDIF
>
>    UPDATE ClaimsDeleted SET DeletedDate = .#DATE, DeletedTime = .#TIME, +
>      DeletedBy = .vText WHERE claim = .spClaim
>  
>  
>  
> Can anyone think of anything else I can trap that would help me figure out 
> how/when the records got deleted?  
>  
> Or does anyone know how records could get deleted when there *actually is 
> no* NetUser or ComputerName?  
>  
>  
> Karen
>  
>  
> -- 
> For group guidelines, visit 
> http://www.rbase.com/support/usersgroup_guidelines.php
> --- 
> You received this message because you are subscribed to the Google Groups 
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rbase-l+u...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rbase-l/1654695576.980450.1647043308102%40mail.yahoo.com
>  
> <https://groups.google.com/d/msgid/rbase-l/1654695576.980450.1647043308102%40mail.yahoo.com?utm_medium=email&utm_source=footer>
> .
> -- 
> For group guidelines, visit 
> http://www.rbase.com/support/usersgroup_guidelines.php
> --- 
> You received this message because you are subscribed to the Google Groups 
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rbase-l+u...@googlegroups.com. 
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rbase-l/dbba74c3572c4f6aa054b424fd42d70b%40huessy.com
>  
> <https://groups.google.com/d/msgid/rbase-l/dbba74c3572c4f6aa054b424fd42d70b%40huessy.com?utm_medium=email&utm_source=footer>
> .
>
> -- 
> For group guidelines, visit 
> http://www.rbase.com/support/usersgroup_guidelines.php
> --- 
> You received this message because you are subscribed to the Google Groups 
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rbase-l+u...@googlegroups.com.
> To view this discussion on the web visit 
>
> https://groups.google.com/d/msgid/rbase-l/ff8ce79d-ce09-43b8-a3fc-48a36de02ca2n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/rbase-l/ff8ce79d-ce09-43b8-a3fc-48a36de02ca2n%40googlegroups.com?utm_medium=email&utm_source=footer>
>  
> .
>
> -- 
> For group guidelines, visit 
> http://www.rbase.com/support/usersgroup_guidelines.php
> --- 
> You received this message because you are subscribed to the Google Groups 
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rbase-l+u...@googlegroups.com.
> To view this discussion on the web visit 
>
> https://groups.google.com/d/msgid/rbase-l/bc0980d9-c3a2-47ee-8d40-b1364fb952c7n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/rbase-l/bc0980d9-c3a2-47ee-8d40-b1364fb952c7n%40googlegroups.com?utm_medium=email&utm_source=footer>
>  
> .
>
> -- 
> For group guidelines, visit 
> http://www.rbase.com/support/usersgroup_guidelines.php
> --- 
> You received this message because you are subscribed to the Google Groups 
> "RBASE-L" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rbase-l+u...@googlegroups.com.
> To view this discussion on the web visit 
>
> https://groups.google.com/d/msgid/rbase-l/f7c59574-ff16-48d1-86d0-43df117ecbf5n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/rbase-l/f7c59574-ff16-48d1-86d0-43df117ecbf5n%40googlegroups.com?utm_medium=email&utm_source=footer>
>  
> .
>

-- 
For group guidelines, visit 
http://www.rbase.com/support/usersgroup_guidelines.php
--- 
You received this message because you are subscribed to the Google Groups 
"RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rbase-l+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rbase-l/b244ee2d-88c7-484a-a8a8-cf9fe7018f6an%40googlegroups.com.

Reply via email to