创建直接sql账表
使用有权限的账号登录BOS平台,在对应环境下新建直接SQL账表

输入直接SQL账表名称
输入直接SQL账表唯一标识
点击确定创建直接SQL账表
直接SQL账表示例
要 点:
1、不可以对物理表进行修改、删除操作
2、不可以对数据库进行修改、删除操作
3、数据的暂时存储使用临时表
4、必须有一个要返回的查询语句
5、关键字只能做为查询条件
下述示例只做为参考使用
示例一:查询库存状态
SELECT t0.FTYPE AS 类型,
t0_L.FDESCRIPTION AS 描述,
t0_L.FNAME AS 名称,
t0.FAUDITDATE AS 审核日期
FROM t_BD_StockStatus t0
LEFT JOIN t_BD_StockStatus_L t0_L
ON t0.FSTOCKSTATUSID = t0_L.FSTOCKSTATUSID
AND t0_L.FLocaleId = 2052
WHERE t0_L.FLocaleId = 2052
AND t0.FTYPE<>41
--AND t3.FAUDITDATE>='********'
--AND t3.FAUDITDATE<='########'
示例二:汇总表
SELECT
TSE.FKEEPERTYPEID,
TSE.FKEEPERID,
SUM(CASE
WHEN UPPER(TSE.FCONVERTTYPE) = 'B' THEN
TSE.FBASEQTY
ELSE
(0 - TSE.FBASEQTY)
END) AS 期初基本单位数量,
SUM(CASE
WHEN UPPER(TSE.FCONVERTTYPE) = 'C' THEN
TSE.FSECQTY
ELSE
(0 - TSE.FSECQTY)
END) AS 期初辅助单位数量
FROM T_STK_LOTADJUST TS
INNER JOIN T_STK_LOTADJUSTENTRY TSE
ON TSE.FID = TS.FID
WHERE TS.FID > 10000
--AND TS.FDATE >='********'
--AND TS.FDATE <='########'
GROUP BY TSE.FKEEPERTYPEID, TSE.FKEEPERID
示例三:调用Sqlserver存储过程
exec p_test #p1#
其中:
#p1#为参数关键字
p_test定义如下:
CREATE PROCEDURE p_test
@p1 int
AS
Select FID, FLocaleID, FName
from T_BD_TIMEZONES_L
where FID >@p1
GO
注:需要勾选"存储过程"选项
示例四:调用Oracle存储过程
exec p_test #p1#
其中:
#p1#为参数关键字
p_test定义如下(注:需要最后一个参数为游标cur OUT SYS_REFCURSOR):
CREATE OR REPLACE PROCEDURE
p_test(p1 IN number, cur OUT SYS_REFCURSOR) as
BEGIN
open cur for
Select FID, FLocaleID, FName
from T_BD_TIMEZONES_L
where FID > p1;
return;
END p_test;
注:需要勾选"存储过程"选项
编写数据源
点击数据源

点击下一步
可以参考示例看看

编辑SQL语句
对于变量可以在关键字维护中进行新增变量

注意:可以在SQL语句中将字段命名为中文,显示的时候账表便可以显示为中文,便可跳过编辑字段名称步骤
编辑字段名称
账表可以在名称里编辑中文名称,账表显示为中文

发布直接SQL账表
点击发布->选择发布到主控台

选择需要添加的位置进行新增

编辑编码、名称和选择业务对象

勾选可见范围:桌面端可见,还是浏览器端可见还是两种都可见
单据体新增删除行
直接SQL账表单据体新增删除行操作
签入并打开需要添加删除行按钮的直接SQL账表

打开单据体中的菜单集合中

在菜单集右键新增工具条,再次右键新增按钮

新增表单插件
编辑插件代码
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.Web.Report.SQLReport;
using System.ComponentModel;
namespace xxxxxxProject
{
[Description("临工标准采购订单删除行按钮插件"), HotUpdate]
public class DelxxxxxxBtnPlugIn : AbstractSysReportPlugIn
{
public override void EntryBarItemClick(BarItemClickEventArgs e)
{
base.EntryBarItemClick(e);
if (e.BarItemKey.Equals("QQHU_tbDelxxxxxx")) {
var view = this.View as SQLReportView;
if (view==null) {
return;
}
var selData = view.SelectedDataRows;
if (selData == null || selData.Length == 0) return;
string ids = "(";
for (int i = 0; i < selData.Length; i++)
{
var row = selData[i];
string id = row["内码"].ToString();
ids +="'" +id +"'"+ ",";
}
ids = ids.Substring(0, ids.Length - 1);
ids += ")";
string SQLStr = string.Format(@"delete from table_xxxxxx where id in {0}", ids);
DBServiceHelper.ExecuteDynamicObject(this.Context, SQLStr);
}
}
}
}
注意:编写好的插件需要需要重新生成项目文件放到部署项目Website/bin目录下
在直接SQL账表中注册插件
点击表单插件

点击注册

选择部署的文件,选择相应的插件

总结
在本文中我们创建了直接SQL账表,然后对创建的直接SQL账表进行数据源的编辑,并对创建的直接SQL账表进行发布,并在直接SQL账表中添加了单据体按钮,实现按钮删除行的操作。