VB访问ifix 点击:1584 | 回复:5



玉香笼

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2005年1月13日
发表于:2005-01-13 10:33:00
楼主
希望在VB中读写ifix的指定标签值如何操作? 我在VB中使用DAO方式可以访问wincc的标签,其代码如下: 引用中添加DAO3.5 dim mcp as object set mcp=createobject("wincc-runtime-object") mcp.getvalue("tagname") mcp.setvalue("tagname",value)



玉香笼

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2005年1月13日
发表于:2005-01-17 17:25:00
1楼
Private Sub Command1_Click() Dim strQueryAvg As String Dim c As Integer Dim r As Integer Dim cnADO As New ADODB.Connection Dim rsADO As Recordset Set cnADO = New ADODB.Connection cnADO.ConnectionString = "DSN = FIX Dynamics Real Time Data; UID = sa; PWD = ;" cnADO.Open "FIX Dynamics Real Time Data", "sa", "" Set rsADO = New ADODB.Recordset strQueryAvg = "Select A_TAG, A_CV, A_DESC FROM JK1 where A_TAG='" & Me!Text1 & "'" 'rsADO.Open strQueryAvg, cnADO, adOpenForwardOnly, adLockBatchOptimistic rsADO.Open strQueryAvg, cnADO If rsADO.RecordCount <> 0 Then Me!Text2 = rsADO!a_cv rsADO.MoveFirst rsADO!a_cv = "setvalue" End If rsADO.Close cnADO.Close Set rsADO = Nothing Set cnADO = Nothing End Sub 按照上述代码,我已经可以从ifix中读到标签值,但在写标签时系统弹出“实时错误3251:当前记录集不支持更新,可能是提供程序的限制,也可能是选定锁定类型的限制。”

玉香笼

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2005年1月13日
发表于:2005-01-17 17:31:00
2楼
后天就开始调试了,各位高手救救小妹吧,赶紧给我个答案先!!!!

玉香笼

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2005年1月13日
发表于:2005-01-17 18:07:00
3楼
Private Sub Command1_Click() Dim strQueryAvg As String Dim c As String Dim r As String Dim cnADO As New ADODB.Connection Dim rsADO As Recordset Set cnADO = New ADODB.Connection cnADO.ConnectionString = "DSN = FIX Dynamics Real Time Data; UID = sa; PWD = ;" cnADO.Open "FIX Dynamics Real Time Data", "sa", "" Set rsADO = New ADODB.Recordset rsADO.CursorType = adOpenKeyset rsADO.LockType = adLockOptimistic strQueryAvg = "Select A_TAG, A_CV, A_DESC FROM JK1 where A_TAG='" & Me!Text1 & "'" '-----------rsADO.Open strQueryAvg, cnADO, adOpenForwardOnly, adLockBatchOptimistic rsADO.Open strQueryAvg, cnADO c = Me!Text2.Text If rsADO.RecordCount <> 0 Then rsADO.MoveFirst 'rsADO.Update A_CV, c rsADO!A_CV = Me!Text2.Text rsADO.Update End If 'rsADO.Close 在此环境中禁止此操作 cnADO.Close Set rsADO = Nothing Set cnADO = Nothing End Sub 代码改成这个样子,现在的错误是:“实时错误:[iFIX ODBC Driver][iFIX] Not support” 我怀疑ifix是不是根本不允许ADO去修改其实时数据库的内容?!!!!!!!!!!!!!!

工控帮

  • 精华:0帖
  • 求助:0帖
  • 帖子:63帖 | 675回
  • 年度积分:0
  • 历史总积分:1418
  • 注册:2001年7月06日
发表于:2005-01-18 08:15:00
4楼
我怀疑ifix是不是根本不允许ADO去修改其实时数据库的内容?!!!!!!!!!!!!!! 是的,应该不支持你用SQL方式去修改实时数据库。

ENG

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 47回
  • 年度积分:0
  • 历史总积分:77
  • 注册:2001年7月20日
发表于:2005-06-30 15:01:00
5楼
iFIX有专用的EDA函数植入到OLE环境中读写数据库,根本不用你那么复杂.

热门招聘
相关主题

官方公众号

智造工程师