Parameter Pass Between Portlets

Hi,
I'm trying to get a parameter pass between two portlets on the same page, I've looked at the PDK samples but have not been able to get either working, I'm on 9iAS R2 (9.0.2.0.1.). I've installed the PDK and loaded up the various samples. Any information or guidance appreciated. In a nut shell I'd ideally like to pass a parameter from a report (java or pl/sql) in one portlet to a portlet next to it on the same page which can then run a second report (java or pl/sql).
Regards
Stephen

Hi Peter,
We have an omniportlet that displays a graph, we want the user to be able to pick a value from this graph and pass it as a parameter to another page containing another omniportlet which would select values based on the parameter value.
We have 9ias version 9.0.2.6.2. Your help will be greatly appreciated.
thanks,
Saranya

Similar Messages

  • A sample question about parameter passing between portlets

    How can I pass parameter between portlets in one page using pdk API. Please give a demo. Thx

    In one portlet I send parameter using form: actionn="<%= UrlUtils.htmlFormActionLink(prr, UrlUtils.PAGE_LINK) %>"
    <input type="text" size="20" name="textname" value="">...
    Then I want to receive the parameter in another portlet. My code is:PortletRenderRequest prr = (PortletRenderRequest)
    request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
    out.println( prr.getParameter("textname") );
    But why I can't receive the parameter successfully.
    Thanks for any help!!!

  • Parameter Passing between pages- process not picking up on changes

    Hello, new user, this is a different question than before.
    I have a drop-down list box on Page 1, upon which the user can choose a study number. The List Box is named "P1_STUDY_NBR".
    Then I have a list, one entry of which goes to my master-detail form, which is Page 6. I would like it to go to the study number that the user choose on Page 1.
    In my target on the create/edit list entry, I put in "Page in this Application", "Page 6", then in Set these items, I put in
    P6_STUDY_NBR
    My question is what to use in With these values, where I want the contents of the P1_STUDY_NBR. I tried:
    &P1_STUDY_NBR.
    Now I've got it passing to the master detail form, but it passes whatever was the first value! i.e, if I set the default of the drop-down list box to 336-00, then it opens the form with 336-00, and if I set the default on the drop-down list to 005-07, then it opens to 005-07.
    However, if I change the value in the drop-down list box to something else, then press the link in the list to go to the page, then it doesn't pass the new value like I want (it passes whatever was the default value).
    Is there something that accepts the new value into the variable upon the change in that drop-down list box that I need to add to my processes, or why won't it use the new value as the parameter?
    -Mary

    I'd recommend (re)reading "Understanding Page Processing and Page Rendering" in the Users Guide and then redesigning your page. The problem is that you change the study number list selection in the browser but the change never gets processed because a navigation list link doesn't submit the form, it only navigates away from it.
    You could try making the study number list type "Select List with Redirect" which processes the change so that the new selection value gets set to the session state and then returns to the same page.

  • SharePoint 2010 Query string parameter pass between visual webparts

    Hi
    I should pass a query string value from one visual webpart to another visual webpart in SharePoint 2010 .
    Could you please help me like how we can pass
    Thanks
    Siddartha

    In the webpart you can add the code like "Response.Redirect("Page2.aspx?CustomerID=326");"
    Once you develop the webparts, add them to the respective pages based on your required functionality.
    Please check the similar thread
    http://social.msdn.microsoft.com/Forums/sharepoint/en-US/3099100f-72b2-4850-ba50-1e02416e9d9c/passing-query-string-between-two-webparts-usercontrols?forum=sharepointdevelopmentlegacy
    My Blog- http://www.sharepoint-journey.com|
    If a post answers your question, please click Mark As Answer on that post and Vote as Helpful

  • SharePoint 2013 Query string parameter pass between visual webparts

    Hi,
    I have created one web part called Latest News in SharePoint 2013 which is
    visual web part(Sandbox Solution).
    In that, there is button called "Read More". Now when I click on that button I want to show only that item in the new page which is clicked using query string. but the data which will be shown after Read More button will be coming
    from a different Visual Web Part.
    How should I pass a query string value from one visual webpart to another visual webpart in SharePoint 2013 ?
    Could anyone please help me like how we can pass.
    Thanks in Advance.

    Hi,
    To pass information from one web part to another, we can use the consumer and provider web part with the
    IWebPartParameters interface.
    There are some articles about this topic, you can refer to them.
    http://msdn.microsoft.com/en-us/library/office/ms469765(v=office.14).aspx
    http://www.c-sharpcorner.com/UploadFile/40e97e/sharepoint-2010-connected-web-parts/
    http://underthehood.ironworks.com/2011/03/how-to-build-a-consumer-web-part-in-sharepoint-2010-using-iwebpartparameters-that-works-with-html-fo.html
    Thanks & Regards,
    Jason
    Jason Guo
    TechNet Community Support

  • Portlet event link to pass parameter between portlets

    Ok list, I followed the documentation Adding Parameters and Events to Portlets
    PDK Release 2 (9.0.2 and later) and tried to make a portlet that pass parameter to another portlet using event link. I created the supposed parameter in the page and made the correct association to the receiving parameter portlet. The case is: The parameter is not caught in the receiving parameter page.
    This is my event link jsp code:
    <%
    String sImgPath = PropertiesReader.getProperty(PropertiesReader.KEY_IMAGES_PATH);
    PortletRenderRequest portletRequest = (PortletRenderRequest)request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
    // The portlet definition in provider.xml includes the following:
    // - Event "submit" with event parameters "funcionalidade"
    String eventSubmit = EventUtils.eventName("submit");
    String eventParamFuncionalidade = EventUtils.eventParameter("funcionalidade");
    // Build up the list of parameters for the "submit" event
    NameValuePair[] eventSubmitParams = new NameValuePair[2];
    // Give the 'funcionalidade' event parameter the constant value 'chat'
    eventSubmitParams[0] = new NameValuePair(eventParamFuncionalidade, "chat");
    // The event name must be passed as a parameter on the URL
    eventSubmitParams[1] = new NameValuePair(eventSubmit, "");
    %>
    <TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0">
    <TR><TD><a href="<%=PortletRendererUtil.constructLink(portletRequest,   portletRequest.getRenderContext().getEventURL(), eventSubmitParams, true, true)%>"><IMG SRC="<%= sImgPath + "menuButChat.gif" %>" BORDER="0"></a></TD><TR>
    </TRABLE>
    And this is my receiving parameter jsp code:
    <%
    String sFuncionalidade = "";
    PortletRenderRequest portletRequest = (PortletRenderRequest)request.getAttribute(HttpCommonConstants.PORTLET_RENDER_REQUEST);
    // Get the portlet definition - needed to get the public portlet parameters
    PortletDefinition portlet = portletRequest.getPortletDefinition();
    // Get the public portlet parameters
    ParameterDefinition[] parameters = portlet.getInputParameters();
    // Display all values for each of the public portlet parameters
    for (int currParameter = 0; currParameter < parameters.length; currParameter++)
    String name = parameters[currParameter].getName();
    out.println(" <p>name = " + name + "</p> ");
    // Get the parameter values
    String[] values = portletRequest.getParameterValues(name);
    // Display the parameter's values.
    if ( values == null )
    // Null array indicates no values for this parameter.
    out.println(" <p>values i null</p> ");
    else
    out.println(" values nco i null ");
    // Loop through each of the values and display non-null values on a separate line.
    for ( int j = 0; (values != null) && (j < values.length); j++ )
    sFuncionalidade = values[j];
    out.println(" <p>" + sFuncionalidade + "</p> ");
    %>
    And this is my portlet definition in provider.xml:
    <portlet class="oracle.portal.provider.v2.DefaultPortletDefinition">
    <id>3</id>
    <name>MenuColaboracao</name>
    <title>Menu de Colaboragco</title>
    <shortTitle>Menu de Colaboragco</shortTitle>
    <description>Portlet de menu para funcionalidade de Comuicagco e Colaboragco.</description>
    <timeout>10000</timeout>
    <timeoutMessage>Portlet timed out</timeoutMessage>
    <showEdit>false</showEdit>
    <showEditDefault>false</showEditDefault>
    <showPreview>false</showPreview>
    <showDetails>false</showDetails>
    <hasHelp>false</hasHelp>
    <hasAbout>false</hasAbout>
    <acceptContentType>text/html</acceptContentType>
    <renderer class="oracle.portal.provider.v2.render.RenderManager">
    <renderContainer>false</renderContainer>
    <contentType>text/html</contentType>
    <showPage>/menuColaboracao.jsp</showPage>
    <pageParameterName>next_page</pageParameterName>
    </renderer>
         <event class="oracle.portal.provider.v2.DefaultEventDefinition">
         <name>submit</name>
    <description>Use this event to submit the form data to a page</description>
    <parameter class="oracle.portal.provider.v2.DefaultParameterDefinition">
    <name>funcionalidade</name>
    <displayName>funcionalidade</displayName>
    <description>Parbmetro que indica a funcionalidade a ser apresentada.</description>
    </parameter>
    </event>
    </portlet>
    <portlet class="oracle.portal.provider.v2.DefaultPortletDefinition">
    <id>4</id>
    <name>HomeController</name>
    <title>Home Controller</title>
    <shortTitle>Home Controller</shortTitle>
    <description>Portlet que controla a exibigco do jsp correspondente a opgco de menu selecionada.</description>
    <timeout>10000</timeout>
    <timeoutMessage>Portlet timed out</timeoutMessage>
    <showEdit>false</showEdit>
    <showEditDefault>false</showEditDefault>
    <showPreview>false</showPreview>
    <showDetails>false</showDetails>
    <hasHelp>false</hasHelp>
    <hasAbout>false</hasAbout>
    <acceptContentType>text/html</acceptContentType>
    <renderer class="oracle.portal.provider.v2.render.RenderManager">
    <renderContainer>false</renderContainer>
    <contentType>text/html</contentType>
    <showPage>/homeController.jsp</showPage>
    <pageParameterName>next_page</pageParameterName>
    </renderer>
         <inputParameter class="oracle.portal.provider.v2.DefaultParameterDefinition">
         <name>funcionalidade</name>
    <displayName>funcionalidade</displayName>
    <description>Parbmetro que indica a funcionalidade a ser apresentada.</description>
    </inputParameter>
    </portlet>
    Where do I miss ???
    Any help will be appreciated.
    Regards,
    Leandro.

    Leandro,
    Few things which you might want to cross check to see if we are
    on the right track :
    1. Page containing Parameter receiving portlet contains a
    paga parameter mapped on to its public parameter.
    As per your example, parameter receiving page should have a page
    parameter with name - "funcionalidade" - and portlet's corresponding
    parmeter should be mapped to this page parameter. This can be
    done through "Parameters" tab in the Page Properties screen.
    2. Page containing Parameter passing portlet contains proper event
    mapping.
    As per your example, we have an event called "submit". We should
    be able to see "submit" event under "MenuColaboracao" portlet.
    When this event is raised, select which page should receive the event
    data. As soon as a page is selected, this page's public parameters
    are displayed below. Beside that we must be able to see a choice box
    which displays four choices one of which would be "Event Output".
    Map this output to the event parameter.
    Hope it helps.
    -AMJAD.

  • Unable to pass the parameter to other portlet

    Hi,
    I am trying to pass the parameter from one portlet to other portlet using the convention below...
    Example say you have two reports on a page dept and employee. You want to refresh employee report by clicking on
    the dept in the department report in the same page.
    (1) Create the first report based on the query
    SELECT htf.anchor('http://domain/servlet/page?&_pageid=97&_dad=portal_dad&_schema=portal_schema&_mode=3&dept_code='||DEPTNO,DEPTNO) Department,
    dname FROM scott.dept;
    (2) Create a 2nd report
    select * from EMP where DEPTNO = :dept_code
    (3) In the the additional pl/sql code section before display page on the 2nd report do this
    portal30.wwv_name_value.replace_value(
    l_arg_names, l_arg_values,
    p_reference_path||'.dept_code',portal30.wwv_standard_util.string_to_table2(nvl(get_value('dept_code'),10)));
    (4) Created a page and added these reports as portlets.
    In point (4) I am not getting the value of selected deptno in 'dept_code'. It is always taking the default value as '10'...
    I like to have the quick solution for this so that I can show the demo to my client...
    Thanks in Advance
    Sudheer

    Hi Ali,
    We can add parameterized queries to any TableAdapter (and controls to accept parameter values and execute the query) using the
    Search Criteria Builder Dialog Box. 
    For detail information, please refer to the following article to create a Windows Form to Search Data:
    http://technet.microsoft.com/en-us/library/hbsty6z7.aspx
    In addition, this issue is more related to Windows Form. I would suggest open a new thread in Windows Form forum if you have any more qestions:
    http://social.msdn.microsoft.com/Forums/windows/en-US/home?forum=winforms
    Regards, 
    Elvis Long
    TechNet Community Support

  • Passing parameters between portlets (PL/SQL PDK)

    I'm new to the PDK, so forgive me if this is a dumb question. I need to develop a portal page containing a single search portlet, and then many other associated portlets which bring back various bits of data based on the result of the search.
    Is it possible to drive the content of other portlets on the same page by passing values from one to another and refreshing the whole page?
    null

    Neil,
    You can definitely pass parameters from one portlet to another in PL/SQL and we actually have a sample that you can take a look at. In the PDK, download the Parameter passing and CSS Example Provider sample. http://technet.oracle.com/products/iportal/files/pdkjan/index.html
    Click on PL/SQL
    One of the portlets demonstrates how to pass parameters to one portlet or all portlets on a page.
    Hope this helps,
    Sue

  • How do I pass a parameter to a portlet on the URL?

    I have a portlet on one tab that searches for parts. (This portlet is written and maintained by someone else.) When a user clicks on a part number in the result set on this portlet they need to be taken to another tab (different portlet on the same page) with that part number as a parameter. The second portlet then dynamically writes an
    <iframe src="http://someurl?partnumber=xyz" />
    to call an external application passing the part number as a URL parameter to the external application.
    Writing the <iframe /> dynamically is no problem. The problem is passing the part number from one portlet to another. We planned to do this by using hrefs in the part search portal using URLs like
    http://hostname:port/pls/portal/url/page/test1/portlet2?partnumber=xyz
    for each part number. The problem is that the URL parameter doesn't get passed to the second portlet. Here is the code in the second portlet:
    <%
    PortletRenderRequest portletRenderRequest =
    (PortletRenderRequest)request.getAttribute("oracle.portal.PortletRenderRequest");
    String partnumber = portletRenderRequest.getQualifiedParameter("partnumber");
    %>
    It always sees null for the partnumber parameter.
    I also have <passAllUrlParams>true</passAllUrlParams> in provider.xml.
    I've tried checking this by calling the URL of the second portlet directly from a browser. The portlet sees the partnumber parameter as null, but the URL window in the browser returns the modified URL from the portal with the partnumber parameter set properly. Portal is seeing the parameter but not passing it to the portlet.
    I haven't tried actually setting the in the first portlet and seeing if it all works when called from inside the portal, but I don't see why it shouldn't work by calling the second portlet URL directly with a parameter.
    Am I missing some step in order to pass a parameter from one portlet to another? The parameters I have to pass are dynamic, based on the result set returned by a search in the first portlet.

    My second to last paragraph should have been:
    "I haven't tried actually setting the hrefs in the first portlet and seeing if it all works when called from inside the portal, but I don't see why it shouldn't work by calling the second portlet URL directly with a parameter."

  • How do I pass parameter to different portlet regions from another page?

    How do I pass parameter to different portlet regions from
    another page?
    I have a page that with two regions. Each region has a report
    that uses the same information to generate its report.
    Individually running the reports, I can use p_arg_names and
    p_arg_values to get what I want. However, when I run the page
    that has both portlets, my .show is gone and I cannot get it to
    use the p_arg_names, etc. Do you have any idea how to overcome
    this? Thanks for any help.

    How do I pass parameter to different portlet regions from
    another page?
    I have a page that with two regions. Each region has a report
    that uses the same information to generate its report.
    Individually running the reports, I can use p_arg_names and
    p_arg_values to get what I want. However, when I run the page
    that has both portlets, my .show is gone and I cannot get it to
    use the p_arg_names, etc. Do you have any idea how to overcome
    this? Thanks for any help.

  • How to pass page parameter to report portlet ?

    Portal: 9.0.4
    RDBMS: 9.0.1.5.0
    OS: Windows
    REF: How to pass page parameter to report portlet ?
    Hi,
    I create a Oracle Report as a Portlet in Portal (create Report Definition File Access and check on the option "Publish As Portlet" in the on the last step). My report has an "Additional User Parameter" and I has let it "Visible to user".
    When I put this portlet in my Portal page, I can see this parameter in the property/parameters of this page. However I cannot transfer my page parameter to this portlet parameter. Other portlets in this page (non-Oracle-Report portlets) are working fine with my page parameter.
    Please advice.

    I want to make sure we are talking about the same thing:
    After you add the portlet to the page, you go to the page properties, then the parameters tab, then there is a section at the bottom called "Portlet Parameter Values" where you can click and expand your portlet to see your portlet parameters.
    Is it here where your parameters just don't show up?
    If it is, try the following:
    - Add the portlet to another page and see if it still behaves the same.
    - Mark the parameters in the portlet as being non-public, re-generate portlet (on manage tab), then mark them as being public, re-generate and then try the above again (add to another page).

  • Passing session parameter to a portlet from webcenter spaces page

    How do you pass a parameter to a portlet on a WebCenter Spaces page? For example, I have the user's company ID in the session, I need to pass that company ID to the portlet defined to accept a company ID parameter so that the returned data can be filtered.

    You can for example add the companyID to the url of the page and then pass that parameter to the parameter of your portlet.
    Have you created your portlet to enable inter portlet communication? You should first do that and create a navigation-parameter in the oracle.xml. If you don't know what i'm talking about, i'll explain a bit more.
    Their is another way, which is easier i think, is to set the value of your portlet parameter to an expression language refering to a session variabel.
    In you portlet parameter set the companyId (if you have created a navigation-parameter companyID) to following value:
    #{sessionScope.company}You will have to set the value of that session variable from within your webcenter spaces.
    How are you doing that? Are you planning on setting that variable using another portlet, taskflow,... This can be very important on how webcenter reactt on parameters and it can also give you additional ways on passing the parameters.

  • Passing parameters between portletized ADF Faces applications, possible?

    Hello,
    In the developer guide, section 4.5.3 (http://download-east.oracle.com/docs/cd/B32110_01/webcenter.1013/b31074/jpsdg_pages.htm#CHDGGCGE) it says that you can synchronize portlets using an ADF Faces component value. However, that example do not use a value coming from a real portlet, the parameter come from a selectOneChoice define in the container page.
    Is there a way to achieve the same thing but with the selectOneChoice being placed in the WSRP 2.0 portlet? Basically the communication scheme is WSRP 2.0 to WSRP 2.0 which is something possible using URL parameters. However, the problem with JSF components is that they pass their values through a JavaScript launched POST submit so the values are never added to the URL and even worst, you cannot be sure of the generated parameter name as it depends on the context in which the component exists (mainly the presence of a parent NamingContainer) and the only way to know that parameter name for sure is to have a way to call component.getClientId(facesContext) which is impossible for the portlet container and therefore for the other portlets.
    To put it shortly, is there a way to send a navigation parameter from a portletized ADF Faces application to its container page beside using goButton and goLink (we need to keep the action/actionListener functionality)?
    Regards,
    Simon Lessard

    Can someone explain how to assign a value to a parameter in JSF like in the ParameterFormPortlet source code? Something in replacement of this :
        if (viewMode)
          // Set the new parameter values. These will be intepreted by the
          // container as navigational parameters as the names match the names of
          // the declared parameters.
          actionResponse.setRenderParameter(PARAMETER1, param1);
          actionResponse.setRenderParameter(PARAMETER2, param2);
          actionResponse.setRenderParameter(PARAMETER3, param3);
        }I mean, how to replace setRenderParameter to achieve the same thing inside a JSF binding bean for example. Is it possible via the PortletContext?
    Thanks in advance for any hint.
    Jean-Philippe

  • How to get each value from a parameter passed like this '(25,23,35,1)'

    Hi
    One of the parameter passed to the function is
    FUNCTION f_main_facility(pi_flag_codes VARCHAR2) return gc_result_set AS
    pi_flag_codes will be passed a value in this way '(25,23,35,1)'
    How to get each value from the string
    like 25 first time
    23 second time
    35 third time
    1 fourth time
    I need to build a select query with each value as shown below:-
    (SELECT t2.org_id, t4.description
    from org_name t2, ref_org_name t3, code_table t4
    where t2.att_data = t4.code
    and t3.ref_code = t2.att_type
    and t2.att_type = 25 and t3.code_type = t4.code_type
    and to_date('01-JAN-10', 'DD-MON-YY') between t2.att_start_date AND t2.att_end_date) q1,
    (SELECT t2.org_id, t4.description
    from org_name t2, ref_org_name t3,code_table t4
    where t2.att_data = t4.code
    and t3.ref_code = t2.att_type
    and t2.att_type = 23 and t3.code_type = t4.code_type
    and to_date('01-JAN-10', 'DD-MON-YY') between t2.att_start_date AND t2.att_end_date) q2,
    (SELECT t2.org_id, RTRIM(xmlagg(xmlelement(e, t4.description || ';')
    ORDER BY t4.description).EXTRACT('//text()'), ';') AS DESCRIPTION
    from org_name t2, ref_org_name t3,code_table t4
    where t2.att_data = t4.code
    and t3.ref_code = t2.att_type
    and t2.att_type = 35 and t3.code_type = t4.code_type
    and to_date('01-JAN-10', 'DD-MON-YY') between t2.att_start_date AND t2.att_end_date
    group by t2.org_id) q3,
    (SELECT t2.org_id, t4.description
    from org_name t2, ref_org_name t3, code_table t4
    where t2.att_data = t4.code
    and t3.ref_code = t2.att_type
    and t2.att_type = 1 and t3.code_type = t4.code_type
    and to_date('01-JAN-10', 'DD-MON-YY') between t2.att_start_date AND t2.att_end_date) q4
    Please help me with extracting each alue from the parm '(25,23,35,1)' for the above purpose. Thank You.

    chris227 wrote:
    I would propose the usage of regexp for readibiliy purposes and only in the case if this doesnt perform well, look at solutions using substr etc.
    select
    regexp_substr( '(25,23,35,1)', '\d+', 1, 1) s1
    ,regexp_substr( '(25,23,35,1)', '\d+', 1, 2) s2
    ,regexp_substr( '(25,23,35,1)', '\d+', 1, 3) s3
    ,regexp_substr( '(25,23,35,1)', '\d+', 1, 4) s4
    from dual 
    S1     S2     S3     S4
    "25"     "23"     "35"     "1"In pl/sql you do something like l_val:= regexp_substr( '(25,23,35,1)', '\d+', 1, 1);
    If t2.att_type is type of number you will do:
    t2.att_type= to_number(regexp_substr( '(25,23,35,1)', '\d+', 1, 1))Edited by: chris227 on 01.03.2013 08:00Sir,
    I am using oracle 10g.
    In the process of getting each number from the parm '(25,23,35,1)' , I also need the position of the number
    say 25 is at 1 position.
    23 is at 2
    35 is at 3
    1 is at 4.
    the reason I need that is when I build seperate select for each value, I need to add the query number at the end of the select query.
    Please see the code I wrote for it, But the select query is having error:-
    BEGIN
    IF(pi_flag_codes IS NOT NULL) THEN
    SELECT length(V_CNT) - length(replace(V_CNT,',','')) FROM+ ----> the compiler gives an error for this select query : PLS-00428:
    *(SELECT '(25,23,35,1)' V_CNT  FROM dual);*
    DBMS_OUTPUT.PUT_LINE(V_CNT);
    -- V_CNT := 3;
    FOR L_CNT IN 0..V_CNT LOOP
    if L_CNT=0 then
    V_S_POS:=1;
    V_E_POS:=instr(pi_flag_codes, ',', 1, 1)-1;
    else
    V_S_POS:=instr(pi_flag_codes,',',1,L_CNT)+1;
    V_E_POS:=instr(pi_flag_codes, ',', 1, L_CNT+1)-V_S_POS;
    end if;
    if L_CNT=V_CNT then
    V_ID:=TO_NUMBER(substr(pi_flag_codes,V_S_POS));
    else
    V_ID:=TO_NUMBER(substr(pi_flag_codes,V_S_POS,V_E_POS));
    end if;
    VN_ATYPE := ' t2.att_type = ' || V_ID;
    rec_count := rec_count +1;
    query_no := 'Q' || rec_count;
    Pls help me with fetching each value to build the where cond of the select query along with the query number.
    Thank You.

  • Getting error Invalid length parameter passed

    Hi,
    I'm getting an error running my query. It say "Invalid length parameter passed to the LEFT or SUBSTRING  function. I will be getting the string in between of hyphen using the code below. May i ask your assistance or idea on how to fix this issue.
    thank you.
     Substring(ins.itemid,11,CHARINDEX('-',ins.itemid+'-',11)-11) AS MODEL
    Msg 537, Level 16,
    State 3, Line 1
    Invalid length parameter passed to the LEFT or SUBSTRING
    function.
    Sample data of Itemid.
    B300-4410-ONEMAX-U
    B300-1725-XWHT-U
    B300-3110-VT981-U
    B300-1720-DRZRKCROBLK-U
    B300-1720-DRDTHN32BLK-U

    That'll cause empty strings to show up into you're result set but shouldn't cause the the SUBSTRING function to fail. 
    The error is the result of the SUBSTRING function trying to bring back a negative number of characters.
    Try running the following and see what comes back...
    SELECT ins.itemid
    FROM dbo.TableName ins
    WHERE LEN(ins.itemid) < 11
    If you don't find any itemids what are less than 11 characters (I'm 99% sure you will), try using a little test script like the following to test suspect values...
    IF OBJECT_ID('tempdb..#temp') IS NOT NULL
    DROP TABLE #temp
    GO
    CREATE TABLE #temp (
    itemid VARCHAR(30)
    INSERT #temp (itemid) VALUES
    ('B300-4410-ONEMAX-U'),
    ('B300-1725- '),
    ('B300- 3110-VT981-U'),
    ('B300-1720-DRZRKCROBLK-U'),
    ('B300- 1720-DRDTHN32BLK-U')
    SELECT ins.itemid
    FROM #temp ins
    WHERE LEN(ins.itemid) < 11
    SELECT
    SUBSTRING(
    ins.itemid, 11, CHARINDEX('-',ins.itemid+'-',11)-11) AS MODEL FROM #temp ins
    HTH,
    Jason
    Jason Long

Maybe you are looking for