Join The Works program to have access to the most current content, and to be able to ask questions and get answers from Revelation staff and the Revelation community

At 19 JAN 2005 06:46:29AM Oystein Reigem wrote:

When a form reads in a row, @RECORD and @ID normally get populated. I have forms with some programmatic stuff following READ, that relies on correct @RECORD and @ID values being present. But when the record is locked @RECORD and @ID are not set, so the process fails.

What is the reason @RECORD and @ID are not populated when the record is locked?

Can I (the program) populate @RECORD and @ID myself, or might there be unwanted consequences? If I can that would save me from some work.

One more thing: When experimenting with locked records I normally see an empty @RECORD, but I think I once saw evidence of @RECORD not being empty but containing the previous row read. (@ID was empty, though.) Is there an explanation for that? (For all I know it's just a side effect from other programming in the app.)

- Oystein -


At 20 JAN 2005 11:36PM Warren Auyong wrote:

This is odd, as I found @RECORD to be populated with record locking in a FORM.

Where exactly are you checking @RECORD?

If in the READ event are you doing a FORWARD_EVENT prior to checking @RECORD?

You could always use a GET_PROPERTY(@WINDOW,'RECORD'). Just be aware that the changed value in a control will not find it's way into the record extracted thusly unless a LOSTFOCUS event was invoked prior.


At 21 JAN 2005 05:01AM Oystein Reigem wrote:

Warren,

] This is odd, as I found @RECORD to be populated with record locking in a FORM.

Hmm. I must warn you I'm a total locking amateur. But Don Bakke seems to agree with me in this posting about a different subject: .

Are there circumstances when a locked @RECORD is populated and circumstances when it's not? My app is MDI. I've found a couple of things that are different with MDI, but have no real reason to suspect MDI this time. Except that Don often uses MDI too. :-)

Btw - you say your @RECORD is OK but is your @ID correctly set too?

] Where exactly are you checking @RECORD?

The form is a table-bound MDI child (or rather one of many possible such child windows). The checking of @RECORD happens in some handler on the MDI frame. This handler places a key in the child form's key field, sends a READ event to the child, and afterwards checks @RECORD. The child has no READ handler of its own.

] If in the READ event are you doing a FORWARD_EVENT prior to checking @RECORD?

Question does not apply, I think.

] You could always use a GET_PROPERTY(@WINDOW,'RECORD'). Just be aware that the changed value in a control will not find it's way into the record extracted thusly unless a LOSTFOCUS event was invoked prior.

Later in the same handler I have a GET_PROPERTY(@WINDOW,'RECORD') that also fails, in the same way as @RECORD.

Great to have some input. Hope to get this stuff cleared up.

- Oystein -


At 21 JAN 2005 08:18AM Bob Orsini wrote:

When a form reads a record that has been locked the form will read the record as read only and not populate @record or @id. You may however populate it yourself.


At 21 JAN 2005 08:42AM Warren Auyong wrote:

Ahh, I see the errors of my ways. If the record is locked by another station or previous process @RECORD and @ID are not being filled. I never tested this situation as edits are not saved/allowed if the record is locked.

I could see this as a problem if you wanted to print a report via a form interface.


At 21 JAN 2005 10:09AM John Bouley wrote:

What about the record property of the window?

John


At 21 JAN 2005 01:19PM Donald Bakke wrote:

Warren,

I could see this as a problem if you wanted to print a report via a form interface.

Exactly, which is what we do all the time.

dbakke@srpcs.com

SRP Computer Solutions, Inc.


At 21 JAN 2005 01:49PM Bob Orsini wrote:

Same as @record. It is not populated when the record has been locked.


At 21 JAN 2005 04:29PM John Bouley wrote:

Bob,

What happens when there are Symbolics on the form? Are they left blank?

Thanks,

John


At 22 JAN 2005 09:23AM Warren Auyong wrote:

I don't have access to OI until Monday…but…

What happens if the FORM is read-only, e.g. disable write event and record locking?


At 24 JAN 2005 12:28PM Warren Auyong wrote:

While I can understand the design concerns with protecting @RECORD, @ID and CURSORS I wonder why a different solution other than use-at-your-own risk was not implemented.

Foxpro had similar issues when they went to the Windows environment. They "solved" this problem by allowing private data sessions. In a way similar to the push select/session in Arev but a lot less complicated for the programmer.

Documentation on Data Sessions

I understand the need for backwards compatibility but it would seem to me that "private data sessions" could be implemented in a way that would not affect the behavior of existing applications.


At 25 JAN 2005 05:52AM Richard Guise wrote:

I haven't followed this thread in detail but I have successfully fiddled with changing a record key in a kludge to overcome a problem with seq keys. As I recollect I had to tweak something in the OI Windows Common variables.

This may be completely irrelevant but if it helps …


At 28 JAN 2005 03:44PM Warren Auyong wrote:

Okay, if locking is disabled for the form @record, @id and WINDOWS properties RECORD and ID are populated.

Is there a property that tells me the lock status of the record/key in a FORM?


At 28 JAN 2005 06:29PM support@sprezzatura.com wrote:

You could always check Window Common RowLocks@ - if null no lock, if locked, row id.

support@sprezzatura.com

The Sprezzatura Group Web Site

World Leaders in all things RevSoft


At 29 JAN 2005 08:58AM Warren Auyong wrote:

Yeah, time to dig out my print out on your article on the Window common.

This is one of those gotchas that are a RPITA when porting from ARev to OI. Almost all of the ARev screens have softkeys to print reports/forms/merges/labels, do exports or send email. 99.99% of them use @RECORD/@ID.


At 29 JAN 2005 09:08AM support@sprezzatura.com wrote:

Yeah we added ZZ_SetAtRecord(Window, atRecord) and zz_GetAtRecord(Window, atRecord, atId) functions so we didn't have to change our code ;)

support@sprezzatura.com

The Sprezzatura Group Web Site

World Leaders in all things RevSoft

View this thread on the Works forum...

  • third_party_content/community/commentary/forums_works/6ce56f7d29d4d6f985256f8e0040ae63.txt
  • Last modified: 2023/12/30 11:57
  • by 127.0.0.1