由小小鸟 发布的一个帖子!
关于Tsys2.0的动态碎片自定义Sql无效。。
修改该文件
SliceParser.class.asp
找到这里
'替换Sql
Sql = Replace(Sql, "$TOP$", pTop)
Sql = Replace(Sql, "$WHERE$", sqlWhere)
End if'加入这个
拉到这里
strHtml = NodeCommand.selectSingleNode("./body/head").text & strHtml & NodeCommand.selectSingleNode("./body/foot").text
End if'删了这个
loop_view_resource = strHtml
OK了
我检查了一下,确实存在这个问题.可能是当时的开发者米克的笔误吧!
在这里我要向大家推荐一个好用的工具!"Altova XMLSpy© 2006 "
Altova XMLSpy© 2006 是业界标准XML的开发环境,可用于涉及XML、XML Schema、XSLT、XQuery、SOAP、WSDL和Web服务技术的企业级应用的设计、编辑和调试。它是提高J2EE、.NET和数据库开发人员开发效率的终极利器。
其实,在这里我们就是利用他的一个特性,Altova XMLSpy© 2006不论代码进行了多少层的嵌套,都会用竖虚线的提示线进行分割,让你一目了然!
上面是他的操作界面!
现在我们再回到Tsys的修改上面!按照小小鸟的修改方法,改正了Tsys自定义SQL无效的问题.但这样的话,数据的检索就全靠碎片里面的SQL语句了,下面那些SQL控制标签将无效了!为了继续使用这样的标签,我建议将"End if"再往上提,代码示意如下:
源代码:
Set XMLNode = NodeCommand.selectSingleNode("./parameter")
If XMLNode.getAttribute("type") = "custome" Then
Set XMLNode = NodeCommand.selectSingleNode("./parameter/sql")
Sql = XMLNode.text
Else
Sql = "SELECT $TOP$ * FROM view_resource WHERE $WHERE$"
sqlWhere = "1<>2"
改动后
Set XMLNode = NodeCommand.selectSingleNode("./parameter")
If XMLNode.getAttribute("type") = "custome" Then
Set XMLNode = NodeCommand.selectSingleNode("./parameter/sql")
Sql = XMLNode.text
Else
Sql = "SELECT $TOP$ * FROM view_resource WHERE $WHERE$"
End if
sqlWhere = "1<>2"
记得拉到这里
strHtml = NodeCommand.selectSingleNode("./body/head").text & strHtml & NodeCommand.selectSingleNode("./body/foot").text
End if'删了这个
loop_view_resource = strHtml
这样的话好处是继续使用碎片的标签,但同时有个问题,如果我们就是简单的直接自定义SQL语句,下面这些标签还是会从头到尾解析一遍!如何取舍,请大家定夺!
今天考虑了一天会员系统的问题,还是没有想好,怎么办呢?