Vishal your list box example is a nasty one because List Boxes do their own
caching.
What is displayed in a list box will depend on what was last in the list box
control on the CP that generates the page, not the session that last
generated the list box.
Putting dynamic criteria in a page session object is essential to make
First, Previous, Next, Last buttons work.
If you hit the back button to see the list of telephone number for people in
you department and hit next to get people after 'Fred Blogs' the criteria
'people in your department' needs to be reset. The NetDynamics next
processing fetches the criteria from page session objects, which seems
reasonable to me.
I don't think that all the dynamic criteria for all data objects are stored
in the page session for every page and I don't think it is autmatically
restored. The only stuff generated is what is necessary for the navigate
processing provided by ND.
Brendan Johnston
TeamND
-----Original Message-----
From: [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED]]
Sent: Monday, May 24, 1999 7:22 AM
To: [EMAIL PROTECTED]
Subject: Re: [ND] Why do I have to execute the dataobject
before
Curt,
I think 'dynamic criteria of a DO beiing sessionized as user session
object' makes more sense. Let's consider a simple case- a page having a list
box populated by a DO whose dyn. criteria
is set during onBeforeDisplay event of the page. Now if dyn.
criteria were not to be sessionized & let's say some other user
changed the it right after the display of my page and 2 min.
later I refreshed my page, the contents of the list box would
change and that wouldn't be very nice of ND.
Hope this makes sense
Vishal
Curt Springer <[EMAIL PROTECTED]> wrote:
>Well, now I'm confused.
>
>The below was always my understanding. Then, the last time that
Team ND
>got together, back in February, I mentioned this to Brendan, who
thought
>otherwise. He whipped up a little test project that seemed to
prove this
>wrong. At that point, I figured that my reliance on so-called
sessioning
>was where I was setting criteria in a DO in a button or href event
method,
>and then executing it after loading another page, but in the same
web
>event. Stuff in the same web event doesn't really use sessioning,
even if
>your use put/get(Any)UserSessionObject (as discussed in another
thread, or
>is it this one, can't keep track).
>
>OK, I will have to do my own test project, and report the results.
>
>-- Curt Springer, Team ND
>
>At 03:09 PM 5/21/99 -0500, Shamdasani Nimmi-ANS004 wrote:
>>Aby,
>>
>>Is this what you are looking for?
>>
>>-Nimmi
>>
>>
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=
>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D> =20
>>Class spider.database.$Package_Description$
>>
>>
>>The WHERE Clause
>>
>>
>>SELECT, UPDATE, and DELETE queries allow (and often require) that
you
>>specify
>>criteria. The criteria define the subset of the database records
to be
>>retrieved
>>or affected. The criteria are specified in the WHERE clause of the
query. A
>>common base class named CSpCriteriaSQLObject provides common
functions for
>>constructing queries and defines constant values.
>>
>>
>>In order to support the 4GL functionality NetDynamics provides,
the final
>>WHERE
>>clause (when automatically created) is constructed from 5
sub-elements:
>>
>>
>>=B7 Static Join - The joins you specify in the Studio for this
data object
>>using
>>the Joins tab of the data object editor
>>
>>=B7 Static Filter - The where criteria you specify in the Studio
for this
>>data
>>object using the Where tab of the data object editor
>>
>>=B7 QBE Dynamic Criteria - The criteria automatically added by the
doQBE()
>>method
>>(or manually added by you)
>>
>>=B7 DrillDown Dynamic Criteria - The criteria automatically added
in some
>>cases by
>>the doAction() method (or manually added by you)
>>
>>=B7 Join Dynamic Criteria - All criteria automatically added by
the=
> doJoin()
>>and
>>methods like executeAllUpdatingDataObjects() (or manually added by
you)
>>
>>
>>The first two parts (Static Join and Static Filter) are typically
provided
>>by
>>the developer, and they tend to be fixed for all executions of
this data
>>object
>>by all end users. In contrast, the three Dynamic Criteria types
tend to
>>change
>>from one end user to another, and they may even change during the
same end
>>user's session. For example, if the end user searches for all
customers
>>living
>>in England, the doQBE() method would add a QBE Dynamic Criterion:
>>
>>
>>(Customers.Country =3D 'England')
>>
>>
>>
>>If the results of the query contain more than the requested number
of rows
>>in
>>the output HTML, the end user may return after an unknown time
period and
>>press
>>the <Next> button. Naturally, he/she would expect to see the next
page of
>>all
>>customers that live in England. Between these two web events,
another end
>>user
>>might "intrude" and search for customers whose first name begins
with "Jo".
>>In
>>short, the dynamic parts of the the WHERE clause are automatically
saved by
>>each
>>criteria data object as normal session objects. This is the
mechanism
>>NetDynamics uses so that it does not get confused in such cases.
>>
>>There is a predefined hierarchy between the three parts of a
dynamic
>>criteria:
>>
>>
>>=B7 QBE
>>
>>=B7 Drill Down
>>
>>=B7 Join
>>
>>
>>Consequently, high level Java CP methods that need to clear one
level
>>automatically clear all levels below it.
>>
>>
>>=B7 doQBE() clears all dynamic criteria (QBE, Drill Down, and
Join).
>>
>>=B7 doAction() may clear the Drill Down (and Join) criteria.
>>
>>=B7 doJoin() clears the Join part only.
>>
>>
>>In some cases you may add dynamic criteria yourself, check the
criteria
>>automatically added by the system, clear some parts, and so on.
The=
> database
>
>>package provides methods such as addDynamicCriterion(),
getDynamicCriteria
>>and
>>clearDynamicCriteria() to perform such tasks.
>>
>>
>>Warning: Changes that you make to the dynamic criteria affect only
the
>>current
>>end user (since criteria are automatically stored as user session
objects).
>>Changes made to the other two parts of the WHERE clause (Static
Join and
>>Static
>>Filter) affect all end users. They are member variables of data
objects
>>shared
>>by all end users.
>>
>>-----Original Message-----
>>From: Mathew, Aby [mailto:[EMAIL PROTECTED]]
>>Sent: Friday, May 21, 1999 2:36 PM
>>To: 'Curt Springer';
>>[EMAIL PROTECTED]
>>Subject: Re: [ND] Why do I have to execute the dataobject before
calling
>>i ts getValue()?
>>
>>
>>Curt,
>>
>>I too spent a lot of my ND life thinking Dynamic Criteria are as=
> trustworthy
>>as instance variables, until I was corrected recently.=20
>>
>>From what I learned, even though dataObject.addDynamicCriterion()
sounds
>>like adding something to the DataObject instance, ND goes and
keeps the
>>stuff in a userSessionObject, so it stays for the same user for
later use.
>>This functionality seems to be crucial for the built-in handling
of Next,
>>Prev etc.
>>
>>I had read a detailed note on this, but not able to locate it. It
was=
> fairly
>>recently, otherwise I would doubt myself.
>>
>>Regards,
>>
>>Aby
>>
>>> -----Original Message-----
>>> From: Curt Springer [SMTP:[EMAIL PROTECTED]]
>>> Sent: Friday, May 21, 1999 2:38 PM
>>> To: [EMAIL PROTECTED]
>>> Subject: Re: [ND] Why do I have to execute the dataobject
before
>>> calling its getValue()?
>>>=20
>>> see below
>>>=20
>>> At 11:02 AM 5/21/99 -0800, [EMAIL PROTECTED] wrote:
>>> >Hi,
>>> >
>>> >If some one could clarify the following that will be great-
>>> >
>>> >My Case:
>>> >I have a DO that is not bound to the page, I am calling it
on=20
>>> >the onBeforeDisplay event of the page and adding dynamic=20
>>> >criterion to it to personalize the contents of the page=20
>>> >(actually a listbox on the page) for the user. Now I want to
use
>>> >the same DO in onWebEvent of a button the page, regarding that
I=20
>>> >have following questions-
>>> >1. Why do I have to call execute() method of the DO before=20
>>> >calling its getValue()?
>>>=20
>>> execute() causes the SQL 'select' statement to be sent to the
dbms and
>>> results to be retrieved back. When the DO is bound to the page,
the page
>>> calls execute() automatically. When the DO is not bound, you
have to do
>>> it
>>> yourself.
>>>=20
>>> >2. Can I be sure that the DO's dynamic criteria is still the
same
>>> >assuming multiple user sessions are active and provided I
did=20
>>> >not change the criteria any where else in the code? My
understanding is
>>> that- instances DOs are not shared between sessions.
>>>=20
>>> I must admit I took a long time to get this straight
(pre-emptive
>>> statement).
>>>=20
>>> Dynamic criteria in a DO are like member variables in a page
object. =
> They
>>> hold for the life of a web event, i.e., from a page load or
beginning of
>>> button/href method, until a page is sent back to the browser
(including
>>> the
>
>>> situation where you set criteria on a DO in a button event, then
load
>>> another page and execute the DO in that page's onBeforeLoad or
>>> onBeforeDisplay event). And, at the outset of a web event, they
must be
>>> assumed to reflect work done in a previous web event using the
same
>>> object.
>>>=20
>>> At the beginning of a web event, the DO might have criteria set
by=
> another
>>> page session. So before you add any dynamic criteria for the
current=
> page
>>> session, you must execute clearDynamicCriteria on the DO. Then
you can
>>> add
>>> your current criteria.
>>>=20
>>> Also, in case it was not clear above, in one web event, if you
are in a
>>> button event of PageA, and you call
CSpider.getDataObject("DO"),=20
>>> and then you load PageB, and in its onBeforeLoadEvent, you call
the same
>>> CSpider.getDataObject("DO"), you will get the same object. =20
>>>=20
>>> -- Curt Springer, Team ND
>>>=20
>>>=20
>>> >
>>> >Thanks in advance to all the noble souls who are gonna reply...
>>> >
>>> >Vishal
>>>=
>
>_________________________________________________________________________
>>> >
>>> >For help in using, subscribing, and unsubscribing to the
discussion
>>> >forums, please go to:=
> http://www.netdynamics.com/support/visitdevfor.html
>>> >
>>> >For dire need help, email: [EMAIL PROTECTED]
>>> >=20
>>>
_________________________________________________________________________
>>>=20
>>> For help in using, subscribing, and unsubscribing to the
discussion
>>> forums, please go to:
http://www.netdynamics.com/support/visitdevfor.html
>>>=20
>>> For dire need help, email: [EMAIL PROTECTED]
>>_________________________________________________________________________
>>
>>For help in using, subscribing, and unsubscribing to the
discussion
>>forums, please go to:
http://www.netdynamics.com/support/visitdevfor.html
>>
>>For dire need help, email: [EMAIL PROTECTED]
>>_________________________________________________________________________
>>
>>For help in using, subscribing, and unsubscribing to the
discussion
>>forums, please go to:
http://www.netdynamics.com/support/visitdevfor.html
>>
>>For dire need help, email: [EMAIL PROTECTED]
>>=20
_________________________________________________________________________
For help in using, subscribing, and unsubscribing to the discussion
forums, please go to:
http://www.netdynamics.com/support/visitdevfor.html
For dire need help, email: [EMAIL PROTECTED]
_________________________________________________________________________
For help in using, subscribing, and unsubscribing to the discussion
forums, please go to: http://www.netdynamics.com/support/visitdevfor.html
For dire need help, email: [EMAIL PROTECTED]