EcoStruxure Geo SCADA Expert Forum
Schneider Electric support forum about installation, configuration, integration and troubleshooting of EcoStruxure Geo SCADA Expert (ClearSCADA, ViewX, WebX).
Link copied. Please paste this link to share this article on your social media post.
Posted: 2019-11-05 02:06 PM . Last Modified: 2023-05-03 12:32 AM
>>Message imported from previous forum - Category:Scripts and Tips<<
User: mchartrand, originally posted: 2018-10-25 19:36:38 Id:285
This is a re-posting from the obsoleted (October 2018) "Schneider Electric Telemetry & SCADA" forum.
_______
**_reon1101:
I'm looking for a solution on reading a CVariableStringArray. The array values have never been set. I want to read them in script from a CVariableStringArray. Because of the array im trying to read element values are not set it returns an unspecified error. If I go ahead and set values in DB tree to the array and run script it works fine. Please help with this._**
___________________
AWoodland:
Can you provide examples of your code for the reading?
____________________
**_reon1101:
I want to query a group of instances, create array of these instances.
then build form to show that array in list box, but first set selected with the array that is empty. but to start the list will have none selected until i select them.
finally i will set the array to the is selected
again if i set the elements in array outside of script it will work fine. its only when no element are ever set or if i make the query array larger.
Thanks for help_**
_Public Sub Zone_Assign
Set oZone_Name = Server.FindObject(Server.ThisObject.Parent.FullName)
oZone_Grp_Name = oZone_Name.Parent.Name
Set oZone_Sirens = oZone_Name.FindChild("Sirens")
Set oSiren_Grp = Server.FindObject("Sirens")
Set DGRS = Server.Query("SELECT Name AS Name FROM CDBOBJECT WHERE ( TypeName = 'CTemplateInstance' ) AND ( ParentGroupName Like '"&oSiren_Grp.Name&"' )")
DGRows = DGRS.Rows
For r = 0 To (DGRS.RowCount - 1)
Redim Preserve oSirens(r)
oSirens(r) = DGRows(r,0)
Next_
_arrCount = uBound(oSirens) + 1_
_Form.Init (oZone_Name.Name + " Siren Assignment")
Set frmGrpbx1 = Form.AddGroupBox(0,0,90,17,"Select Sirens")
Set frmCmbo1 = Form.AddListBox(2,2,10,4,oSirens)
frmCmbo1.Multiple = True
x = 0
For x = 0 To (arrCount - 1)
IF Server.GetOPCValue(""& oZone_Name.FullName &".Sirens.Value["& x &"]") "" THEN 'Here is the problem
frmCmbo1.SetSelected x,TRUE
END IF
Next
Set frmOKButton = Form.AddPushButton(20,14,"OK")
frmOKButton.Default = True
Set frmCancelButton = Form.AddPushButton(56,14,"Cancel")
Form.Show_
_If Form.Selection = "OK" Then_
_x = 0
For x = 0 To (arrCount - 1)
IF frmCmbo1.IsSelected(x) Then
Server.SetOPCValue(""& oZone_Name.FullName &".Sirens.Value["& x &"]"),oSirens(x)
Else
Server.SetOPCValue(""& oZone_Name.FullName &".Sirens.Value["& x &"]"),""
END IF
Next
End If
End Sub_
_________________________________________
evandew:
I reckon you are best of with creating some of your own error handling, as an example:
_Sub ArrayError()
For x=0 to 2
On Error Resume Next
msgbox Server.GetOPCValue("SA.Value["&x&"]")
IF Err.Number0 Then
msgbox "x="&x
Exit For
End if
Next
On Error GoTO 0
End sub_
_______________________________
**_reon1101:
That works for set selected but will not write the isselected part of the array._**
_x = 0
For x = 0 To (arrCount - 1)
IF frmCmbo1.IsSelected(x) Then
MsgBox oZone_Name.FullName + ".Sirens.Value["& x &"]"
Server.SetOPCValue(""& oZone_Name.FullName &".Sirens.Value["& x &"]"),oSirens(x)
Else
Server.SetOPCValue(""& oZone_Name.FullName &".Sirens.Value["& x &"]"),""
END IF
Next_
_____________________________
geoffpatton:
I have not tried setting an array from scripts but have you tried setting it through a interface method?
I am not sure how to do this for an array maybe Erik can give an example.
This is my stab in the dark at it but I am pretty sure I do not have it quite right.
_Dim objSirensCmd
Set objSirensCmd = Server.FindObject(Server.GetOPCValue(""& oZone_Name.FullName &".Sirens.FullName["& x &"]"))
objSirensCmd.Interface.SetElement oSirens, x_
edit: had my variable wrong on the last line of the example
_____________
evandew:
Can you explain what the problem is with the set selected (what line gives you an error)?
It works for me as for as I can tell.
Link copied. Please paste this link to share this article on your social media post.
Create your free account or log in to subscribe to the forum - and gain access to more than 10,000+ support articles along with insights from experts and peers.