管理者软件
专业源于专注
www. myOIT. cn   
软件交流 管理软件 软件手册 »

    

 5  1/1   1  
作者
内容
xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  568
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#1»发布于2014-02-24 15:47

int cell_change() 

string today,sumdata,gridcol; 
today=get_cur_date_std(); 
gridcol=grid_cur_col(); 
 
grid_set_v('MG_Item','产品扩展1',gridcol,today); 
sumdata=grid_get_v('MG_Item','res_ext_1',gridcol); 
 
dbg(sumdata); 
 
 
return 1; 

这段代码有几个问题: 
1,如果就是这样的不变,dbg(sumdata)返回的值是"产品扩展1",并且“产品扩展1”这列的值还是空 
 
2,如果写成 
grid_set_v('MG_Item','res_ext_1',gridcol,today); 
sumdata=grid_get_v('MG_Item','res_ext_1',gridcol); 
会把单据上的“产品扩展1”这列名改变为由today所取的当前日期的值,这列的值也是空,并且dbg(sumdata)返回的值就是“产品扩展1” 
 
3,如果写成这样: 
grid_set_v('MG_Item','产品扩展1',gridcol,today); 
sumdata=grid_get_v('MG_Item','产品扩展1',gridcol); 
或者: 
grid_set_v('MG_Item',"res_ext_1",gridcol,today); 
sumdata=grid_get_v('MG_Item','产品扩展1',gridcol); 
此列标题不会被更改,但是dbg(sumtdata)返回的值是空,而此列的值也是空。 
 
综合,无论怎么写此列的值都是空,但是根据“产品扩展1”与“res_ext_1”的不同组合dbg(sumdata)有不同的结果返回。跟半角单双引号无关,半角单双引号结果相同,并且无论怎么写都不报错(“产品扩展1”是一定要引号的,不然就是“产品扩展1”这个变量没有定义)。所以,如果要实现“产品扩展1”不会是空值,dbg(sumdata)返回的值是指定的值,必定要写成: 
grid_set_v('MG_Item',res_ext_1,gridcol,today); 
sumdata=grid_get_v('MG_Item',res_ext_1,gridcol); 
res_ext_1=sumdata; 
 
根据onlyit的说明文档“csp.doc”查得: 
grid_set_v(表格名称,表格列名,表格行号,内容),作用是“设置单元内容”而不是修改列名;内容当然可以是变量,但是现在内容有可能修改列名;难道是我理解错了? 
grid_get_v(表格名称,表格列名,表格行号),作用是“获取单元内容”,然后根据不同的写法返回的值却是不可预料。 
另外,我在看说明文档“csp.doc”的例子里使用grid_set_v这个函数时,都是使用三个参数(说明是四个参数),而我改用三个参数来写代码,将出错。


        




官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html
summer  [个人空间]
QQ名  summer


注册  2009-09-08
发贴数  687
精华贴  9
原创贴  7
来自  
状态  正常

级别  会员
#2»发布于2014-02-24 18:45

产品扩展是产品资料里扩展系统自动的不能脚本修改的 。可以用自定义扩展1-6.


        




官方认证第三方服务团队  夏延明 QQ:15932787 13776070373
服务介绍: http://www.onlyit.cn/user_home?user_id=10304
awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#3»发布于2014-02-25 10:09

你的脚本错的乱七八遭的,结果怎么可能对呢。 
 
第一个错误 
gridcol=grid_cur_col();   //grid_cur_col()没参数,应该带个表格名称的参数,不然鬼知道你要定位哪个表。括号里应该加上"MG_Item" 
第二个错误 
grid_cur_col()是获取列号的,不是行号,然后你下一句 
sumdata=grid_get_v('MG_Item','res_ext_1',gridcol);  
//gridcol参数用在这里明显是行号,所以就算你上面一句加对了参数,结果也是错的,应该用grid_cur_row("MG_Item")来获取行号,再用grid_get_v赋值 
第三个错误 
grid_set_v('MG_Item','产品扩展1',gridcol,today);  
列名用产品扩展1错,所谓的列名,不是你看到什么中文就打什么,应该看显示定制,用标识res_ext_1 
你下面grid_set_v('MG_Item','res_ext_1',gridcol,today); 这句是对了,从语法上来说是对了,但是因为gridcol参数上面错了,返回值是0,在res_ext_1列的0行写入today,自然没有任何结果


        




QQ:80240800
awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#4»发布于2014-02-25 11:18

最后一个错误,如夏老师所说的,产品扩展列虽然可以用脚本修改值,但是保存后再查单就没了。还是引用产品定义里的扩展属性,但却也并非不能用脚本修改。只要在grid_set_v下面再加句db_run("update …………")把你的变量写入产品资料表的res_ext_1列就行了。只是看你要写的值是日期,每天变动的,到时所有扩展1都变成最后开单日期了,还是算了吧,老老实实去开单据的自定义扩展 
另外csp里grid_set_v的例子只有这两句,哪个地方只有三个参数,你看漏逗号了吧,四参数是必不可少的。 
    grid_set_v('MG_Detail','phone_no',id,db_res(0)); 
    grid_set_v('MG_Detail','mobile',id,db_res(1));


        于 2014-02-25 11:18 被 awfixtdm 修改




QQ:80240800
xwb514  [个人空间]
QQ名  福建流浪(340298101)


注册  2010-03-19
发贴数  568
精华贴  7
原创贴  7
来自  
状态  正常

级别  会员
#5»发布于2014-02-25 18:29

产品扩展是产品资料里扩展系统自动的不能脚本修改的 。可以用自定义扩展1-6. 
+++++++++++++++++++++++++++++ 
这个我指的仅仅是修改了表格上的列名,而非表格单元内容以及系统自定义的变量名。这个列标题,同样在单据表格定制里可以修改,只是我丢了一个参数,误打误撞发现这种方式也可以修改列名。






官方认证第三方服务团队  徐文标(福建-流浪) QQ:340298101 V&P :177-5046-4787
服务介绍:http://www.onlyit.cn/onlyit_service.html

 5  1/1   1  


登录后方可发贴


[ 电话: 0571-85462761 王先生 QQ: 124520435 加入软件QQ群 - 中国杭州 - 备案号码 浙ICP备19051128号]