Jump to content
  • 1

record checksum


Ari

Question

Posted

Ik zoek een handige manier om te checken of een record gewijzigd is voordat hij gecommit is. Get ( modified fields ) gaat niet werken want die werkt pas na een commit. Ik check als een veld wordt gewijzigd met een scripttrigger. Maar stel je typt een letter in een veld en je doet daarna een backspace dan weet ik dat het veld gewijzigd is maar ik weet niet dat de oorspronkelijke waarde er weer in staat en dat wil ik nou weten..

7 answers to this question

Recommended Posts

  • 0
Posted

Kun je niet een tweede scripttrigger onobjectenter erop zetten waarin je de oorspronkelijke waarde even opslaat en dan in de onobjectmodify tegen de nieuwe waarde check?

  • 0
Posted

Je kan eens proberen een checksum te maken met 

GetContainerAttribute ( <inhoud velden> ; "MD5" )

deze sla je op zodra je een record opslaat. Ben je nu bezig te wijzigen en je wilt een record opslaan dan kan je met Get ( RecordOpenState ) controleren of je überhaupt moet checken of er iets is gewijzigd, voer dan voor de commit in jouw script dezelfde berekening uit en vergelijk die met de opgeslagen waarde.

  • 0
Posted

Hoeveel velden zijn het, wat voor informatie is het en wil je de check op alle velden hebben? Of gaat het om een paar velden? 
je zou bijv. bij een paar tekstvelden de waarde kunnen concateneren (veld1 & veld2 & veld3) en dan met exact( <opgeslagen waarde> ; <huidige waarde>) kunnen kijken of er veranderingen zijn.

  • 0
Posted
2 hours ago, menno said:

GetContainerAttribute ( <inhoud velden> ; "MD5" )

 

Dat kan werken maar 'tis nogal wat om telkens de inhoud van alle velden in een container op te slaan..

 

2 hours ago, hans erik said:

Hoeveel velden zijn het

Het gaat mij erom dat ik weet dat het record daadwerkelijk gewijzigd is dus geltd het voor elk veld. Er wordt een script getriggerd als er een willekeurig veld wordt gewijzigd (behalve globals) waarna de knoppen 'cancel' en 'save' verschijnen. Je kunt vervolgens het record alleen via de knop 'save' opslaan of via 'cancel' reverten. Heb je een veld gewijzigd en toch maar niet dan staat het record nog wel open en moet je een save of cancel actie doen terwijl dat eigenlijk niet nodig is. Beetje overdreven misschien maar als je een record checksum zou hebben kun je dat makkelijk afvangen.

Wordt waarschijnlijk toch iets scripten met globale vars..

  • 0
Posted

Werkt perfect Menno! Meteen maar even een cf van gemaakt.

Let ([
¬file            =    Get ( FileName ) ;
¬layout       =    Get ( LayoutName ) ;
¬table         =    Get ( LayoutTableName ) ;
¬fields        =    FieldNames ( ¬file ; ¬layout ) ;
¬result        =    GetContainerAttribute ( Evaluate ( ¬table &"::"& Substitute ( ¬fields  ; ¶ ; "&" & ¬table & "::"  ) ) ; "MD5" )
];
¬result
)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...