问题描述:
我大概理解的是这个意思,字虽然丑。这是我第一次听说钩子程序,然后上网了解了一下基本概念:钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。不清楚的可以自己上网查一下。我这里用到的一个功能:
<!---插入或者更新数据的方法 --->
<cfinvoke component="#application.siteCfg.appPath#.cor.com.formService"
method="formSubmit"
argumentCollection="#formData#"
returnvariable="dataServiceResult">
其实我刚开始把他想复杂了,一直在想怎样才能得到table1的最新更新的那条数据,思路一直是传统的那种Sql Server做法,怎样查询数据,更新数据。后来老大交了我钩子程序的使用方法,发现简单多了。
这是传统的做法:
insert into zz_104(cc_604,cc_605,cc_606,cc_598)
select cc_1913,cc_1919,cc_1918,cc_1923 from zz_200
go
钩子程序的完整代码:
<cffunction name="postInsert" access="remote" output="yes" returntype="any" returnformat="json" >
<cfargument name="tid" default="" required="false" type="string">
<cfargument name="rid" default="" required="false" type="string">
<cfargument name="snapshot" default="" required="false" type="string">
<cfset args=deserializeJSON(arguments.snapshot)>
<cfset result={}>
<cfset result.FLAG=1>
<cfset result.Message="">
<cftry>
<!---
<cfquery name="q" datasource="#application.dsn#">
update zz_251 set cc_1977=cc_1977+'#arguments.rid#'
where autoid=#arguments.rid# and len(cc_1977) <6
</cfquery>
--->
<cfset formdata={}>
<cfset formdata["formid"]=104>
<cfset formdata["autoid"]=0>
<cfset formdata["skipzzLog"]="">
<cfset formdata["dataflag"]='发布'>
<cfset formdata["aclview"]="#session.departmentid#">
<cfset formdata["acl"]="#session.departmentid#">
<cfset formdata["inputer"]="#session.username#">
<cfset formdata["txS_cc_604"]="#args.txS_cc_1913#">
<cfset formdata["txS_cc_606"]="#args.txS_cc_1918#">
<cfset formdata["txS_cc_605"]="#args.txS_cc_1919#">
<cfset formdata["txS_cc_598"]="#args.txS_cc_1923#">
<cfinvoke component="#application.siteCfg.appPath#.cor.com.formService"
method="formSubmit"
argumentCollection="#formData#"
returnvariable="dataServiceResult">
<cfset result.message="专辑信息已添加。<a href='http://xh.ssceg.com/xinhui/cor/index.cfm##/dataForm/104/#dataServiceResult.autoid#' target='_new'>去填写更多专辑信息</a>">
<cfcatch type="any">
<cfdump var="#cfcatch#" output="d:\devlog\cc200.txt">
</cfcatch>
</cftry>
<cfreturn result />
</cffunction>