Cascading cfselects in CF 9

I've done a good amount of searching, including in this forum, and I'm still missing some important understanding about how to have two or more cfselects in a cfform, each dependent on the previous one. The best reference I've found is from Ben Forta's blog (Surprise! Surprise!) http://www.forta.com/blog/index.cfm/2007/5/31/ColdFusion-Ajax-Tutorial-2-Related-Selects, but when I adapt that to my own database, I get "bind value is not a 2D array." I could probably do my cfselects with JQuery, but using components looks so good to me. Below is the code I'm using. One initial question relates to CFINVOKE. If my CFC has two or more functions, which one do I put here? I jsut guessed and put in the first one. Do I even need CFINVOKE? In his example, I don't think Ben even uses this tag. As an aside, I wish I had the DB that Ben uses, the cfartgallery. Unfortunately, I downloaded my CF and used a license key. I guess the sample DB is included only on media.
At any rate, if you see my error, please point it out. Understanding how cascading cfselects work would be a major step forward for me.
<cfinvoke component="components.forta1" method="getName" returnvariable="u"></cfinvoke>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
    <h1>Select</h1>
    <p>
    Select something
    </p>
<cfinvoke component="components.forta1" method="getName" returnvariable="u"></cfinvoke>   
<cfform>
<table>
    <tr>
        <td>Select Name:</td>
        <td><cfselect name="address_book_ID"
                bind="components:forta1.getName()"
                bindonload="true" /></td>
    </tr>
    <tr>
        <td>Select Email:</td>
        <td><cfselect name="listID"
                bind="components:forta1.getEmail()" /></td>
    </tr>
</table>
</cfform>
</body>
</html>
<cfcomponent output="false">
    <cfset THIS.dsn="myDB">
    <!--- Get array of media types --->
    <cffunction name="getName" access="remote" returnType="query">
        <!--- Define variables --->
        <cfset var data="">
        <cfset var result=ArrayNew(2)>
        <cfset var i=0>
        <!--- Get data --->
        <cfquery name="data" datasource="#THIS.dsn#">
        SELECT address_book_ID, lastname
        FROM address_book
        ORDER BY lastname
        </cfquery>
        <!--- Convert results to array --->
        <!---
        <cfloop index="i" from="1" to="#data.RecordCount#">
            <cfset result[i][1]=data.address_book_ID[i]>
            <cfset result[i][2]=data.lastname[i]>
        </cfloop>
                    --->
        <!--- And return it --->
        <cfreturn data>
    </cffunction>
    <!--- Get art by media type --->
    <cffunction name="getEmail" access="remote" returnType="query">
        <cfargument name="address_book_ID" type="numeric" required="true">
        <!--- Define variables --->
        <cfset var data="">
        <cfset var result=ArrayNew(2)>
        <cfset var i=0>
        <!--- Get data --->
        <cfquery name="data" datasource="#THIS.dsn#">
        SELECT email, listID
        FROM email_list
        WHERE listID = '120'
        ORDER BY email
        </cfquery>
        <!--- Convert results to array --->
        <!---
        <cfloop index="i" from="1" to="#data.RecordCount#">
            <cfset result[i][1]=data.listID[i]>
            <cfset result[i][2]=data.email[i]>
        </cfloop>
                    --->
        <!--- And return it --->
        <cfreturn data>
    </cffunction>
</cfcomponent>

Do I even need CFINVOKE?
No. It is useful for testing your functions to verify they work. But it is not necessary for your form.
As an aside, I wish I had the DB that Ben uses, the cfartgallery. Unfortunately, I downloaded my CF and used a license key. I guess the sample DB is included only on media
It is part of the CF documentation. It is only installed if you select the "documentation" option during the installation.
"bind value is not a 2D array."
You are close, but it looks like you mixed up his example a bit.
1) His function returns an array. But yours is returning a query object (ie "data"). Hence the error. However, things have changed a bit since that article was written. CF8 only supported binding select lists to an array. CF9 supports binding with arrays OR queries. To make your current function work with a query, just supply the query columns you want to bind in your cfselects. For example, with getName():
        <cfquery name="data" ...>
        SELECT address_book_ID, lastname
        </cfquery>
       <cfselect name="address_book_ID"
                bind="components:forta1.getName()"
                display="LastName"
                value="address_book_id"
                bindonload="true" /></td>
2) You dropped the bind relating the second list to the first one. You need to add it back so the list only displays the email for the selected name. Also be sure to add cfqueryparam in your actual query.
             <cfselect name="listID"
                    bind="components:forta1.getEmail( {address_book_ID} )"
                    display="email"
                    value="listID" />
Message was edited by: -==cfSearching==-

Similar Messages

  • Get('XML') doesn't work, but get() does in javascript - CASCADING LOVs

    I'm trying to get cascading LOVs working in Apex 3.1.0 in Oracle 11g. When I call get.get('XML') it returns null in firefox and empty string in IE6. If I change it to call get.get() then it returns the XML as a string into Javascript.
    The Application process is getting called in both scenarios as i've put PL/SQL logging to disk in order to prove it. The XML being returned is very basic so i'm sure it's not a problem with formatting. I'm not getting any exceptions thrown in javascript either.
    Is it possible to use get.get() and then convert the text into an XML object which is returned as per get.get('XML') which at least will allow me to get something working ?
    thanks
    &lt;script language="JavaScript" type="text/javascript"&gt;
    function getBusinessFieldJS(pThis, pSelect)
    alert('getBusinessFieldJS');
    try
    var l_Return = null;
    var l_Select = html_GetElement(pSelect);
    var get = new htmldb_Get(null, html_GetElement('pFlowId').value, 'APPLICATION_PROCESS=GET_DATA_FIELDS_XML', 0);
    /*get.add('F120_GETBUSINESSFIELD_ITEM',pThis.value);*/
    gReturn = get.get('XML');
    alert('gReturn=' + gReturn);
    alert('gReturn.value=' + gReturn.value);
    if (gReturn == null)
    alert('gReturn is null');
    if(gReturn && l_Select)
    var l_Count = gReturn.getElementsByTagName("option").length;
    alert('l_count='+l_Count);
    l_Select.length = 0;
    for(var i=0;i&lt;l_Count;i++)
    var l_Opt_Xml = gReturn.getElementsByTagName("option")+;+
    + appendToSelect(l_Select, l_Opt_Xml.getAttribute('value'),+
    + l_Opt_Xml.firstChild.nodeValue)+
    + }+
    + }+
    +
    get = null;+
    + }+
    + catch (e)+
    + {+
    + alert('Exception : ' + e);+
    +
    }+
    +}+

    Hi,
    I've been trying to replicate your problem here: [http://apex.oracle.com/pls/otn/f?p=37055:1]
    My application process is:
    BEGIN
    OWA_UTIL.mime_header ('text/xml', FALSE);
    HTP.p('Cache-Control: no-cache');
    HTP.p('Pragma: no-cache');
    OWA_UTIL.http_header_close;
    HTP.prn('<select>');
    HTP.prn('<option value="-1">Please Select</option>');
    HTP.prn('</select>');
    END;(Just copied from your post and XML changed to xml, otherwise untouched)
    And my page has a simple HTML region with the source of:
    &lt;div id="XMLOUTPUT" style="border:1px solid blue; width:200px; height:200px;"&gt;&lt;/div&gt;
    &lt;div id="XMLOUTPUT2" style="border:1px solid blue; width:200px; height:200px;"&gt;&lt;/div&gt;
    &lt;script type="text/javascript"&gt;
    function getMyXML()
    var l_Return = null;
    var get = new htmldb_Get(null, html_GetElement('pFlowId').value, 'APPLICATION_PROCESS=RETURN_XML', 0);
    gReturn = get.get('XML');
    var d = html_GetElement('XMLOUTPUT');
    d.innerHTML = gReturn;
    var d2 = html_GetElement('XMLOUTPUT2');
    d2.innerHTML = get.get();
    var s = gReturn.getElementsByTagName("select");
    alert(s.length);
    &lt;/script&gt;
    &lt;a href="javascript:getMyXML();"&gt;Click&lt;/a&gt;Click on Click at the bottom of the page. The first DIV gets the get.get('XML') object and the second one the get.get() and a popup message tells you how many "select" items are in the XML version.
    As far as I can see, this works fine.
    Andy

  • How do I delete cascade with a PL/SQL procedure?

    This script will create a PL/SQL procedure that deletes cascade. This is a post to contribute to the Oracle community. Take the code as is and test it before you use it in production. Make sure this is what you want.
    Procedure Delete Cascade (prc_delete_cascade)
    Description
    =============
    The principle is very simple. The procedure uses a table called TO_BE_DELETED to keep a list of records to be deleted. This
    table keeps the table name and the rowid of those records that need to be deleted. The procedure also uses a function called
    DELETE_BOTT_ROW which takes one record of the table and tries to delete it. If the deletion fails with a foreign key constraint
    violation, the function parses the SQL error message (SQLERRM) to get the name of the constraint. With the name of the constraint,
    the function finds the name of the child table, all the child records that have references to the parent table primary or unique key,
    and the parent key primary or unique key column name. Once the child records of the failed delete are identified, the function takes their table name and rowids
    and records them into the TO_BE_DELETED table by inserting records of their table name and their rowids. Al the records inserted also contain the level (which
    is 1 for the original records, 2 for child records, 3 for granchild records, etc.) and the sequence number of the order in wich they
    are recorded. This way, when the function picks up a record to be deleted, it takes the one with the highest level and the highest
    inserted sequence, or the "bottom" record. Once all the child records of the failed delete are appended to the TO_BE_DELETED table, it calls itself
    recursevely, and the function takes the record at the "bottom" of the table and tries to delete it. If it succeeds, it calls
    itself recursevely to delete the next record. If it fails, it goes and finds the child records as described before and once they are
    inserted into the TO_BE_DELETED table, it calls itself again recursevely to try to delete again the "bottom" record. All records
    that are successfully deleted are flagged as deleted usig the flag_del column so they are not pickt up again. Once all the (parent,
    child, grandchild, etc.) records are deleted, the procedure ends without commiting, giving the option to the user to commit or
    rollback deletions. The table TO_BE_DELETED is, at the end of the procedure, a list of all the records that were deleted, including their table names
    and the order in with they were deleted. The user then can review its content and decide to commit or rollback.
    Restrictions
    ============
    1. Single tables only. The procedure only takes one table name and a WHERE clause to identified the records to be deleted.
    2. Single columns only. Ther procedure only works with single-column primary, unique and foreign key constraints.
    3. Single schema only.
    4. Unpredictable results with circular references.
    drop table to_be_deleted purge;
    create table to_be_deleted
    (tname varchar2(30)       -- table name
    ,rid rowid                -- rowid
    ,lvl number               -- level: 1=parent, 2=child, 3=grandchild, etc.
    ,seq_ins number           -- sequence order of record inserted
    ,flg_del char             -- flag deleted: Y=record deleted
    ,seq_del number           -- global order of record deletion
    set serveroutput on size 1000000
    create or replace procedure prc_delete_cascade
    (p_tname varchar2  -- table name
    ,p_where varchar2  -- where clause identifying records to be cascade deleted
    is
      dummy         char;
      v_sqlcode     number;
      v_sqlerrm     varchar2(32767);
      v_param_val   integer := 0;
      v_sql         varchar2(4000);
      v_ret_cde     number;
      e_bad_params  exception;
      v_iter        number;
      v_plvl        number;
      v_seq_del     number;
      v_max_iter    number := 1000000000;
      function delete_bott_row
      return number
      is
        v_sql        varchar2(4000);
        v_ptname     varchar2(30);  -- parent table name
        v_ppkname    varchar2(30);  -- parent primary key constraint name
        v_ppkcname   varchar2(30);  -- parnet primary key column name
        v_prowid      rowid;
        v_crowid      rowid;
        v_ctname     varchar2(30);  -- child table name
        v_cfkname    varchar2(30);  -- child foreign key constraint name
        v_cfkcname   varchar2(30);  -- child foreign key column name
        v_ins        number;
        v_seq_ins    number;
        v_sqlerrm    varchar2(4000);
        v_sqlcode    number;
        e_const_viol exception;
        pragma exception_init(e_const_viol, -2292);
        e_max_iter_reached exception;
      begin
        v_iter := v_iter + 1;
        if v_iter >= v_max_iter then
          raise e_max_iter_reached;
        end if;
        dbms_output.put_line('- Iter '||to_char(v_iter));
        dbms_output.put_line('----------');
        dbms_output.put_line('- Starting function delete_bott_row');
        v_sql := 'select tname, rid, lvl, seq_ins from (select * from to_be_deleted where flg_del = ''N'' order by lvl desc, seq_ins desc) where rownum=1';
        --  dbms_output.put_line('- SQL: '||v_sql);
        execute immediate v_sql into v_ptname, v_prowid, v_plvl, v_seq_ins;
        dbms_output.put_line('- Selected row: table name: '||v_ptname||', level: '||v_plvl||', seq: '||v_seq_ins);
        v_sql := 'delete from '||v_ptname||' where rowid='''||v_prowid||'''';
        dbms_output.put_line('- SQL: '||v_sql);
        execute immediate v_sql;
        dbms_output.put_line('- Row deleted !!!');
        v_ret_cde := 1;
        v_seq_del := v_seq_del + 1;
        dbms_output.put_line('- Mark the row deleted');
        v_sql := 'update to_be_deleted set flg_del = ''Y'', seq_del = '||to_char(v_seq_del)||' where tname='''||v_ptname||''' and rid='''||v_prowid||'''';
        -- dbms_output.put_line('- SQL: '||v_sql);
        execute immediate v_sql;
        -- dbms_output.put_line('- Updated table to_be_deleted, row marked deleted');
        -- dbms_output.put_line('- End of iter '||to_char(v_iter));
        dbms_output.put_line('----------');
        -- call function delete_bott_row recursively
        v_ret_cde := delete_bott_row;
        return 0;
      exception
        when no_data_found then
          dbms_output.put_line('- Table to_be_deleted is empty, delete cascade has completed successfully.');
          v_ret_cde := 0;
          return 0;
        when e_const_viol then
          v_sqlcode := SQLCODE;
          v_sqlerrm := SQLERRM;
          v_ret_cde := v_sqlcode;
          dbms_output.put_line('>Constraint Violation. Record has children');
          -- dbms_output.put_line('Error code: '||to_char(v_sqlcode));
          v_cfkname := substr(v_sqlerrm,instr(v_sqlerrm,'.')+1,instr(v_sqlerrm,')') - instr(v_sqlerrm,'.')-1);
          dbms_output.put_line('>Child FK name: '||v_cfkname);
          select table_name, column_name
            into v_ctname, v_cfkcname
            from user_cons_columns
           where constraint_name=v_cfkname;
          dbms_output.put_line('>Child table name: '||v_ctname||'. FK column name: '|| v_cfkcname);
          select constraint_name, column_name
            into v_ppkname, v_ppkcname
            from user_cons_columns
           where constraint_name = (select r_constraint_name
                                      from user_constraints
                                      where constraint_name=v_cfkname);
          dbms_output.put_line('>Parent PK/UK name: '||v_ppkname||'. Parent PK/UK column: '||v_ppkcname);
          v_sql := 'insert into to_be_deleted(tname, rid, lvl, seq_ins, flg_del) '||
                   'select '''||v_ctname||''', rowid, '||to_char(v_plvl+1)||', rownum, ''N'' '||
                   'from '||v_ctname||' '||
                   'where '||v_cfkcname||' =any (select '||v_ppkcname||' from '||v_ptname||' where rowid =any (select rid from to_be_deleted where tname = '''||v_ptname||'''))';
          -- dbms_output.put_line('- SQL: '||v_sql);
          execute immediate v_sql;
          select count(*)
            into v_ins
            from to_be_deleted
           where lvl = v_plvl+1
             and tname = v_ctname
             and flg_del = 'N';
          dbms_output.put_line('>Found '||to_char(v_ins)||' child records which were added to table to_be_deleted');  
          v_ret_cde := delete_bott_row;
          return  v_ret_cde;
        when e_max_iter_reached then
          dbms_output.put_line('Maximum iterations reached.  Terminating procedure.');
          raise;
        when others then
          raise;
      end delete_bott_row;
    begin
      dbms_output.put_line('Beginning');
      dbms_output.put_line('================================');
      -- validate p_table
      begin
        select 'Y'
          into dummy
          from user_tables
         where table_name=upper(p_tname);
      exception
        when no_data_found then
        v_param_val := 1;
        dbms_output.put_line('Table '||p_tname||' does not exist.');
        raise e_bad_params;
      end;
      dbms_output.put_line('- Parameter p_tname validated');
      -- validate p_where
      begin
        execute immediate 'select ''Y'' from '||p_tname||' where '||p_where INTO dummy;
      exception
        when no_data_found then  -- where clause returns no records
          dbms_output.put_line('Record(s) not found.  Check your where clause parameter');
          v_param_val := 2;
          raise e_bad_params;
        when too_many_rows then  -- found multiple records means it is ok
          null; 
        when others then  --  any other records means where clause has something wrong.
          dbms_output.put_line('Where clause is malformed');     
          v_param_val := 2;
          raise e_bad_params;
      end;   
      dbms_output.put_line('- Parameter p_where validated');
      if v_param_val > 0 then raise e_bad_params; end if;
      v_iter := 0;
      v_plvl := 1;
      v_seq_del := 0;
      v_sql := 'insert into to_be_deleted(tname, rid, lvl, seq_ins, flg_del) select '''||upper(p_tname)||''', rowid, '||to_char(v_plvl)||', rownum, ''N'' from '||p_tname||' where '||p_where;
      dbms_output.put_line('- Inserting initial record');
      dbms_output.put_line('- SQL: '||v_sql);
      execute immediate v_sql;
      dbms_output.put_line('- Record(s) inserted');
      dbms_output.put_line('- Calling function delete_bott_row to delete last row of table to_be_deleted');              
      dbms_output.put_line('-----------------------------------');              
      v_ret_cde :=  delete_bott_row;
      -- dbms_output.put_line('- Back from function delete_bott_row');              
      -- dbms_output.put_line('Return code: '||to_char(v_ret_cde));              
      dbms_output.put_line('- End of procedure');              
    exception
      when e_bad_params then
        dbms_output.put_line('Bad parameters, exiting.');
    end;
    show errors
    spool prc_delete_cascade.log
    --  Call to the procedure
    exec prc_delete_cascade('xent','xent_id between 1669 and 1670')
    select tname "Table Name", count(*) "Rows deleted"
      from to_be_deleted
    group by tname;
    spool off
    set lines 120
    select *
      from to_be_deleted
    order by seq_del;
    prompt  Now commit or rollaback deletions.
    -- commit;
    -- rollback;Edited by: Rodolfo4 on Mar 23, 2011 10:45 AM

    Interesting.
    I see a few areas where this could be useful. Elimiating specific test records from a Test DB for example.
    Some comments:
    <li>Since this is a recursive logic you must add a stop criteria. In this case I would add a max iteration variable. If that one is reached, raise an error message and let the procedure stop with that error.</li>
    <li>The when others exception at the end should be removed completely</li>
    <li>The when others exception in the middle should be replaced by a specific exception that handles the -2292 error</li>
    <li>A list of tables where no record should be deleted could be usefull. If the logic would encounter such a table, it should also stop. This would be to prevent that data from some system critical tables could be deleted per accident.</li>
    <li>The reference from the FK constraint to the PK constraint should include the table name and if possible the owner (as long as you use user_* views the owner is always the same. But we could extend this to the ALL_* views). I never met a system where different tables have the identical FK constraint names, however just make this fool proof.</li>

  • Issue in EHP5 Talent Management (Team Goals) Cascade goals functionality

    Hi Friends,
    Issue in EHP5 Talent Management (Team Goals) Cascade goals functionality.
    Under Team Object While try to cascade goals, it pop-Up Warning Msg u201CChoose Save to save the goal in the employee document. The goal can no longer be deleted, only set to obsoleteu201D.
    If we click Ok to proceed further, I am getting error stating u201CYou have made no selection" and " No appraisal template defined ".
    Same functionality is working fine in u201CPerformance Management (Predefined)u201D
    With Regards
    Seranjeeve Kumar

    Please  set the parameter PROCESS "PMP" in the iview configuration.
    ie
    ROLE_ID=PA&PROCESS=PMP in application parameters
    content provided by SAP ->
    specialist ->
    Talent management Specialist ->
    iViews ->
    COmpany goals etc
    and you can confirm using this
    CL_HAP_CASCADE_GOALS > meth0d GET_VALID_APPRAISAL_TEMPLATES
    The parameter mentioned in the note 1457057, the one that you enter in
    transaction SE80 is the default value. However, if you call application
    with parameter PROCESS=PMP then the PMP process for cascading goals will
    be used.
    check note  1523527

  • How to set a default value for a drop down list box and then apply cascading based on the default value in Infopath 2010.

    Hello Everyone
    I have two drop downs. Both are coming from look up fields from two lists. i want to set a default value(first list item) for the first drop down list box and then apply cascading based on the default value for the next drop down list box. I found one article(http://www.bizsupportonline.net/infopath2010/display-first-item-drop-down-list-box-infopath-2010.htm)
    where in i can set a default value but i can't apply cascading based on that default value. Any suggestions would be highly appreciated.
    Thanks
    Ramanjulu Naidu N

    Hey Ramanjulu,
    Take a look at the below article which I believe will answer your question.
    http://basquang.wordpress.com/2010/03/29/cascading-drop-down-list-in-sharepoint-2010-using-infopath-2010/
    Daniel Christian (MCTS)

  • Weblogic 9.1, EJB 2.0, Oracle 9i: Cascade delete Error

    Hi All,
    I am facing an error with the cascade-delete facility in ejb2.0 with weblogic 9.1
    Assume that I have the following relation:
    <ejb-relation>
    <ejb-relation-name>TeacherEJB-StudentEJB</ejb-relation-name>
    <ejb-relationship-role>
    <ejb-relationship-role-name>teacher-has-student
    </ejb-relationship-role-name>
    <multiplicity>One</multiplicity>
    <relationship-role-source>
    <ejb-name>TeacherEJB</ejb-name>
    </relationship-role-source>
    <cmr-field>
    <cmr-field-name>teacher</cmr-field-name>
    </cmr-field>
    </ejb-relationship-role>
    <ejb-relationship-role>
    <ejb-relationship-role-name>student-has-teacher
    </ejb-relationship-role-name>
    <multiplicity>Many</multiplicity>
    <cascade-delete/>
    <relationship-role-source>
    <ejb-name>StudentEJB</ejb-name>
    </relationship-role-source>
    <cmr-field>
    <cmr-field-name>student</cmr-field-name>
    <cmr-field-type>java.util.Collection</cmr-field-type><cmr-field>
    </ejb-relationship-role>
    </ejb-relation>
    Now when I have to delete one record from the DBSTUDENT table, what i do is the following:
    StudentHomeLocal.remove(studentModel.getStudentId());
    The above statement throws an SQLException staying it can't update TeacherID in DBSTUDENT (PK of DBTEACHER, FK in DBSTUDENT) with NULL.
    The same code is working perfectly well in Weblogic 8.
    I even tried deleting the local directly by the following statement:
    StudentLocal.remove();
    But this too doesn't work.
    I also tried by removing the <cascade-delete/> attribute from the ejb-jar.xml file and updating the 'on-delete cascade' option in the database, but this too did not work.
    There is another option of <db-cascade-delete> in weblogic-cmp-rdbms-jar.xml that I tried but this too did not work.
    In short, I have tried the following cases but to no avail:
    1. Mention cascade delete in ejb-jar.xml and nothing mentioned in weblogic-cmp-rdbms-jar.xml.jar and in the database.
    2. Mention nothing in ejb-jar.xml and nothing mentioned in weblogic-cmp-rdbms-jar.xml.jar but 'on cascade delete' mentioned in the database.
    3. Mention cascade delete in ejb-jar.xml and db-cascade-delete mentioned in weblogic-cmp-rdbms-jar.xml.jar and 'on cascade delete' in the database.
    4. Remove all cascade delete from the ejb-jar.xml,the weblogic-cmp-rdbms-jar.xml and from the database.
    Neither of the above work.
    Kindly help ASAP.
    Thanks in advance,
    Sachidanand.

    Hi All,
    I am facing an error with the cascade-delete facility in ejb2.0 with weblogic 9.1
    Assume that I have the following relation:
    <ejb-relation>
    <ejb-relation-name>TeacherEJB-StudentEJB</ejb-relation-name>
    <ejb-relationship-role>
    <ejb-relationship-role-name>teacher-has-student
    </ejb-relationship-role-name>
    <multiplicity>One</multiplicity>
    <relationship-role-source>
    <ejb-name>TeacherEJB</ejb-name>
    </relationship-role-source>
    <cmr-field>
    <cmr-field-name>teacher</cmr-field-name>
    </cmr-field>
    </ejb-relationship-role>
    <ejb-relationship-role>
    <ejb-relationship-role-name>student-has-teacher
    </ejb-relationship-role-name>
    <multiplicity>Many</multiplicity>
    <cascade-delete/>
    <relationship-role-source>
    <ejb-name>StudentEJB</ejb-name>
    </relationship-role-source>
    <cmr-field>
    <cmr-field-name>student</cmr-field-name>
    <cmr-field-type>java.util.Collection</cmr-field-type><cmr-field>
    </ejb-relationship-role>
    </ejb-relation>
    Now when I have to delete one record from the DBSTUDENT table, what i do is the following:
    StudentHomeLocal.remove(studentModel.getStudentId());
    The above statement throws an SQLException staying it can't update TeacherID in DBSTUDENT (PK of DBTEACHER, FK in DBSTUDENT) with NULL.
    The same code is working perfectly well in Weblogic 8.
    I even tried deleting the local directly by the following statement:
    StudentLocal.remove();
    But this too doesn't work.
    I also tried by removing the <cascade-delete/> attribute from the ejb-jar.xml file and updating the 'on-delete cascade' option in the database, but this too did not work.
    There is another option of <db-cascade-delete> in weblogic-cmp-rdbms-jar.xml that I tried but this too did not work.
    In short, I have tried the following cases but to no avail:
    1. Mention cascade delete in ejb-jar.xml and nothing mentioned in weblogic-cmp-rdbms-jar.xml.jar and in the database.
    2. Mention nothing in ejb-jar.xml and nothing mentioned in weblogic-cmp-rdbms-jar.xml.jar but 'on cascade delete' mentioned in the database.
    3. Mention cascade delete in ejb-jar.xml and db-cascade-delete mentioned in weblogic-cmp-rdbms-jar.xml.jar and 'on cascade delete' in the database.
    4. Remove all cascade delete from the ejb-jar.xml,the weblogic-cmp-rdbms-jar.xml and from the database.
    Neither of the above work.
    Kindly help ASAP.
    Thanks in advance,
    Sachidanand.

  • Problem with "Row-specific or Cascading Lists in Table Layout"

    Hello, friends!
    I have read article "Row-specific or Cascading Lists in Table Layout" written by Steven Davelaar. I have maked several table layouts with this technique and it worked fine.
    But now I have one problem, and this problem is very strange. One of VOs for which I use this table layouts throw exception after commit changes on first LOV attribute (Deptno). First time it was error
    (oracle.jbo.ReadOnlyAttrException) JBO-27008: for atribute mgrList
    at oracle.jbo.AttrValException.<init>(AttrValException.java:112)
         at oracle.jbo.ReadOnlyAttrException.<init>(ReadOnlyAttrException.java:40)
         at oracle.jbo.server.ViewRowImpl.setAttribute(ViewRowImpl.java:815)
         at oracle.jbo.jbotester.JboTesterUtil.setData(JboTesterUtil.java:173)
    Then I setted updateable property of MgrList attribute to always and now i have this error:
    oracle.jbo.domain.DataCreationException: JBO-25009: Cannot create an object of type:java.util.List with value:[{}]
         at oracle.jbo.domain.TypeFactory.get(TypeFactory.java:721)
         at oracle.jbo.domain.TypeFactory.getInstance(TypeFactory.java:85)
    I don't know why, but all worked fine yestarday. And same code works fine for another VOs. And article Test application works fine too.
    Help me, please.
    Thank you.

    <table id="OsnovaniyaPrikazEnd" model="${jhsTableBindings.OsnovaniyaPrikazEnd_1B}" detailDisclosure="${uix.eventResult.detailData}" partialRenderMode="multiple" partialTargets="messageBox _uixState " proxied="true" alternateText="${nls.NO_ROWS_FOUND}" width="50%" rendered="${bindings.newGroup_end2Iterator.findMode!='true'}">
    <tableFormat tableBanding="rowBanding"/>
    <contents>
    <formValue value="${uix.current.rowKeyStr}" name="rowKeyStr" id="${ui:concat('OsnovaniyaPrikazEnd:rowKeyStr:',uix.current.tableIndex)}"/>
    <column>
    <columnFormat displayGrid="true" cellNoWrapFormat="true" columnDataFormat="numberFormat"/>
    <columnHeader>
    <sortableHeader model="${ctrl:createSortableHeaderModel(bindings.OsnovaniyaPrikazEnd,'Id')}" text="Id" required="yes"/>
    </columnHeader>
    <contents>
    <messageTextInput id="${ui:concat('OsnovaniyaPrikazEnd:Id:',uix.current.tableIndex)}" model="${ui:cond(uix.current.isNewRow,null,uix.current.newGroup_end2Id)}" text="${uix.current.OsnovaniyaPrikazEndId}" name="Id" promptAndAccessKey="&Id" rows="1" maximumLength="1" columns="1">
    <onSubmitValidater>
    <decimal/>
    </onSubmitValidater>
    </messageTextInput>
    </contents>
    </column>
    <column>
    <columnFormat displayGrid="true" cellNoWrapFormat="true" columnDataFormat="numberFormat"/>
    <columnHeader>
    <sortableHeader model="${ctrl:createSortableHeaderModel(bindings.OsnovaniyaPrikazEnd,'IdPrikaz')}" text="IdPrikaz"/>
    </columnHeader>
    <contents>
    <messageTextInput id="${ui:concat('OsnovaniyaPrikazEnd:IdPrikaz:',uix.current.tableIndex)}" model="${ui:cond(uix.current.isNewRow,null,uix.current.newGroup_end2IdPrikaz)}" text="${uix.current.OsnovaniyaPrikazEndIdPrikaz}" name="IdPrikaz" promptAndAccessKey="&IdPrikaz" rows="1" maximumLength="1" columns="1">
    <onSubmitValidater>
    <decimal/>
    </onSubmitValidater>
    </messageTextInput>
    </contents>
    </column>
    <column>
    <columnFormat displayGrid="true" cellNoWrapFormat="true" columnDataFormat="numberFormat"/>
    <columnHeader>
    <sortableHeader model="${ctrl:createSortableHeaderModel(bindings.OsnovaniyaPrikazEnd,'IdOsnovanie')}" text="&#1053;&#1072; &#1086;&#1089;&#1085;&#1086;&#1074;&#1072;&#1085;&#1080;&#1080;"/>
    </columnHeader>
    <contents>
    <messageChoice id="${ui:concat('OsnovaniyaPrikazEnd:IdOsnovanie:',uix.current.tableIndex)}" model="${ui:cond(uix.current.isNewRow,null,uix.current.IdOsnovanie)}" name="IdOsnovanie" promptAndAccessKey="&IdOsnovanie" selectedValue="${uix.current.newGroup_end2IdOsnovanie}">
    <contents childData="${jhsTableBindings.Osnovaniya_not_viewVO_1T.rangeSet}">
    <option value="${uix.current.Id}" text="${uix.current.Text}"/>
    </contents>
    <primaryClientAction>
    <firePartialAction event="whenListChanged" formSubmitted="true" unvalidated="true" targets="${ui:cond(uix.current.isNewRow,'OsnovaniyaPrikazEnd', 'OsnovaniyaPrikazEnd')}"/>
    </primaryClientAction>
    </messageChoice>
    </contents>
    </column>
    <column>
    <columnFormat displayGrid="true" cellNoWrapFormat="true" columnDataFormat="numberFormat"/>
    <columnHeader>
    <sortableHeader model="${ctrl:createSortableHeaderModel(bindings.OsnovaniyaPrikazEnd,'IdMoves')}" text="IdMoves"/>
    </columnHeader>
    <contents>
    <messageChoice rendered="${uix.current.ListLength>'1'}" id="${ui:concat('OsnovaniyaPrikazEnd:IdMoves:',uix.current.tableIndex)}"
    model="${ui:cond(uix.current.isNewRow,null,uix.current.OsnovaniyaPrikazEndIdMoves)}" name="IdMoves" promptAndAccessKey="&IdMoves"
    selectedValue="${uix.current.newGroup_end2IdMoves}">
    <contents childData="${uix.current.MovesList.inputValue}">
    <option value="${uix.current.Id}" text="${uix.current.Fam1}"/>
    </contents>
    </messageChoice>
    </contents>
    </column>
    <column>
    <columnFormat displayGrid="true" columnDataFormat="iconButtonFormat"/>
    <columnHeader>
    <text text="&#1059;&#1076;&#1072;&#1083;&#1080;&#1090;&#1100;?"/>
    </columnHeader>
    <contents>
    <checkBox name="deleteRow" value="ok"/>
    </contents>
    </column>
    </contents>
    </table>
    Thank you.

  • Problem with bind in a CFSELECT

    I am trying to get a CFSELECT to populate using bind.  If I use:
    <CFSELECT bind="http://www.myDomain.com/CFC/file.cfc?method=getSizes({materialColor})">
    </CFSELECT>
    my bind works... somewhat. 
    But if I use:
    <CFSELECT bind="cfc:myCFC.file.getSizes({materialColor})">
    </CFSELECT>
    I get:
    "The specified CFC myCFC.file could not be found.  The path to the CFC must be specified as a full path, or as a relative path from the current template, without the use of mappings."
    The Coldfusion exception log says the same.  myCFC is setup as a mapping to the D:/wwwroot/CFC directory in Coldfusion Administrator.  I've tried putting the .cfc file in the same directory as the .cfm that calls it but I get the same error.  It seems no matter where I put it and tell Coldfusion to look for it, unless I use http: I get that error. 
    I've tried using the cfdebug parameter on the page after enabling debugging in Administrator but it doesn't seem to do anything.
    I'm using Coldfusion 9 Developer with Apache 2.2.14 and PHP 5.2.11. 
    Thanks for the help.

    What you describe should work. I only have doubts about D:/wwwroot/CFC.
    I successfully tested with something like this:
    1) Component: c:\Coldfusion9\wwwroot\CFC\file.cfc
    2) In the mappings page Administrator
    Logical path: /myCFC
    Directory path: c:\Coldfusion9\wwwroot\CFC
    3) <CFSELECT bind="cfc:myCFC.file.getSizes({materialColor})"></CFSELECT

  • Cascading EA4500s and Guest Network access

    Hi, I hope esomone can help me here. I've got two EA4500 routers connected via ethernet. The primary router has DHCP enabled and the secondary has it disabled. IP address of primary is 192.168.1.1 and the secondary is 192.168.1.2.
    I have set up guest access on both routers however only the primary router allows users to connect. When out of range of the primary router but in range of the secondary router the network is visible but when you try to connect to it, it only gives limited or no connectivity message and can't connect to the internet.
    Is it possible for the guest network access to follow the same pattern as the secure network, i.e. the same network throughout the house?
    Regards
    Jon

    Cascading two routers should have correct parameters set. For instance, the Ethernet port of the secondary router should be connected to the ethernet port of the primary one, and the DHCP should be disabled on the second router. The ip address you've set are correct for the both routers. This thing shoud be done if the connection is LAN to LAN.
    By the way there are two types of cascading: Click here for info!
    For the Guest Network:
    Guest Network would only work if the the DHCP is enabled on your router. It means to say that on the type of setup you're doing which is LAN to LAN (DHCP disabled on the second router), Guest network would not work on the secondary router. If the connection is LAN to WAN, then both of the router should have Guest Network working.

  • Can I use cascading parameters in a fetchXML report.

     I'm trying to write a report For CRM Online in FetchXML. I want to use pre-filtering to force users to run the report from the Account form so the results are limited to one account because my database is quite large and if they use
    the Advanced Find  they are likely to break the report.
    So dataset1 uses a query which includes a pre-filtering parameter,
    '@CRM_account'
    I was hoping to add Dataset2 which would use a cascading parameter,
    '@CRM_Org'  that gets its value from the 'accountid' attribute in the query used for Databset1.  When I run the report however. I get an error 'a parameter expected by the report has not been supplied.' It seems the value for the 2nd param for
    dataset2 , '@CRM_Org' is not getting a value passed to it. Does anybody know if what I am attempting is possible in FetchXML ?
    regards Alan Ward

    I couldn't understand what is the use of second parameter. Your work can be done with one parameter.
    Create your fetch with a parameter in it (say dataset1). Now create a fetchXML (say dataset2) that fetches you account id.
    For the parameter from dataset1, set default value as "Get values from Query" and pass "account id " from dataset2 to it. That's it your job is done.
    Note: Remember to select Forms for related record types in
    Display In area and Account in Related Record Types area.
    Jugal Kishore Dandamudi.

  • Cascade parameter based on user input

    Post Author: jalverson
    CA Forum: Crystal Reports
    I'm creating a quoting report for our product development group.  They want a report where they input an item number, then have a drop down box that shows all the sales proposals that this item is on.   The user will then select one of the proposals from the drop down box and run the report based on the item number and the proposal selected. 
    Cascading parameter works but the item list is too long  (20k items) to select from.  It is easier for the user to enter the item number they want.  I can't figure out how to enter an item number in a parameter and then use it like a cascading parameter to populate the drop down box.  If it helps, we are using Crystal Reports XI.
    I appreciate your with this issue. 
    Jeff

    i think u can use GET /SET CURSOR command...check for sytax.
    regards
    Prabhu

  • Cascading Prompt doesn't work in BO 4.0

    Hi,
    I want to create a cascading LOV in Information Design Tool with 2 dimensions, i.e:
    Region --> City (LOV of City is subordinated to Region User Selection).
    In List of Values tab of IDT I've created one LOV based on query panel with one dimesion "City" and on query filter one prompt on Region.
    this is the code:
    SELECT DISTINCT
      "City"
    FROM
      "business Layer"
    WHERE
       "Region"  =  @prompt('Region','A','Region',Mono,Constrained,Persistent,,User:-1)
       AND
       "Business Layer"."REFERENCE_DATE"  =  @prompt(Key Date)
    I've linked LOV to dimension City.
    I've created one report with one prompt on City but when I launch the report an error occurs:
    "Circular references : check your @select and @where calls (QTJ 00511) (WIS 00000)"
    part of details:
    "...Caused by: com.businessobjects.sdk.core.server.ServerException: Circular references : check your @select and @where calls (QTJ 00511)..."
    Can you help me to solve this issue?
    Thanks
    Marco
    System Info: SAP BO 4.0 SP 2 patch level 7
                         SAP BW 7.01 SP9
    Edited by: marchino on Nov 18, 2011 4:32 PM
    Edited by: marchino on Nov 18, 2011 4:36 PM

    Hi,
    Here are the steps to create cascading LOV's for the desired objects.
    Tools menu > LOV > Create Cascading LOV > Then select your required object and move to the right side pane > Then GENERATE LOV.
    Hope it helps.

  • One Webi Report with multiple Cascade Prompts

    HI
             I have a requirement to create Cascading prompts on WebI reports. I have two questions.
    1) Can one Webi report have two or more sets of Cascading prompts.
    2) The universe is used by several groups of business useres. But only one group needs to have a Cascade prompts. Therefore, if i create Cascading prompts on Universe what is the impact to other business users who dont want the prompts as cascading prompts.
    Please provide me this information.
    Thanks in advance.

    Hi
              Thanks for the repoly. Can you please provide me more information.
    I understand that I need to do following steps.
    1. copy existing universe as universe II.
    2. link Universe II to Universe 1.
    3. Create cascade prompts on Universe II.
    4. Provide access to Business group with the requirement of cascade prompts to Universe II and rest of the groups to Universe I.
    Please let me know if my understanding is right.

  • Cascading Dynamic Parameters Do Not Work In Crystal Viewer 2008?

    I have generated a report with Crystal Reports 2008 that uses a dynamic cascading parameter. I work in waste management and the report I create in Crystal is used as a "template" with the tonnages collected from all of our customers. Our less technically minded employees can then open this report with Crystal Reports Viewer 2008, use the drop down menus to select only the customer they need a report for and then export this to PDF for delivery.
    The report as designed works perfectly in Crystal Reports, but the parameter does not work in Crystal Viewer.
    Some of our customers have more than one physical location that we service. The cascading dynamic parameter in my report allows you to select the customer name, and then it only shows the locations linked to that customer, so the end user can select only the relevant location(s) for the report. The cascading parameter is dynamic and allows multiple selections, and is linked to a Saved Data formula. The report is saved with the data.
    When the report is opened in Viewer, one of two things happens. If the report is saved in Crystal Reports and a specific customer/location is selected, then ONLY those selected customer/locations are available in the Viewer. If ALL the customers/locations are selected in Crystal Reports and saved, then in the Viewer they are all available, but selecting one customer does NOT narrow down the locations (i.e. it does not "cascade") and instead ALL of the locations are available even if they do not apply to the customer.
    If I use a single dynamic parameter and select ALL of the customers (for example), then when this is opened in Crystal Viewer all of the customers are available from the parameters drop down and the report works fine. As soon as this is tried with a cascading parameter however, Crystal Viewer falls down.
    Does anyone know of a workaround to this or if there is something I am doing wrong?

    I am using the free Crystal Report 2008 Viewer along with designing reports with Crytal Reports ver 12.3. With a test file from SAP called "Interactive Parameters", the parameter feature works to refresh the report. The parameters that are supplied in the sample report work with Viewer. They show up under the parameter list in the parameter side panel in Viewer and are available to make record selections. When I add a parameter to the sample report in Crystal 2008 and then view the report in Viewer, my parameters are unavalable for record selection while the original parameters remain available. Futher, my parameters are displayed under a section called "Current Data Set" in the Parameter side panel, while the selectable parameters are displayed under the "Parameter" section in the parameter side panel. There must be a setting that is treating the parameters I create differently form the parameters created in the original sample report. Any help would be appreciated.

  • How to use a cascading LOV as a Web Services Consumer?

    How to use a cascading LOV as a Web Services Consumer?
    We are trying to populate a prompt programmatically.
    Our program is a Web Services Consumer.
    As an example we use Island Resorts Marketing
    The cascading LOV for City is
    Country -> Region -> City
    The City object is key-aware to the customer table
    The query is
    Customer | Revenue
    (where) City = [prompt]
    In order to make the key-awareness work, we must select the value (rowIndex) from the LOV
    When we run our program below, the LOV for City is not populated, as expected since we must first select the Country, then the Region.
    The code snippet below shows that the LOV for Country is populated. We have no idea how to go from there.
    Any hint will be immensely appreciated.
    Let us know if anything is unclear in the code.
    Source       
    RetrieveMustFillInfo retrieveMustFillInfo = RetrieveMustFillInfo.Factory.newInstance();
            RetrievePromptsInfo retrievePromptInfo = RetrievePromptsInfo.Factory.newInstance();
            retrievePromptInfo.setPromptLOVRetrievalMode(PromptLOVRetrievalMode.ALL);
            retrievePromptInfo.setRefreshReturnedLOVs(true);
            retrievePromptInfo.setReturnLOVOnMustFillPrompts(true);
            retrieveMustFillInfo.setRetrievePromptsInfo(retrievePromptInfo);
            // *-- need the "Refresh" action to get the .promptToBeFilled
            Action[] boActions = new Action[1];
            boActions[0] = Refresh.Factory.newInstance();
            try {
                documentInformation = reportEngine.getDocumentInformation(Integer.toString(infoObject.getID()), retrieveMustFillInfo, boActions, null, null);
                m_Token = documentInformation.getDocumentReference();
            } catch (Exception ex) {
                System.out.println(GetWSError(ex));
                return;
            if (documentInformation.getMustFillPrompts()) {
                PromptInfo[] promptInfoS = documentInformation.getPromptInfoArray();
                for (PromptInfo promptInfo : promptInfoS) {
                    System.out.println(String.format("Prompt '%1$s', hasLOV=%2$s", promptInfo.getName(), (promptInfo.getHasLOV() ? "Yes" : "No")));
                    if (promptInfo.getHasLOV()) {
                        LOV boLOV = promptInfo.getLOV();
                        for (Value boLOVValue : boLOV.getValuesArray()) {
                            System.out.println(String.format(" LOV item '%1$s' RowIndex=%2$s", boLOVValue.getColumnsArray(0), (boLOV.getRowIndexed() ? boLOVValue.getRowIndex() : "")));
                    System.out.println("--End LOV");
                    PromptInfo[] promptInfoS2 = promptInfo.getPromptToBeFilledArray();
                    if (promptInfoS2.length > 0) {
                        PromptInfo promptInfo2 = promptInfoS2[0];
                        System.out.println(String.format(" linked to %1$s", promptInfo2.getName()));
                        if (promptInfo2.getHasLOV()) {
                            LOV boLOV2 = promptInfo2.getLOV();
                            for (Value boLOVValue : boLOV2.getValuesArray()) {
                                System.out.println(String.format(" LOV item '%1$s' RowIndex=%2$s", boLOVValue.getColumnsArray(0), (boLOV2.getRowIndexed() ? boLOVValue.getRowIndex() : "")));
                            System.out.println("--End LOV");
    Result
    Prompt 'Enter value(s) for City:', hasLOV=Yes
    --End LOV
    linked to Enter value for Country of origin
    LOV item 'Australia' RowIndex=6
    LOV item 'France' RowIndex=2
    LOV item 'Germany' RowIndex=4
    LOV item 'Holland' RowIndex=7
    LOV item 'Japan' RowIndex=5
    LOV item 'UK' RowIndex=3
    LOV item 'US' RowIndex=1
    --End LOV

    Hi,
    Refer SAP Note 1278947. You would require a Service Market Place logon to access this article.
    Let me know if this helps.
    Regards,
    Shreyans Surana

Maybe you are looking for

  • Server-Side Includes screw up my design screen in Dreamweaver

    I have a .html file (which resides in my include folder) that was generated by an external program (one the merges and filters RSS files). I've created an .asp page and pull the .html file in using <!--#include file="include/RSS-Headline.html" --> It

  • Encoding at different bit-rate that preset says?

    Greetings, I've run into a strange issue where Compressor 2 seems to be encoding at a different bit rate than that which I selected. I have a 113min video sequence from FCP 5 that I am trying to encode to Mpeg-2 for a DVD5. I originally went in and s

  • Sales order smartform:Urgent

    Hi Can anyone please mail me the preconfigured sales order confirmatiopn sales ordere. we dont have the preconfigured in our server and its urgent. This is my id: [email protected] Thanks in Advance, Srihari.

  • New itunes Runtime Error!

    When I  ad an new pdf file in the latest itunes to my iPad (Ad file to library). under windows 7 x86. Program iTunes.exe  stops and with a Runtime Error! Restart of computer did not help.Same problem occured. What can i do?

  • SAP 7.20 CRM Integration with Outlook 2007

    Hopefully you guys can help me seeing how i'm pretty illiterate on the workings of SAP. I work on a User Support team and we are undergoing tests for certain parts of our organization with deploying Windows 7. I bring this up because we currently use