如果找不到匹配的记录,则通知用户 - coldfusion

时间:2017-07-14 19:34:06

标签: coldfusion

如果找不到与您运行的查询匹配的记录,如何创建通知用户的内容?

我有一个query.cfm,我这样运行:

<cfset result = {} /> 
<cftry> 
    <cfset date1 = CREATEODBCDATETIME(form.StartDate & '00:00:00')>
    <cfset date2 = CREATEODBCDATETIME(form.EndDate & '23:59:59')>

    <cfquery datasource="#application.dsn#" name="GetEmployeeInfo">
        SELECT  trans_location, date, associate
        FROM    cl_checklists
        WHERE   date >=  <cfqueryparam value="#date1#" cfsqltype="cf_sql_timestamp" />
                AND date <= <cfqueryparam value="#date2#" cfsqltype="cf_sql_timestamp" />
                AND trans_location IN ( <cfqueryparam value="#FORM.location#" cfsqltype="cf_sql_varchar" list="true" />  )
                AND associate IN ( <cfqueryparam value="#FORM.EmployeeName#" cfsqltype="cf_sql_varchar" list="true" />  )
    </cfquery>

    <cfquery datasource="#application.dsn#" name="GetLocationInfo">
        SELECT  trans_location, date, associate
        FROM    cl_checklists
        WHERE   date >=  <cfqueryparam value="#date1#" cfsqltype="cf_sql_timestamp" />
                AND date <= <cfqueryparam value="#date2#" cfsqltype="cf_sql_timestamp" />
                AND trans_location IN ( <cfqueryparam value="#FORM.location#" cfsqltype="cf_sql_varchar" list="true" />  )
    </cfquery>

     <cffunction name="getop_id" access="public" returntype="string"> 
        <cfargument name="associate"  > 
        <cfquery name="spitOutop_id" datasource="#application.userinfo_dsn#"> 
            SELECT assoc_name 
            FROM dbo.tco_associates 
            WHERE assoc_id= #arguments.associate# 
        </cfquery> 
        <cfreturn spitOutop_id.assoc_name > 
     </cffunction> 

     <cfquery name="allAssociatesQry" dbtype="query">
        SELECT DISTINCT associate, COUNT(*) AS associateCount FROM GetEmployeeInfo GROUP BY associate ORDER BY associate 
     </cfquery>

<table border="1" id="Checklist_Stats">
    <thead>
        <th><strong>Associate Name</strong></th>
        <th><strong>Location</strong></th>
        <th><strong>Checklists Generated by Associate</strong></th>
        <th><strong>Checklists Generated by Selected Location(s)</strong></th>
        <th><strong>Associate Percentage of Location Total</strong></th>   
    </thead>
    <tbody>
      <!--- aggregate variables --->
      <cfset aggrAssociateChecklist = 0>
      <cfset aggrLocationChecklist = 0>

      <cfloop query="allAssociatesQry">
          <!--- get Associate's name --->
          <cfset thisAssociateCode = trim(allAssociatesQry.associate)>
          <cfset thisAssociateName = getop_id(thisAssociateCode) />
          <!--- 1.1 get all trans_location code and total counts for the current Associate --->
          <cfquery name="allLocCodeForAssociateQry" dbtype="query">
              SELECT trans_location,count(trans_location) AS locCntr FROM GetEmployeeInfo WHERE associate='#thisAssociateCode#' GROUP BY trans_location ORDER BY trans_location
          </cfquery>
          <!--- 1.2 get the aggregate of checklist count generated by the current Associate for each location --->
          <cfquery name="qTotalChecklistCountForAssociate" dbtype="query">
              SELECT SUM(locCntr) AS totalAssocChecklist FROM allLocCodeForAssociateQry 
          </cfquery>

          <!--- 2.1 get the total location checklist for each location available for the current Associate --->
          <cfquery name="allLocChecklistForAssociateQry" dbtype="query">
              SELECT trans_location,count(trans_location) AS totalLocCount FROM GetLocationInfo WHERE trans_location IN (#QuotedValueList(allLocCodeForAssociateQry.trans_location)#) GROUP BY trans_location ORDER BY trans_location
          </cfquery>
          <!--- 2.2 get the aggregate of location checklist generated by the current Associate --->
          <cfquery name="qTotalLocChecklistForAssociate" dbtype="query">
              SELECT SUM(totalLocCount) AS totalLocChecklist FROM allLocChecklistForAssociateQry
          </cfquery>
          <!--- display record for the current Associate --->
            <cfoutput query="allLocCodeForAssociateQry">
              <tr>
                  <!---<td><strong>#thisAssociateCode#</strong></td>--->
                  <td><strong>#thisAssociateName#</strong></td>
                  <td>#allLocCodeForAssociateQry.trans_location#</td>
                  <td>#allLocCodeForAssociateQry.locCntr#</td>
                  <td>#allLocChecklistForAssociateQry['totalLocCount'][CurrentRow]#</td>
                  <td>#NumberFormat((allLocCodeForAssociateQry.locCntr/allLocChecklistForAssociateQry['totalLocCount'][CurrentRow]) * 100, '9.99')#%</td>
              </tr>
              <cfset thisAssociateName = "" />
            </cfoutput>
            <!--- 3.1 get sub total for each Associate group --->
            <cfset totalAssocChecklist = qTotalChecklistCountForAssociate.totalAssocChecklist>
            <cfset totalLocChecklist = qTotalLocChecklistForAssociate.totalLocChecklist>
            <!--- 3.2 add to the aggregate --->
            <cfset aggrAssociateChecklist += totalAssocChecklist>
            <cfset aggrLocationChecklist += totalLocChecklist>
            <!--- display sub total for each Associate group --->
            <cfoutput>
                <tr>
                    <td>Associate Total</td>
                    <td></td>
                    <td>#totalAssocChecklist#</td>
                    <td>#totalLocChecklist#</td>
                    <td>#NumberFormat((totalAssocChecklist/totalLocChecklist) * 100, '9.99')#%</td>
                </tr>
            </cfoutput>
      </cfloop>
      <!--- display calculated aggregate at the end of the result --->
     <!--- <cfoutput>
          <tr>
            <td><strong>Total</strong></td>
            <td></td>
            <td>#aggrAssociateChecklist#</td>
            <td>#aggrLocationChecklist#</td>
            <td>#NumberFormat((aggrAssociateChecklist/aggrLocationChecklist) * 100, '9.99')#%</td>
          </tr>
      </cfoutput>--->
    </tbody>
</table>
<cfcatch type="any"> 
        <cfset result.error = CFCATCH.message > 
        <cfset result.detail = CFCATCH.detail > 
    </cfcatch> 
</cftry>

但是我试图在没有根据搜索结果返回时通知用户。

如果有0做某事但未成功,我试图抓住结果。当查询回来时,任何Cold Fusion专家都会帮助我提醒用户。

我试过了:

<cfif #allAssociatesQry# is 0>
<cfif #allAssociatesQry# is null>
<cfif #allAssociatesQry# is "">
<cfif allAssociatesQry is 0>
<cfif allAssociatesQry is null>
<cfif allAssociatesQry is "">

1 个答案:

答案 0 :(得分:4)

不要使用try / catch。这是针对无法成功运行的代码。所有你需要的是:

<cfquery name="q">
sql
</cfquery>

<cfif q.recordcount is 0>
code for no records
<cfelse>
display records
</cfif>