2017-07-14 228 views
0

如果在运行的查询中找不到匹配的记录,如何创建通知用户的内容?如果没有找到匹配的记录,通知用户 - coldfusion

我有我运行一个像这样的queries.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

如果recordcount为0,告诉用户它是0 –

回答

4

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

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

<cfif q.recordcount is 0> 
code for no records 
<cfelse> 
display records 
</cfif> 
相关问题