加入收藏 | 设为首页 | Life家族 | SCMLife | RMLife | PMLife | SQALife | TESTLife | 企业VIP专区
 
 13 12
发新话题
打印

[已解决] 为什么CQ Hook 用vb可以实现,而Perl实现不了( 此文章被查看:796次,被回复:12篇!! )

本主题由 yunshan 于 2008-5-28 12:40 关闭

为什么CQ Hook 用vb可以实现,而Perl实现不了

大家帮我分析一下下面两个用代码:(为什么user_number这个field使用vb写的hook可以实现user_number必须是6位,而perl却实现不了,不起任何作用.)其实不光是这两则hook,我用CQAPI里面的很多列子做实验都是用VB可以成功,而perl不行?
VB:

Dim session
Dim user_number

Set session = GetSession
Session.OutputDebugString "user_number_Validation for " & fieldname & vbCrLf

set user_number = GetFieldValue (fieldname)
FieldValue = user_number.GetValue()

If (Len(FieldValue)<>6) then
        session.OutputDebugString "strlen is " & Len(fieldValue) & vbCrLf
        user_number_Validation = "Invalid entry. Must be 6 characters."
        exit function
End if


Perl:

$session->OutputDebugString("user_number_Validation for $fieldname\n");
my $user_number = $entity->GetFieldStringValue($fieldname);

my $fieldlen = length($user_number);
if ($fieldlen != 6) {
        $session->OutputDebugString("strlen is length $fieldlen\n");
        $result = "Invalid entry. Must be 6 characters.";
}


问题已经解决 [打开主题]
本主题的最佳答案为 [ 9 楼].



© 本文为 SQZS_@SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
人生如梦,我们醒而睡着,睡而醒着。

TOP

"set user_number = GetFieldValue (fieldname)"这句为啥对应的是"my $user_number = $entity->GetFieldStringValue($fieldname)"?
换成my $user_number = $entity->GetFieldValue($fieldname);看看?



© 本文为 asukataoziSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

引用:
原帖由 asukataozi 于 2008-5-23 10:59 发表
"set user_number = GetFieldValue (fieldname)"这句为啥对应的是"my $user_number = $entity->GetFieldStringValue($fieldname)"?
换成my $user_number = $entity->GetFieldValue($fieldname);看看?
我试过了,还是不行,这些hook code都是我从cqapi中找到的列子,直接copy进去的,CQAPI里有很多vb和perl对应的脚本,都是perl无法实现,不知道是为什么,不知道你们有没有遇到过?



© 本文为 SQZS_@SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
人生如梦,我们醒而睡着,睡而醒着。

TOP

额...傻傻的问下,你有没将脚本的默认语言设置成Perl??

© 本文为 asukataozi 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

我把这个脚本copy到user_number->validation->scripts->perl下,难道有问题吗?

© 本文为 SQZS_@ 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
人生如梦,我们醒而睡着,睡而醒着。

TOP

貌似还要改个地方,在根据录那级双击,有个脚本语言选择的,Vb/Perl,你看下有没,没得话你一个个目录点下,呵呵,我这没CQ,印象当中是这样的!

© 本文为 asukataozi 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

我应该就是这样做的吧,我选的是perl不是vb.
可是我user_number->validation->scripts->VB下,copy用vb写的脚本却可以实现的.

© 本文为 SQZS_@ 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
人生如梦,我们醒而睡着,睡而醒着。

TOP

引用:
原帖由 SQZS_@ 于 2008-5-23 12:13 发表
我应该就是这样做的吧,我选的是perl不是vb.
可是我user_number->validation->scripts->VB下,copy用vb写的脚本却可以实现的.
你这只是在定义脚本的时候选择VB或者Perl,但是整个Schema使用何种语言的脚本另外有地方设置,你在左边目录结构的根目录上双击看看有美让你选择语言的?

© 本文为 asukataozi 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

我觉得应该是模式语言设置问题,检查一下模式属性,看看windows脚本语言是不是设置成Perl了


最佳答案
该回答被楼主/管理员列为正解!

© 本文为 yunshan 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

谢谢二位,果然是Schema Properties 里的Windows Scripting的默认脚本是BASIC,我改成Perl之后就成功了,非常感谢!!

© 本文为 SQZS_@ 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
人生如梦,我们醒而睡着,睡而醒着。

TOP

 13 12
发新话题