我有两张桌子:foodrequest和employeedetails。我可以根据" FromDate"按日期搜索这些表中的记录。和#34; ToDate"像这样的价值观:
array_shift()
但我无法按员工搜索。即如果我从下拉列表中选择任何员工,它将仅返回其记录。
有人可以帮我吗?
答案 0 :(得分:0)
假设您想要运行您提供的相同代码,偶尔会有日期,偶尔会有员工ID,偶尔会有两个,那么我认为以下内容可行。
<cfquery name="qryFoodRequest" datasource="ebms" cachedWithin = "#createTimeSpan(0,0,0,5)#">
SELECT e.FullName FullName
, e.EmployeeCode EmployeeCode
, e.DesignationName DesignationName
, e.DateOfJoin DateOfJoin
, e.DepartmentName DepartmentName
, e.ManagerName ManagerName
, e.ParentOffice ParentOffice
, f.Requesttype Requesttype
, f.Foodtype Foodtype
, f.ReqDate ReqDate
, f.remarks remarks
FROM foodrequest f INNER JOIN employeedetails e
ON f.EmployeeId = e.empId
<cfif structKeyExists(localData,"frmDate") AND structKeyExists(localData,"toDate")>
AND f.ReqDate between (<cfqueryparam cfsqltype="cf_sql_date" value="#localData.frmDate#">) and (<cfqueryparam cfsqltype="cf_sql_date" value="#localData.toDate#">)
</cfif>
<cfif structKeyExists(form,"empId")>
AND e.empId = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.empId#">
</cfif>
order by e.empId;
</cfquery>
您可能希望向empId字段添加更多验证。我还更新了您使用的日期参数,这是最佳实践,对正确的页面安全性非常关键。