[Imported] Read array from script without any values set in array first.
EcoStruxure Geo SCADA Expert Forum
Schneider Electric support forum about installation, configuration, integration and troubleshooting of EcoStruxure Geo SCADA Expert (ClearSCADA, ViewX, WebX).
Send a co-worker an invite to the portal.Just enter their email address and we'll connect them to register. After joining, they will belong to the same company.
You have entered an invalid email address. Please re-enter the email address.
This co-worker has already been invited to the Exchange portal. Please invite another co-worker.
Please enter email address
Send InviteCancel
Invitation Sent
Your invitation was sent.Thanks for sharing Exchange with your co-worker.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2019-11-0502:06 PM. Last Modified: 2023-05-0312:32 AM
[Imported] Read array from script without any values set in array first.
>>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)?