【学习】插件执行SQL语句 和 SQL基本增删改查语法原创
金蝶云社区-___________________
___________________
19人赞赏了该文章 677次浏览 未经作者许可,禁止转载编辑于2023年09月05日 09:27:21

在BOS平台中获取所需要查询的表

image.png


Snipaste_2023-07-11_15-57-54.png


在采购订单中添加按钮:修改(VVHD_tbButton_XG) 查询(VVHD_tbButtonCX)

数据库修改数据

Snipaste_2023-08-22_17-12-43.png

            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();//刷新页面并通过数据库赋值
                }
            }

数据库查询数据

Snipaste_2023-08-22_17-12-59.png

            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会显示两边表中的全部信息(这里可以查询到采购订单的全部信息和物料中的全部信息)


赞 19