友商KISBOS报表开发(专业版).ppt
KISBOS报表开发(专业版),金蝶友商电子商务服务有限公司,渠道培训部:黄银银,想篇-软件构造看篇-基础五步走做篇-需求分析练篇-多练习到熟悉精通,目录,ERP软件,前台界面,后台数据库,一、想篇-软件构造,账套号=数据库名称,二、看篇-基础五步走,SQL语言基础语法,事件探查器的使用,KISBOS基础介绍,KISBOS报表开发,KISBOS报表导出导入,数据库的结构包括了表,视图,存储过程等。,第一步:SQL语言基础语法学习,表是对数据进行存储和操作的一种逻辑结构,每一个表都代表一个对用户意义的对象。,字段是表内的具体的列,记录是表中的内容行,字段列,内容行,视图vw,第一步:SQL语言基础语法学习,通过定义 SELECT 语句以检索将在视图中显示的数据来创建视图。,表与表靠相同字段相连,使用SELECT语句来创建视图,存储过程sp存储过程是一组为了完成特定功能的SQL语句集,是利用SQL Server所提供的Transact-SQL语言所编写的程序。,第一步:SQL语言基础语法学习,存储过程是一个被调用的过程,它能够提高SQL的灵活性,提高数据库执行速度,SELECT查询语句(方法1)SELECT ALL|DISTINCT column1,column2FROM table1,table2WHERE conditionsGROUP BY column-listHAVING conditionsORDER BY column-list ASC|DESC,第一步:SQL语言基础语法学习,SELECT查询语句(方法2)SELECT ALL|DISTINCT table1.column1,table2.column1,table2.column2 FROM table1 LEFT JOIN table2 on table1.column1=table2.column1 WHERE conditionsGROUP BY column-listHAVING conditionsORDER BY column-list ASC|DESC,第一步:SQL语言基础语法学习,UPDATE更新语句语法update tablenameset columnname=newvalue,nextcolumn=newvalue2.where columnname OPERATOR value and|or column OPERATOR value;实例操作:专业版中清空manager密码:update t_user set fsid=null where fname=manager注意“=”符号和like差别,=是相等,like是模糊查询,上述实例用LIKE可以写成:Update t_user set fsid=null where fname like%mana%,第一步:SQL语言基础语法学习,第一步:SQL语言基础语法学习,其他语法:删除表drop table tablename 实例:drop table t_item删除记录delete from“tablename”/*删除整张表记录*/WHERE“conditions”/*删除表中某个条件的记录*/实例:delete from t_user where fname=张三,第一步:SQL语言基础语法学习,SQL语言中函数所代表的意义:,第一步:SQL语言基础语法学习,实例解析-有这么一张报表的需求。做成台帐的形式,左边是取自于采购入库单,右边取自销售单。两者仅以物料编码来连接select identity(int,1,1)Fid,ftrantype,case when fnumberin is null then fnumberout else fnumberin end fnumber,case when fnamein is null then fnameout else fnamein end fname,Fsupplynumber,fsupplyname,Fnotein,fbillnoin,fdatein,Fentryidin,Fqtyin,famounin,fempnamein,-fnumberout,fnameout,Fcustnumber,fcustname,fnoteout,fbillnoout,fdateout,fentryidout,fqtyout,famountout,fempnameoutinto#temp from(-自定义报表:做成台帐的形式,左边是取自于采购入库单,右边取自销售单。两者仅以物料编码来连接-采购入库select h.ftrantype,h.fnumber fnumberin,h.fname fnamein,h.Fcustnumber Fsupplynumber,h.fcustname fsupplyname,h.fnote Fnotein,h.fbillno fbillnoin,h.fdate fdatein,h.fentryid fentryidin,h.fqty Fqtyin,h.famount famounin,h.Fempname fempnamein,k.fnumber fnumberout,k.fname fnameout,k.Fcustnumber,k.fcustname,k.fnote fnoteout,k.fbillno fbillnoout,k.fdate fdateout,k.fentryid fentryidout,k.fqty fqtyout,k.famount famountout,k.Fempname fempnameoutfrom(select a.ftrantype,c.fnumber,c.fname,d.fnumber Fcustnumber,d.fname fcustname,b.fnote,a.fbillno,a.fdate,b.fentryid,b.fqty,b.famount,E.fname Fempnamefrom icstockbill a join icstockbillentry b on a.finterid=b.finteridjoin t_icitem c on c.fitemid=b.fitemidjoin t_item d on d.fitemid=a.Fsupplyidleft join t_emp e on e.fitemid=Fempidwhere a.ftrantype=1-and c.fnumber=001.01)H left join(-销售出库select a.ftrantype,c.fnumber,c.fname,d.fnumber Fcustnumber,d.fname fcustname,b.fnote,a.fbillno,a.fdate,b.fentryid,b.fqty,b.famount,E.fname Fempnamefrom icstockbill a join icstockbillentry b on a.finterid=b.finteridjoin t_icitem c on c.fitemid=b.fitemidjoin t_item d on d.fitemid=a.Fsupplyidleft join t_emp e on e.fitemid=Fempidwhere a.ftrantype=21-and c.fnumber=001.01)K on h.fnumber=k.fnumber-where k.fnumber=001.23-union-采购入库select h.ftrantype,h.fnumber fnumberin,h.fname fnamein,h.Fcustnumber Fsupplynumber,h.fcustname fsupplyname,h.fnote Fnotein,h.fbillno fbillnoin,h.fdate fdatein,h.fentryid fentryidin,h.fqty Fqtyin,h.famount famounin,h.Fempname fempnamein,k.fnumber fnumberout,k.fname fnameout,k.Fcustnumber,k.fcustname,k.fnote fnoteout,k.fbillno fbillnoout,k.fdate fdateout,k.fentryid fentryidout,k.fqty fqtyout,k.famount famountout,k.Fempname fempnameoutfrom(select a.ftrantype,c.fnumber,c.fname,d.fnumber Fcustnumber,d.fname fcustname,b.fnote,a.fbillno,a.fdate,b.fentryid,b.fqty,b.famount,E.fname Fempnamefrom icstockbill a join icstockbillentry b on a.finterid=b.finteridjoin t_icitem c on c.fitemid=b.fitemidjoin t_item d on d.fitemid=a.Fsupplyidleft join t_emp e on e.fitemid=Fempidwhere a.ftrantype=1-and c.fnumber=001.01)H right join(-销售出库select a.ftrantype,c.fnumber,c.fname,d.fnumber Fcustnumber,d.fname fcustname,b.fnote,a.fbillno,a.fdate,b.fentryid,b.fqty,b.famount,E.fname Fempnamefrom icstockbill a join icstockbillentry b on a.finterid=b.finteridjoin t_icitem c on c.fitemid=b.fitemidjoin t_item d on d.fitemid=a.Fsupplyidleft join t_emp e on e.fitemid=Fempidwhere a.ftrantype=21-and c.fnumber=001.01)K on h.fnumber=k.fnumber-where k.fnumber=001.23-order by h.fdate,h.fnumber,k.fnumber)forder by fnumber,fdatein,fdateout-将重得数据的值更新为0,其他字符信息更新为空-select*from#temp order by fidupdate a set a.fqtyin=0,a.famounin=0,a.fsupplynumber=,a.fsupplyname=,a.fnotein=,a.fbillnoin=,a.fdatein=,Fempnamein=from#temp a join#temp b on a.fnumber=b.fnumber and a.fbillnoin=b.fbillnoin and a.fentryidin=b.fentryidinwhere a.fidb.fidupdate a set a.fqtyout=0,a.famountout=0,a.fcustnumber=,a.fcustname=,a.fnoteout=,a.fbillnoout=,a.fdateout=,Fempnameout=from#temp a join#temp b on a.fnumber=b.fnumber and a.fbillnoout=b.fbillnoout and a.fentryidout=b.fentryidoutwhere a.fidb.fid-select*from#temp order by fnumber,fdatein,fdateout-select*from#temp where fnumber=001.01 order by fnumber,fdatein,fdateoutselect distinct identity(int,1,1)Fid,a.fnumber,a.fname,Fsupplynumber,fsupplyname,Fnotein,fbillnoin,fdatein,Fentryidin,Fqtyin,famounin,fempnamein,Fcustnumber,fcustname,fnoteout,fbillnoout,fdateout,fentryidout,fqtyout,famountout,fempnameout,fqtylockloss,c.fqtyendinto#tempdatafrom#temp a left join t_icitem b on a.fnumber=b.fnumberleft join(select fitemid,sum(fqty)fqtyend,sum(fqtylock)fqtylockloss from icinventory group by fitemid)c on c.fitemid=b.fitemid-where b.fnumber=001.01-将多余的 即时库存余额=0update a set a.fqtyend=0from#tempdata a join#tempdata b on a.fnumber=b.fnumber where a.fidb.fid-and a.fnumber=001.01-删除多余数据delete from#tempdata where fqtyin=0 and fqtyout=0-显示报表数据select*from#tempdata-where fnumber=001.12.04-删除临时表drop table#tempdrop table#tempdata,第一步:SQL语言基础语法学习,实例:查询 即时库存 执行sql语句首先,打开sql事件探查器新建跟踪:,第二步:事件探查器的使用,2、跟踪属性选项:,3.清除跟踪,第二步:事件探查器的使用,4.停止所选择的跟踪,5.打开软件,打开即时库存表,6.到sql事件探查器内运行所选择的跟踪,第二步:事件探查器的使用,7.刷新即时库存表后,回到事件探查器,停止所选择的跟踪,到下方跟踪内容中找cpu 和 reads 值最大的项目,如果项目不好区分,可以查询textdata 中类似查询的项目,复制这些项目到SQL查询分析器内可以验证。从而区分出自己需要的语句。,金蝶KISBOS 是针对金蝶KIS专业版和商贸版产品的一个自定义报表开发工具,KISBOS支持的产品支持KIS 专业版 V9.0及以上版本的自定义报表支持KIS服装鞋帽版V8.1及以上版本的自定义报表支持KIS商贸版的所有产品,版本历程V1.0-V2.0,实现方式直接编写SQL语句实现通过插件实现,第三步:KISBOS基础介绍,个性化数据报表它弥补了现有KIS产品报表的局限性,并以灵活的方式实现自定义报表,满足不同客户的个性化报表需求对现有数据进行挖掘,组合形成客户需要的个性化数据报表现有的标准报表不能完全满足需要,在此基础上补充部分数据,满足客户需要,第三步:KISBOS基础介绍,金蝶KISBOS运行需要登录一个账套以金蝶专业版为例,如专业版客户端一样,正常登录登录的账套并不承载具体的KISBOS报表,只是一个软件运行过程的必须环境金蝶KISBOS提供了常用的专业版、标准版的数据结构查询功能,第三步:KISBOS基础介绍,第四步:KISBOS报表开发,打开软件,新增报表,1,系统默认选项,2、报表类别包括:采购,销售,仓库,存货,扩充,加入SQL语句,第四步:KISBOS报表开发,SQL语句,必须以 Set Nocount on 开头,显示字段和后期效果对比图,第四步:KISBOS报表开发,1、$:这个符号用于融合上下两条线,只能用于列主标题2、+|:这组符号用于报表单元之间的融合并分上下两个标题显示,列副标题显示在第二行;使用了这个符号后,不能再使用$符号,$用于融合两条线,+|列主标题,下设2个副标题,下设多个副标题,合计,过滤条件和后期效果对比图,第四步:KISBOS报表开发,选择窗体是通过select语句创建的,注意:过滤条件在建立的过程中不允许任何一项为空!,自定义过滤条件:,第四步:KISBOS报表开发,第五步:KISBOS报表导出导入,1,2,3,导出的格式是ZIP格式,导入:登录软件客户端,第五步:KISBOS报表导出导入,修改,第五步:KISBOS报表导出导入,注意:重新登录后才可以看到新增报表,设置显示/隐藏列、冻结列如果对于某些数据列不要求显示,则可以隐藏其他关于报表格式设置的操作,请比照处理,第五步:KISBOS报表导出导入,P29,可设置引出数据格式,KIS专业版,第五步:KISBOS报表导出导入,三、做篇-需求分析,需求调研,需要了解结果和字段来源,预期效果,需求分析,在原有报表基础上去开发报表,或者独立开发报表,编写SQL语言。,三、做篇-需求分析,接着使用KISBOS进行后期制作,从熟悉SQL,事件探查器使用开始,初级阶段,提升阶段,在原有报表上增加字段,重新开发报表,成熟阶段,独立自己编程开发报表,看懂已有用SQL开发的报表,成功来自于不断的自我学习和努力!哈哈哈!,四、练篇-多练习到熟悉精通,Thanks,