哈喽,你好啊,我是雷工!
前面练习记录了用KingSCADA实现设备台账的与,
本节在前面的基础上实现设备台账的修改功能,即当查询到设备台账信息后,选中某条台账信息,点击修改按钮,弹出修改界面,将要修改的类名修改完成后点击【确定修改】,将修改后的信息更新到SQLServer数据库中。
以下为 实 现笔记。
01 效果演示①在查询到的设备台账信息中,选中要修改的信息行。点击【修改】按钮,弹出设备修改界面。
②弹出的界面显示选中行的设备信息,将要修改的项修改后,点击【确认修改】按钮,将修改的内容更新到SQLServer数据库。
③再次点击查询按钮,可以看到选中的设备信息已经完成修改操作。
02 实现步骤2.1、人机界面
由于修改界面与增加界面内容基本一致,UI界面的实现可以直接复制增加设备台账的界面,然后点击属性修改界面名称。
然后双击进入编辑界面,将增加的相关信息修改为修改即可。
另外取消按钮的脚本要修改为关闭当前的界面名称:
/*bool*/ ClosePicture("sbtzEdit");2.2、内存变量
为了使修改界面打开时能够显示选中行的设备信息,这里创建15个内存变量,依次存储选中设备台账的15个字段信息。
2.3、修改按钮
当点击【修改】按钮时,将选中行的所有信息依次存储到上面创建的变量中。同时打开修改界面。
实现脚本如下:
int row;row=Report1.GetSelectedRow();\\local\SBTZ_SColumn1=Report1.GetCellString(row,1);\\local\SBTZ_SColumn2=Report1.GetCellString(row,2);\\local\SBTZ_SColumn3=Report1.GetCellString(row,3);\\local\SBTZ_SColumn4=Report1.GetCellString(row,4);\\local\SBTZ_SColumn5=Report1.GetCellString(row,5);\\local\SBTZ_SColumn6=Report1.GetCellString(row,6);\\local\SBTZ_SColumn7=Report1.GetCellString(row,7);\\local\SBTZ_SColumn8=Report1.GetCellString(row,8);\\local\SBTZ_SColumn9=Report1.GetCellString(row,9);\\local\SBTZ_SColumn10=Report1.GetCellString(row,10);\\local\SBTZ_SColumn11=Report1.GetCellString(row,11);\\local\SBTZ_SColumn12=Report1.GetCellString(row,12);\\local\SBTZ_SColumn13=Report1.GetCellString(row,13);\\local\SBTZ_SColumn14=Report1.GetCellString(row,14);\\local\SBTZ_SColumn15=Report1.GetCellString(row,15);/*bool*/ ShowPicture("sbtzEdit");2.4、修改界面
在修改界面的连接处增加打开时脚本,用于将前面存储到内存变量中的数据依次显示到打开的窗口输入框内。
打开时脚本如下:
UITextBox1.Text=\\local\SBTZ_SColumn1;UITextBox2.Text=\\local\SBTZ_SColumn2;UITextBox3.Text=\\local\SBTZ_SColumn3;UITextBox4.Text=\\local\SBTZ_SColumn4;UITextBox5.Text=\\local\SBTZ_SColumn5;UITextBox6.Text=\\local\SBTZ_SColumn6;UITextBox7.Text=\\local\SBTZ_SColumn7;UITextBox8.Text=\\local\SBTZ_SColumn8;UITextBox9.Text=\\local\SBTZ_SColumn9;UITextBox10.Text=\\local\SBTZ_SColumn10;UITextBox11.Text=\\local\SBTZ_SColumn11;UITextBox12.Text=\\local\SBTZ_SColumn12;UITextBox13.Text=\\local\SBTZ_SColumn13;UITextBox14.Text=\\local\SBTZ_SColumn14;UITextBox15.Text=\\local\SBTZ_SColumn15;2.5、设置主键
前面设置数据库字段时未设置主键,这里补充设置,将设备编号ID设置为主键。
2.6、确认修改
确认修改的实现就是将输入框内的所有内容通过修改SQL语句写入到SQLServer数据库中。
看帮助写入时应该使用KDBExecuteStatement1这个函数,但是测试KDBExecuteStatement这个函数也可以正常写入,,因此就没修改为KDBExecuteStatement1,实际项目中遇到问题时,大家可以分别测试一下。
代码如下:
int a=ShowMessageBox("请检查录入信息是否正确,确认修改请点击确定修改", "提示", 1,4);if(a==1){//获取输入框信息string str1=UITextBox1.Text;//获取string str2=UITextBox2.Text;//获取string str3=UITextBox3.Text;//获取string str4=UITextBox4.Text;//获取string str5=UITextBox5.Text;//获取string str6=UITextBox6.Text;//获取string str7=UITextBox7.Text;//获取string str8=UITextBox8.Text;//获取string str9=UITextBox9.Text;//获取string str10=UITextBox10.Text;//获取string str11=UITextBox11.Text;//获取string str12=UITextBox12.Text;//获取string str13=UITextBox13.Text;//获取string str14=UITextBox14.Text;//获取string str15=UITextBox15.Text;//获取string strID=\\local\SBTZ_SColumn1;if(str1==""||str2==""){ShowMessageBox("标*为必录项,请填写后再录入!","提示",0,4);return;}//UPDATE 表名称 SET 列名称 = 新值,列名称 = 新值,... WHERE 列名称 = 某值;//SqlStr="select ID,Name,Workshop,Process,Person,Manufacturer,PurchaseDate,CommissioningDate,AgeLimit,WastageY,UpkeepCycle,RepairCycle,CurrentState,FilingDate,Remark from SC_SBTZ";string sql="update SC_SBTZ set ID='"+str1+"',Name='"+str2+"',Workshop='"+str3+"',Process='"+str4+"',Person='"+str5+"',Manufacturer='"+str6+"',PurchaseDate='"+str7+"',CommissioningDate='"+str8+"',AgeLimit='"+str9+"',WastageY='"+str10+"',UpkeepCycle='"+str11+"',RepairCycle='"+str12+"',CurrentState='"+str13+"',FilingDate='"+str14+"',Remark='"+str15+"' where ID='"+strID+"'";//string sql="insert into SC_SBTZ Values ('"+str1+"','"+str2+"','"+str3+"','"+str4+"','"+str5+"','"+str6+"','"+str7+"','"+str8+"','"+str9+"','"+str10+"','"+str11+"','"+str12+"','"+str13+"','"+str14+"','"+str15+"')";bool res,res1;res=KDBExecuteStatement("DSN=kssql1;DATABASE=SCADASQL;UID=sa;PWD=admin@123;",sql);if(res==0){KDBDisConnect("bx");KDBGetConnectID("bx","DSN=kssql1;DATABASE=SCADASQL;UID=sa;PWD=admin@123;");res1=KDBExecuteStatement("DSN=kssql1;DATABASE=SCADASQL;UID=sa;PWD=admin@123;",sql);if(res1==0){ShowMessageBox("修改数据失败,请确认设备信息是否已录或网络不通!","提示",0,1);return;}}ShowMessageBox("修改数据成功","提示",0,0);}2.7、运行测试
直接点击运行,在运行环境即可看到测试效果中演示的修改过程。
03 后记以上为通过KingSCADA实现设备台账修改功能的过程,其实写出来再看过程还是比较简单的,所谓会者不难,难者不会。
有更好更优雅的实现方式可以在交流群或留言区评论,一起让上位机功能更加人性化,更加优雅美观,相互借鉴,共同提高。