Form with loop variable

I have a form that has text boxes where the name is created
dynamically with a loop variable.
<cfset formcounter = 1>
<cfoutput query="ViewParts">
<input type="hidden" name="RecordID#formcounter#"
value="#RecordID#">
<cfset formcounter = formcounter + 1>
</cfoutput>
<cfoutput><cfset formcountermax =
#formcounter#></cfoutput>
on the page it submits to I have:
<cfloop from="1" to="#formcountermax#"
index="loopcount">
<cfif form.Qtyshipped1 NEQ "0" AND form.Qtyshipped1 NEQ
"">
<CFQUERY NAME="InsertQty" DATASOURCE="mydatasource">
INSERT INTO InvoiceTable
InvoiceID,
QtyShipped,
RecordID
VALUES
'#GetLastInvID.InvoiceID#',
#form.Qtyshipped1#,
#form.RecordID1#
</CFQUERY>
</cfif>
Instead of the "1" at the end of the inserted variables, I
want it to be my loopcount. I just don't know how to name it so
that is possible.

Mark, try using the values I placed below, I believe that
should work. Also, I didnt see a close tag for your <cfloop>
so I left it out as well.
<cfloop from="1" to="#formcountermax#"
index="loopcount">
<cfif form.Qtyshipped1 NEQ "0" AND form.Qtyshipped1 NEQ
"">
<CFQUERY NAME="InsertQty" DATASOURCE="mydatasource">
INSERT INTO InvoiceTable
InvoiceID,
QtyShipped,
RecordID
VALUES
'#GetLastInvID.InvoiceID#',
'#evaluate('form.Qtyshipped' & '#loopcount#')#',
'#evaluate('form.RecordID' & '#loopcount#')#'
</CFQUERY>
</cfif>

Similar Messages

  • How to create a dynamic form with bind variables :schema & :table_name

    My application has two LOV's, one to select a schema, and the next to select a table within that schema. I then have a button which passes me to a report which displays the data in that table.schema.
    I now want to create a link to a form where I can edit the record based on the rowid of that table.schema, but it doesn't appear that I can create a dynamic form where I pass the schema.table_name and rowid. Is this possible? Can anyone advise how I can do this? The form builder only wants a fixed schema/table name.
    Thanks in advance.
    Stuart.

    Hi Stuart,
    In this sort of situation, you will need to be a bit creative.
    I would suggest a pipeline function called as if it was a report.
    Then you can pipe out the required fields.
    Since you will have a variable number of fields, you could use two of the multi row field names for your field names and values.
    Then after submit, you can create your own procedure to loop through the fields (stored for you in the Apex package) and update the table as required.
    Not very specific I'm afraid, but it should work.
    Regards
    Michael

  • Creating a form with variable table name(s)

    Hi,
    I am building a form that will allow user(s) switch to other user
    (s) dynamically. I have been able able to do this by creating a
    non-database table and use record group to read from the base
    table of each user.(All the tables in question have the same
    structure).
    Record group is a read only, and I want to be able to do data
    maninpulation with this form.
    The questions are
    (1) It possible to do data manipulation with record group and if
    it is, how?
    (2) Is it possible to build a form with a variable table name?
    if possible, how?
    Somebody pls help.
    Thanks,
    Olutunde.
    null

    Olutunde Babarinsa (guest) wrote:
    : Hi,
    : I am building a form that will allow user(s) switch to other
    user
    : (s) dynamically. I have been able able to do this by creating a
    : non-database table and use record group to read from the base
    : table of each user.(All the tables in question have the same
    : structure).
    : Record group is a read only, and I want to be able to do data
    : maninpulation with this form.
    : The questions are
    : (1) It possible to do data manipulation with record group and
    if
    : it is, how?
    : (2) Is it possible to build a form with a variable table name?
    : if possible, how?
    : Somebody pls help.
    : Thanks,
    : Olutunde.
    Hi,
    you can create and manipulate record groups at runtime(see Forms
    Reference 'Create_Group' and 'Add_Group_Row') don't use
    Create_Group_from_Query. For your purpose it's better to build a
    cursor loop on your Query and add your datas after
    manipulating with 'Add_Group_Row' to your Record Group.
    It's possible to SET_BLOCK_PROPERTY(QUERY_DATA_SOURCE_NAME) but
    it's not possible to change the item property 'Column Name'.
    Therefor I would suggest to build a non database block and
    populate these block by a programm unit, which works with a
    pl/sql cursor loop and the 'create record' to populate these
    block.
    null

  • Filling out form with pre-determined values

    I am new to LiveCycle. I want to set up a form where if a person hits a button or check box, it fills in the form with predetermined variables. I want to there to be several different buttons/check boxes which if selected fill out the form with the predetermined values. These values would be different, depending on the check box/button selected.  Is this possible?
    Just to help understand a little more, I am designing a medical prescription form.
    If the practitioner selects 'Option A' I want it to automatically fill out the required fields in the rest of the form with the predetermined values (set by me).
    Similarily if the practitioner selected 'Option B', it fills out the form with another set of predetermined values.
    Hope this makes sense.
    Thanks

    After looking at your form, I understand what you were going for.  You want several fields prepopulate values when you select either Option A, Option B... and so on.  Here is the script I use for the different fields, I would also suggest adding the same script to the initialized event so you can save the state of the form after it has been changed.
    From a Drop Down - JavaScript Change event 
    if(xfa.event.newText == 'Option A'){
    optionText.rawValue = "This is option A";
    optionText2.rawValue = "This is option A value";
    optionText3.rawValue = "This is option A";
    optionText4.rawValue = "This is option A";
    optionCheckbox.rawValue="0";      //0= unselected  1=selected
    optionRadio.rawValue = "Option A";
    if(xfa.event.newText == 'Option B'){
    optionText.rawValue = "This is option B";
    optionText2.rawValue = "This is option B value";
    optionText3.rawValue = "This is option B text";
    optionText4.rawValue = "This is option B";
    optionCheckbox.rawValue="1";
    optionRadio.rawValue = "Option B";
    From a Radio Box - JavaScript Click event  (make sure you define your values)
    if(optionRadio.rawValue == 'Option A'){
    optionText.rawValue = "This is option A";
    optionText2.rawValue = "This is option A value";
    optionText3.rawValue = "This is option A";
    optionText4.rawValue = "This is option A";
    optionCheckbox.rawValue="0";
    optionDropdown.rawValue = "Option A";
    if(optionRadio.rawValue == 'Option B'){
    optionText.rawValue = "This is option B";
    optionText2.rawValue = "This is option B value";
    optionText3.rawValue = "This is option B text";
    optionText4.rawValue = "This is option B";
    optionCheckbox.rawValue="1";
    optionDropdown.rawValue = "Option B";
    From a Button - JavaScript Click event
    optionText.rawValue = "This is option A";
    optionText2.rawValue = "This is option A value";
    optionText3.rawValue = "This is option A";
    optionText4.rawValue = "This is option A";
    optionCheckbox.rawValue="0";
    optionDropdown.rawValue = "Option A";
    optionRadio.rawValue= "Option A";
    I would attach a sample form, however I can't see where to upload it on this forum.  I will email you the form.
    Suggestion on your form:  Make sure your form fields have unique names in the hierarchy (Shift + F11). 

  • [svn] 4136: Find loop variables initialized with "weak" types, e.g., NULL or VOID, and

    Revision: 4136
    Author: [email protected]
    Date: 2008-11-18 14:50:38 -0800 (Tue, 18 Nov 2008)
    Log Message:
    Find loop variables initialized with "weak" types, e.g., NULL or VOID, and
    use the variable type used within the loop to normalize the local's type.
    Modified Paths:
    flex/sdk/trunk/modules/asc/src/java/adobe/abc/GlobalOptimizer.java

    Remember that Arch Arm is a different distribution, but we try to bend the rules and provide limited support for them.  This may or may not be unique to Arch Arm, so you might try asking on their forums as well.

  • Forms: sql with bind variable as default value to form field?

    I am using a form as a way to show details of already entered rows in a table. A report passes an id parameter to the form to get it to show the right data. No insert or update is possible. (I am using a form rather than a report because I need to display BLOBs, something reports can't do.)
    I need to execute sql statements based on the passed id to fill certain fields in the form with data from other tables. For example: The table the form is based on includes a category_id, whereas I want to display the category name which resides in another table.
    How would I best achieve this?

    Hi,
    You do this in the additional plsql code section of the form by getting the value of the category_id from the session variables and then getting its name from the cateogory table and assigning it to the category name column.
    Sample Code
    declare
    catid number;
    catnm varchar2(30);
    blk varchar2(10) := 'DEFAULT';
    begin
    catid := p_session.get_value_as_varchar2(
    p_block_name => blk,
    p_attribute_name => 'A_CATEGORY_ID');
    select category_name
    into catnm
    from cat_table
    where category_id = cat_id;
    p_session.set_value(
    p_block_name => blk,
    p_attribute_name => 'A_CATEGORY_NAME',
    p_value => catnm
    end;
    Thanks,
    Sharmila

  • Beginners question - making sense of form, item, pane & variable (with relation to where data is stored in the SQL database)

    Hi Everyone,
    I am new to writing reports (SQL code) for SAP, however I am aware that inside SAP Business One it is necessary to enable System Information (from the View menu) in order to see which tables (and related table attributes / column names) are related to various aspects of the various SAP 'modules' (e.g.: A/R Invoice).
    Using an A/R Invoice as an example I can see at the row (or line) level that an item with the description of 'Opening Balance Transfer' is contained in the table INV1, within the attribute (or column) called Dscription.
    However not every 'on screen object' shows a table / attribute. For example in the same A/R Invoice if I hover my mouse over the Balance Due field all I see is Form related information.
    My question is 'How do I make sense of the Form, Item, Pane, Variable information?', with relation to where data is stored within the SQL database?
    Links to online tutorials explaining how this feature of SAP Business One will be much appreciated, along with any personal advice regarding working with this information.
    Any (and all) help will be greatly appreciated.
    Kind Regards,
    David

    Hi David,
    1.Here I am explaining use of each field except pane
    a. Form ---> Used in additional authorization creator
    b. Item, column--->Useful in creating Formatted search queries (FMS)
    c. Variable --> Some of the field values based on another values. ie. indirect values.
    d. INV1---Table name
    2. How to get variable?
    As per your second attachment, to get balance due ,you need doc total field from OINV table. For example,
    SELECT T0.[DocNum], T0.[DocTotal] FROM OINV T0 WHERE T0.[DocNum] = 612004797
    Thanks & Regards,
    Nagarajan

  • Is there a problem using popup LOVs in a portal form with a bind variable?

    I have a portal form with 2 LOVs. The second LOV is a dependent LOV whose bind variable can be NULL. I have read Note 263923.1, "How To Create Dependent Lovs In Forms", and my form works as long as I use combo boxes to display the LOVs. I need to use popups so the user can search the LOVs as they are quite lengthy. Plus I want to be able to pick a value from my second LOV without selecting a value from the first LOV -- hence, my bind variable can be null and that is where my problem lies. As long as I select a value from the first LOV, the second LOV popup will work. If I click on the icon to display the second LOV without pre-selected a value from the first LOV, I get the following error:
    POPUP LOV ERROR:
    LOV: "9A17692880B6B8509F514F5B9CA9EC808DD403218B3CF19A33C04CD1FAB0ADE17ADC33E6B67998A933357CE5264D204E"
    Parse Message: Parse as pre-set global: "TORE".
    Find Message: LOV is of type DYNAMIC (LOV based on SQL query).
    Query: "SELECT ...."
    wwv_bind.prepare_bind: ORA-01403: no data found
    My form is based on a table with a custom layout. The sql for the second LOV is similar to: SELECT ENAME, EMPNO FROM SCOTT.EMP WHERE (DEPTNO = :DEPT AND :DEPT IS NOT NULL) OR :DEPT IS NULL.
    Thanks in advance for any help,
    Carol

    Don't use EPS any more! It does not support transparency nor color management.
    If you save vector files from Illustrator, use AI with PDF compatiblity.
    If you save image files from Photoshop, use PSD.
    If you save image files combined with vector forms and/or text from Photoshop, use PDP which is a Photoshop PDF.
    For vectors from Illustrator use CMYK files.
    For images use RGB, conversion to CMYK should never done before PDF export, better, if the printer allows it, is to export a PDF with live transparency as it is PDF/X-4
    If the printer requires a PDF with CMYK only export a PDF/X-1a.

  • Smart Forms : problem with Float Variable

    Hi  Expert,
       I have a probelm with Float variable. In my smart forms one fields of table QAMV contain value like 8.0000000000000000E+01.
    I have to remove the exponent and display value like 80.
    I have tried wa_qamv-sollwert(E10.4).. but it not working.
    Can U suggest me some solution.
    Regards
    Swati.
    Edited by: Swati Namdev on Apr 27, 2010 12:19 PM

    Hi,
    Please follow the steps.
    1. In your smart form create a variable w_val ,, type,, associate type -->  CHAR10
    2. Now write a code, jsut above your node where u wud like to get this value... For this Create -> Flow Logic -> Program Lines.. Now you have editor..
    3. In input parameters , put i_tab-QAMV.. and in output parameter put w_val... and Code like below
    CALL FUNCTION 'MD_CONV_QUANTITY_FLOAT_TO_PACK'
      EXPORTING
        iv_menge       = i_tab-qamv
      IMPORTING
        EV_MENGE       = w_val.
    4. Now grag and drop this w_val from global data field list...your this w_val will have the rounded value.. Pls try this and check..   It will work.
    Regards,
    Lokesh.
    Edited by: Lokesh Tarey on Apr 27, 2010 9:28 AM

  • FieldLoop within TabPanel: HowTo pass loop variable to form within a Tab

    Dear all,
    I have a Tabbed User Form which contains a FieldLoop that creates Tabs based on the FieldLoop loop-variable.
    Each created Tab should include the same form which differs only by the value of the loop-variable.
    So I have a list of all my SAP systems, and want to create per SAP system a SAP User form that handles
    the specific SAP resource.
    In general this works, but it seems that only the first element of my list of SAP systems is passed through
    the underlying form.
    Here's an extract of the code I've wrote:
    ===[ FILE : MY TABBED USER FORM . XML ]========================================================
    <!-- define list of managed SAP systems / START -->
    <Field name='MANAGED_SAP_LIST'>
    <Display class='Text'>
    <Property name='title' value='MANAGED_SAP_LIST'/>
    </Display>
    <Default>
    <List>
    <String>SAP_XXX-AAA</String>
    <String>SAP_XXX-BBB</String>
    </List>
    </Default>
    </Field>
    <!-- define list of managed SAP systems / END -->
    <!-- main tabs / START -->
    <Field name='MainTabs'>
         <Display class='TabPanel'/>
         <!-- loop through assigned SAP systems / START -->
         <FieldLoop for='currentSAP' in='MANAGED_SAP_LIST'>
              <!-- new TAB / START -->
              <Field name='$(currentSAP)'>          
              <Display class='EditForm'/>
              <FieldRef name='accountId'/>
                   <!-- invisibe field containing current loop value (i.e. SAP system name) / START -->
    <Field name='SAP_SYSTEM'>
    <Display class='Text'>
    <Property name='invisible' value='true' />
    <Property name='title' value='SAP_SYSTEM'/>
    </Display>
    <Default>
    <ref>currentSAP</ref>
    </Default>
    </Field>
                   <!-- invisibe field containing current loop value (i.e. SAP system name) / END -->
              <!-- include the SAP User Form / START -->
    <FormRef name='MY SAP User Form'/>
              <!-- include the SAP User Form / END -->
         </Field>
              <!-- new TAB / END -->
         </FieldLoop>
         <!-- loop through assigned SAP systems / END -->
    </Field>
    <!-- main tabs / END -->     
    ===============================================================================================
    ===[ FILE : MY SAP USER FORM . XML ]===========================================================
    <Field name="thisSAP">
    <Display>
    <Property name="title" value="Managed SAP SYSTEM" />
    <Property name="readOnly" value="true" />
    </Display>
    <Expansion>
    <ref>SAP_SYSTEM</ref>
    </Expansion>
    </Field>
    ===============================================================================================
    So currently I got 2 new tabs (as I defined 2 SAP systems) but the field "thisSAP" allways displays the first element of my list (i.e. SAP_XXX-AAA)
    Is there another way to pass a FieldLoop loop-variable to an underlying form ?
    many thanks in advance
    Best regards
    Joerg

    Sorry i figured it out.
    I had other session variables i was referencing in my sql query and had to add an:
    or :p11_other is null
    to my SQL query for each of them.

  • Forms.INS(72) No String value associated with this variable

    When I try to distribute my application I need to make sure that
    when my app installs it either adds or creates the environment
    variable Forms60_Path. This can be done in the project
    builder. When going through this one of the steps you have
    ability to add new environment variables. So I add on one named
    Forms60_Path with a value and contents of %PROD_HOME% and with
    the append set to yes.
    This now will give me either one or two errors when installing
    the application. The first error is that because i am choosing
    append set to yes it doesn't appear to be checking if the
    variable is already there or not. What it does do is give me a
    messages saying "A file not found while trying to translate
    Forms60_Path from '$Oracle' would u like to retry, ignore or
    process' I have choosen to process and the installer correctly
    adds the registry entry. That is a good thing but i still
    should not recieve an error when doing this it should check to
    see if the Reg entry is there if not then create it, if it is
    there then append to it. This only happens if you have append
    set to yes and the environment variable does not exist in the
    registry yet.
    The second error is more concerning because it just cancels out
    of the install all together. What it does no matter what under
    any circurmstance after you have added an environment variable
    in the delivery wizard is give u a message saying that
    "Form_Name.INS(72) No String Value associated with this
    variable" This error always comes up no matter what. After
    looking throught the INS file I took out the line
    "win32_register_map_variable(repl_var);" and I no longer
    recieved that error. My question is why do I get this error and
    what is the ramifications of taking this line out of the INS
    file?
    If no one else has had these problems I will be simply amazed!!!
    Thanks,
    Spencer Tabbert
    null

    Spencer,
    I am also getting the error you got months ago. (The second one: FORM.ins(72): No string value associated with this variable.) Can you tell me how you were able
    to fix it? I would appreciate it.
    I am new to Project Builder and pretty
    confused.
    Thanks,
    Monika

  • SQL query with Bind variable with slower execution plan

    I have a 'normal' sql select-insert statement (not using bind variable) and it yields the following execution plan:-
    Execution Plan
    0 INSERT STATEMENT Optimizer=CHOOSE (Cost=7 Card=1 Bytes=148)
    1 0 HASH JOIN (Cost=7 Card=1 Bytes=148)
    2 1 TABLE ACCESS (BY INDEX ROWID) OF 'TABLEA' (Cost=4 Card=1 Bytes=100)
    3 2 INDEX (RANGE SCAN) OF 'TABLEA_IDX_2' (NON-UNIQUE) (Cost=3 Card=1)
    4 1 INDEX (FAST FULL SCAN) OF 'TABLEB_IDX_003' (NON-UNIQUE)
    (Cost=2 Card=135 Bytes=6480)
    Statistics
    0 recursive calls
    18 db block gets
    15558 consistent gets
    47 physical reads
    9896 redo size
    423 bytes sent via SQL*Net to client
    1095 bytes received via SQL*Net from client
    3 SQL*Net roundtrips to/from client
    1 sorts (memory)
    0 sorts (disk)
    55 rows processed
    I have the same query but instead running using bind variable (I test it with both oracle form and SQL*plus), it takes considerably longer with a different execution plan:-
    Execution Plan
    0 INSERT STATEMENT Optimizer=CHOOSE (Cost=407 Card=1 Bytes=148)
    1 0 TABLE ACCESS (BY INDEX ROWID) OF 'TABLEA' (Cost=3 Card=1 Bytes=100)
    2 1 NESTED LOOPS (Cost=407 Card=1 Bytes=148)
    3 2 INDEX (FAST FULL SCAN) OF TABLEB_IDX_003' (NON-UNIQUE) (Cost=2 Card=135 Bytes=6480)
    4 2 INDEX (RANGE SCAN) OF 'TABLEA_IDX_2' (NON-UNIQUE) (Cost=2 Card=1)
    Statistics
    0 recursive calls
    12 db block gets
    3003199 consistent gets
    54 physical reads
    9448 redo size
    423 bytes sent via SQL*Net to client
    1258 bytes received via SQL*Net from client
    3 SQL*Net roundtrips to/from client
    1 sorts (memory)
    0 sorts (disk)
    55 rows processed
    TABLEA has around 3million record while TABLEB has 300 records. Is there anyway I can improve the speed of the sql query with bind variable? I have DBA Access to the database
    Regards
    Ivan

    Many thanks for your reply.
    I have run the statistic already for the both tableA and tableB as well all the indexes associated with both table (using dbms_stats, I am on 9i db ) but not the indexed columns.
    for table I use:-
    begin
    dbms_stats.gather_table_stats(ownname=> 'IVAN', tabname=> 'TABLEA', partname=> NULL);
    end;
    for index I use:-
    begin
    dbms_stats.gather_index_stats(ownname=> 'IVAN', indname=> 'TABLEB_IDX_003', partname=> NULL);
    end;
    Is it possible to show me a sample of how to collect statisc for INDEX columns stats?
    regards
    Ivan

  • What is the scope of implicit loop variables?

    Hi,
    I'm facing some strange error from the ABSL editor (syntax checker).
    In ABSL the loop variables are implicit and don't have to be declared in the head section of the script.
    My question now is simple: How is the scope/visibility of such loop variables specified ?
    There's a complete code snippet below.
    In line no.9, there's the first time use of implicit loop variable 'task_inst'.
    Because of type inference, it will be typed as MasterDataWanneBe/Tasks (which is my own BO type).
    In line no.20, I want to use the same variable name in a different loop, outside the parenthesis/scope of the first first use.
    Now the ABSL syntax checker complains about incompatible types (see code snippet)
    Thus the type inference should result in the, (lets say 'local') type Project/Task, which is the one I was querying for.
    To me it looks like, that loop variables implicitly get a global scope (hopefully bound to this ABSL file only).
    I would like to see the scope/visibility of loop variables restricted to the parenthesis.
    In other words only inside the loop.
    Hint
    I heard (from little sparrows), that local variable scoping is not possible because of underlying
    generated ABAP code. If so, than it would be helpful to print warnings, in case of types are compatible
    but used in different scopes. Think about the unintended side effects.
    import ABSL;
    import AP.ProjectManagement.Global;
    var query_tasks;
    var query_tasks_param;
    var query_tasks_result;
    foreach (empl_inst in this.Employees) {
         foreach (task_inst in empl_inst.Tasks) {
             //   ^^^^^^^^^  first time use
              task_inst.Delete();
    // ===========================================================================
    query_tasks = Project.Task.QueryByResponsibleEmployee;
    query_tasks_param = query_tasks.CreateSelectionParams();
    query_tasks_result = query_tasks.Execute(query_tasks_param);
    foreach (task_inst in query_tasks_result) {
          // ^^^^^^^^^ Error: 4
          // The foreach loop variable is already inferred to an incompatible type:
          // Node(MasterDataWanneBe/Tasks). Expected Node(Project/Task)

    Yes, variable declarations in ByD Scripting Language indeed have (snippet) global visibility. In the FP 3.0 release the variables can be declared anywhere in the snippet (not only in the beginning, as with FP 2.6), however still not within code blocks, i.e. within curly braces ({}). Therefore variable name shadowing is still not supported and because of the global visibility of variables they cannot be reused for a different type, later in the same snippet. This is because of the statically typed nature of ByD Script, despite the type inference convenience.
    Kind regards,
    Andreas Mueller

  • SLOW report performance with bind variable

    Environment: 11.1.0.7.2, Apex 4.01.
    I've got a simplified report page where the report runs slowly compared to running the same query in sqldeveloper. The report region is based on a pl/sql function returning a query. If I use a bind variable in the query inside apex it takes 13 seconds to run, and if I hard code a string it takes only a few hundredths of a second. The query returns one row from a table which has 1.6 million rows. Statistics are up-to-date and the columns in the joins and where clause are indexed.
    I've run traces using p_trace=YES from Apex for both the bind variable and hard coded strings. They are below.
    The sqldeveloper explain plan is identical to the bind variable plan from the trace, yet the query runs in 0.0x seconds in sqldeveloper.
    What is it about bind variable syntax in Apex that is causing the bad execution plan? Apex Bug? 11g bug? Ideas?
    tkprof output from Apex trace with bind variable is below...
    select p.master_id link, p.first_name||' '||p.middle_name||' '||p.last_name||' '||p.suffix personname,
    p.gender||' '||p.date_of_birth g_dob, p.master_id||'*****'||substr(p.ssn,-4) ssn, p.status status
    from persons p
    where
       p.person_id in (select ps.person_id from person_systems ps where ps.source_key  like  LTRIM(RTRIM(:P71_SEARCH_SOURCE1)))
    order by 1
    call     count       cpu    elapsed       disk      query    current        rows
    Parse        1      0.00       0.00          0          0          0           0
    Execute      1      0.00       0.01          0          1         27           0
    Fetch        2     13.15      13.22      67694      72865          0           1
    total        4     13.15      13.23      67694      72866         27           1
    Misses in library cache during parse: 0
    Optimizer mode: ALL_ROWS
    Parsing user id: 62  (ODPS_PRIVACYVAULT)   (recursive depth: 1)
    Rows     Row Source Operation
          1  SORT ORDER BY (cr=72869 pr=67694 pw=0 time=0 us cost=29615 size=14255040 card=178188)
          1   FILTER  (cr=72869 pr=67694 pw=0 time=0 us)
          1    HASH JOIN RIGHT SEMI (cr=72865 pr=67694 pw=0 time=0 us cost=26308 size=14255040 card=178188)
          1     INDEX FAST FULL SCAN IDX$$_0A300001 (cr=18545 pr=13379 pw=0 time=0 us cost=4993 size=2937776 card=183611)(object id 68485)
    1696485     TABLE ACCESS FULL PERSONS (cr=54320 pr=54315 pw=0 time=21965 us cost=14958 size=108575040 card=1696485)
    Rows     Execution Plan
          0  SELECT STATEMENT   MODE: ALL_ROWS
          1   SORT (ORDER BY)
          1    FILTER
          1     HASH JOIN (RIGHT SEMI)
          1      INDEX   MODE: ANALYZED (FAST FULL SCAN) OF
                     'IDX$$_0A300001' (INDEX)
    1696485      TABLE ACCESS   MODE: ANALYZED (FULL) OF 'PERSONS' (TABLE)
    Elapsed times include waiting on following events:
      Event waited on                             Times   Max. Wait  Total Waited
      ----------------------------------------   Waited  ----------  ------------
      db file scattered read                       1276        0.00          0.16
      db file sequential read                       812        0.00          0.02
      direct path read                             1552        0.00          0.61
    ********************************************************************************Here's the tkprof output with a hard coded string:
    select p.master_id link, p.first_name||' '||p.middle_name||' '||p.last_name||' '||p.suffix personname,
    p.gender||' '||p.date_of_birth g_dob, p.master_id||'*****'||substr(p.ssn,-4) ssn, p.status status
    from persons p
    where
       p.person_id in (select ps.person_id from person_systems ps where ps.source_key  like  LTRIM(RTRIM('0b')))
    order by 1
    call     count       cpu    elapsed       disk      query    current        rows
    Parse        1      0.02       0.04          0          0          0           0
    Execute      1      0.00       0.00          0          0         13           0
    Fetch        2      0.00       0.00          0          8          0           1
    total        4      0.02       0.04          0          8         13           1
    Misses in library cache during parse: 1
    Optimizer mode: ALL_ROWS
    Parsing user id: 62  (ODPS_PRIVACYVAULT)   (recursive depth: 1)
    Rows     Row Source Operation
          1  SORT ORDER BY (cr=10 pr=0 pw=0 time=0 us cost=9 size=80 card=1)
          1   FILTER  (cr=10 pr=0 pw=0 time=0 us)
          1    NESTED LOOPS  (cr=8 pr=0 pw=0 time=0 us)
          1     NESTED LOOPS  (cr=7 pr=0 pw=0 time=0 us cost=8 size=80 card=1)
          1      SORT UNIQUE (cr=4 pr=0 pw=0 time=0 us cost=5 size=16 card=1)
          1       TABLE ACCESS BY INDEX ROWID PERSON_SYSTEMS (cr=4 pr=0 pw=0 time=0 us cost=5 size=16 card=1)
          1        INDEX RANGE SCAN IDX_PERSON_SYSTEMS_SOURCE_KEY (cr=3 pr=0 pw=0 time=0 us cost=3 size=0 card=1)(object id 68561)
          1      INDEX UNIQUE SCAN PK_PERSONS (cr=3 pr=0 pw=0 time=0 us cost=1 size=0 card=1)(object id 68506)
          1     TABLE ACCESS BY INDEX ROWID PERSONS (cr=1 pr=0 pw=0 time=0 us cost=2 size=64 card=1)
    Rows     Execution Plan
          0  SELECT STATEMENT   MODE: ALL_ROWS
          1   SORT (ORDER BY)
          1    FILTER
          1     NESTED LOOPS
          1      NESTED LOOPS
          1       SORT (UNIQUE)
          1        TABLE ACCESS   MODE: ANALYZED (BY INDEX ROWID) OF
                       'PERSON_SYSTEMS' (TABLE)
          1         INDEX   MODE: ANALYZED (RANGE SCAN) OF
                        'IDX_PERSON_SYSTEMS_SOURCE_KEY' (INDEX)
          1       INDEX   MODE: ANALYZED (UNIQUE SCAN) OF 'PK_PERSONS'
                      (INDEX (UNIQUE))
          1      TABLE ACCESS   MODE: ANALYZED (BY INDEX ROWID) OF
                     'PERSONS' (TABLE)

    Patrick, interesting insight. Thank you.
    The optimizer must be peeking at my bind variables with it's eyes closed. I'm the only one testing and I've never passed %anything as a bind value. :)
    Here's what I've learned since my last post:
    I don't think that sqldeveloper is actually using the explain plan it says it is. When I run explain plan in sqldeveloper (with a bind variable) it shows me the exact same plan as Apex with a bind variable. However, when I run autotrace in sqldeveloper, it takes a path that matches the hard coded values, and returns results in half a second. That autotrace run is consistent with actually running the query outside of autotrace. So, I think either sqldeveloper isn't really using bind variables, OR it is using them in some other way that Apex does not, or maybe optimizer peeking works in sqldeveloper?
    Using optimizer hints to tweak the plan helps. I've tried both /*+ FIRST_ROWS */ and /*+ index(ps pk_persons) */ and both drop the query to about a second. However, I'm loath to use hints because of the very dynamic nature of the query (and Tom Kyte doesn't like them either). The hints may end up hurting other variations on the query.
    I also tested the query by wrapping it in a select count(1) from ([long query]) and testing the performance in sqldeveloper and in Apex. The performance in that case is identical with both bind variables and hard coded variables for both Apex and SqlDeveloper. That to me was very interesting and I went so far as to set up two bind variable report regions on the same page. One region wrapped the long query with select count(1) from (...) and the other didn't. The wrapped query ran in 0.01 seconds, the unwrapped took 15ish seconds with no other optimizations. Very strange.
    To get performance up to acceptable levels I have changed my function returning query to:
    1) Set the equality operator to "=" for values without wildcards and "like" for user input with wildcards. This makes a HUGE difference IF no wildcard is used.
    2) Insert a /*+ FIRST_ROWS */ hint when users chose the column that requires the sub-query. This obviously changes the optimizer's plan and improves query speed from 15 seconds to 1.5 seconds even with wildcards.
    I will NOT be hard coding any user supplied values in the query string. As you can probably tell by the query, this is an application where sql injection would be very bad.
    Jeff, regarding your question about "like '%' || :P71_SEARCH_SOURCE1 || '%'". I've found that putting wildcards around values, particularly at the beginning will negate any indexing on the column in question and slows performance even more.
    I'm still left wondering if there isn't something in Apex that is breaking the optimizer "peeking" that Patrick describes. Perhaps something in the way it switches contexts from apex_public_user to the workspace schema?

  • I created a form with Single Choice fields, 4 days with times listed. But, I want the user to only be able to choose one time, and the time chosen to be unavailable for other users. How do I do this?

    I created a form with Single Choice fields, 4 days with times listed. But, I want the user to only be able to choose one time, and the time chosen to be unavailable for other users. How do I do this? I have 4 blocks of Single Choice fields in order for the summary page to give me each day in the final report. But, I need the user to be able to make a selection of any day and time and that apointment to no longer be available to future users when they log in. Plus, when the user clicks on the time, they are unable to change their mind and choose another time. Here's the link if you want to see what I'm talking about: 2015-2016 Workload Apportionment Review

    I'm afraid not.    It's not rocket science but you need to do some coding. 
    You'll need to find a script (php) and save it to your local site folder.  Then reference the script in your form's action attribute like so.
         <form action="path/form-to-email-script.php" >
    The input fields in your HTML form need to exactly match the script variables. 
    I'm  assuming you're hosted on a Linux server which uses PHP code.  Linux servers are also case sensitive, so upper case names are not the same as lower case names.  It's usually best to use all lower case names in your form and script to avoid confusion.
    Related Links:
    Formm@ailer PHP from DB Masters
    http://dbmasters.net/index.php?id=4
    Tectite
    http://www.tectite.com/formmailpage.php
    If this is all a bit beyond your skill set, look at:
    Wufoo.com (on-line form service)
    http://wufoo.com/
    Nancy O.

Maybe you are looking for

  • Problem with MATERIALIZED VIEW (snapshot)

    Hi, I've any problem with creating MATERIALIZED VIEW (snapshot) My table is ROOMS: SQL> DESC ROOMS Name Null? Type LS_ID VARCHAR2(32) BL_ID NOT NULL VARCHAR2(32) PRIMARY KEY1 FL_ID NOT NULL VARCHAR2(4) PRIMARY KEY2 RM_ID NOT NULL VARCHAR2(8) PRIMARY

  • Simplifying printers for multi-site users

    Windows 2008 R2 Windows 7 Enterprise Topology: Central network with about 50 users/computers and 5 servers. 25 remote sites, 2-4 users/computers per site (no servers at the sites). Each site also has one network printer. Currently all sites have the

  • How do you eliminate mails from preview panel in Lion?

    I can´t eliminate my mails from preview panel. I have to do it from the tool bar or from the mail when it is already open Why? I think I could eliminate mails from the preview panel before but I can´t do it now Or do I dreamt it?  Can somebody help m

  • When will iphone 5s be available at apple stores to look at?

    When will Apple stores have the iPhone 5S to look at and play with?

  • Error when provisioning to  Active Directory (AD)

    Hi All, I have a java class / connector to AD (Active Directory) to the process of making the user ID (Create User). Classes are in the export becomes. JAR and I call via IDM (10g Version). There are 2 processes scenarionya CREATE USER: 1. Create use