您好,请您先 登陆 或者 注册

表达式编辑器能自己添加字段吗?

在有些报表没有其他表的字段,如果能够自己添加上去,就可以用sql函数获取了,不知道这说法对不对?能不能自己添加的呢?如何添加呢?

问题补充:编辑器没有的字段,不能调用吧?

大家都没有测试就回答我的问题……计算列的语句我都测试过了,不行的,软件编辑器根本没有提供的字段,可以调用吗?怎么大家都没有看重点呢?

大家给的答案不是解决我的问题呢,举个例子:客户往来账添加实际销售数量。
大家觉得网站上有答案吗?
网站上的计算列都没有呢!呵呵,大家要测试了才知道回答问题,也是有难度的!
有几个不会先搜索网站呢……

提问者: bonchen
等级:问不倒翁
时间:2012-03-05 01:45
悬赏:0
解决时间:2012-03-15 01:45
回答 共 10 条
嗯,可以添加,请在网站中搜索计算列等关键字。
回答者:ytkf007
等级:问不倒翁
时间:2012-03-05 09:24
A5、A6计算列使用方法:
参考资料:http://www.yt-pos.com/a/fuwuyuxiazai/zaixianjishushouce/chanpinchangjian/2011/0201/76.html
回答者:李祥
等级:问不倒翁
时间:2012-03-05 09:37
计算列的使用方法:相关单据→设置→增加新列→计算列→输入以下语句→确定。 其它问题请到问答系统中提问:http://www.yt-pos.com/ask/
1. 赢通A5标签小票/样式设计(视频),欢迎初学者下载观看学习:
下载网址 http://dl.dbank.com/c0h5vyybn6
如若不能下载,请注册一个帐号就可以下载了。



2. 请注意:以下函数未注明的则是A5、A6通用,注明了的则是A5/A6专用。

计算列的使用方法:相关单据→设置→增加新列→计算列→输入以下语句→确定。

进入表达式编辑器:相关单据设置→增加新列→计算列→计算列表达式框右边选“...”号进入表达式编辑器:

或者报表样式、商品价签、条码标签设计器中→点“+/=”按钮→右边放下该列双击该列→表达式框右边选“...”号进入表达式编辑器:




3. 下面详细讲述一些常用计算列的使用方法: 2012-2-19更新

这里以批发取多包装明细为例,可以将多反算出来的多包装取为几列,用到的是“gf_item_qty_unit”函数

gf_item_qty_unit(as_item_no,ad_qty,ai_all,ai_order,ai_have_unit)

as_item_no:商品内部码
ad_qty:数量(如批发数量为不含多包装数量now_qty,含多包装数量sub_qty)
ai_all:要显示几个单位,比如要显示3个单位,ai_all = 3
ai_order:这个值是第几个单位,大单位就是 ai_order=3,小包装就是 ai_order =2 ,最小单位就是 ai_order =1
ai_have_unit:1,显示单位,0,不显示单位

gf_item_qty_unit( item_no , sub_qty ,3,3,1) 显示3个单位中第3个单位总数量,显示单位

(其实其它报表也可以,要注意数量列名sub_qty不同报表/单据不一样)

函数使用方法(以2个单位为例,要注意数量列名sub_qty不同报表/单据不一样):

相关单据→设置→增加新列→计算列→输入以下语句:
gf_item_qty_unit( item_no , sub_qty ,2,2,1) 显示 X箱
gf_item_qty_unit( item_no , sub_qty ,2,1,1) 显示 Y个
gf_item_qty_unit( item_no , sub_qty ,2,2,0) 显示 X
gf_item_qty_unit( item_no , sub_qty ,2,1,0) 显示 Y



4. 库存取包装明细:(其实其它报表也可以,要注意数量列名sub_qty不同报表/单据不一样)

gf_item_qty_disp(item_no, stock_qty ) 库存类报表

gf_item_qty_disp(item_no, sub_qty ) 批发、零售销售类报表

其它出入库表取包装明细:

gf_item_qty_disp(db_data2('select item_no from t_item_info where item_subno=?',item_subno), sub_qty )



5. 报表、档案、模块取商品档案库存:

gf_item_stock_qty(参数1,参数2,参数3):
参数1:商品内部码列;
参数2:机构仓库列,所有机构 用 '';
参数3:是否为实时库存 '1'-实时库存 '0'-当前库存;

例如:gf_item_stock_qty(item_no,'0001','1')



6. 用计算列取数据库表数据,db_data函数用法
db_data1,db_data2
用db_data1~db_data6函数
后面的数字代表参数的数量
db_data2('select item_name from t_item_info where item_no=?',item_no)
db_data3('select item_name from t_item_info where item_subno = ? or item_barcode =? ','0001','0001')
参数1:查询SQL ,里面有两个?,?
参数2:用于代替第一个?号,
参数3:用于代替第二个?号,
用后面的参数值去替换前面相应的SQL里的?号,然后得到一条完整的SQL,执行这个SQL,就是这个函数的返回值,固定值要用单引号

要注意:参数若用字段名,该字段名必须在该单据、报表中存在,可以通增计算列编辑框中看得到,否则无法取到。
例如:

条码标签打印中用语句直接取商品档案条码:

db_data2('select item_barcode from t_item_info where item_no=?',item_no)

条码标签打印中用语句直接取商品档案货号:

db_data2('select item_subno from t_item_info where item_no=?',item_no)



7. 显示该货号的条码列,用于多包装商品只显示基本包装的条码:
db_data2('select item_barcode from t_item_info where item_no=?',item_no)

A6服装,条码标签打印时,取商品档案中主条码(不是主码):

db_data2("select item_barcode from t_item_Info where item_subno=?",item_subno)
在库存查询表中,增加计算列提取商品档案的商品备注1:
db_data2(~"select item_bytxt1 from t_item_info where item_no=?~",item_no)

A5、A6在批发、入库单,增加计算列提取商品成本价:(最后0001条件是指总部仓库)

db_data3('select cost_price from t_branch_stock where item_no=? and branch_no = ?',item_no,'0001')

IF语句和db_data函数混合使用,取批发销售单是否审核标志:

if(db_data2('select app_sign from t_pf_out_master where sheet_no =?',sheet_no)='1','审','未审')



8. string函数使用方法:

打印商品价签、条码标签时,零售价只显示2位小数(系统设置是3位小数,用于精确入库):
string(sale_price,'0.00')

入库单的日期取月份,要注意在表达式编辑框中选列:

right(left(string(create_date),7),2)

取今天时间作为打印时间:

'打印日期:' + string(today(),'yyyy-mm-dd' + ' ' + String(Now(), 'hh:mm:ss '))



9. 打印商品价签、条码标签时,零售价称重商品:

(这里注意,是按货号位数判断,普通商品建议设置为6位)显示斤价格,商品档案中是公斤价格:

if(len(sub_no)=5,price/2,price)

if语句的用法:
if( b, t, f ) 。如果条件b成立,则结果为t,否则 结果为f



10. 批发销售单中无法调用【已付金额】这个函数转换成大写形式

gf_num_to_rmb(Dec(Describe('cdw_paid_amt$$.text')))

因已付金额列是个文本列,要用Describe 取文本值,再转成数值型,最后使用大写函数转换。

很多场合会用到DEC函数,用于将字符型字段转为数值型字段,才可以使用比如格式化函数string等,如:

进销差:

if(item_in_price=0,~"0~", db_data2(~"select item_sale_price- item_in_price from t_item_info where item_subno=? and item_in_price>0~",item_subno) )

进售差价率:

if(item_in_price=0,~"0~",string(db_data2(~"select left((item_sale_price- item_in_price)/item_sale_price*100,5) from t_item_info where item_subno=? and item_in_price>0~",item_subno))+~"%~")

进销差价均价:

string(Dec(db_data1('select avg(item_sale_price - item_in_price) from t_item_info where item_in_price>0 and item_sale_price>0')),'0.00')

进销差价均价率:

db_data1('select left(avg((item_sale_price - item_in_price)/item_sale_price)*100,5) from t_item_info where item_in_price>0 and item_sale_price>0')+'%'



11. A6取机构商品价格函数:

gf_item_branch_price(商品内码,机构仓库,价格类型),用于连锁时取该机构商品的实际价格:

gf_item_branch_price(item_no, stock_branch_no ,'S')

S代表零售价,V代表会员价,P代表批发价,I代表进价,Z1—Z9代表自定义价格

请注意:一般用于商品零售明细、库存查询、批发销售报表,报表明细区有机构的均可以使用。



12. A6自定义报表显示颜色尺码名称函数:(用于报表取商品颜色尺码称名,默认只有编号)

尺码:db_data2(~"select size_name from t_item_size where size_no=?~", yt_size )

颜色: db_data2(~"select color_name from t_item_color where color_no=?~",yt_color)

请注意:一般用于商品零售明细、库存查询、批发销售报表,报表明细区有机构的均可以使用。



13. 前台小票设计器中取单号后四位、小票大字体函数:(用于特定的小票格式)

小票设计器中小票号取后四位:right(sheet_no,4)

小票大字体行指令gf_big():添加行为gf_big('ABC'),小票上会打出ABC为大写的。

请注意:将以上格式放入小票设计器→新增行/编辑行→数据中,小票机要支持大字体指令。




14. 配出单中取总部的库存数:(在总部使用)

db_data2(~"select real_qty = a.stock_qty - IsNull(b.sale_qty,0.00) from t_branch_stock a left join view_stock_real b on a.item_no=isnull(b.item_No,a.item_no) where isnull(b.branch_no,0001)=0001 and a.branch_no=0001 and a.item_no=?~",item_no)

请注意:在后其单据中可以使用gf_item_stock_qty(item_no,'0001','1')函数来取库存。




15. 其它函数的使用方法(只是一部分,更多函数可以参见软件计算列中有说明或者咨询客服):

取时间:
string(today(),'yyyy-mm-dd')
String(Now(), 'hh:mm:ss')

取打印次数:
'共打印' + db_data1('select prn_times from sys_t_sheet_change where sheet_no=?',sheet_no) + '次'
'公司' + db_data1('select branch_name from bi_t_branch_info where branch_no=?',branch_no) + '公司'

取数据不要小数点:
string(truncate(item_sale_price,0))
mid( string(item_sale_price), 0, 4 )
string(item_sale_price)

销售明细取会员名称:
db_data1('select vip_name from pos_t_vip_info where card_id=?',vip_no)

前台取收银员名称:
db_data1('select oper_name From sa_t_operator_i where oper_id=?',db_data1('select oper_id from pos_t_sale_master where sheet_no=?',sheet_no))

取仓库名:
db_data1("select branch_name from bi_t_branch_info where branch_no=?",db_data1("select branch_no from ic_t_inout_store_master where sheet_no=?",sheet_no))

大写单个金额:
pub_f_num_to_cn(金额表单式,4)
1分 2角 3元 4十元 5百 6千 7万
例如:做面包、生日蛋糕的都可以这样在标签上打印下面这些日期

保质期天数:
real(db_data1('select valid_day from bi_t_item_info where item_subno=?',item_subno))

生产日期(就是今天):
string(today(),'yyyy-mm-dd')

有效期到:
string(RelativeDate(today(),real(db_data1('select valid_day from bi_t_item_info where item_subno=?',item_subno))),'yyyy-mm-dd')

单据、报表显示商品库存:
db_data2('select stock_qty from t_branch_stock where item_no=? and branch_no=? ',item_no,'0001')

其它高级计算列:

db_data1('select case when sell_way='B' then '退货单' when sell_way='C' then '赠送单' else '正常销售' end from pos_t_payflow where flow_no = ?',flow_no)

(责任编辑:赢通软件管理团队)
俺是直接复制过来的
回答者:wangze2005
等级:问不倒翁
时间:2012-03-05 09:52
学习
回答者:赢通技术
等级:金牌会员
时间:2012-03-05 11:54
是哦。这个多参考一下以上几楼资料,有些报表是不可表和表之间取字段的,多和区域经理联系哦。
回答者:zhaoshuai888
等级:问不倒翁
时间:2012-03-05 14:55
学习了
回答者:小燕子
等级:钻石会员
时间:2012-03-05 17:20
没有吧,太复杂了
回答者:dympkj
等级:银牌会员
时间:2012-03-05 18:27
好像不能取别的数据库表字段吧
回答者:kh359
等级:问不倒翁
时间:2012-03-05 20:24
http://www.yt-pos.com/a/fuwuyuxiazai/zaixianjishushouce/chanpinchangjian/2011/0201/76.html
回答者:JCLH
等级:问不倒翁
时间:2012-03-07 14:44
参考资料:http://www.yt-pos.com/a/fuwuyuxiazai/zaixianjishushouce/chanpinchangjian/2011/0201/76.html


其实你在问答系统内搜就行了,谁在这里刷屏。
回答者:赢通华中区
等级:钻石会员
时间:2012-03-07 18:10
总积分排行
ytkf00720058 4704
kh35927124 3414
赢通技术43538 3053
bonchen13219 2797
赢通技术37615 2590
JCLH11087 1917
浅逝1873 1873
李祥19958 1542
xiaobird3309 1254
daoptt3310 1237