jayaleck
6 days agoNew Contributor II
How do I return a range of Members?
We have a large flat hierarchy, members starting with Px_1000 to Px_9999. For example, P1_1000_27 Project 1, P5_1001 Project Yellow.... P7_9999 Project Bob. The numbers are unique (no two same number). We want a report that allows users to enter a "From" - "To" to pull back members in that range. For instance, only pull back members in the range "From" 500 To "532". Have an XFBR where I'm parsing the string, that's working, looping through and but only returning the number. The issue is that I need the entire string and description of the member. That's where I'm stuck. If anyone has done this before, would very much like know how you coded the XFBR. Thank you!
Thank you! Same concept I share what I came up with,
If args.FunctionName.XFEqualsIgnoreCase("UavailableModNumberCheck") ThenDim FromModNumber As IntegerDim ToModNumber As Integer'Validation that they entered numbers in, then converting to an integer.If args.NameValuePairs("From") = String.Empty Or args.NameValuePairs("To") = String.Empty ThenReturn "None:Name(From/To cannot be blank)"ElseFromModNumber = Integer.Parse(args.NameValuePairs("From"))ToModNumber = Integer.Parse(args.NameValuePairs("To"))End If'Validation of number entryIf FromModNumber < 1000 Or ToModNumber > 9999 ThenReturn "Name(Mod Number entry must be between 1000-9999)"Else If FromModNumber > ToModNumber ThenReturn "Name(*From* Mod Number must be less than *To* Mod Number)"Else If FromModNumber = ToModNumber ThenReturn "Name(*From* Mod Number must not be the same as the *To* Mod Number)"End IfDim ModList As List(Of MemberInfo) = BRApi.Finance.Metadata.GetMembersUsingFilter(si, "Flow", "F#Flow.Base.Where(Name DoesNotContain Jay)", True)Dim ModSplit As New List (Of String)Dim ModNumbersList As New List (Of Integer)Dim PDONumbersList As New List (Of String)'Loop through modlist, put mod numbers into separate list and mod name in a separate list.For Each FlowMod In ModListModSplit = StringHelper.SplitString(FlowMod.Member.Name, "_")If ModSplit(2) >= FromModNumber And ModSplit(2) <= ToModNumber Then'List if integers as mod numberModNumbersList.Add(Integer.Parse(ModSplit(2)))'List of mod namePDONumbersList.Add(FlowMod.Member.Name)'Brapi.ErrorLog.LogMessage(si, $"FlowMod {FlowMod.Member.Name}")End IfNextModNumbersList.Sort()Dim i As Integer = FromModNumberDim iToString As String = String.EmptyDim ReturnString As String = "F#None:Name(Unavailable Mod numbers between " & FromModNumber & "-" & ToModNumber & ")"While i <= ToModNumberIf ModNumbersList.Contains(i) TheniToString = i.ToStringIf i = iToStringFor Each PDOName In PDONumbersListIf PDOName.Contains(iToString)ReturnString = ReturnString & ", F#None:Name(" & PDOName & ")"End IfNextEnd IfElse'Mod Number is openEnd Ifi = i + 1End WhileReturn ReturnString