Pop-Out

<!--- readSearch() --->
<cffunction name="readSearch" returntype="struct" output="false" access="package" hint="Returns data that match the specified criteria">
<cfargument name="SearchCrit" type="struct" required="true" hint="A structure representing the search criteria" />
<cfargument name="StartRow" type="numeric" required="true" hint="First row of results" />
<cfargument name="EndRow" type="numeric" required="true" hint="Last row of results" />
<cfset var returnStruct = StructNew() />
<cfset var SqlCols = '' />
<cfset var SqlTableClause = '' />
<cfset var SqlWhere = '' />
<cfset var SqlOrderBy = '' />
<!--- columns --->
<cfsavecontent variable="SqlCols">
ID, Name, Active, Caption, Testimony, StampReceived, Stamp </cfsavecontent>
<!--- tables --->
<cfsavecontent variable="SqlTableClause">
Testimonials
</cfsavecontent>
<!--- conditions --->
<cfoutput>
<cfsavecontent variable="SqlWhere">
ID > 0
<cfif Len(Arguments.SearchCrit.Name)>
AND name LIKE '%#Arguments.SearchCrit.Name#%'
</cfif>
<cfif Len(Arguments.SearchCrit.Testimony)>
AND Testimony LIKE '%#Arguments.SearchCrit.Testimony#%'
</cfif>
AND active = #Arguments.SearchCrit.Active#
</cfsavecontent>
</cfoutput>
<!--- order --->
<!--- TODO: update to support multiple ORDER BY columns --->
<cfoutput>
<cfsavecontent variable="SqlOrderBy">
<cfif Len(Arguments.SearchCrit.OrderBy)>
#Arguments.SearchCrit.OrderBy#
<cfif Len(Arguments.SearchCrit.OrderDirection)>
#Arguments.SearchCrit.OrderDirection#
</cfif>
</cfif>
</cfsavecontent>
</cfoutput>
<cfstoredproc procedure="sproc_paging" datasource="#Application.DSN.LDC#">
<cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR" dbvarname="Columns" value="#Trim(SqlCols)#">
<cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR" dbvarname="TableClause" value="#Trim(SqlTableClause)#">
<cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" dbvarname="StartRow" value="#Arguments.StartRow#">
<cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" dbvarname="EndRow" value="#Arguments.EndRow#">
<cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR" dbvarname="SqlWhere" value="#Trim(SqlWhere)#">
<cfprocparam type="In" cfsqltype="CF_SQL_VARCHAR" dbvarname="SqlOrderBy" value="#Trim(SqlOrderBy)#">
<!--- return data + count --->
<cfprocresult name="rs" resultset="1">
<cfprocresult name="recordcount" resultset="2">
</cfstoredproc>
<cfset returnStruct.rs = rs />
<cfset returnStruct.rc = recordcount.countAll />
<cfreturn returnStruct />
</cffunction>

Cut-N-Paste