最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

代码

[复制链接]
cmt | 2023-5-31 11:50:33 | 显示全部楼层
chatGPT_小控 发表于 2023-5-31 11:38
可以使用 `Connection` 对象的 `State` 属性来判断是否已经连接到了数据库。当该属性的值为 `adStateOpen ...

把检查连接状态的代码插入下面的代码中
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
回复

使用道具 举报

chatGPT_小控 | 2023-5-31 11:51:01 | 显示全部楼层
cmt 发表于 2023-05-31 11:50
把检查连接状态的代码插入下面的代码中
Dim objCon, o ...

可以插入以下代码,用于检查数据库连接状态:
  1. Dim objCon, objCom, objRe, strCon
  2. Set objCon = CreateObject("ADODB.Connection")
  3. Set objCom = CreateObject("ADODB.Command")
  4. Set objRe = CreateObject("ADODB.Recordset")
  5. ' 连接字符串
  6. strCon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Info=False;Initial Catalog=ceshi;Data Source=DESKTOP-6E47LN8\WINCC;UID=chen;PWD=chen;"
  7. ' 设置连接字符串
  8. objCon.ConnectionString = strCon
  9. ' 设置游标位置
  10. objCon.CursorLocation = 1
  11. ' 打开连接
  12. objCon.Open()
  13. ' 检查连接状态
  14. If objCon.State = adStateOpen Then   
  15.     MsgBox "已经连接到数据库"
  16. Else   
  17.     MsgBox "未连接到数据库"   
  18. End If
  19. ' 下面是你原来的代码
  20. CT = FormatDateTime(HMIRuntime.Tags("cs_time").Read, vbGeneralDate)
  21. sb = HMIRuntime.Tags("cs_start_B").Read
  22. eb = HMIRuntime.Tags("cs_end_B").Read
  23. zf = HMIRuntime.Tags("cs_flow_Z").Read
  24. sq1 = "Insert Into beng_2 (,,,) Values ('" & CT & "','" & sb & "','" & eb & "','" & zf & "')"
  25. objCom.ActiveConnection = objCon
  26. objCom.CommandType = 1
  27. objCom.CommandText = sq1
  28. Set objRe = objCom.Execute
  29. objRe.Close
  30. objCon.Close
  31. Set objRe = Nothing
  32. Set objCom = Nothing
  33. Set objCon = Nothing
复制代码


注意,必须首先创建并打开连接,才能执行SQL语句,并且在执行完SQL语句之后需要关闭连接。因此,检查连接状态的代码应该放在打开连接的语句之后,关闭连接的语句之前。
回复

使用道具 举报

cmt | 2023-5-31 13:16:10 | 显示全部楼层
chatGPT_小控 发表于 2023-5-31 11:51
可以插入以下代码,用于检查数据库连接状态:


按照这样写运行后没有弹窗是什么原因
回复

使用道具 举报

chatGPT_小控 | 2023-5-31 13:16:22 | 显示全部楼层
cmt 发表于 2023-05-31 13:16
按照这样写运行后没有弹窗是什么原因 ...

如果没有弹窗,可能是因为连接状态检查代码中的消息框被阻止了。你可以把消息框替换成输出一条调试信息,例如:Debug.Print "已经连接到数据库" 或者 Debug.Print "未连接到数据库"。此外,也可以使用MsgBox函数的第二个参数来设置消息框的样式,例如MsgBox "已经连接到数据库", vbInformation, "提示" 就可以显示一个带有提示图标的消息框。
回复

使用道具 举报

cmt | 2023-5-31 13:29:45 | 显示全部楼层
chatGPT_小控 发表于 2023-5-31 13:16
如果没有弹窗,可能是因为连接状态检查代码中的消息框被阻止了。你可以把消息框替换成输出一条调试信息, ...

wincc7.5直接写弹不出弹窗,是不是设置有什么错误
回复

使用道具 举报

chatGPT_小控 | 2023-5-31 13:30:06 | 显示全部楼层
cmt 发表于 2023-05-31 13:29
wincc7.5直接写弹不出弹窗,是不是设置有什么错误 ...

如果在WinCC 7.5中无法弹出消息框,可能有以下原因:

1. 弹窗被阻挡了:你可以把消息框放到前面,或者使用MsgBox函数的第二个参数来指定消息框的位置和样式。

2. 消息框被其他控件覆盖了:你可以将消息框设置为模态,以确保它永远位于顶层。例如:MsgBox "Hello World", vbOKOnly + vbSystemModal, "提示"

3. 消息框的显示时间很短:你可以增加消息框的显示时间,例如:MsgBox "Hello World", vbOKOnly, "提示", 5,这里的“5”表示消息框会显示5秒钟。

4. WinCC 7.5的安全设置禁止弹出消息框:你可以打开WinCC 7.5的安全设置,检查是否禁止了弹出消息框的功能。

另外,如果你使用的是VBScript脚本,可以尝试用WScript.Echo语句代替MsgBox函数,这样可以在输出窗口中显示调试信息。
回复

使用道具 举报

cmt | 2023-5-31 13:36:09 | 显示全部楼层
chatGPT_小控 发表于 2023-5-31 13:30
如果在WinCC 7.5中无法弹出消息框,可能有以下原因:

1. 弹窗被阻挡了:你可以把消息框放到前面,或者使 ...

错误,显示未定义adStateOpen怎么解决
回复

使用道具 举报

chatGPT_小控 | 2023-5-31 13:36:39 | 显示全部楼层
cmt 发表于 2023-05-31 13:36
错误,显示未定义adStateOpen怎么解决

在WinCC 7.5中,未定义adStateOpen错误通常与数据库连接有关。adStateOpen是属于ADODB.Recordset对象的一个状态常量,表示记录集已经打开。要解决该错误,你需要确保在使用ADODB.Recordset对象时首先打开了数据库连接。

以下是一个连接到SQL Server数据库并执行查询的示例代码:
  1. Dim objConnection, objRecordset
  2. Set objConnection = CreateObject("ADODB.Connection")
  3. Set objRecordset = CreateObject("ADODB.Recordset")
  4. ' 打开数据库连接
  5. objConnection.ConnectionString = "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyDatabase;User ID=MyUserID;Password=MyPassword;"
  6. objConnection.Open
  7. ' 执行查询语句
  8. objRecordset.Open "SELECT * FROM MyTable", objConnection, adOpenStatic, adLockReadOnly, adCmdText
  9. ' 显示查询结果
  10. MsgBox "共找到 " & objRecordset.RecordCount & " 条记录。"
  11. ' 关闭对象和数据库连接
  12. objRecordset.Close
  13. Set objRecordset = Nothing
  14. objConnection.Close
  15. Set objConnection = Nothing
复制代码

在这个例子中,我们首先创建了一个ADODB.Connection对象和一个ADODB.Recordset对象。然后,使用ConnectionString属性设置了连接字符串,并调用Open方法打开了数据库连接。接下来,使用Recordset对象的Open方法执行查询语句,并使用MsgBox函数显示了查询结果。最后,我们需要关闭Recordset对象和数据库连接以释放资源。

请注意在Open方法中的第三个参数adOpenStatic和第四个参数adLockReadOnly,它们分别表示记录集的类型和锁定类型。adCmdText表示查询类型为文本命令。如果你使用不同的数据库或查询命令,请适当修改这些参数。
回复

使用道具 举报

cmt | 2023-5-31 14:24:57 | 显示全部楼层
chatGPT_小控 发表于 2023-5-26 09:31
这段代码定义了四个对象变量 `objCon`, `objCom`, `objRe` 和 `strCon`,它们分别是:

- `objCon`: ADOD ...

Sub OnLButtonDown(Byval Item, Byval Flags, Byval x, Byval y)                     
Dim objCon, objCom, objRe, strCon
Dim CT,sb,eb,zf
Dim sq1
Set objCon = CreateObject("ADODB.Connection")
Set objCom = CreateObject("ADODB.Command")
Set objRe = CreateObject("ADODB.Recordset")
strCon = "Provider=SQLOLEDB;Data Source=DESKTOP-6E47LN8\WINCC;Initial Catalog=ceshi;User Id=chen;Password=chen;"'Integrated Security=SSPI;Persist Info=False;
objCon.ConnectionString = strCon
objCon.CursorLocation = 1
objCon.Open()
If objCon.State = 1 Then
    MsgBox "数据库已连接成功!", vbInformation, "提示"
Else
    MsgBox "数据库连接失败,请检查网络连接和数据库设置。", vbCritical, "错误"
End If
CT = HMIRuntime.Tags("cs_time").Read
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 (ID,Time,[StartB%],[EndB%],FlowZ) Values ('1','" & CT & "','" & sb & "','" & eb & "','" & zf & "')"
'[Time],[StartB%],[EndB%],[FlowZ]
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
End Sub
检查错误
回复

使用道具 举报

chatGPT_小控 | 2023-5-31 14:25:15 | 显示全部楼层
cmt 发表于 2023-05-31 14:24
Sub OnLButtonDown(Byval Item, Byval Flags, Byval x ...

这段代码似乎没有明显的语法或逻辑错误,但需要注意以下几点:

1. 该代码中使用了一些 HMI 与 PLC 之间交互的函数,如 `HMIRuntime.Tags` 和 `.Read`。如果在编译过程中出现了报错,可能是因为这些函数未正确引用或使用。
2. SQL 插入语句中,逗号应该放在引号内部,而不是引号外面。例如,`sq1 = "Insert Into beng_2 (ID,Time,,,FlowZ) Values ('1','" & CT & "','" & sb & "','" & eb & "','" & zf & "')"` 中的 `Time`、`sb`、`eb` 和 `FlowZ` 之间应该用逗号隔开,并且逗号应该放在单引号内部。
3. 在 SQL 语句中,字段名和值之间应该用等号 `=` 隔开,例如:`"select * from beng_1 where field1='" & value1 & "' and field2='" & value2 & "'"`。

希望对你有所帮助!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则