ODBC或ADO与数据库的关联

我想通过VB脚本建立与数据库关联,将数据存入。
1、西门子技术人员曾经暗示通过ODBC或ADO打开或关闭数据库的执行时间很长。因为我信息存储的时间间隔最短2S,所以想问一下能不能通过这个方式将数据存入。
2、西门子技术人员提供的程序如下:
ODBC:
'VBS108
Dim objConnection
Dim objCommand
Dim objRecordset
Dim strConnectionString
Dim strSQL
Dim lngValue
Dim lngCount

strConnectionString = "Provider=MSDASQL;DSN=riqi;UID=;PWD=;"

lngValue = Now   ’ Date/Time/Now

 strSQL = "INSERT INTO Table1 (riqi) VALUES ('" & lngValue & "')"    ’字符型

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

objCommand.Execute

Set objCommand = Nothing
objConnection.Close
Set objRecordset = Nothing
Set objConnection = Nothing
 
或ADO:
Dim objConnection
Dim strConnectionString
Dim lngValue
Dim strSQL
Dim objCommand
strConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=WinCC;Data Source=LEMONVISTA"
lngValue = HMIRuntime.Tags("AccessTag").Read
strSQL = "INSERT INTO WINCC_DATA (TagValue) VALUES (" & lngvalue & ")"  ’数值
Set objConnection = CreateObject("ADODB.Connection")
objConnection.ConnectionString = strConnectionString
objConnection.Open
Set objCommand = CreateObject("ADODB.Command")
With objCommand
    .ActiveConnection = objConnection
    .CommandText = strSQL
End With
objCommand.Execute
Set objCommand = Nothing
objConnection.Close
Set objConnection = Nothing
3、我的程序是:
Dim objConnection
Dim objCommand
Dim objRecordset
Dim strConnectionString
Dim strSQL
Dim lngValue
Dim lngCount

Dim zhi
Dim G
Set zhi =HMIRuntime.Tags ("值")
Set G =HMIRuntime.Tags ("归档")


G.Read
If G.Value=1 Then

Set objConnection =CreateObject("ADODB.Connection")
strConnectionString = "Provider=WINCCOLEDBProvider.1;Catalog = CC_TEST_11_01_05_14_55_59R;Data Source=.\WINCC"
MsgBox("00000")

lngValue = HMIRuntime.Tags ("名称").read
objConnection.ConnectionString = strConnectionString


MsgBox("11111")
objConnection.Open

strSQL = "INSERT INTO Table_2 (MC) VALUES ('" & lngValue & "')"   '字符型

Set objRecordset = CreateObject("ADODB.Recordset")
Set objCommand = CreateObject("ADODB.Command")

objCommand.ActiveConnection = strConnectionString
objCommand.CommandText = strSQL
MsgBox("66666")
objRecordset=objCommand.Execute
MsgBox("77777")
Set objCommand = Nothing
objConnection.Close
Set objRecordset = Nothing
Set objConnection = Nothing
MsgBox("55555")
zhi.Read
zhi.Value =zhi.Value+1
zhi.Write 

End If
在调试中“objRecordset=objCommand.Execute”后不能往下执行,不能弹出77777的窗口。
我看过很多通过ODBC建立与数据库链接的程序,大体上都是一样的,ADO的程序跟ODBC的差不多
能详细说明链接和调试方法吗?

问题补充:
我建立与数据库的链接,目的是要向数据库中写入数据,当新的数据来时自动添加一行,一直就这么存储下去。
我并不需要查询数据库里面的数据,然后写入EXCEL表格。
能不能确认几个信息:
1、与数据库链接时,用户名,密码的表达方式。
2、数据库链接的名字,表名等的表达方式(这个表格是在数据库里单独建立吗?我是单独先建了一个),如:CC_test110_11_01_20_10_33_36R,Table_2。
3、变量的链接或表达方式,如字符串或数值的表达方式。
4、ODBC等有关的操作信息
等等我没考虑到的关键信息?

非常感谢

最佳答案

可以参考:
http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=62690&cid=1032
问题补充:
一般数据库的ADO操作代码如下:
Dim cnn As String
   cnn = "Provider=SQLOLEDB.1;Password=3333;Persist Security Info=True;User ID=sa;Initial Catalog=dbuser;Data Source=VECTRON11\WINCC"
   Set cc1 = CreateObject("adodb.connection")
       cc1.ConnectionString = cnn
       cc1.CursorLocation = 3
       cc1.Open
   Dim rst As Object
   Set rst = CreateObject("adodb.recordset")
   Dim ssql As String
       ssql = "select * from TagUncompressed where ValueID=" & txtid.Text & " and TimeStamp between '" & txtstime.Text & "' and '" & txtetime.Text & "'"
       rst.Open ssql, cc1
1、与数据库连接时用户名和密码看cnn字符串中的password、user id等信息。
2、数据库的名字看cnn字符串中Initial Catalog,而表名从ssql字符串中看得到,比如查询语句是from后面的就是表名(数据库和表你可以自己新建一个,也可以用系统自带的;数据库我一般都用dbuser,表一般都是用自己建的)
3、变量的表达式主要体现在ssql字符串中,主要是对数据库操作
4、数据库的住哟操作:
查询语句:
 ssql =select * from infor where ValueID=" & txtid.Text & " and TimeStamp between '" & txtstime.Text & "' and '" & txtetime.Text & "'"
  
插入一行:
ssql ="INSERT INTO infor " _
  & "(FirstName,LastName, Title) VALUES " _
  & "('Harry', 'Washington', 'Trainee');"
修改值:
ssql ="UPDATE infor " _
  & "SET ReportsTo = 5 " _
  & "WHERE ReportsTo = 2;"
其中infor为表名,ssql中的信息比如表名和字段可以固定也可以用变量连接。另外数据库操作完成以后cc1,rst等数据库都得释放,如Set cc1 = Nothing
   Set rst = Nothing
       cc1.Close

提问者对于答案的评价:
其实我看的很晕菜。
一个小问题让大家费心了。

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

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

相关推荐

  • wincc项目的打开

    原先正常,就这几天没有用,打开原先的项目或新建项目都是这个提示。有遇到这种情况的没有? 问题补充:忘记上传图片了 图片说明:    最佳答案 那就是软件出问题了…

    2021年7月5日
  • wincc按钮及IO输出问题

    1.想用1个按钮,同时置位3个变量,几秒之后复位此按钮,不能让按钮一直为1,VBS脚本怎么写。2.读取设备的数据比如1000,想除以100,在属性哪里可以修改? 问题补充:IO变量…

    SIMATIC WinCC 2021年7月5日
  • WINCC项目移植后文字变成问号如何解决?

    移植后的项目,在另外一台电脑文字都变成了问号 图片说明:    最佳答案 点击视图下的语言按钮,将语言修改成原来项目中所使用的语言。即可看到,文字恢复正常! 图…

    2020年11月1日
  • 历史数据存到优盘

    现在我创建了历史数据文档,存储路径也对,优盘用的三星的,仿真可以得到数据,实际下载到KTP700精简屏幕里,不行。问题出在哪里。精简屏识别那个牌子的优盘,西门子优盘小容量的停产了 …

    SIMATIC WinCC 2021年7月5日
  • SQL200 装不上去

    我这个SQL 2000是为WINCC安装的,以前也是从硬盘上直接安装很正常。昨天我重装系统后,再安装SQL 2000,提示说要插入安装盘,并且说如果有其他自动程…

    SIMATIC WinCC 2019年6月11日
  • wincc flexible 2008 SP5 打不开以前的老版程序

    新装的wincc flexible 2008 SP5 打不开以前的老的程序不知什么原因,具体见图片 图片说明:    &…

    2021年7月5日
  • WINCC报警画面问题

    报警窗口正常是在某个变量置1时,触发报警,复位为0时,取消报警!!!可不可以改成相反情况,即当变量为1时,报警消失,报警为0时触发变量报警? 最佳答案 设置成低电平处罚报警,或梯形…

    SIMATIC WinCC 2018年12月9日
  • wincc与wincc flexible的选择

    最近有一个S7-300+PC 的项目。 对于上位机的软件选择,本人现在有很大困惑。希望各位朋友给予帮助!谢谢! 一.要求如下: 1.上位机要…

    SIMATIC WinCC 2019年6月11日
  • WINCC VBS 脚本写数据到SQL

    以下代码我在全局脚本或者通过按钮事件都无法将testa\testb两个变量的值写入baobiao1的new表格内.找不出原因……求助Option Explicit…

    SIMATIC WinCC 2017年10月29日
  • 对象颜色对应的数值在哪里查

    用C脚本改变一个对象颜色的时候,颜色是作为一个数值返回的。各种颜色对应不同的数值,这个数值在哪里可以查到呢? 最佳答案 给你一个查询颜色的网站,注意使用IE浏览器或IE兼容模式的浏…

    SIMATIC WinCC 2019年6月10日