SCADA|用KingSCADA实现设备台账的删除功能

雅轩聊科技 2024-10-15 20:06:43

哈喽,你好啊,我是雷工!

前面记录了用KingSCADA实现设备台账的、与。

这里在前面的基础上继续实现设备台账的删除功能,即当在查询到的设备信息中选中某条信息,点击【删除】按钮,即可从SQLServer数据库中将选中的设备信息删除。

以下为 实 现 笔记。

01 效果演示

在查询到的设备信息中选中某条信息,点击【删除】按钮,提示:删除成功。

然后再点击【查询】按钮,之前选中的信息已经被删除。

02 实现步骤

2.1、函数说明

其他使用到的函数在前面有过介绍,这里就不再赘述,这里补充说明下KDBExecuteStatement1函数。

KDBExecuteStatement1函数的作用是通过句柄执行SQL语句。

函数格式:

KDBExecuteStatement1(string 与数据库连接的句柄名称,string 要执行的SQL语句)

返回值:

成功返回true,失败返回false

2.2、删除按钮

删除功能比较简单,跟查询一样不涉及弹窗,因此只需要在删除按钮中添加鼠标左键弹起事件,在事件中直接编写删除脚本即可。

实现思路是先获取报表中当前选中行的设备编号,然后再执行删除的SQL语句。

删除脚本如下:

string ConnectStr;string SqlStr;//通过ODBC方式连接SQLServer数据库的连接字符串ConnectStr="DSN=kssql1;DATABASE=SCADASQL;UID=sa;PWD=admin@123;";//示例语句DELETE FROM Websites WHERE name='Facebook' AND country='USA';int row;row=Report1.GetSelectedRow();string strID=Report1.GetCellString(row,1);SqlStr="delete from SC_SBTZ where ID='"+strID+"'";//Trace("SqlStr"+SqlStr);//调试函数,把SqlStr语句显示到信息窗口中bool res,res1;res=KDBExecuteStatement1("bx",SqlStr);if(res==0){KDBDisConnect("bx");KDBGetConnectID("bx","DSN=kssql1;DATABASE=SCADASQL;UID=sa;PWD=admin@123;");res1=KDBExecuteStatement1("bx",SqlStr);if(res1==0){ShowMessageBox("删除数据失败,请确认与数据库连接是否正常!","提示",0,1);return;}}ShowMessageBox("数据删除成功","提示",0,0);

2.3 运行测试

当点击【删除】按钮后弹出数据删除成功提示,则说明测试正常。

删除虽然正常,但是再次刷新查询时,会存在最后一行与倒数第二行数据重复显示的情况,

因为删除其中一条数据,所有数据上移,但是最后一行没有被查询到的数据覆盖导致,这种问题可以通过在向报表填充数据之前,先清空一下数据区域。

2.4 优化查询功能

①清空报表方法

void Clear(int nBeginRow,int nBeginCol,int nEndRow,int nEndCol)

功能:删除报表中某区域内的内容,行列数保持不变。

nBeginRow: 清除报表内容的区域的起始行。

nBeginCol: 清除报表内容的区域的起始列。

nEndRow: 清除报表内容的区域的终止行。

nEndCol: 清除报表内容的区域的终止列。

注:当参数都为-1时,表示删除整个报表的内容。

②增加语句

在查询按钮中增加清空报表数据的语句,这里需要清空第三行以下的所有列数据,因此语句如下:

Report1.Clear(3,1,-1,-1);

增加上语句后,当执行完删除操作,再次点击查询按钮,会在报表的结尾显示空行。

03 后记

以上为用KingSCADA实现设备台账的删除功能的实现过程,

抛砖引玉,大家有什么好的建议和想法可以在评论区或交流群内探讨,互通有无,相互学习,共同进步。

0 阅读:0

雅轩聊科技

简介:感谢大家的关注