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这个函数时,都是使用三个参数(说明是四个参数),而我改用三个参数来写代码,将出错。 |