I am trying to create a new calculated dataset in VBA and then programmatically adding it to an existing trend.
Using the example in VBA Language Reference help, I came up with this code:
Dim MyDatasets As Datasets
Dim MyDataset As PIExpressionDataset
Dim MyDataPoints As DataPoints
Dim MyDataPoint As DataPoint
Dim MyPlaceHolders As Placeholders
Dim MyPlaceHolder As Placeholder
Dim MyColumn As String
Dim MyColumns As Columns
Dim MyDisplay As Display
Dim MyDisplays As Displays
Dim MySymbols As Symbols
Dim MyTrend As Trend
Dim MyTrace As Trace
Dim Application As Object
Set MyDatasets = Application.Datasets
Set MyDataset = MyDatasets.Add("NewCalc", Nothing, True, 1, True, pbDatasetPIExpression)
Set MyDataset = MyDatasets.GetDataset("NewCalc")
MyDataset.Expression = "If TagVal('TAG','*') = DESIREDSTATE Then 'TAGTODISPLAY' Else NoOutput()"
MyDataset.RefreshInterval = 3600
MyDataset.ColumnName = "Value"
MyDataset.Interval = "10m"
MyDataset.Description = "Calculated Dataset"
MyDatasets.SetDataset MyDataset
Set MyPlaceHolders = MyDataset.Placeholders
Set MyPlaceHolder = MyPlaceHolders.Item(1)
MyPlaceholder.SetValue("Value1", pbcPlaceholderText)
Set MyColumns = MyDataset.Columns
MyColumn = MyColumns(1)
Set MyDisplays = Application.Displays
Set MyDisplay = MyDisplays.Item(1)
Set MySymbols = MyDisplay.Symbols
Set MyTrend = MySymbols.Item("Trend1")
MyTrend.AddTrace (MyColumn)
MyTrend.CurrentTrace = "MyTrace"
Set MyDataPoint = MyTrend.DataPoint
Set MyPlaceHolders = MyDataPoint.Placeholders
Set MyPlaceHolder = MyPlaceHolders.Item(1)
MyPlaceHolder.Value = "NewValue"
However, I encounter multiple errors with this. I'm not all that sure my dataset I create is completely valid.
It doesn't like the syntax MyPlaceholder.SetValue line, it is requiring an expression of the form MyPlaceholder.SetValue() = __. Also, VBA is saying the I haven't defined what a trace was (Dim MyTrace As Trace). The final major issue I am having with this is the last line (MyPlaceHolder.Value = "NewValue") is saying "Can't assign to read-only property".
Could someone help me come up with a functioning VBA code to get the dataset into a graph?