ScriptCase安装在Windows平台下,部署的时候需要部署在Ubuntu环境下,在进行测试的时候发现有个功能无论如何都不能生效,代码如下:
// Check for record
$check_sql = "SELECT islocked"
. " FROM tt"
. " WHERE ID = '{ID}'";
sc_lookup(rs, $check_sql);
if ({rs} == false){
}else{
if ({rs[0][0]} == 1){
sc_field_readonly({Title}, 'on');
sc_field_readonly({filename}, 'on');
sc_field_readonly({Comment}, 'on');
sc_field_display({description}, 'off');
sc_btn_display('new', 'off');
sc_btn_display('delete', 'off');
sc_btn_display('update', 'off');
}
其实这是个很简单的功能,是希望如果已经锁定的话,不允许用户新建、删除、更新,在Windows环境下正常,但在Ubuntu下无法运行成功。查阅资料发现,在定义数据表字段的时候,将islocked定义为bit类型,Windows和Linux对bit的存储是不同的,因此导致故障。如果需要对bit进行判断,正确的写法应该是这样:
if ((ord({rs[0][0]}) == 1) || ({rs[0][0]} == 1)){
用这种方式判断,就可以同时解决Windows和Linux对bit字段进行判断的问题。