Let me first say that what I am about to say is not on topic for this thread.
I think there is some over thinking going on here but do accept that I mis-used the term 'transaction', using it to mean where someone has used the database to do something that added to or changed in some way, the back-end data. And no, I don't understand the true meaning of the term. I apologise for any confusion this may have caused.
I have a number copies of a front-end database, each one loaded on a separate PC located on various benches in a factory and all linked to a shared back-end database stored on a network server. Various people will visit each of the PCs from time to time, either to look at stuff or to do stuff. The front-end has lots of full screens that allow people to look at stuff and lots of popup forms that allow people to do stuff.
Like many data management systems I have seen, in order to do stuff, a user has to first log in with their password. To ensure this happens, the database won't allow popup forms to be opened when no-one is logged in, and when someone is logged in, only those popup forms that have been 'permitted' for that user, can be opened. All popup forms are modal. When they have finished doing the stuff on the popup, the user will close it or it will close automatically, depending on what it is they have done, and they should then log out of the database, but sometimes forget.
If someone forgets to log out, it is conceivable that someone else could come along and do other stuff without logging in themselves. If this happens, any records this person creates or changes, will appear to have been created or changed by the person who had forgotten to log out. It is this situation that my timeout feature now helps to prevent.
Now, if someone has taken the trouble to log into the database and open one of the popups, it implies that they had the intention to perform an operation. If they changed their mind they would close the popup. A popup form that is designed to allow a user to create a record will often have a number of unbound textboxes into which the user makes entries, and only when they have made a valid entry into each textbox, does the 'proceed' button become enabled. Clicking on the proceed button runs code that creates the record, based on the popup form entries, and the popup then automatically closes. At any time up to this point, the user may be distracted and leave the popup partially completed. In this situation, I do not want the database to close the popup as this would be annoying for that user when they return to complete the operation. I also do not want the database to log them out as this would allow the operation to then be continued but without recording who did it.
Please don't worry, there is no situation where the back-end data can be updated in an inconsistent state.
If I was designing the database from scratch, I may not design it quite like this, but having developed it over many years, this is how it has evolved, and it works.
I hope this makes things a bit clearer and satisfies everyone's curiosity.
Warm regards
Colman
I think there is some over thinking going on here but do accept that I mis-used the term 'transaction', using it to mean where someone has used the database to do something that added to or changed in some way, the back-end data. And no, I don't understand the true meaning of the term. I apologise for any confusion this may have caused.
I have a number copies of a front-end database, each one loaded on a separate PC located on various benches in a factory and all linked to a shared back-end database stored on a network server. Various people will visit each of the PCs from time to time, either to look at stuff or to do stuff. The front-end has lots of full screens that allow people to look at stuff and lots of popup forms that allow people to do stuff.
Like many data management systems I have seen, in order to do stuff, a user has to first log in with their password. To ensure this happens, the database won't allow popup forms to be opened when no-one is logged in, and when someone is logged in, only those popup forms that have been 'permitted' for that user, can be opened. All popup forms are modal. When they have finished doing the stuff on the popup, the user will close it or it will close automatically, depending on what it is they have done, and they should then log out of the database, but sometimes forget.
If someone forgets to log out, it is conceivable that someone else could come along and do other stuff without logging in themselves. If this happens, any records this person creates or changes, will appear to have been created or changed by the person who had forgotten to log out. It is this situation that my timeout feature now helps to prevent.
Now, if someone has taken the trouble to log into the database and open one of the popups, it implies that they had the intention to perform an operation. If they changed their mind they would close the popup. A popup form that is designed to allow a user to create a record will often have a number of unbound textboxes into which the user makes entries, and only when they have made a valid entry into each textbox, does the 'proceed' button become enabled. Clicking on the proceed button runs code that creates the record, based on the popup form entries, and the popup then automatically closes. At any time up to this point, the user may be distracted and leave the popup partially completed. In this situation, I do not want the database to close the popup as this would be annoying for that user when they return to complete the operation. I also do not want the database to log them out as this would allow the operation to then be continued but without recording who did it.
Please don't worry, there is no situation where the back-end data can be updated in an inconsistent state.
If I was designing the database from scratch, I may not design it quite like this, but having developed it over many years, this is how it has evolved, and it works.
I hope this makes things a bit clearer and satisfies everyone's curiosity.
Warm regards
Colman
Last edited: