WinCC连接Oracle数据库(VB)

现在想用WinCC和Oracle数据库连接通信。连接已经没有问题,简单的读写也没有问题。
 我得代码如下:
 strConnectionString = "DRIVER={Oracle ODBC Driver};UID=Sys;PWD=Sys;DBQ=Sys;"
 strSQL = "select name from stu where ID = 1;" 
 Set objConnection = CreateObject("ADODB.Connection")
 objConnection.connectionString = strConnectionString
 objConnection.Open
 Set objRecordset = CreateObject("ADODB.Recordset")
 Set objCommand = CreateObject("ADODB.Command")
 objCommand.ActiveConnection = objConnection
 objCommand.CommandText = strSQL
 Set objRecordset = objCommand.Execute
 lngCount = objRecordset.Fields.Count
 If (lngCount>0) Then
 objRecordset.movefirst
 lngValue = objRecordset.Fields(0).Value
 HMIRuntime.Tags("dbValue").Write lngValue
 ...
 (dbValue为我自己定义的接受数值的内部变量)
 以上代码经测试没有问题,现在还有些功能不知道怎么实现:
 1,当我想在STU表中选择ID = 1时候的两列:Name和Address(都存在)的时候,如何操作,上述过程只选择了Name,如果写入"Select name,address from stu where id = 1;"的时候,objRecordset.Fields(0).Value按我得理解应该有两个列的数值,这时候想给我的变量赋值要怎么做呢?(以dbValue1,dbValue2为例)
 2,我如何在我得SQL语句中加入变量,比如,当我要执行插入语句"insert into stu(id,name) values(3,'RRR')"直接excute就可以了,但是,如果我得'RRR'是一个变量(str变量)来的值,那要怎么写呢?我尝试了"insert into stu(id,name) values(3,'"+str+"')"不行。不知道怎么做了。
 3,当我想对Recordset取得的结果进行有无判断的时候,按照我得理解,我是检查lngCount是否等于0,但实际上既是搜索结果为空的时候,lngCount依然为1(为多个的时候也是1),所以if无论如何都会被执行(else总部执行),不知道错到什么地方了,要实现这种功能我应该怎么办呢?

 -----------
 另外上次提问关于Wincc中方法的应用问题的时候,分给错了。。。应该给 dcount107的,由于匆忙没有仔细看, 分数给错了,dcount107得答案非常简明到位,希望 dcount107能看到,多谢了。

问题补充:
第二个问题已经解决了,用那种方式是可以的,刚才可能代码写错了。请大家集中在第一个和第三个问题上吧。谢谢。

最佳答案

咦,我看到了,呵呵。问题解决就行,不必介怀。

 说实在话,你的问题已经远远超出了WinCC的范围,建议你多找一些数据库方面的资料看看。

 1、"Select name,address from stu where id = 1;"
 objRecordset.Fields(0).Value  就是name字段的值
 objRecordset.Fields(1).Value  就是address字段的值
 为了使程序更加明了,建议使用objRecordset.Fields("name").Value和objRecordset.Fields("address").Value的方法;

 3、objRecordset.Fields.Count这里取到的是字段的数量,而不是记录的数量,要用objRecordset.RecordCount;

提问者对于答案的评价:
非常感谢!!!我还有个问题,已经没有分数了,用MJconfig这个id发了问题了,50分,希望你也能帮我回答啊!!太感谢了!!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc273014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午9:37
下一篇 2019年6月11日 上午9:37

相关推荐

  • webux外网发布

    做了webux和navigator发布,由于是校园网每次重启都要更改IP地址,而且必须是同网段的内网的电脑或者手机能查看,如何发布到外网呢,这方面找不到比较具体的资料 最佳答案 花…

    SIMATIC WinCC 2021年7月5日
  • WINCC归档周期问题

    我想实现这个一个应用:选择性周期归档,周期是两个小时。我的问题是:假设开条条件8:00为TRUE,9:00FALSE,不够一个归档周期,这种情况归档数据库中是不会写入任何过程值的。…

    SIMATIC WinCC 2019年6月11日
  • wincc发布到手机

    wincc怎样发布到手机 最佳答案 用webux,wincc web服务器和手机都连接到同一个无线路由器上就行了。这样是在局域网内使用。如果要用外网,你需要有外网固定ip…

    SIMATIC WinCC 2021年7月5日
  • WINCC AlarmControl 信息只显示1000条

    WINCC  AlarmControl 中的报警信息最多显示1000条,只能查询3-5天的时间,报警已归档,归档组态下图,为什么查1月以前不行 问题补…

    2021年7月5日
  • wincc控件问题123

    使用这个控件总是在运行时候弹出这些东西 问题补充:都取消了还是这样,反正打开有这个控件的页面他就会弹出这个窗口,是缺少什么东西吗? 图片说明:    &nbsp…

    2021年7月5日
  • wincc趋势显示信号莫名突变

    近期,在查看wincc中变量趋势时,发现热电阻模拟量信号点突然增大,其他的模拟量点变小,基本上每8个小时出现一次。我截取一个测点的趋势图。检测step7的程序和wincc画面中点的…

    2021年7月5日
  • 冗余CPU412-3H如何实现与WINCC V6.2的联接?

    如题。正常PLC都是直接上交换机与WINCC联接,使用WINCC内部协议直接采集PLC系统信号。想问冗余PLC有什么不一样?使用CP1613卡起什么作用?谢谢! 最佳答案 通过CP…

    SIMATIC WinCC 2019年6月10日
  • 关于KTP700 Basic的问题

    我有一块屏一直生产是正常,关机后重新开关就一直在SIMATIC HMI画面无法进入系统,用PROSAVE无法连接,怎么处理 问题补充:用电脑连接通讯不上怎么刷新啊? 钻石…

    SIMATIC WinCC 2021年7月5日
  • wincc vbs 标准模块 过程调用

    我在标准模块中写了一个过程,最简单的sub p1()msgbox "aaa"end sub然后想在某个动作中调用p1但没有反映,哪…

    SIMATIC WinCC 2019年6月11日
  • WINCC可不可以在退出时保存变量的值

    WINCC可不可以在退出时保存变量的值,下次启动时就可以运用 最佳答案 不能,需要保存的值可以使用PLC的变量,或则使用数据库保存,开机运行的时候在读出来就可以了 提问者对于答案的…

    SIMATIC WinCC 2019年6月11日