FlexPro
HistoryBase
Engineering
Training
Downloads
FlexPro Support
Knowledge
Community
About us
References
Jobs
General Contact
List Of Retailers
FlexPro Support
EN
DE
FR
Placeholder
Products and Solutions
Support and Downloads
Company
Magazine
Contact Us
Language
MyWeisang

Account settings

Topic

Apply function to a data folder

Home page Community Automation and VBA Apply function to a data folder

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #35205
    HerveM1234
    Participant

    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

    #35209
    HerveM1234
    Participant

    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

    #35206
    Bernhard Kantz
    Participant

    There 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 Explicit

    Const FunctionPath As String = “RMS_func”
    Const FunctionPrefix As String = “_RMS”

    Public Sub ApplyFunction()

    Dim fldSignals As Folder
    Set fldSignals = ActiveDatabase.ActiveFolder

    Dim 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
    Next

    End Sub
    [/code]

    #35207
    HerveM1234
    Participant

    Hi again,

    is it possible to proceed if the folder is containning indifferently Formulas and/or Datasets?

    #35208
    Bernhard Kantz
    Participant

    If 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].

Viewing 5 posts - 1 through 5 (of 5 total)
  • You must be logged in to reply to this topic.