1

<cfif GetResults2.csedept_id eq aFieldValue> 下面的代码有效,但如果没有该值的记录,我想显示“无记录”消息 。我试图设置一个计数器,但是如果没有记录,我就是无法让它显示“无记录”并且不显示 <thead> <th>Name</th> <th>Positive Comment</th> <th>Negative Comment</th></thead>表格的标题。

如果结果返回为空,如何显示“无记录”并隐藏表头

现在,如果结果返回为空,它将显示“无结果”(正确)并显示标题(错误)。

<cfset counter3= 0>

<table cellpadding="0" cellspacing="0" class="tablecolors">
<h2> Comments </h2>
 <thead> <th>Name</th> <th>Positive Comment</th> <th>Negative Comment</th></thead>
  <cfloop  query="GetResults2">
    <cfif GetResults2.csedept_id eq aFieldValue>     

      <tr>
        <td nowrap="nowrap">#emp_namefirst# #Left(emp_namelast, 1)#  </td>
        <td>#Replace(commentpositive, emp_namefirst, "<B>" & emp_namefirst & "</B>")#</td>
        <td>#Replace(commentnegative, emp_namefirst, "<B>" & emp_namefirst & "</B>")#</td>
      </tr>
<cfelse><p>no records</p>

    </cfif>
  </cfloop>    
    </table>

更新:只是补充一下,我确实在上面有另一个查询,例如@FRANK 所说的几乎相同的事情,例如:

'<cfloop query="GetEmployeeTotals3">
        <cfif GetEmployeeTotals3.csedept_id eq aFieldValue> '

这是查询:

select GetResults.* , GetEmployees.emp_namefirst, GetEmployees.emp_namelast
    from GetResults, GetEmployees
    where employee = emp_id
    order by csedept_id

所以我尝试过的所有上述解决方案都行不通。

4

4 回答 4

0

像这样的东西应该工作。您必须设置一个标志,showRecords以确定您是否应该显示标题。

<cfset showRecords = false>
<cfloop query="GetResults2">
  <cfif GetResults2.csedept_id eq aFieldValue> 
    <cfset showRecords = true>
    <cfbreak>
  </cfif>
</cfloop>

<h2> Comments </h2>
<cfif showRecords>
  <table cellpadding="0" cellspacing="0" class="tablecolors">
  <thead> <th>Name</th> <th>Positive Comment</th> <th>Negative Comment</th></thead>
  <cfloop query="GetResults2">
    <cfif GetResults2.csedept_id eq aFieldValue> 
      <tr>
        <td nowrap="nowrap">#emp_namefirst# #Left(emp_namelast, 1)#  </td>
        <td>#Replace(commentpositive, emp_namefirst, "<B>" & emp_namefirst & "</B>")#    </td>
        <td>#Replace(commentnegative, emp_namefirst, "<B>" & emp_namefirst & "</B>")#</td>
      </tr>
    </cfif>
  </cfloop>    
  </table>
<cfelse>
  <p>no records</p>
</cfif>
于 2014-05-23T13:03:13.710 回答
0

虽然您的问题仍不清楚,但这可能是您想要的。

<cfif ListFind(ValueList(GetResults2.csedept_id), aFieldValue)> 
your existing code to display results in a table
<cfelse>
<p>No Records Found</p>

请注意:

ListFind(ValueList(GetResults2.csedept_id), aFieldValue)

即使 GetResults2 根本没有记录,也会执行并返回 false。

编辑从这里开始

基于此评论,“好吧,如果它只出现在一些然后显示,但对于那些不匹配然后忽略的人”将您现有的代码更改为:

<cfquery name = "q3" dbtype = "query">
select * from GetResults2
where csedept_id = #aFieldValue#
<cfquery>

<table>
column header row
<cfoutput query="q3">
data rows
</cfoutput>
<table>

此答案开头的初始构造仍然适用。

于 2014-05-23T16:42:57.943 回答
0

我建议使用查询查询将结果集缩减为您首先关心的值。然后您可以在输出表格之前轻松检查记录数。

或者,首先循环并使用 cfsavecontent 建立结果,然后在访问表位之前检查是否找到任何结果。

于 2014-05-23T03:35:04.667 回答
0

编辑:澄清问题后更新答案

cfif检查记录时,您需要移动您的表头以包含表头。如果检查返回记录计数,则输出表头以及结果,否则输出“无结果”。我在下面写了两个版本,一个是使用cfoutput循环而不是循环(只是个人喜好),另一个是你的循环,如果你想保留它。

我添加了丹的listfind() valuelist()连击……所以请相信他。

编辑编辑所以这是超强/超正确的超棒解决方案,带有“我厌倦了编辑这个答案50次获得OP答案”,奖金无耻从丹的上面/下面的答案中盗窃。或者我们最终会在哪里排序。

<table>
<cfif getresults2.recordcount AND ListFind(ValueList(GetResults2.csedept_id), aFieldValue)> 
<tr>
    <th>name</th> 
    <th>positive comment</th> 
    <th>negative comment</th>
</tr>

<cfoutput query="getresults2">
<tr>
    <td nowrap="nowrap">#emp_namefirst# #left(emp_namelast, 1)#  </td>
    <td>#replace(commentpositive, emp_namefirst, "<b>" & emp_namefirst & "</b>")#</td>
    <td>#replace(commentnegative, emp_namefirst, "<b>" & emp_namefirst & "</b>")#</td>
</tr>
</cfoutput> 

<cfelse>
<tr colspan="3">
    <td><p>no records</p></td>
</tr>
</cfif>
</table>

如果您cfoutput的代码中有您的某处(我们看不到的地方),那么这就是您的cfloop背影,只需将其替换为我cfoutput在上面的代码段中的位置即可。

<cfloop query="getresults2">
  <tr>
    <td nowrap="nowrap">#emp_namefirst# #left(emp_namelast, 1)#  </td>
    <td>#replace(commentpositive, emp_namefirst, "<b>" & emp_namefirst & "</b>")#</td>
    <td>#replace(commentnegative, emp_namefirst, "<b>" & emp_namefirst & "</b>")#</td>
  </tr>
</cfloop> 
于 2014-05-23T04:22:15.123 回答