账号通
    

账号  

密码  

2383

查看

6

回复
主题:关于自定义sql函数标签的bug [收藏主题] 转到:  
ch274657 当前离线

8

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:332 分
登录次数:16 次
注册时间:2007/5/1
最后登录:2018/7/5
ch274657 发表于:2009/10/10 21:18:00   | 只看该作者 查看该作者主题 楼主 
科汛在线考试系统(NET)

今天升级了v6,可是问题来了。以前做的自定义sql函数标签不显示了,查了下问题,发现出问题了,sql语句里不能这样写了select top 3 * from KS_Article where verific=1 and Tid='{$Param(0)}' order by AddDate desc

这样写,发布的时候就出错,如果{$Param(0)}该成{$Param(1)}那么参数传进来又是空值,这个问题怎么解决,官方给个说法。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
abrush 当前离线

354

主题

0

广播

0

粉丝
添加关注
级别:三年级

用户积分:1946 分
登录次数:74 次
注册时间:2008/12/17
最后登录:2012/8/24
abrush 发表于:2009/10/11 12:16:00   | 只看该作者 查看该作者主题 沙发 
科汛在线商城系统(NET)
 从别的帖子那里 看到的解决方法,具体还没有尝试:

(原帖地址:http://bbs.kesion.com/dispbbs.asp?BoardID=44&replyID=118053&ID=95927&skin=1)

-----------------------------------------

更新到6.0后发现 自定义SQL函数标签 无法使用 “函数参数”如下:{SQL_通用新闻标签(6,20093701568014,ul01)}

 

原因:是因为在系统读取 SQL标签内容时使用 Str=Rcls.ReplaceGeneralLabelContent(Str) 来替换了标签内的其他函数,导致有“{$”开头的都被替换了,而“函数参数”恰恰是“{$”开头的。

 

解决的方法就是要修改KS_Cls/Kesion.Label.SQLCls.asp文件


以下内容只有回复后才可以浏览

1、在 Function G_S_P(LabelName,FieldID) 函数下找到 Str=Rcls.ReplaceGeneralLabelContent(Str),这句上面加上如下代码:

str = Replace( str, "{$Param", "#$Param" )

 

2、在下2行找到 objAtr.Attributes.item(2).Text=Str,在这行的上面加入

str = Replace( str, "#$Param", "{$Param" )

 

3、保存文件即可


 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
ssbadboy 当前离线

255

主题

0

广播

0

粉丝
添加关注
级别:二年级

用户积分:2195 分
登录次数:132 次
注册时间:2008/5/30
最后登录:2011/4/3
ssbadboy 发表于:2009/10/11 9:17:00   | 只看该作者 查看该作者主题 藤椅 
科汛智能建站系统

补充说明:

 

select top 3 * from KS_Article where verific=1 and Tid='{$Param(0)}' order by AddDate desc

 

sql标签写法

{SQL_测试(,2009101010)}

 

请注意2009101010掐面的“,”号,前面是空的,也就是说明{$Param(0)}为空

 

虽然你把{$Param(0)}改成{$Param(1)},系统默认还是有两个值的,所以需要在sql标签里面的"()"内设置

 

同时以","分隔

 

 

我所说的是我知道的错误原因,如有其它还请请教官方或高手

 

 

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
ssbadboy 当前离线

255

主题

0

广播

0

粉丝
添加关注
级别:二年级

用户积分:2195 分
登录次数:132 次
注册时间:2008/5/30
最后登录:2011/4/3
ssbadboy 发表于:2009/10/11 9:04:00   | 只看该作者 查看该作者主题 板凳 
科汛智能建站系统

本人理解:

{$Param(0)}在程序里面是接收第一个值的意思,

{$Param(1)}是接收第二个值

 

如果你把{$Param(0)}改成{$Param(1)},也就是直接跳过第一个值,而获取第二个值,

 

当{$Param(1)}出现时,就是系统变成默认了接收两个值,

 

那么按照我的做法就是:在传递的过程中,也同时设置第一个值,那么怕是空,

 

你的错误按照我的理解应该是没有同时为sql设置两个值而导致。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
ch274657 当前离线

8

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:332 分
登录次数:16 次
注册时间:2007/5/1
最后登录:2018/7/5
ch274657 发表于:2009/10/11 11:59:00   | 只看该作者 查看该作者主题 报纸 
科汛在线网校系统
以下是引用ssbadboy在2009-10-11 9:04:00的发言:

本人理解:

{$Param(0)}在程序里面是接收第一个值的意思,

{$Param(1)}是接收第二个值

 

如果你把{$Param(0)}改成{$Param(1)},也就是直接跳过第一个值,而获取第二个值,

 

当{$Param(1)}出现时,就是系统变成默认了接收两个值,

 

那么按照我的做法就是:在传递的过程中,也同时设置第一个值,那么怕是空,

 

你的错误按照我的理解应该是没有同时为sql设置两个值而导致。

可能是我表达不清楚,是sql语句里不能带参数了了,但是循环体里可以带,你不信去测试下。这是个bug。很多人都因为这个问题造成以前写的sql自定义标签不显示了。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
ghostsun 当前离线

170

主题

9

广播

2

粉丝
添加关注
级别:一年级

用户积分:1559 分
登录次数:145 次
注册时间:2008/6/11
最后登录:2018/11/15
ghostsun 发表于:2009/10/11 6:22:00   | 只看该作者 查看该作者主题 地板 
 
  支持(1) | 反对(0) 回到顶部顶端 回到底部底部
abrush 当前离线

354

主题

0

广播

0

粉丝
添加关注
级别:三年级

用户积分:1946 分
登录次数:74 次
注册时间:2008/12/17
最后登录:2012/8/24
abrush 发表于:2009/10/11 11:49:00   | 只看该作者 查看该作者主题 7楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行1.66406秒 powered by KesionCMS 9.0