Topic
Apply function to a data folder
Home page › Community › Automation and VBA › Apply function to a data folder
- This topic has 4 replies and 2 voices and was last updated 9 years, 10 months ago ago by HerveM1234.
-
AuthorPosts
-
24.07.2015 at 15:20 #35205HerveM1234Participant
Hi,
I would like to applie a FPS function to every dataset contained in a folder in order to create automaticly a formula for each signal.
For example, if I have a folder containing 3 signals Va, Vb & Vc, I would like to applie the predifined function RMS_func and create 3 formulas Va_RMS, Vb_RMS, Vc_RMS.I’ve read the help file but I’m not able to do that in VBA.
Thanks for you help
24.07.2015 at 15:20 #35209HerveM1234ParticipantHi,
I would like to applie a FPS function to every dataset contained in a folder in order to create automaticly a formula for each signal.
For example, if I have a folder containing 3 signals Va, Vb & Vc, I would like to applie the predifined function RMS_func and create 3 formulas Va_RMS, Vb_RMS, Vc_RMS.I’ve read the help file but I’m not able to do that in VBA.
Thanks for you help
27.07.2015 at 09:08 #35206Bernhard KantzParticipantThere is a manual way to achieve this. Place your function formula (starting with Arguments … and named e.g. _RMS) in the folder and drag the signals onto that formula. This creates for each signal a new formula containing the application of the function on the signal.
Using Automation this small code sample performs the same task:
[code]
Option ExplicitConst FunctionPath As String = “RMS_func”
Const FunctionPrefix As String = “_RMS”Public Sub ApplyFunction()
Dim fldSignals As Folder
Set fldSignals = ActiveDatabase.ActiveFolderDim cllSignals As FpObjects
Set cllSignals = fldSignals.Objects(fpObjectTypeDataSet)Dim dsSignal As DataSet
Dim fmlApplSignal As Formula
For Each dsSignal In cllSignals
Set fmlApplSignal = fldSignals.Add(dsSignal.Name & FunctionPrefix, fpObjectTypeFormula)
With fmlApplSignal
.Author = “Macro ApplyFunction()”
.Formula = FunctionPath & “(” & dsSignal.Name & “)” & vbCrLf
.ReadOnly = True
End With
NextEnd Sub
[/code]27.07.2015 at 18:01 #35207HerveM1234ParticipantHi again,
is it possible to proceed if the folder is containning indifferently Formulas and/or Datasets?
28.07.2015 at 08:59 #35208Bernhard KantzParticipantIf you want to apply your function to only a subset of datasets present in the active folder, you can replace the argument of the folders Objects() property. E.g. your datasets all have names of a specific pattern (like 2014_11_xx_07_yy denoting a measurement from a november day starting a 7 o’clock) you may use a regular expression (“^2014_11_d{2}_07_d{2}.DAT$”) to filter out the desired selection.
More on regular expressions can be found in the Online Help in the chapter [i]Automating Processes > Automation Using FlexPro Visual Basic > FlexPro Visual Basic Reference > Objects and Collections > F > Folder > Properties > Objects[/i].
-
AuthorPosts
- You must be logged in to reply to this topic.