Alpha Video Training
Results 1 to 10 of 10

Thread: A5_Audit_trail(2)

  1. #1
    Member
    Real Name
    Terry Morgan
    Join Date
    Nov 2014
    Location
    Essex, England
    Posts
    270

    Default A5_Audit_trail(2)

    I have a global script that is run from the CanSaveRecord in field rules that deletes any existing audit file, recreates it & then copies it elsewhere. Unfortunately it does not work every time in that it does not create the audit file at all. I assume i have created some conflict with its operation. My script is below.
    The only suggestion i have from the users is it depends on how the form is opened as to whether it works i.e. opening a form go to one record change it all ok but move to another record it does not work. Open the form from a list going directly to the selected record it does not work.
    Any help out there?
    Thanks
    Terry


    delete tmpdate
    delete tmptime
    delete oldfilename
    delete newfilename


    dim tmpdate as c = remspecial(dtoc(date(),"7-"))
    dim tmptime as c = remspecial(time())
    dim oldfilename as c = ""
    dim newfilename as c = ""

    xbasic_wait_for_idle()


    tst=a5_is_path_valid(vDBPATH+"Audit Trail\"+vPREFIX)
    If tst = .f.
    dir_create(vDBPATH+"Audit Trail\"+vPREFIX)
    end if


    tst=a5_is_path_valid(vDBPATH+"Audit Trail\"+vPREFIX+"\"+ut(t.uniquequoteno))
    If tst = .f.
    dir_create(vDBPATH+"Audit Trail\"+vPREFIX+"\"+ut(t.uniquequoteno))
    end if

    xbasic_wait_for_idle()


    Master_name = a5.Get_Master_Name()
    if (Master_name = "") then
    ' ui_msg_box("STOP", "You are NOT in a Shadow database." +crlf(2) + "You can only run this operation from a Shadow.", UI_STOP_SYMBOL+UI_OK)
    oldfilename = vDBPATH+vPREFIX+"- audit_trail.txt"
    ' ui_msg_box("oldfilename",oldfilename,UI_OK)
    else
    oldfilename = "C:\MROffice\Shadow\"+vPREFIX+"- audit_trail.txt"
    ' ui_msg_box("oldfilename",oldfilename,UI_OK)
    End if


    newfilename = vDBPATH+"Audit Trail\"+vPREFIX+"\"+ut(t.uniquequoteno)+"\"+ut(t.uniquequoteno)+" - audit_trail "+tmpdate+" "+tmptime+".txt"
    'ui_msg_box("newfilename",newfilename,UI_OK)


    if file.exists(oldfilename) then
    ' ui_msg_box("OK","File "+oldfilename+" exists.",UI_INFORMATION_SYMBOL+UI_OK)
    ' a5_file_remove(oldfilename)
    FILE.remove(oldfilename)
    xbasic_wait_for_idle()
    A5_Audit_trail(2)
    else
    ' ui_msg_box("Error Finding File","File "+oldfilename+" does not exist. Please report this to your Supervisor.",ui_stop_symbol+UI_OK)
    A5_Audit_trail(2)
    end if

    xbasic_wait_for_idle()


    if file.exists(oldfilename) then
    ' ui_msg_box("OK","File "+oldfilename+" exists.",UI_INFORMATION_SYMBOL+UI_OK)
    file.copy(oldfilename,newfilename)
    else
    sleep(3)
    A5_Audit_trail(2)
    sleep(1)
    if file.exists(oldfilename) then
    ' ui_msg_box("OK","File "+oldfilename+" exists.",UI_INFORMATION_SYMBOL+UI_OK)
    file.copy(oldfilename,newfilename)
    else
    ui_msg_box("Error Finding File To Copy","File "+oldfilename+" does not exist. Please report this to your Supervisor.",ui_stop_symbol+UI_OK)
    end if
    end if

    xbasic_wait_for_idle()


    if file.exists(newfilename) then
    ' ui_msg_box("OK","File "+newfilename+" exists.",UI_INFORMATION_SYMBOL+UI_OK)
    else
    ui_msg_box("Error Finding File","File "+newfilename+" does not exist. Please report this to your Supervisor.",ui_stop_symbol+UI_OK)
    end if

  2. #2
    "Certified" Alphaholic Ted Giles's Avatar
    Real Name
    Ted Giles
    Join Date
    Aug 2000
    Location
    In the Wolds, Louth, Lincolnshire, UK
    Posts
    4,365

    Default Re: A5_Audit_trail(2)

    Please explain what you want to happen.
    As in the whole process.
    In simple terms without code, which just confuses things.
    Ted Giles
    Example Consulting - UK
    .

    http://ec12.example-software.com//
    See our site for Alpha Support, Conversion and Upgrade.

  3. #3
    Member
    Real Name
    Terry Morgan
    Join Date
    Nov 2014
    Location
    Essex, England
    Posts
    270

    Default Re: A5_Audit_trail(2)

    Delete any existing audit trail file
    Create a clean new audit trail file contains on the details of the single record enter or change
    Copy the new file under a new reference

    Or

    Alternatively another method of record all record changes, that can easily be referenced

    Thanks

  4. #4
    "Certified" Alphaholic Ted Giles's Avatar
    Real Name
    Ted Giles
    Join Date
    Aug 2000
    Location
    In the Wolds, Louth, Lincolnshire, UK
    Posts
    4,365

    Default Re: A5_Audit_trail(2)

    Well what I have done is;
    Save the Audit trail
    Import the Audit Trail report to a Table from the CSV - can be as big as you like.
    Create a search facility in a locked down form if you want.
    Use the delete function to remove the CSV, but I wouldn't recommend that. Archiving is better.

    As far as aggregating field changes at the Record level , that can be done in the Audit table table form via queries quite easily

    I have worked a lot with legacy data, so that's why deleting history is an anathema to me.
    Ted Giles
    Example Consulting - UK
    .

    http://ec12.example-software.com//
    See our site for Alpha Support, Conversion and Upgrade.

  5. #5
    Member
    Real Name
    Terry Morgan
    Join Date
    Nov 2014
    Location
    Essex, England
    Posts
    270

    Default Re: A5_Audit_trail(2)

    But my code is falling down at the first part. The audit trail file is not always being created.
    Records are also deleted to maximise performance, so cannot aggregate at record level, as the record numbers change over time.
    Thanks

  6. #6
    "Certified" Alphaholic Ted Giles's Avatar
    Real Name
    Ted Giles
    Join Date
    Aug 2000
    Location
    In the Wolds, Louth, Lincolnshire, UK
    Posts
    4,365

    Default Re: A5_Audit_trail(2)

    Been fiddling with this.

    "CanSaveRecord in field rules" should be in the Form Events for CanSaveRecord, [Addin.run("audit_trail")], but you do mention field rules so just checking.

    I struggled with getting a set to handle the Audit Trail so it works on a single table but you might have to roll your own with sets.

    With a single table, security activated, the name of the user and the changes made are saved into my test directory.
    Then, a cursory import of the .txt file shows a messy result but that could be worked on and developed.

    You mention record numbers changing over time, does that mean you don't have an automatic Primary Key created?

    Edit

    Tried just opening the Audit.txt from a button on the form. Comes up in Notepad with all the options for finding, deleting etc. You could password protect that button.
    Last edited by Ted Giles; 08-02-2019 at 05:31 AM.
    Ted Giles
    Example Consulting - UK
    .

    http://ec12.example-software.com//
    See our site for Alpha Support, Conversion and Upgrade.

  7. #7
    Member
    Real Name
    Terry Morgan
    Join Date
    Nov 2014
    Location
    Essex, England
    Posts
    270

    Default Re: A5_Audit_trail(2)

    I am using A5_Audit_trail(2) rather than Addin.run("audit_trail")

    Whether used as a form event or as a field rule event I have the same issue.

    Narrowed it down to failing when there is more than one form open, that are based on Sets that have the same child / link.

    I guess the audit trail is checking for changes to the child / link table albeit there are none, but cannot get the right access - guess this is a bug.

    Anyone have a suggested work around or could this bug be fixed.

    Thanks
    Terry

  8. #8
    Member
    Real Name
    Terry Morgan
    Join Date
    Nov 2014
    Location
    Essex, England
    Posts
    270

    Default Re: A5_Audit_trail(2)

    I finally got round this by creating my own audit trail to run from the Field Rules CanSaveRecord with a combination of a script running from the OnSaveRecord to get the correct Auto Numbered field & save as a memo into a new table.
    Thanks for the suggestions.
    If anyone would like the code, happy to share.
    Terry

  9. #9
    "Certified" Alphaholic MoGrace's Avatar
    Real Name
    Robin
    Join Date
    Mar 2006
    Location
    Los Angeles
    Posts
    3,699

    Default Re: A5_Audit_trail(2)

    Can you post it here?
    Robin

    Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

  10. #10
    "Certified" Alphaholic CharlesParker's Avatar
    Real Name
    Charles Parker
    Join Date
    Dec 2012
    Location
    New Orleans, LA
    Posts
    2,121

    Default Re: A5_Audit_trail(2)

    On a side note: I would suggest if your deleting for the sake of performance to simply save the record in a deleted files table. It has been a life saver to go back and explain to a user that they deleted the file that they claim is "missing" now. Not only that, I can name the exact date and time they did it or another user did. I also have a lot of redundant data in my tables which helps me easily piece back anything a user can do to "mess up" their data.
    NWCOPRO: Nuisance Wildlife Control Software My Application: http://www.nwcopro.com "Without forgetting, we would have no memory at all...now what was I saying?"

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •