Pass values dynamically to the WHERE clause in SFAPI
Hi there
We have a requirement to pass values dynamically (in the run-time of the interface) to the WHERE condition to our SFAPI query.
Eg -
SELECT person, personal_information, address_information, phone_information, email_information, employment_information, job_information, compensation_information, paycompensation_recurring, paycompensation_non_recurring, job_relation, accompanying_dependent, global_assignment_information, direct_deposit, national_id_card, person_relation
FROM CompoundEmployee
WHERE last_modified_on >= to_date('LAST_RUN_DATE') AND
last_modified_on <= to_date('CURRENT_RUN_TIME')
LAST_RUN_DATE is stored in a custom entity for which we execute another OData query. The custom entity is updated with the CURRENT_RUN_TIME once the interface has been executed successfully. So the next time the interface is run it picks up the LAST_RUN_DATE from the custom OData entity.
SAP PO has the functionality to run a dynamic query for OData adapters. Refer to Note 2051137 - PI Successfactors adapter : Dynamic odata query and single synchronous sfapi query
Eg - select fields from position (this is what you state in OData query path in the comms channel; this is static); and you have an advanced tab in comms channel where you mention dynamicquery and set it to true (this points to a XSD which has the keyword TOP, SKIP & FILTER in it).
This gets the filter values passed from the BPM from another query (from a OData cust_table).
So the whole query is - select fields from position filter field a = x field b = y etc. Field a field b are fields in position that are you passing values x and y in run time of the interface.
SAP PO also has the advanced tab feature for SFAPI for dynamic query.
Question is -
how to use it?
has anyone implemented this before?
What does XSD will look like?
How do we pass values to the fields to the Where clause for SFAPI.
Any ideas are welcome!
Regards
Arijit Das
After you have added a new where clause on the detail VO, try re-executing VO's query by DetailVO.executeQuery()
If it doesn't work try re-executing the MasterVO's query after you have added the where clause on the detail
Similar Messages
-
Regarding dynamically assigning the where clause to select query
hi,
Please send the code regarding how to dynamically assign the where clause to select query.
thanks in advanceSELECT <fileds>
INTO TABLE itab
FROM dbase
WHERE condition. -
JSP, DataWebBean: How to dynamically set the where clause of query and display record
Hi,
I am reposting this question as per suggestions made by Mr. Dwight.
I have used ViewCurrentRecord web bean to display records from EMP table. I have to use the Dept_Id_FK from the current
record of the EMP table to display corresponding records of Dept table. I have a view object called DeptView in my Business
Components which selects all the records from the Dept table.
How do I get the value of Dept_Id_FK and use it to display the required records of the Dept table?
I tried to declare a variable and get the value of Dept_Id_FK but it did not work. My code is as follows:
<%! String m_DeptId = null; %>
<jsp:useBean id="RowViewer" class="oracle.jbo.html.databeans.ViewCurrentRecord" scope="request">
<%
RowViewer.initialize(pageContext, "EMPApp_EMP_EMPAppModule.EMPView1");
RowViewer.setReleaseApplicationResources(false);
RowViewer.getRowSet().next();
m_DeptId = (String)RowViewer.getRowSet().getCurrentRow().getAttribute("DeptIdFk");
%>
</jsp:useBean>
Thanks.
nullFirst of all, Thank you very much for making use of the new topic format. It is very much appreciated.
As for your question, I think there are several different ways to accomplish what I think you want to do.
1. Create a view object that includes both Emp and Dept entities and join them there. In this case, your query would look something like this:
Select e.empno,e.name,...,d.dname,d.loc from emp e, dept d
where e.deptno = d.deptno
You should be able to create a JSP off of this view object that contains both the employee and department information. In this case, BC4J takes care of the foreign key to primary key coordination.
2. In order to set a dynamic where clause for a view, you need to do the following in your usebean tag:
rsn.initialize(application,session, request,response,out,"DeptView");
rsn.getRowSet().getViewObject().setWhereClause("deptno=" | | m_DeptId);
rsn.getRowSet().getViewObject().executeQuery();
rsn.getRowSet().first();
You will need to do this in a separate usebean tag from the EmpView, since the usebean can only initialize one view object.
In other words, you would have your ViewCurrentRecord bean tag for the EmpView, then a separate one for the DeptView where you use the above code to set the where clause to display just the information for the department you want.
Another option, but one I'm not sure would work as well, is to create a master-detail JSP to do this for you. Usually a master-detail is a one-to-many (one department to many employees). Your request appears to be the reverse, but might still be doable using the same mechanism.
You set up relationships between views in your BC4J project using View Links. If you used the BC4J project wizard and created default views, some of these links may have been created for you. They are created when BC4J detects a foreign key to primary key relationship in the database.
You can create your own View Links using the View Link wizard. Select your BC4J project node and choose Create View Link... from the context menu. You will be asked to select a source view (Emp), and a target view (Dept), then select the attribute in each view that related the two of them (deptno).
Next, you need to reflect this new relationship setting in your application module. Select your app module and choose Edit from the context menu. On the data model page, select the EmpView node in the Selected list. Now select the DeptView node in the available list and shuttle it over. You should see DeptView1 via yourlink appear indented under the EmpView node. Save and rebuild your BC4J project to reflect the changes.
In your JSP project, you can now have the wizard create a master-detail form for you based on DeptView1.
Let me know if the above answers your question, or if I have misunderstood what it is you wanted to do.
null -
Dynamically changing the WHERE clause in detail VO in Master Detail
Hi, I want to develop a search functionality, results will be in a table, which will have an inline table displaying the details per row found.
I have a MD defined trough viewlink. I do change the master VO at runtime (set the entire SQL), based on the criteria entered by the user.
Is there a way to change the VO at the detail end of the link at runtime - that is what I haven't been able to do.
I have read that the ADF framework creates internal VO for each master row, whenever accessed trough accessor (which is not I am trying to do). I haven't been able to find a way to get a hold of the REAL VO at the detail end and have its WHERE clause changed.
Changes to the "VO instance in AM" (same one used as a definition in the detail end in the ViewLink def) does not seem to reflect the detail VO.
I have a MasterView, DetailView, MasterDetailLink (MasterView->DetailView).
MasterDetailLink is used to create a table with inline detail table. At runtime:
1.get MasterView (from AM), change query trough setQuesry() - works.
2.get DetailView (from AM), change query trough addWhereClause() - does not work (no exceptions) - the results I am getting DO NOT reflect the conditions of the where clause, I mean the clause have not been addedd.
I 've looked at the logs (debug enabled) and it seems to me that there no "activities" related to the detail VO, even after the where clause of the VO from step 2 is changed.
Looks like there is a separate VO which I would like to get a hold of :)
Thanks, and sorry for the long explanationAfter you have added a new where clause on the detail VO, try re-executing VO's query by DetailVO.executeQuery()
If it doesn't work try re-executing the MasterVO's query after you have added the where clause on the detail -
Passing values dynamically Froman 'INLINE Query' to a 'SUB QUERY'
If I am using an line query which uses a SELF JOIN subquery
how can I pass the values from the Inline Query to Subquery ?
Is this possible?
SQL...Code
and Inline Queries..
(select count(*) 'PrimaryISIN'
from instrument ins,
instrument_xref insx
where ins.id_inst = insx.id_inst
and insx.flg_active = 'Y'
and ins.id_source ='MF'
and ins.flg_primary_listing = 'Y'
and ins.flg_active = 'Y'
and insx.id_inst_xref = ( select DISTINCT a.id_inst_xref
from instrument_xref a,
instrument_xref b
where b.id_inst_xref ='B0DV8Y9'
and b.id_inst = a.id_inst
and b.id_inst_xref_type in ('SE','IS')
and a.id_inst_xref = 'GB00B03MLX29'
)PISIN2
I am hardcoding the id_inst_xref is the SELF JOIN? Can these be passed dynamically from
the INLINE Query which is invoking the SUB QUERY?Hi, The hardcoded values entered in the SELF JOIN run fine.
Now,I need to pass values dynamically from the INLINE query.
How do I do that?
Thanks -
How to change recordset bahaviour to accept dynamic column names in the where clause
Hi
im using php-mysql and i make a recordset and i want to make the column names in the where clause to be dynamic like
"select id,name from mytable where $tablename-$myvar";
but when i do this my i break the recordset and it disappear
and when i use variables from advanced recordset it only dynamic for the value of the column not for the column name
and when i write the column name to dynamic as above by hand it truns a red exclamation mark on the server behaviour panel
so i think the only way is to change the recordset behaviour is it? if so How to make it accept dynamic column names?
thanks in advance.As bregent has already explained to you, customizing the recordset code will result in Dreamweaver no longer recognizing the server behavior. This isn't a problem, but it does mean that you need to lay out your dynamic text with the Bindings panel before making any changes. Once you have changed the recordset code, the Bindings panel will no longer recognize the recordset fields.
Using a variable to choose a column name is quite simple, but you need to take some security measures to ensure that the value passed through the query string isn't attempting SQL injection. An effective way of doing this is to create an array of acceptable column names, and check that the value matches.
// create array of acceptable values
$valid = array('column_name1', 'column_name2', 'column_name3');
// if the query string contains an acceptable column name, use it
if (isset($_GET['colname']) && in_array($_GET['colname'], $valid)) {
$col = $GET['colname'];
} else {
// set a default value if the submitted one was invalid
$col = 'column_name1'
You can then use $col directly in the SQL query. -
Values from a Multi-Select in the where clause of a Select statement
I have a web page that solicits query parameters from the user.
The selections that the user makes will populate the WHERE clause of a Select statement.
One of the controls on the page is a multi-select control.
When this page posts, I would like to execute a Select statement wherein the selected values from this control appear in the .. Column IN ( <list here> ) portion of the WHERE clause.
This is an extremely common scenario, but I cannot seem to locate a how-to or message thread that addresses this specific case.
I have an idea that it may involve dynamic SQL or Execute Immediate, but cannot seem to pin down the answer.
Any help would be greatly appreciated!anonymous - As illustrated here: Re: Search on a typed in list of values
Scott -
Passing a value to Inline View WHERE clause through JDev...
Hi ,
I need to pass a value to inline view which is mentioned in below VIEW query.
That view is created inside a view using jDev. Note that there are two WHERE clauses one in the Main query and the other in the Inline view.
How to set the value for the innerView.
//copied the code from Java
view.volAlertsHistroyView.setWhereClauseParam(1, new Integer(clientId));
Gives an error Missing IN or OUT parameter at index:: 1
SELECT Alerts.SEND_TIME,
Alerts.STATUS,
Alerts.TEXT ,
Groups.NAME,
VolRoles.ROLE_NAME,
VolRoles.ID as vid,
Groups.ID as gid
FROM ALERTS Alerts, ALERTS_GROUPS AlertsGroups, GROUPS Groups, VOL_ROLES VolRoles,
--Inline view starts
(SELECT GRP_ID, VRL_ID FROM vol_groups WHERE cli_id = :1) user_group_role
--Inline view ends
--Actual WHERE clause starts
WHERE ((Alerts.ID = AlertsGroups.ALT_ID)AND (AlertsGroups.GRP_ID = Groups.ID))AND (AlertsGroups.VRL_ID = VolRoles.ID)
AND AlertsGroups.VRL_ID = user_group_role.VRL_ID AND AlertsGroups.GRP_ID = user_group_role.GRP_ID
Please get back to me .
Regards
Mohan
[email protected]What happens when you change your Java code to:
view.volAlertsHistroyView.setWhereClauseParam(0, new Integer(clientId));
The ":1" does not directly relate to the where clause param index you use in Java. In your query you could also use a ":2" for example. In BC4J you still use "0" for the first param.
Sascha -
How to pass tag name and value dynamically in the output of PCo notification?
Hi,
I have a requirement to develop such a scenario where there can be multiple no of tags in PCo (Say 10) but there will be single notification to push the tag name when the value got changed and the changed value to MII. for any value change for any of the tag, the notification will be trigger. So As per my knowledge I have to pass the tag name and value dynamically in the "output" tab of the notification. But need your support to find out how to pass them dynamically.
Thanks in advance.
Regards,
SumanHi Suman/Jeedesh,
As per Pco notification, it will trigger whenever any of the tag value changes in Agent instance subscription items.
For above issue, My suggestion
1. Create DB table name TAGLIST with 200 tags as rows in columns (Tagname, TagValue)
2. Based on notification trigger, create a transaction and update values w.r.t TagNames in above table
3. Next time, when notification trigger with fresh value for any of the tag, cross check with existing TagName with Value and update in DB table.
4. And in the mean time, send those Tag details vie mail trigger or as per requirement
Instead of creating 200 notification, above is a just alternate way suggestion to achieve dynamic tag value change notification.
Hope it might solve your problem
Regards,
Praveen Reddy -
Dynamically stating the field name in the WHERE clause
Hello All,
Consider the following select statement.
SELECT kunnr INTO TABLE gt_kunnr
FROM kna1
FOR ALL ENTRIES IN gt_table
WHERE kunnr = gt_table-<b>cust_id</b>.
Suppose there is a case where I do not know the name of the internal table field
(say, "cust_id" in the above case) with which comparison is to be done in the WHERE clause. Only at runtime that fieldname is available. So in the WHERE clause can I mention it dynamically?
I tried using the following.
lv_fieldname = 'cust_id'.
SELECT kunnr INTO TABLE gt_kunnr
FROM kna1
FOR ALL ENTRIES IN gt_table
WHERE kunnr = gt_table-<b>(lv_fieldname).</b>
But this is giving a syntax error.
Could anyone suggest an alternate approach?
Regards
Indrajit.Hi,
It is fine with Enterprise version but when I am trying to run the following code in Rel 4.6C, I am getting a syntax error.
TYPES: BEGIN OF ty_wherecond,
data(72) TYPE c,
END OF ty_wherecond.
DATA: gt_itab1 TYPE STANDARD TABLE OF kna1,
gt_itab2 TYPE STANDARD TABLE OF kna1.
DATA: BEGIN OF gt_kunnr OCCURS 0,
kunnr TYPE kunnr,
END OF gt_kunnr.
PERFORM fill_itabs TABLES gt_itab1
gt_itab2.
*& Form fill_itabs
text
-->P_T_TABLE text
FORM fill_itabs TABLES p_t_table
pt_table_dummy.
DATA: lv_fieldname(30) TYPE c VALUE 'pt_table_dummy-kunnr'.
DATA: lt_wherecond TYPE STANDARD TABLE OF ty_wherecond,
lt_condtab TYPE STANDARD TABLE OF hrcond,
ls_condtab TYPE hrcond.
FIELD-SYMBOLS <fs_wherecond> TYPE ty_wherecond.
pt_table_dummy[] = p_t_table[].
CLEAR ls_condtab.
REFRESH: lt_wherecond[],
lt_condtab[].
ls_condtab-field = 'KUNNR'.
ls_condtab-opera = 'EQ'.
ls_condtab-low = lv_fieldname.
APPEND ls_condtab TO lt_condtab.
CALL FUNCTION 'RH_DYNAMIC_WHERE_BUILD'
EXPORTING
dbtable = space " can be empty
TABLES
condtab = lt_condtab
where_clause = lt_wherecond
EXCEPTIONS
empty_condtab = 01
no_db_field = 02
unknown_db = 03
wrong_condition = 04.
LOOP AT lt_wherecond ASSIGNING <fs_wherecond>.
REPLACE '''' WITH '' INTO <fs_wherecond>-data.
REPLACE '''' WITH '' INTO <fs_wherecond>-data.
ENDLOOP.
SELECT kunnr INTO TABLE gt_kunnr
FROM kna1
FOR ALL ENTRIES IN pt_table_dummy
WHERE (lt_wherecond).
IF sy-subrc EQ 0.
ENDIF.
ENDFORM. "fill_itabs
The syntax error says "The WHERE condition does not refer to the FOR ALL ENTRIES table".
Even after using the FM 'RH_DYNAMIC_WHERE_BUILD' as suggested by you, the syntax error is coming.
Could you please suggest how to ignore this?
Regards
Indrajit. -
Parsing an input parameter for the where clause or record select value
In my limited CR experience, I've always used a command database connection so that I can write my own SQL. However, now I have to parse a pipe delimited parameter to get my value for the where clause, so I'm selecting several tables and joining them through the Database Expert Links tab. All works fine, but after doing that and then parsing the parameter with the below formula in the Select Expert, I notice that there is no where clause in the SQL query, and although the report eventually displays the proper values, it runs through thousands of records first. Here is my Select Expert - Record formula:
StringVar array Parm1;
Parm1 := Split({?DATA_AREA}, "|");
{SO_ORDERS.CASE_ID} = Parm1[2]
If I change "Parm1[2]" on the last line to a valid Case ID, then there is a where clause in the SQL and the report generates immediately.
It seems like the record select formula is applied AFTER all of the records (without a where clause) are searched when I use the parsed parameter value, but when I hard code a valid value, it places that into the where clause BEFORE the sql is executed. Is there a way to get the parameter parsed first and then use that parsed value in the SQL where clause?
Thanks.
BillYes crystal will run the query first to get 100% data and then applies record selection condition. To increase the performance you need to pass the where condition at the command level instead of report level. So you need to create a report using add command like this
select * from tablename where field={?Parameter}
{?Parameter} is a command level parameter.
Now insert this report as a subreport in another report which has no connection but has a parameter
{?DATA_AREA} and create a formula like this in the main report
Split({?DATA_AREA}, "|")[2]
Now right click on the subreport and go to change subreport links and add this formula from main report and link this to sub report parameter {?Parameter} without linking any database field from the subreport.
Now your subreport runs with the where clause to get the data.
Regards,
Raghavendra -
How to edit the where clause of View object in search example dynamically
Hi,
I am new to OA Framework. Can anybody please tell me how can I assign the where clause dynamically. I want to search only those rows whose creation date is between a 'Date form' and 'Date to' inputs from the search page
Thanks
Anupamuser567342 ,
I will advice u again pls refer dev guide, there u can find code sample for ur requirement, which can be accomplished using stringbuffer.
--Mukul -
Include dynamic conditions in the where clause
Hi All,
I have an requirement where i need to dynamically include the conditions in the where clause based on the bind variable.
My condition is like this.
SELECT f.scheduled_date, a.bld_id, a.room_id, a.cage_id, f.test_num
FROM feeding_test_results f,
v_onl_gf_anmls a
WHERE f.sak_feeding_test_res > 5000000
AND f.anml_id(+) = a.anml_id
AND f.bld_id = 'A5'
AND f.room_id > 0
AND f.cage_id > '0'
case when :check_value = 1 Then
AND scheduled_date <= '16-Apr-2009'
AND scheduled_date >= '06-Apr-2009'
Else
AND scheduled_date = '16-Apr-2009'
End
AND f.feeding_status <> 'X') f
Kindly anyone help me how to acheive this.
Thanks & Regards,
P. Gayathri Devimichaels2 wrote:
and scheduled_date <= case when :check_value = 1 then date '2009-04-16' end
and scheduled_date >= case when :check_value = 1 then date '2009-04-06' end
and scheduled_date = case when not :check_value = 1 then date '2009-04-16' end
Hmmm, you may want some NVL's around those case statements such as..
and scheduled_date <= NVL(case when :check_value = 1 then date '2009-04-16' end,scheduled_date)
and scheduled_date >= NVL(case when :check_value = 1 then date '2009-04-06' end,scheduled_date)
and scheduled_date = NVL(case when not :check_value = 1 then date '2009-04-16' end,,scheduled_date)or some such thing. Otherwise the comparisons with Null will just cause it all to fail. -
How to pass parameters to function in where clause....
I have a select statement like this
SELECT XX_AIR_TICKET_EMP_BAL(:P2) from dual
is it possible to pass to variable p2 from where clause
like
SELECT XX_AIR_TICKET_EMP_BAL(:P2) from dual
where :p2 = :p1
user can enter only in p1 so that p2 should get passed.
Reson for this wierd requirement:In Oracle apps i cant use bind variable in select clause value set..? please ignore this reason if u are not in oracle apps...
Tell me the solution..
Is there any way...
setting some env variavle aor anything[email protected] wrote:
I have a select statement like this
SELECT XX_AIR_TICKET_EMP_BAL(:P2) from dualWhy a SELECT statement? This calls the SQL engine. The function is PL/SQL. This now needs the SQL engine to context switch to the PL engine. The PL engine runs and returns a value (across memory boundaries) to the SQL engine. The SQL engine now needs to return that value as part of the output from a SQL cursor.
Why do all this? Surely it is a lot easier and better for performance to call the PL engine directly using an anonymous PL block. E.g.
begin
:P3 := XX_AIR_TICKET_EMP_BAL(:P2);
end;
is it possible to pass to variable p2 from where clause
like
SELECT XX_AIR_TICKET_EMP_BAL(:P2) from dual
where :p2 = :p1Why?
This can be done as part of the PL block as follows:
begin
if :P2 = :P1 then
:P3 := XX_AIR_TICKET_EMP_BAL(:P2);
end if;
end;But then why construct conditional statements dynamically?
It would be a lot easier to have a new function that does the condition, e.g.
create or replace function getAirTicket( p1 number, p2 number ) return number is
begin
if p1 = p2 then
return( XX_AIR_TICKET_EMP_BAL(p2) );
else
return( null );
end if;
end; -
Re: [iPlanet-JATO] How to make an OR in the WHERE clause of a SELECT
Harry,
If you get a reference to your model, you can set the
whereClauseOverride with exactly the string you want to use. Keep in
mind that you are dealing with a the raw SQL where clause, therefore,
you must use the actual table column names and not the model's logical
field names as they could be different.
QueryModelBase queryModel = (QueryModelBase)getModel(PersonModel.class);
// you must add the "WHERE" as well
String whereClause = "WHERE firstName LIKE '%max' OR lastName LIKE '%max%'";
queryModel.setWhereClauseOverride(whereClause);
Keep in mind that this will override all where criteria: static and
dynamic where criteria. Static criteria can be declared in your model
class: setStaticWhereCriteriaString(STATIC_WHERE_CRITERIA).
You could optionally get the entire SQL statement and replace the
__WHERE__ token yourself with a string replace technique. In fact, if
you want to add an ORDER BY, you will need to get the SQL and append to
the end.
queryModel.getSelectSQL();
Hope this helps. Let me know if you have any questions
craig
hlamer wrote:
Hi,
if I add criterias to my model
with "SelectQueryModel.addUserWhereCriterion()" they will be concated
with AND.
How can I add a criteria with OR?
I want something like:
SELECT personId, firstName, lastName
FROM Person
WHERE firstName LIKE "%max"
OR lastName LIKE "%max%"
Thanks.
Harry
For more information about JATO, including download information, please visit:
http://developer.iplanet.com/tech/appserver/framework/index.jspRewritten your query wuth tags as well
{code}select "P_CIRCUITS_FIBER"."PORTS_1",
"P_CIRCUITS_FIBER"."PORTS_2",
CASE WHEN CPORT.ID = (select REGEXP_SUBSTR(ports_1,'[^,]+',1,1) from p_circuits_fiber)
THEN "CPORT"."PORT_NO" END PORT_NO_1,
CASE WHEN CPORT.ID = (select REGEXP_SUBSTR(ports_2,'[^,]+',1,1) from p_circuits_fiber)
THEN "CPORT"."PORT_NO" END PORT_NO_2
from "CPORT",
"P_CIRCUITS_FIBER"
where p_circuits_fiber.fiber_id = :P4000_CIRCUIT_NO
and (select REGEXP_SUBSTR(ports_1,'[^,]+',1,1) from p_circuits_fiber) = "CPORT"."PORT_NO" "PORT_NO_1"
and (select REGEXP_SUBSTR(ports_2,'[^,]+',1,1) from p_circuits_fiber) = "CPORT"."PORT_NO" "PORT_NO_2"{code}
Now we can see two columns references which should not be there.
I even not sure to understand why those two conditions are in the WHERE clause. But for sure, CPORT.ID cannot be equal to two values unless they are same.
Is there only one row in p_circuits_fiber ?
Nicolas.
Maybe you are looking for
-
My iPad 2 white 32gb wifi and MacBook Pro still under warranty got stolen because my house got break in last night. I have the serial number and is there any other solution to track it back. I installed Dropbox in my Mac as well as my iPhone. Can I t
-
Hi All When the Idoc is sent from ECC to XI after checking the message in the SXMB_MONI I get an error saying: <SAP:Code area="MAPPING">EXCEPTION_DURING_EXECUTE</SAP:Code> What is this error and how should I go about resolving it?
-
Does iCloud store my Whatsapp conversations and could this be hacked?
I believe some whatsapp conversations/contacts have been compromised either by hacking or other means (no physical intervention). Could this have been through hacking of my iCloud account? Is this possible and how do I understand/track and stop this?
-
This might be a stupid question but....
Is the Mac Mini with the 9400M video card powerful enough to run final cut studio? I'm using the previous model mac mini to use FCE but I'd really like to get into learning the programs in final cut studio but I dont have the money to spend on the iM
-
is java servlet able to detect when a user close an IE or NETSCAPE browser!!??