请教各位专家,我需要从SQL的PW_USER 的Table 中根据NAME栏的数值取出GRPID的数值,并根据GRPID的值给一个内部变量赋值:具体一点就是,在PW_USER Table中,有一栏的信息是Name对应的数值时“a”,GRPID对应的数值是 1000,当我在WinCC中用用户名“a”登陆时,可以取得GRPID 的值,这个值可以通过一个内部变量在WinCC中显示出来,不知道该如何下手,谢谢!
最佳答案
GRPID仅仅是用户所在组代表的ID,意义不是很大,一般去用户组比较有意义。
这是我以前用的VBS脚本,稍微改了一下。
Dim oConn,oRs,strConn
'********************创建COM对象************************
Set oConn=CreateObject("ADODB.Connection")
Set oRs=CreateObject("ADODB.RecordSet")
'*********************读取DSN并连接数据库************************
Dim DSN
DSN = HMIRuntime.Tags("@DatasourceNameRT").Read
If Len(DSN)<0 Then Exit Sub
DSN = Mid(DSN,1,Len(DSN)-1)
'HMIRuntime.Trace "DSN : " & DSN & vbCrLf
strConn="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=.\WINCC;Initial Catalog='" & DSN & "';"
HMIRuntime.Trace strConn & vbCrLf
oConn.Open strConn
'*********************获取用户所在用户组名************************
Dim strSQL
strSQL="SELECT NAME FROM PW_USER WHERE ID IN (SELECT GRPID FROM PW_USER WHERE NAME = '" & HMIRuntime.Tags("@CurrentUser").Read &"')"
HMIRuntime.Trace "strSQL : " & strSQL & vbCrLf
oRs.Open strSQL,oConn,1,1
If Not oRs.eof Then
MsgBox oRs("NAME")
'HMIRuntime.Tags("GRPNAME").Write oRs("NAME").Value
End If
'*********************卸载COM对象************************
oRs.Close
Set oRs = Nothing
oConn.Close
Set oRs = Nothing
提问者对于答案的评价:
非常感谢!你太强了!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc274472.html