Show region not showing

D

David Ehmer

The code below is 2 rows in a table, the top row contains a message to be
shown if the recordset returns no matches. The 2nd row will display any
matches.

Problem is that if no matches are found nothing is displayed in this table.
I have used the code that DMX generates using the server behaviour 'Show
region if recordset is empty', but no success.

Appreciate someone pointing out where I'm going wrong here.

Thanks
David

<table>
<tr>
<td>
<% If rsOrg.EOF Or rsOrg.BOF Then >
Sorry, no records were found to match your search.
<% End If ' end rsOrg.EOF And rsOrg.BOF %</td>
</tr>
<tr>
<td>
<% If Not rsOrg.EOF Or Not rsOrg.BOF Then %>
<a
href="<%=(rsOrg.Fields.Item("Web").Value)%>"><%=(rsOrg.Fields.Item("OrgName"
).Value)%></a>
<% End If ' end Not rsOrg.EOF Or NOT rsOrg.BOF %>
</td>
</tr>
</table>

http://www.boatingdirectory.com.au/aust_index.asp
 
R

Ray at

Try dropping the .BOF stuff and also make sure that your ASP tags are closed
properly. (I'll assume that the ones below that aren't closed properly is
because you didn't actually copy your code.) Also, instead of having two
separate ifs, try an if/else. One of the conditions will always be true
then.


<table>
<tr>
<td>
<% If rsOrg.EOF Then %>
Sorry, no records were found to match your search.
<% Else %>
<a
href="<%=(rsOrg.Fields.Item("Web").Value)%>"><%=(rsOrg.Fields.Item("OrgName"
).Value)%></a>
<% End If %>
</td>
</tr>
</table>

Your best bet is to drop DMX for writing your code. It'll make things a
little harder to do at first, but you'll benefit much more in the future.

Ray at home
 
D

David Ehmer

Thanks Ray

Good suggestions, which I've implemented but it hasn't changed the result.
Seems illogical that it doesn't display the no matches text. I guess I'm
missing something obvious.

David
 
B

Bob Barrows

David said:
The code below is 2 rows in a table, the top row contains a message
to be shown if the recordset returns no matches. The 2nd row will
display any matches.

Problem is that if no matches are found nothing is displayed in this
table. I have used the code that DMX generates using the server
behaviour 'Show region if recordset is empty', but no success.

Appreciate someone pointing out where I'm going wrong here.

Thanks
David

I am assuming you have a scrollable cursor, and that some recordset
navigation has taken place before this block of code, explaining the need to
test both EOF and BOF.
<% If rsOrg.EOF Or rsOrg.BOF Then >

The "Or" should be "And" here. Your recordset contains no records only if
BOTH EOF and BOF are true, so you need to use "And". If some previous code
in this page had looped through the recordset so that it was at EOF, then
you would get the "no records" message when there actually were records.
Sorry, no records were found to match your search.
<% End If ' end rsOrg.EOF And rsOrg.BOF %</td>
</tr>
<tr>
<td>
<% If Not rsOrg.EOF Or Not rsOrg.BOF Then %>

This If statement will allow the following line of code to run if either EOF
or BOF is true, which will raise an error.
With that in mind, let's analyze this statement:

Assume that the previous code had looped through the recordset until the
recordset was at EOF (EOF = true). The first boolean expression, Not
rsOrg.EOF, will evaluate to False. So far so good.
However, the second expression, Not rsOrg.BOF, will evaluate to True! Not
good, because the Or operator has been used, causing the entire espression
to evaluate to True (Or causes the expression to be True if at least one of
the sub-expressions is True). So the following statement will be executed,
and an error will be raised when the field values are attempted to be read.

A better way to write to write this statement would be

If Not (rsOrg.EOF Or rsOrg.BOF) Then

Now if either EOF or BOF is true, the expression in the parentheses will
evaluate to True. The Not will change the result to False, and the following
code will not run. Conversely, if neither EOF and BOF is true, then the
parenthetical expression will evaluate to False, and the Not will change it
to True, allowing the following code to run.

However, I do not believe we have found your problem yet. How are you
verifying that the recordset actually contains records?

Bob Barrows
 
R

Ray at

There must be an HTML issue (have you viewed source) or something else that
is preventing the whole block of code from running. Is that code all in an
IF block as well? If so, look at that condition. Or take this code out and
put it in its own page by itself to see what happens.

Ray at home
 
D

David Ehmer

Thanks for the suggestions.

I tried applying the show/if code block to the whole table to display
records and using an else structure to display a 2nd table with the 'no
matches' text. Worked ok then.

David
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top