Jump to content
  • 1

record checksum


Ari

Question

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..

Link to comment

7 answers to this question

Recommended Posts

  • 0

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.

Link to comment
  • 0

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.

Link to comment
  • 0
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..

Link to comment
  • 0

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
)

Link to comment

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...