PDA

View Full Version : WAS sessions variables


ABC123

John Haytko
08-15-2004, 07:22 PM
Peter Wayne asked about using a session variable in a filter. I am trying to do exactly this. However I may not be declaring the variable correctly. I am declaring the variable session.user_name = "eval(user_name)" in a login dialog activate event. I then set the filter user_name = "eval(session.user_name)" in a grid component query (dbf). Zero records are returned. I can't see what I am missing.

Thanks for any help

JerryBrightbill
08-16-2004, 06:39 AM
John

I don't think a session variable will evaluate directly in the component. However, you can add code on a WAS page that uses the component to use a session variable. If you look at the xbasic tab when the component is in edit in the component builder, you will see a line like this if you have set a filter in the component

tmpl.DBF.filter = "Customer_Id=\"\""

In this case, the filter was to find all records with a blank customer_id using the Alpha Sports Invoice_header table. That should return 0

Now build a page and insert the component. On the source page, you will see this

'==============compute the HTML for the Component==========

delete x_TestInvoice
dim x_TestInvoice as p
tmpl_TestInvoice.request = request
tmpl_TestInvoice.session = session
tmpl_TestInvoice.response = response
tmpl_TestInvoice.serversetting = serversetting

'' more code

Add this after that section to override the filter set in the component

'----------------- Add Filter -------------
session.user_id = "00000005"
tmpl.DBF.filter = "Customer_Id=\"\"" ' optional to set filter to a default
if eval_valid("session.user_id") ' session.user_id exists
if session.user_id """" ' value exists
tmpl.DBF.filter = "Customer_Id=\""+session.user_id+"\""
end if
end if


' Result of above in interactive window
'session.user_id = "00000005"
'tmpl.DBF.filter = "Customer_Id=\""+session.user_id+"\""
'?tmpl.dbf.filter
'= Customer_Id="00000005"

In this example, I set the session variable in the page code, but it may have been set elsewhere. That is the reason to test for both the existence of the variable and test if it has a value.

Jerry

John Haytko
08-16-2004, 09:08 PM
Jerry,
I set the filter as you recommended in the .a5w page. It does not appear to have any effect. I have tested for the session variable. It is present and returns a value. Did you actually get it to work?

Thanks again for the reply

JerryBrightbill
08-17-2004, 03:56 AM
John

I use this technique on many pages and it works fine. Be sure that you have saved the page before previewing it. You may also want to close and reopen A5 to clear all of the session variables and saved queries and try again.

Jerry

Lenny Forziati
08-17-2004, 09:32 AM
Session variables can be cleared by stopping and restarting the Web Application Server, there is no need to shut down Alpha Five altogether.

-Lenny

John Haytko
08-18-2004, 07:32 PM
Still cant' get this to work. I am unable to set a filter in an a5w page even without trying to call a session variable. I have started and stopped the server cleared cookies and placed the filter lines in various locations throughout the a5w file. I guess I'm about ready to pay for help. Any takers?

JerryBrightbill
08-18-2004, 09:08 PM
John

Attached is a zip file with a component and a a5w page using the component that shows how it works. These were created using AlphaSports. Unzip the files into the following folder under the A5V6 program folder.

Samples\AlphaSports\Alphasports.WebProjects\Default.WebProject

Open A5V6 and open Alpha Sports. You can open the Web Projects control panel and see how the component was built. If you look at the xbasic tab, you will see the syntax for the filter. Open the a5w page in the html editor and run the page. Note on the source code tab that the page has added a different fixed filter to the component. Then uncomment out the lines that set the session variable and see how the session variable is used in the filter and run the page again.

You can use the same methods on any page to override any property set in the xbasic code in the component.

Jerry

John Haytko
08-19-2004, 06:07 PM
Old dogs and morons can learn new tricks.

Thanks Jerry

Hope I can repay you some time

Pat Bremkamp
09-26-2004, 07:24 PM
Jerry,

You da bomb!

I was almost completely out of hair when I tried your technique and it works like a champ!

From the example zip I realized that I needed to include the component name, then it was a snap.

Thank you for sharing your expertise!

Pat