1 / 31

直接 SQL 报表

直接 SQL 报表. 叶玫 计算机工程技术学院. 报表定义. 报表:用表格、图表等格式来动态显示数据。帮助企业更方便的访问、格式化数据,把数据信息以可靠和安全的方式呈现给企业用户 BOS IDE 提供三种报表的方式,在项目面板查看. 直接 SQL 报表. 直接 SQL 报表直接使用 SQL 语句对 K3 底层数据库进行查询 把查询返回结果作为报表内容 要求用户熟悉 K3 的后台数据库结构 查看数据库表结构的工具:菜单视图 — 字段描述查询工具. K3 各子系统包含的 物理表.

Download Presentation

直接 SQL 报表

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 直接SQL报表 叶玫 计算机工程技术学院

  2. 报表定义 • 报表:用表格、图表等格式来动态显示数据。帮助企业更方便的访问、格式化数据,把数据信息以可靠和安全的方式呈现给企业用户 • BOS IDE提供三种报表的方式,在项目面板查看

  3. 直接SQL报表 • 直接SQL报表直接使用SQL语句对K3底层数据库进行查询 • 把查询返回结果作为报表内容 • 要求用户熟悉K3的后台数据库结构 • 查看数据库表结构的工具:菜单视图—字段描述查询工具 K3各子系统包含的物理表

  4. 注意:字段描述查询工具只能查找老单据(工业单据)对应的物理表和K3系统原有的辅助物理表,查不到BOS单据的物理表,需要对BOS单据设置之后才能看到注意:字段描述查询工具只能查找老单据(工业单据)对应的物理表和K3系统原有的辅助物理表,查不到BOS单据的物理表,需要对BOS单据设置之后才能看到

  5. BOS单据关联的物理表 • BOS单据可能对应的物理表有四张 1、单据头对应的物理表 2、单据体对应的物理表 3、基础资料字段对应的物理表 4、BOS基础资料(交货地点)对应的物理表 1、2、4三张表是创建BOS单据之后生成的新表; 3是K3原有的表,在字段描述查询工具中可以找到

  6. SQL报表定义 • 案例一:根据入库通知单生成直接SQL报表,分析供应商来料数量 • 报表名:供应商来料数量分析 • 报表内容:供应商所销售的每项物料入中间库的应收、实收数量。用户在调用报表时动态指定具体查询哪个供应商的来料情况 • 报表列标题:供应商、应收数量、实收数量

  7. SQL报表定义 • 案例分析: • 本例简单查询供应商单笔销售的数量情况,不汇总、不统计 • SQL查询要求:以供应商作为查询条件,直接把满足条件的每条分录的应收数量、实收数量返回;需要把字段重命名为中文输出 • 涉及的物理表 t_BosRKD(单据头)、t_BosRKDEntry(单据体)、t_Item(基础资料主表)

  8. t_Item 基础资料主表 • t_Item表存储了所有的标准基础资料 ,包括核算项目和一般基础资料 • 一项基础资料对应表中的一行数据

  9. t_Item 基础资料主表重要字段说明 • FItemID:主键,每项基础资料的唯一标识,称为“基础资料内码”。其他表如果引用了基础资料,建立跟t_Item的主外键关系,引用的都是FItemID字段。字段值是设置基础资料时由后台自动生成,用户不能直接录入。 • FNumber:基础资料代码,是设置基础资料时用户录入的。 • FName:基础资料名称,是设置基础资料时用户录入的。要在报表显示供应商名称,必须返回这个字段

  10. t_BosRKD表(单据头) • 一张单据对应表中的一行数据 • 用到的字段:FID(单据内码)、FSupplier(供应商) • FSupplier是外键,参考t_Item表

  11. t_BosRKDEntry表(单据体) • 所有入库通知单分录数据都存储在该表中,一条分录对应表中一行数据 • 用到的字段:FID(单据内码)、FCommitQty(实收数量) • FID是外键,参考t_BosRKD,说明当前分录属于哪张单据 同一张单据上的分录

  12. t_Item(基础资料主表) FItemID (主键,基础资料唯一标识) t_BOSRKD(入库通知单单据头) FID (主键,单据内码) FSupplier(外键,供应商内码) t_BOSRKDEntry (入库通知单单据体) FEntryID (标识分录) FID (外键,单据内码) 三表关系图

  13. SQL报表定义 • 案例分析: • SQL语句构建 select t_Item.fname as 供应商, FMustQty as 应收数量,FCommitQty as 实收数量 from t_BOSRKDEntry inner join t_BOSRKD on t_BOSRKDEntry.fid= t_BOSRKD.fid inner join t_Item on t_BOSRKD.fsupplier=t_Item.fItemid where t_Item.fname=’某供应商名’ 在报表向导中用”关键字“取代

  14. SQL报表定义 取代where子句查询值的”关键字“ • 生成SQL报表 • 直接SQL报表—新建直接SQL报表,下一步进入自定义报表向导 输入SQL语句

  15. SQL报表定义 • 关键字说明: • BOS把最可能作为SQL查询条件的字段内容(例如基础资料相关字段)作为关键字列出 • 用*关键字*代表值的下限(起始值),用#关键字#代表值的上限(截止值),用@关键字@代表确定值 • 用户可以在已有关键字的基础上增加自定义关键字(关键字维护)

  16. SQL报表定义

  17. SQL报表定义 • 下一步 SQL语句中的字段名 报表中最后显示的列标题 设置这列在报表中是否可见

  18. SQL报表定义 • 下一步,完成

  19. SQL报表定义 • 测试:右键单击刚生成的报表—直接SQL报表测试 SQl语句where子句中,用关键字取代的部分,F7键选取供应商

  20. 供应商名称作为报表小标题显示

  21. 供应商名称作为报表小标题显示

  22. SQL报表定义 • 其他操作: • 在报表结果的字体菜单修改字体,美化格式 • 点击”过滤“,会再次弹出报表测试界面,可替换关键字的值,查询其他供应商的销售情况

  23. SQL报表定义 • 案例二:修改“供应商来料数量分析”报表 • 案例1生成的报表,只能看到供应商发货的数量,看不到发货的物料名称,报表内容不完整,在报表中增加显示物料代码、物料名称、交货日期

  24. 案例分析 • 增加物料名称,需要修改任务1的SQL语句,把物料名称作为查询结果列 • 和供应商一样,物料也是标准的基础资料,存储在t_Item表,物料名称对应的字段也是fname • t_BOSRKDEntry表(单据体)的FMatID(物料代码)字段,存储的是物料的基础资料内码,外键,参考t_Item表

  25. 修改后的SQL语句 select t3.fname 供应商,t4.fnumber 物料代码,t4.fname 物料名称,t2.fmustqty 应收数量,t2.fcommitqty 实收数量,t2.fdeldate 交货日期 from t_bosrkd t1 Inner joint_bosrkdentry t2 Ont1.fid=t2.fid Inner joint_item t3 Ont1.fsupplier=t3.fitemid Inner joint_item t4 Ont2.fmatid=t4.fitemid wheret3.fname='@SuppName@'

  26. SQL报表定义 • 案例三:按时间段汇总总寄存库每项物料的实收总数量 • 报表名:中间库物料实收数量汇总 • 报表内容:按时间段统计每项物料在该时间段的实收总数量,例如统计2012年各项物料的实收总数量。时间以入库通知单上的交货日期为准,用户在调用报表时动态指定查询的时间段。 • 报表列标题:物料代码、物料名称、实收总数量

  27. 案例分析 • 本案使用两张物理表: t_BOSRKDEntry(单据体)、t_Item(基础资料主表) • 需要对每项物料的实收数量进行求和,要对物料进行分组,并对实收数量求和 • 分组:Group by • 求和:聚合函数SUM()

  28. SQL语句 • 本案需要按物料分组,然后对物料的实收数量求和 Select FItemID 物料代码, FName 物料名称, sum(FCommitQty) 实收总数量 From t_Item Inner join t_BOSRKDEntry On t_Item.FItemID=t_BOSRKDEntry.fmatID Where FDelDate>=’某年某月某日’ and FDelDate<=’某年某月某日’ Group by FItemID, FName 在报表向导中用”关键字“取代

  29. 设置SQL语句和查询关键字 • 调用报表时指定交货日期时间段,查询关键字是日期

More Related