First rows retrieving slowly when there are no records.

Hi, In a Web Application, I´m using a query to retrieve the last records on a table, by user who created them. The query uses the FIRST_ROWS hint to retrieve faster the records, as there are users that have lots of records on the table. It looks like this:
select * from(SELECT /*+ FIRST_ROWS*/ * FROM HISTORY WHERE USER_ID ='CC71312667'
ORDER BY CREATE_DATE DESC) where rownum<=7;
The usage of the hint works marvels in response times with those users with lots of records, but when the user has no records at all (i.e. the query won´t retrieve any records), the performance is actually poorer than not using the hint.
Is there any way to make the query retrieve records fast in both cases?
I was thinking in doing a previous query to ask if the user has records (using count)... but I would like to avoid this if possible.
Thanks for any help you can give me.
Message was edited by:
jvega

Are there any indexes on any columns of the table 'HISTORY'?
Are statistics estimated/computed for the table and indexes(if any on it)?
What version of Oracle do you use?
Could you post the execution plan(s) for your case?
Do you often delete data from table 'HISTORY'?

Similar Messages

  • Dax Calculate column even when there is no record at a date

    We are creating a powerpivot model based on a table with data about worktasks of our employees.
    This is simplified our input:
    Tasknr date started dateended
    1 20140101 20140201 (yyyymmdd)
    2 20140102 20140103
    3 20140104 20140108
    Etc
    We created two measures to calculate how many tasks are opened and closed per day. That was no problem, but now the tricky part. We also want to know each day how many tasks are
    still open, even on days that no tasks are opened (or closed).
    My approach was to create a calculated column to determine how many tasks are opened up to that date and subtracted the closed tasks and end up with the tasks that are open. That
    seems to be working :
    =COUNTROWS(FILTER(Tasks; Tasks[Open]<=EARLIER(Tasks[Open]))) - COUNTROWS(FILTER(Tasks; Tasks[Close]<=EARLIER(Tasks[Open])))
    When I load this to the excel pivot I end up with this:
    Row Labels| Opened | Closed | Open not finished
    1/1/2014
            1         
    0          1
    1/2/2014        
    1          0         
    2
    1/3/2014
            0         
    1         0
    1/4/2014
            1         
    0         2
    The line with 1/3/2014 should have 1 in the column [opened not finished], but because that calculation is linked to the opendate column, not to the closed and 3/1/2014 no task
    was opened, there is no value. On days that no tasks are opened or closed there even is no line at all although there could be tasks that are still open.
    I need a mechanism that calculates the value even when there are no records
    on a particular day. Our users want to be able to view the results on any date they select.
    I have considered a second table with all the dates and calculate columns from the task-table but are there other ways to do this? I searched this forum but did not find an answer
    so far.

    Hi Jacob,
    In our company we have a standard date table that is included in all of our models. What I didn't want to do in this case was to extend that table with calculated fields to solve this issue. Alternative was to create a new date table with the calculated
    fields I needed. But I don't like that also so what I did was rewrite the sql that loaded the data into the pivot so that the measures were calculated at the load. But I am also not happy with that solution because of maintanance and performance reasons. My
    feeling is that there must be a way to solve this with only dax in the loaded table.
    Jacob's answer does exactly what you want. The DAX expression in his response is a measure which you could put in your Tasks table. You don't need to alter your date dimension in any way.
    The key to this technique is that the date table cannot have an active relationship to your Tasks table. (although you could have an inactive relationship and then you could use the USERELATIONSHIP function to make other measures easier to calculate)
    Translating Jocob's measure into something against a 'Tasks' table would looks like the following:
    =
    CALCULATE (
    COUNTROWS ( Tasks ),
    FILTER (
    Tasks,
    Tasks[Open] <= MAX ( Calendar[Date] )
    && Tasks[Closed] >= MAX ( Calendar[Date] )
    http://darren.gosbell.com - please mark correct answers

  • How do I print some value when there is no record against field

    hi,
    I have two queries and a link between two queries .columns selected for query are source to the fields in layout. In one of the case i have record for master table but the detail field is left blank because there is no record against it(its not null)
    How do i display "0" where there is no record in detail. the columns of both the query are in same record . I can't assign "0" when null because there is no record so its not null.
    Thanks in advance
    Rama

    Create a summary column in the parent query which counts the records in the child query. This will be zero when there are no records in the child query. Put this field on the page and in the format trigger use "RETURN :cs_count = 0;" to ensure the field is not visible except when its value is zero.

  • LOV throws NullPointerException when there are no rows to display

    Hi,
    I have cascading LOVs in my application. I have 3 of them. I select values for the first 2 LOVs, and then I click on the 3rd LOV. The query for the third LOV returns no records from the database and so, a NullPointerException is thrown.
    When there are no rows to display in the LOV, I want the LOV to still pop up with a message saying "No rows to display".
    Is there a way I can achieve this functionality using the existing features?
    I am using JDev 11.1.1.3.0
    Thanks
    Srikanth Addanki

    <RegistrationConfigurator><handleError> Server Exception during PPR, #2
    java.lang.NullPointerException
         at oracle.adfinternal.view.faces.model.binding.FacesCtrlLOVBinding.getSearchBinding(FacesCtrlLOVBinding.java:189)
         at oracle.adfinternal.view.faces.model.binding.FacesCtrlLOVBinding$ListOfValuesModelImpl.getSearchRegion(FacesCtrlLOVBinding.java:1536)
         at oracle.adfinternal.view.faces.model.binding.FacesCtrlLOVBinding$ListOfValuesModelImpl.getQueryModel(FacesCtrlLOVBinding.java:1163)
         at oracle.adfinternal.view.faces.renderkit.rich.SimpleInputListOfValuesRendererBase$InternalLaunchPopupListener.processLaunch(SimpleInputListOfValuesRendererBase.java:1371)
         at oracle.adf.view.rich.event.LaunchPopupEvent.processListener(LaunchPopupEvent.java:108)
         at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcast(UIXComponentBase.java:673)
         at org.apache.myfaces.trinidad.component.UIXEditableValue.broadcast(UIXEditableValue.java:210)
         at oracle.adf.view.rich.component.UIXInputPopup.broadcast(UIXInputPopup.java:152)
         at oracle.adf.view.rich.component.fragment.UIXRegion.broadcast(UIXRegion.java:148)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:812)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:292)
         at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:191)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:97)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:94)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:414)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:138)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:330)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3684)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Please let me know if I can provide any other info that makes the issue analysis easy.
    Thanks for the quick reply.

  • I have just owned a macbook pro and trying to learn things since i have all along used windows laptop. My first question is : when there are two files i am working together, one above the other on screen, how you switch over between the two with key ?

    I have just owned a macbook pro and trying to learn things since i have all along used windows laptop. My first question is : when there are two files i am working together, one above the other on screen, how you switch over between the two with key ?

    Hi...
    Mac OS X keyboard shortcuts
    Control-F4
    Move focus to the active (or next) window
    Shift-Control-F4
    Move focus to the previously active window
    By the way...  since you are new to Mac, click a clear space on your Desktop. You should see "Finder" top left corner of the screen in the menu bar.
    Click Help then click Help Center
    As an example type in    keyboard shortcuts
    You can use the Help menu for almost any application on your Mac.
    Apple - Find Out How - Mac Basics
    For held switching from PC to Mac >  Apple - Support - Switch 101

  • How to change the default JRE when there are several version of JRE in Sys

    How to change the default JRE when there are several version of JRE in System?
    i have installed j2sdk1.5.0 then installed j2ee1.4,then installed Weblogic6.1 which use jdk1.3
    Now the JRE is jdk1.3\bin
    When run class that was compiled with jdk1.5,throw:
    java.lang.UnsupportedClassVersionError
    How can i change the jre to 1.5?

    There is a workaround to move from 1.5 version to the older 1.4 version. But this could be specific to the browser setting the JRE version.
    Excerpts from sun docs:
    However, a user can still run older versions. To do so, launch the Java Plug-in Control Panel for the older version, then (re)select the browser in the Browser tab.
    Example:
    Assume you are running on Microsoft Windows with Microsoft Internet Explorer, have first installed version 1.4.2, then version 5.0, and you want to run 1.4.2.
    Go to the j2re1.4.2\bin directory where JRE 1.4.2 was installed. On a Windows default installation, this would be here: C:\Program Files\Java\j2re1.4.2\bin
    Double-click the jpicpl32.exe file located there. It will launch the control panel for 1.4.2.
    Select the Browser tab. Microsoft Internet Explorer might still appear to be set (checked). However, when 5.0 was installed, the registration of the 1.4.2 JRE with Internet Explorer was overwritten by the 5.0 JRE.
    If Microsoft Internet Explorer is shown as checked, uncheck it and click Apply. You will see a confirmation dialog stating that browser settings have changed.
    Check Microsoft Internet Explorer and click Apply. You should see a confirmation dialog.
    Restart the browser. It should now use the 1.4.2 JRE for conventional APPLET tags.
    Details are here
    http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/jcp.html
    My system (Windows XP) has the version 1.5_09 set as the default. However i just installed JRE 1.5_06 and would like to revert back to _06 as the default JRE..
    Will update if i find more information

  • Joining 2 related records using PL SQL in Apex - Problems when there are more than 2 related records?

    Hi
    I am combining 2 related records of legacy data together that make up a marriage record.  I am doing this in APEX using a before header process using the following code below which works well when there are only 2 related records which joins the bride and groom record together on screen in apex.  I have appended a field called principle which is set to 'Y' for the groom and 'N' for the bride to this legacy data
    However there are lots of records where in some instances there are 3, 4 , 5, 6 or even 1 record which causes the PL/SQL in APEX to not return the correct data.  The difference in these related columns is that the name of the bride or groom could be different but it is the same person, its just that from the old system if a person had another name or was formally known as they would create another duplicate record for the marriage with the different name, but the book and entry number is the same as this is unique for each couple who get married.
    How can I adapt the script below so that if there are more than 2 records that match the entry and book values then it will display a message or is there a better possible work around?  Cleaning the data would be not an option as there are thousands of rows of where these occurrences occur
    declare 
         cursor c_mar_principle(b_entry in number, b_book in varchar2) 
         is 
              select DISTINCT  id, forename, surname, marriagedate, entry, book,  formername, principle
              from   MARRIAGES mar 
              where  mar.entry   = b_entry
              and    mar.book = b_book
              order by principle desc, id asc; 
         rec c_mar_principle%rowtype;
    begin 
    open c_mar_principle(:p16_entry,:p16_book)  ;
    fetch c_mar_principle into rec;
    :P16_SURNAME_GROOM   := rec.surname; 
    :P16_FORNAME_GROOM   := rec.forename;
                   :P16_ENTRY := rec.entry; 
                   :P16_BOOK :=rec.book;
    :P16_FORMERNAME :=rec.formername;
    :P16_MARRIAGEDATE :=rec.marriagedate;
    :P16_GROOMID  := rec.id;
    fetch c_mar_principle into rec;
    :P16_SURNAME_BRIDE   := rec.surname; 
    :P16_FORNAME_BRIDE   := rec.forename;
                   :P16_ENTRY := rec.entry; 
                   :P16_BOOK :=rec.book;
    :P16_FORMERNAME :=rec.formername;
    :P16_MARRIAGEDATE :=rec.marriagedate;
    :P16_BRIDEID  := rec.id;
    close c_mar_principle;
    end;

    rambo81 wrote:
    True but that answer is not really helping this situation either?
    It's indisputably true, which is more than can be said for the results of querying this data.
    The data is from an old legacy flat file database that has been exported into a relational database.
    It should have been normalized at the time it was imported.
    Without having to redesign the data model what options do I have in changing the PL/SQL to cater for multiple occurances
    In my professional opinion, none. The actual problem is the data model, so that's what should be changed.

  • Avoid marking files as modified by Git when there are no changes

    Hello,
    I am working on a project using Visual Studio 2013 Ultimate and Enterprise Architect 9.0 (a UML tool). I am using Git for Source Control in Visual Studio.
    I have set up the programs so that I can synchronize code from Enterprise Architect (EA) to Visual Studio (VS) and vice versa using MDG Link for Visual Studio (an Enterprise Architect add-in). I first synchronized all the existing code from VS to EA.
    Now I have the following workflow:
    Create UML models in EA;
    Add necessary attributes and operations to the class models;
    Synchronize models with the code, which will add the added attributes and operations to my source;
    The last step will regenerate all my source code files, but even if there are no changes Git marks the files as modified.
    How can I avoid this behaviour, because now all my files are modified when Enterprise Architect synchronizes the model with the source code.
    I only want Git to mark it as modified when there are actually things added or modified in the file.
    Any help will be appreciated.
    Marcel

    Hi,
    I think it's more VS which detect the file was modified, and by default it mark the file as modified in Git. 
    But normally when you want to commit your work these files are removed because Git detect the files are not really changed.
    Did you try to refresh the pending changes in the team explorer (F5). Perhaps Git recalculate all the differences, and then detect the real changes.
    Regards,
    Yan Grenier
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

  • Problem with XML Publisher report when there are no detail records.

    I am working on an Oracle XML Publisher procurement report (Oracle E-Business Suite R12) that starts with a budget amount that is imported from our financial system, then lists all requisitions and orders that are in process (not approved). The amounts of all those unapproved requisitions/orders are totaled using a Sum form field, to be followed by a field where the unapproved requisition/order total is subtracted from the budget amount (amount available). I am running into a problem when there are no unapproved requisitions. When I run the report for such instances, it completes with a warning -- here is what it states in the OPP log:
    oracle.xdo.parser.v2.XPathException: Extension function error: Method not found 'sum'
    I have altered my sum field on the RTF template to include an if statement in case of a null value...
    <?sum (EXTENDED_COST)?> <?xdofx:if sum (EXTENDED_COST) = " then 0 end if?>
    ...but this does not work.

    Hi,
    You are on right track. Simply put summary field in header group and remember to set reset at property to Header Group Not Child and now you can use this field in format trigger.
    Format trigger must be written on header frame.
    Cheers !
    Adinath Kamode

  • IPhone 4s has yahoo mail icon permanently on safari when there are no open pages

    My iPhone 4s using iOS7.0.2 has a Yahoo mail icon displaying permanently on the top of Safari when there are no open pages. The icon did not disappear even when I deleted my Yahoo mail account. The icon also has my Yahoo username displayed below it. Is there any way I can remove the Yahoo mail icon from permanently displaying on Safari? I cleared my history, cookies and data, but the Yahoo icon is still there.

    I have the same issue and koban4max's sugggestion doesn't work (well, it works, but you'll need to do it once a day.) I am surprised this hasn't been widely reported either as an iphone, Verizon or Yahoo issue. I tried various suggestions (deleting/re-adding account, moving messages to a new folder and changing password on computer/iphone, etc.) It will push for a while but stop pushing in a few hours or a few days. This leads me to believe somewhere in the interface corrupts the process. I would love to know if it's unique to Verizon, iphone 4S or IOS 5, or all of the above. The phone doesn't even fetch according to schedule, only when you are in the application. BTW, the Exchange push solution for Gmail works wonderfully.
    iphone 4S, IOS 5, Verizon.

  • What does the Merge Data Stream processor do when there are multiple input streams to it from the same reader?

    Hi,
    I have a process with a reader of master data that outputs 5 records that feeds simultaneously into 3 different lookup and return processors.
    Each lookup and return processor brings some data back from a detail table. There can be multiple details so I follow each lookup processor with a split records from array processor. Hence I end up with 3 'streams' of data. Stream 1 has 8 records, stream 2 has 5 records and stream 3 has 6 records.
    I join all these streams to a Merge Data Streams processor.
    I end up with 9 records so although the help for the Merge Data Streams processor says 'Merge Data Streams does not perform any transformation, matching, or merging of records' there is clearly some merging going on.
    What is the behaviour of the merge data streams processor in this scenario?
    I have added attributes and flags into each of the streams. How many records should I see and what values should the added attributes/flags have (some records show attributes/flags from all 3 streams whereas others show just those attributes/flags from one stream).
    I have developed a test case simply to understand what the processor is doing but it's not obvious and furthermore it's probably unwise to develop EDQ processes where the processor behaviour is not documented and guaranteed to remain consistent. What I am trying to achieve is to bring all of a person's (the master data) various details (assignments, employers, etc.) together so we can check the data (some rules require data from multiple details).
    Thanks, Nik

    Cheers Mike - and for the explanation of the terms.
    I think I understand now how it's supposed to work.
    What I'm finding however is that when I set a flag to Y at the beginning of a path (that includes a lookup and return and then split records from array processor) that flag is showing no (i.e. an empty) value in SOME of the records shown in the subsequent MDS processor (it's fine the very last split processor before we get to the MDS but then again there are fewer records in that split processor than the MDS).
    In my case there are obviously more records in the MDS processor than there were in the original reader (because the lookup and returns are configured to have unlimited maximum matches). As mentioned, the different paths return different numbers of  records before being combined in the MDS. Say a reader has 5 records and path 1 returns 8 records in total including a path-specific flag (flag1, set to Y) but path 2 (that again adds its own path-specific flag (flag2, set to Y) returns just 5 records (since nothing was added from the lookups) are you saying that flag2 would show as 'Y' for all 8 records shown in the MDS?
    Hopefully you would be able to see what I mean if you try to create a process like the one I've described (or I can upload a package).
    Re. the purpose of the separate paths approach it is simply to allow the visualisation ('showing the working' as Neil puts it) of the different checks being carried out by the process.
    This is considered one of the benefits of the tool over writing SQL queries (with outer joins, query criteria, etc.).
    Also, as mentioned I was following an example that Neil put together for us to ensure that we are doing things in a 'proper' and supported way.
    If we put all the lookups, etc. for all the checks into one datastream then it no longer becomes so understandable and the value of joining processors in a process over simply writing SQL becomes questionable; arguably the EDQ process in fact becomes less easy to understand than simply writing SQL.
    Also, to go down this route I will need to revise the (what was previously substantially working until I revised it) processes that I have already developed.
    Thanks, Nik

  • After several years of use very satisfied with Firefox, recently loaded version (4.0.1) severely slows my browsing, and even my system, especially when there are pictures or videos. I said that this was not the case before and my system is Windows XP SP3.

    After several years of use very satisfied with Firefox, recently loaded version (4.0.1) severely slows my browsing, and even my system, especially when there are pictures or videos. I said that this was not the case before and my system is Windows XP SP3.

    I have had a similar problem with my system. I just recently (within a week of this post) built a brand new desktop. I installed Windows 7 64-bit Home and had a clean install, no problems. Using IE downloaded an anti-virus program, and then, because it was the latest version, downloaded and installed Firefox 4.0. As I began to search the internet for other programs to install after about maybe 10-15 minutes my computer crashes. Blank screen (yet monitor was still receiving a signal from computer) and completely frozen (couldn't even change the caps and num lock on keyboard). I thought I perhaps forgot to reboot after an update so I did a manual reboot and it started up fine.
    When ever I got on the internet (still using firefox) it would crash after anywhere between 5-15 minutes. Since I've had good experience with FF in the past I thought it must be either the drivers or a hardware problem. So in-between crashes I updated all the drivers. Still had the same problem. Took the computer to a friend who knows more about computers than I do, made sure all the drivers were updated, same problem. We thought that it might be a hardware problem (bad video card, chipset, overheating issues, etc.), but after my friend played around with my computer for a day he found that when he didn't start FF at all it worked fine, even after watching a movie, or going through a playlist on Youtube.
    At the time of this posting I'm going to try to uninstall FF 4.0 and download and install FF 3.6.16 which is currently on my laptop and works like a dream. Hopefully that will do the trick, because I love using FF and would hate to have to switch to another browser. Hopefully Mozilla will work out the kinks with FF 4 so I can continue to use it.
    I apologize for the lengthy post. Any feedback would be appreciated, but is not necessary. I will try and post back after I try FF 3.16.6.

  • Displaying a message when there are no results from an XSL Query

    Using MM_XSLTransform.class.php
    I am querying an XML file to produce a list of places whose town name or address match a letter of the alphabet. The letter is passed as a variable in a URL.
    XSL:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <xsl:param name="letter"/>
    <xsl:output method="html" encoding="UTF-8"/>
    <xsl:template match="/">
    <xsl:for-each select="dataroot/CPINFOWEB[Town=starts-with(Town, $letter) or Name=starts-with(Name, $letter)]">
          <table width="100%" border="0" cellspacing="0" cellpadding="0">
            <tr>
            <td>
        <a href="detail.php?park={CostCode}"><xsl:value-of select="Name"/></a><br />
              <a href="detail.php?park={CostCode}"><xsl:value-of select="Town"/></a><br />
          <xsl:value-of select="Address"/><br />
          <br />    
          </td>
            </tr>
          </table>
          </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>
    Destination PHP file:
    setXML("../regions/CPINFOWEB-mobile.xml"); $mm_xsl->setXSL("list.xsl"); $mm_xsl->addParameter("letter",$_GET['letter']); echo $mm_xsl->Transform(); ?> 
    The result Name and Town are displayed as a URL to link to a "more details" page.
    All works fine, but when there are no results for a letter of the alphabet I obviously get a blank page.
    How do I display a "no results" message instead

    I deleted my original reply because the formatting of the XSL code was messed up by the forum. Here's trying again:
    Your current code creates a new table for each result. The opening and closing <table> tags should be outside the the <for-each> loop. To deal with the possibility of no results being found, use a conditional statement and the count() function like this:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <xsl:param name="letter"/>
    <xsl:output method="html" encoding="UTF-8"/>
    <xsl:template match="/">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <xsl:for-each select="dataroot/CPINFOWEB[Town=starts-with(Town, $letter) or Name=starts-with(Name, $letter)]">
            <tr>
            <td>
        <a href="detail.php?park={CostCode}"><xsl:value-of select="Name"/></a><br />
              <a href="detail.php?park={CostCode}"><xsl:value-of select="Town"/></a><br />
          <xsl:value-of select="Address"/><br />
          <br />    
          </td>
            </tr>
    </xsl:for-each>
    <xsl:if test="count(dataroot/CPINFOWEB/Town) &amp;lt; 1">
        <tr>
        <td>No records found</td>
        </tr>
        </xsl:if>
    </table>
    </xsl:template>
    </xsl:stylesheet>

  • Why do duplicate albums appear on my iPod Classic screen when there are no duplicates in my iTunes Library?

    Why do duplicate albums appear on my i{Pod Classic screen when there are no duplicates in my iTunes Library?

    It's probably going to be a capitalisation error. In other words, one or more tracks on the album has a lower case letter at the beginning of the album name while all the others have a capital letter. They can be difficult to spot.
    In iTunes, examine one of your duplicated albums carefully. You should be looking for a slight difference between the album title name. Look at the screenshot below, can you see the error in the album title?
    It is there...
    The title track (Left Of The Middle). Look at the capitalisation of the album name.
    Once you find you error in your album, re-type it (or copy-and-paste from one track to all the tracks) and then SYnc your iPod to iTunes. Does that cure it? If nto, let us know.

  • How can I get rid of duplicate birthdays in icloud Calendar, especially when there are no Contacts in the iCloud? Case ID: 365381395

    How can I get rid of duplicate birthdays in icloud Calendar, especially when there are no Contacts in the iCloud? Case ID: 365381395

    Found the answer myself while helping to set up iPhone.  It is simple when you know how.  Before signing out of iCloud to sign in again and restore the link to Photo Stream I had opted to copy iCloud contacts to the Mac.  When I signed in again this created two iCloud views which can be seen in Contacts Preferences.  I just disabled one of them.  Not brave enough to attempt removal but I gues this would work too.

Maybe you are looking for

  • What happends when you give 2 groups with some of the same members different authorizations for a document

    Hello, I'm doing my internship at a litte Telekom company. I'm investigating how they can use MS SharePoint as their central place to put projectinformation. Now i've been thinking what happends when i do the following: Make one document library Add

  • 'Pan' across an image

    I've seen some Keynote presentations and been blown away by the quality and visual impact and would love to 'switch', particularly when we have rumoured MacBooks in the next few days However - I've been into the Apple Store in London to have a play w

  • Sony avchd camcorder

    How can i import my avchd file from my sony avchd camcorder hdrsr7. Final cut express 4 does not recognize those files.

  • SAP Dispatcher querying the ICM for groups repeatedly

    Time                    Remote Host          Local Host     L.Port     Type     slot/conn/request [05/Sep/2011:17:46:51 +0530]     Webdispatcher_IP-     ERP_Server     8000     ABAP:0     1/59/1               GET /sap/public/info HTTP/1.1      [05/Se

  • Error in setting value of ComboBox in java script

    Hi All, I my jsp file I am doing the following in java script function: document.getElementById('form1:porcessCombo').value = strArray; where "strArray" is an array of Strings But this doesnt seem to be working.... How do i assign an array of objects