这段代码的功能是将 HMIRuntime 中的四个 Tags(`cs_time`, `cs_start_B`, `cs_end_B`, `cs_flow_Z`)的数据插入到名为 `beng_2` 的 SQL Server 数据库表中。具体步骤如下:
1. 创建 `ADODB.Connection`、`ADODB.Command` 和 `ADODB.Recordset` 对象;
2. 设置数据库连接字符串并打开连接;
3. 使用 `HMIRuntime.Tags()` 方法获取四个 Tag 的值;
4. 拼接 SQL 语句,将四个 Tag 值插入到 `beng_2` 表中;
5. 执行 SQL 语句并释放对象所占用的资源。
不过这段代码还有一些错误:
1. 在拼接 SQL 语句时,中文逗号应该改为英文逗号;
2. 在插入数据时,日期时间类型需要使用格式化字符串来避免 SQL 注入等问题。
修正后的代码如下所示:
- Dim objCon, objCom, objRe, strCon
- Set objCon = CreateObject("ADODB.Connection")
- Set objCom = CreateObject("ADODB.Command")
- Set objRe = CreateObject("ADODB.Recordset")
- strCon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Info=False;Initial Catalog=ceshi;Data Source=DESKTOP-6E47LN8\WINCC;UID=chen;PWD=chen;"
- objCon.ConnectionString = strCon
- objCon.CursorLocation = 1
- objCon.Open()
- CT = FormatDateTime(HMIRuntime.Tags("cs_time").Read, vbGeneralDate)
- sb = HMIRuntime.Tags("cs_start_B").Read
- eb = HMIRuntime.Tags("cs_end_B").Read
- zf = HMIRuntime.Tags("cs_flow_Z").Read
- sq1 = "Insert Into beng_2 ([Time],[StartB%],[EndB%],[FlowZ]) Values ('" & CT & "','" & sb & "','" & eb & "','" & zf & "')"
- objCom.ActiveConnection = objCon
- objCom.CommandType = 1
- objCom.CommandText = sq1
- Set objRe = objCom.Execute
- objRe.Close
- objCon.Close
- Set objRe = Nothing
- Set objCom = Nothing
- Set objCon = Nothing
复制代码 |