在BOS平台中获取所需要查询的表
在采购订单中添加按钮:修改(VVHD_tbButton_XG) 查询(VVHD_tbButtonCX)
数据库修改数据
if (e.BarItemKey.Equals("VVHD_tbButton_XG")) { string Status = this.Model.GetValue("FDocumentStatus").ToString(); if (Status == "Z")//判断单据状态不为暂存 { this.View.ShowMessage("请先保存单据!"); return; } string FBILLNO = this.Model.GetValue("FBILLNO").ToString(); var sql = string.Format("update T_PUR_POORDER set F_VVHD_Text ='{0}' where FBILLNO ='{1}'", FBILLNO, FBILLNO.ToString()); int count = DBUtils.Execute(this.Context, sql); if (count > 0)//返回的是执行影响的行数 { //this.View.UpdateView("字段标识");//更新前端某个字段的数据 this.View.Refresh();//刷新页面并通过数据库赋值 } }
数据库查询数据
if (e.BarItemKey.Equals("VVHD_tbButtonCX")) { var sql = string.Format("select FBILLNO,F_VVHD_Text from T_PUR_POORDER"); DataSet ds = DBServiceHelper.ExecuteDataSet(this.Context, sql); //ExecuteDataSet 是查询一个数据集 可以在SQL里面写入多个查询语句执行的结果会返回到多个表 DataTable dt = ds.Tables[0];//将返回的第一个表放入DataTable string info = "单据编号\t 文本字段\r\n"; for (int i = 0; i < dt.Rows.Count; i++) { info += dt.Rows[i]["FBILLNO"].ToString()+"\t"+ dt.Rows[i]["FBILLNO"].ToString() + "\r\n"; } this.View.ShowMessage(info); }
代码分享
using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.List.PlugIn; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; namespace XueXi { [Description("查询数据库中的值"), HotUpdate] public class Class4 : AbstractBillPlugIn { public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); if (e.BarItemKey.Equals("VVHD_tbButton_XG")) { string Status = this.Model.GetValue("FDocumentStatus").ToString(); if (Status == "Z")//判断单据状态不为暂存 { this.View.ShowMessage("请先保存单据!"); return; } string FBILLNO = this.Model.GetValue("FBILLNO").ToString(); var sql = string.Format("update T_PUR_POORDER set F_VVHD_Text ='{0}' where FBILLNO ='{1}'", FBILLNO, FBILLNO.ToString()); int count = DBUtils.Execute(this.Context, sql); if (count > 0)//返回的是执行影响的行数 { //this.View.UpdateView("字段标识");//更新前端某个字段的数据 this.View.Refresh();//刷新页面并通过数据库赋值 } } if (e.BarItemKey.Equals("VVHD_tbButtonCX")) { var sql = string.Format("select FBILLNO,F_VVHD_Text from T_PUR_POORDER"); DataSet ds = DBServiceHelper.ExecuteDataSet(this.Context, sql); //ExecuteDataSet 是查询一个数据集 可以在SQL里面写入多个查询语句执行的结果会返回到多个表 DataTable dt = ds.Tables[0];//将返回的第一个表放入DataTable string info = "单据编号\t 文本字段\r\n"; for (int i = 0; i < dt.Rows.Count; i++) { info += dt.Rows[i]["FBILLNO"].ToString()+"\t"+ dt.Rows[i]["FBILLNO"].ToString() + "\r\n"; } this.View.ShowMessage(info); } } } }
SQL基本增删改查语法
插入数据
INSERT INTO <表名>(列名) VALUES (插入的列值)
用于向数据库增加一条新的数据
删除数据
DELETE FROM <表名> [WHERE <删除条件>]
如果不加条件将删除此表中所有数据(谨慎使用)
SELECT * FROM INTO<新表名> DELETE FROM <表名> [WHERE <删除条件>]
可以在删除数据时将此表另存为防止数据丢失
TRUNCATE TABLE<表名;>
--无法增加条件 删除此表中所有数据 不会存储日志
--优点:速度极快 缺点:数据删除无法恢复
更新数据
UPDATE <表名> SET <列名 = 更新值>
[WHERE <更新条件>]
修改表中一列或多列的值 尽量增加条件否则会修改整张表的数据
查询数据
SELECT <列名>
FROM <表名>
[WHERE <查询条件表达式>]
[ORDER BY <排序的列名>[ASC(升)或 DESC(降)] ]
列名为*则查询全部列数据
连表
(1) 内联接(INNER JOIN)
SELECT * FROM T_PUR_POORDER A
INNER JOIN T_PUR_POORDERENTRY B ON A.FID = B.FID
查询采购订单和采购订单明细表中的信息
(2)外联接
左外联结 (LEFT JOIN)
SELECT B.FMATERIALID,WL.FMATERIALID, * FROM T_PUR_POORDER A
INNER JOIN T_PUR_POORDERENTRY B ON A.FID = B.FID
LEFT JOIN T_BD_MATERIAL WL ON B.FMATERIALID = WL.FMATERIALID
LEFT JOIN会显示左表中的全部信息(这里是查询采购订单中有没有明细没有选择物料)
右外联结 (RIGHT JOIN)
SELECT B.FMATERIALID,WL.FMATERIALID, * FROM T_PUR_POORDER A
INNER JOIN T_PUR_POORDERENTRY B ON A.FID = B.FID
RIGHT JOIN T_BD_MATERIAL WL ON B.FMATERIALID = WL.FMATERIALID
RIGHT JOIN会显示右表中的全部信息(这里可以查询到采购订单使用了那些物料和那些物料没有被使用,但这里不会显示没有选择物料的单据)
全外联结 (FULL JOIN)
SELECT B.FMATERIALID,WL.FMATERIALID, * FROM T_PUR_POORDER A
INNER JOIN T_PUR_POORDERENTRY B ON A.FID = B.FID
FULL JOIN T_BD_MATERIAL WL ON B.FMATERIALID = WL.FMATERIALID
FULL JOIN会显示两边表中的全部信息(这里可以查询到采购订单的全部信息和物料中的全部信息)
推荐阅读