The document discusses various ways to use @Formula in Lotus Notes and XPages applications. It covers using @Formula for input validation, computed values, view selection formulas, and more. Specific @functions discussed include @Success, @Failure, @If, @Trim, @ProperCase, @LowerCase, @ReplaceSubstring, @Round, @Random, @ThisValue, @ThisName, @SetEnvironment, @Environment, @Adjust, @Text, @Unique, @Transform, @Sort, @Max, @Min, and @Matches. Examples are provided for how to use many of these @functions.
This PowerPoint presentation helps the beginners, business analysts, etc to understand the importance of the basic and advanced functions in MS Excel. Also for the interviewees to have a quick look before heading to their interview. This guide defines the excel functions with the appropriate syntax and an example.
This PowerPoint presentation helps the beginners, business analysts, etc to understand the importance of the basic and advanced functions in MS Excel. Also for the interviewees to have a quick look before heading to their interview. This guide defines the excel functions with the appropriate syntax and an example.
If you have inherited workbooks from
someone else or if you have imported
data from external data sources, you
have probably come across data that
was either structured or formatted (or
both) in such a way that it was either
difficult to read or difficult to work
with. It could be mainframe data that
arrives as all-uppercase letters, dates
that appear in non-date formats,
phone numbers that don’t have dashes
or parentheses, or fields that combine
multiple pieces of data (such as first
names and last names).
In September, 2018, we released dynamic array formulas for Excel for Microsoft 365. The differences between dynamic arrays
and legacy Ctrl+Shift+Enter (CSE) formulas are discussed below.
Dynamic array formulas:
Can "spill" outside the cell bounds where the formula is entered. The following example shows the RANDARRAY function in
D1, which spills across D1:F5, or 5 rows by 3 columns. The dynamic array formula tec
An SQL JOIN clause combines columns from one or more tables in a relational database. It creates a set that can be saved as a table or used as it is. A JOIN is a means for combining columns from one (self-table) or more tables by using values common to each.
From usability to performance, analytics to architecture; as report developers, the user experience design (UX) of your data model is quickly becoming more important than the pretty pictures that sit on top of it. This session will concentrate on the design decisions needed to increase the usage of your reports.
10 Excel Formulas that will help you in any JobHitesh Biyani
These are some basic and moderate excel formulas but are widely used in a corporate world be it any industry. A must read for freshers looking to seek a job with profiles in Banking, Insurance, BPO / KPO (Data support), etc
If you have inherited workbooks from
someone else or if you have imported
data from external data sources, you
have probably come across data that
was either structured or formatted (or
both) in such a way that it was either
difficult to read or difficult to work
with. It could be mainframe data that
arrives as all-uppercase letters, dates
that appear in non-date formats,
phone numbers that don’t have dashes
or parentheses, or fields that combine
multiple pieces of data (such as first
names and last names).
In September, 2018, we released dynamic array formulas for Excel for Microsoft 365. The differences between dynamic arrays
and legacy Ctrl+Shift+Enter (CSE) formulas are discussed below.
Dynamic array formulas:
Can "spill" outside the cell bounds where the formula is entered. The following example shows the RANDARRAY function in
D1, which spills across D1:F5, or 5 rows by 3 columns. The dynamic array formula tec
An SQL JOIN clause combines columns from one or more tables in a relational database. It creates a set that can be saved as a table or used as it is. A JOIN is a means for combining columns from one (self-table) or more tables by using values common to each.
From usability to performance, analytics to architecture; as report developers, the user experience design (UX) of your data model is quickly becoming more important than the pretty pictures that sit on top of it. This session will concentrate on the design decisions needed to increase the usage of your reports.
10 Excel Formulas that will help you in any JobHitesh Biyani
These are some basic and moderate excel formulas but are widely used in a corporate world be it any industry. A must read for freshers looking to seek a job with profiles in Banking, Insurance, BPO / KPO (Data support), etc
These are MS Excel Tips and tricks you might not know, which will advance your skills in using Excel, also these tips and tricks are the main Job exams questions
A "M"ind Bending Experience. Power Query for Power BI and Beyond.Alex Powers
Power Query is quickly becoming the number one skill your employees NEED TO HAVE working in a modern workplace. Join Alex Powers as he demystifies the Power Query M Language, writing your own custom solutions and how to approach the language in a way that makes sense to both technical and non-technical users.
A brief, language-no-specific introduction to programming concepts - some ways to approach a programming problem, and general characteristics of programming languages (with a bit of a slant towards scripting languages).
2 Minutes to Learn, A Lifetime to Master - Agile Scrum for CollaborationKathy Brown
One of the co-founders of scrum has said it takes “two minutes to learn, but a lifetime to master”. In this session, Kathy will cover what Agile Scrum actually IS and how you can benefit from using it in your projects. She’ll cover the basic concepts (duration will be slightly longer than two minutes). She will also show you how to avoid common Agile nightmares. Kathy will compare Agile to other project management techniques and demonstrate why Agile is better for you, your stakeholders, your boss, and ultimately your end users. Kathy promises the session will be shorter than the average lifetime in duration.
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014Kathy Brown
IBM Connect 2014
XPages: Still No Experience Necessary
Step by Step see how to create an XPages application. Create a help desk ticket app, including CRUD (Create, Read, Update, Delete)
Uno! Deux! Three! Making Localization of XPages as Easy as 1-2-3Kathy Brown
From IBM Connect 2014, Making Localization of XPages as easy as 1-2-3. We show what comes "out of the box" and also how to localize what isn't "out of the box".
Domino Designer for Eclipse (DDE) has hundreds, maybe even thousands, of settings and customization options. But do you really know how to make it work well for you? Julian and Kathy will give you their favorite tips and tweaks for using DDE: making it faster, easier to use, and even how to track down some pesky errors. We will show you how to make DDE sing! (Literally, it will sing). Come to this session to get under the hood [bonnet] of DDE and make it do things you never thought it could do.
Tools for the Domino Developer - BLUG presentation versionKathy Brown
Opening the Toolbox: Tools for the Domino Developer
It’s always important to have the right tool for the job. You wouldn’t use a screwdriver to hammer in a nail. It might eventually work, but it would take a lot longer. Tradesmen like plumbers and electricians make it look easy, but sometimes it is because they have all of those specialized tools. Kathy will open up the toolbox and show you some of the tools available to make your job as a Domino Developer even easier. Even better, most of the tools are free! She’ll cover tools for agents, XPages, browsers, testing, ideas for building your own tools, and more. It's like a home improvement show for developers!
Learning To Run - XPages for Lotus Notes Client DevelopersKathy Brown
You’re an experienced Lotus Notes developer. You’ve been doing “classic” development for years. You know LotusScript better than your native language. You know @Formula like the back of your hand. But when it comes to Xpages and Javascript, you feel like you’re learning to walk all over again. This session will cover some tips and tricks to get you up and running in Xpages. Learn how to translate what you already know, into what you need to know for Xpages. Find out where to get the information to be just as skillful at Xpages as you are with Notes client development.
Want to build an XPages application, but not sure how? Kathy and Dave will show you how to build a sample help desk application from start to finish. Step by Step they will show you how to create, read, update, and delete tickets. Along the way you'll be introduced the most common XPages concepts like SSJS, Custom Controls, View and Repeat Controls, Extension Library, CSS frameworks, and much more. Go home with a working application that you can use today!
When your administrator and your developer are one and the same, and they’re both you, things can get confusing. As the administrator, you’ve got a lot of power. Frequently, the role of administrator is to lock things down, keep the server running smoothly and tune performance. As the developer, you want a lot of power. You want unlimited agents to run anytime you want, as frequently as possible, with little to no limitations! So how do you reconcile these opposing needs when you have to play both roles? We’ll show you how to use separate IDs, location documents and other failsafes to make sure your party of one is successful!
UKLUG - Open The Toolbox - Tools for the Domino DeveloperKathy Brown
It’s always important to have the right tool for the job. You wouldn’t use a screwdriver to hammer in a nail. It might eventually work, but it would take a lot longer. Tradesmen like plumbers and electricians make it look easy, but sometimes it is because they have all of those specialized tools. Julian and Kathy will open up the toolbox and show you some of the tools available to make your job as a Domino Developer even easier. Even better, most of the tools are free! They’ll cover tools for agents, XPages, browsers, testing, ideas for building your own tools, and more. It's like a home improvement show for developers!
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Neuro-symbolic is not enough, we need neuro-*semantic*
BP208 Fabulous Feats with @Formula
1. Kathy Brown | Running Notes
BP208
Fabulous Feats with @Formula:
IBM Lotus Notes Client, Xpages
and Beyond
2. Agenda
Where to use @Formula
Using @Formula to work with lists
@Formula in XPages
Comparing @Formula to LotusScript
What’s new with @Formula
Some Old, but Cool Tricks
3. Where to Use @Formula
Actions, buttons, hotspots, etc. Input validation
Computed values Input translation
Hide/when formula View selection formula
Window titles XPages!
Default field values
Column formula
Section editor
Not all @functions can be used in all contexts!
4. Input Validation
Use @Success to validate the entered data and @Failure to reject the data and
provide a message to the user
@Success will allow the refresh or save of the document to continue
@Failure will cause the refresh or save to fail, and return the cursor to the failed
field (if not hidden)
Use @Formula to disallow a single blank entry, or blank entries across several
fields
@If (@ThisValue != “”; @Success; @Failure (“Please enter a value.”))
5. More Input Validation
You can enter @Formula in the input validation event for each field,
Or combine the @Formula in one field to eliminate multiple notifications to the
user
@If (( field1 = “” | field2 = “” | field3 = “”); @Failure (“Please enter all of the
required fields.”); @Success)
6. Even More Input Validation
Remember that unless you code to prevent it, (@IsDocBeingSaved), every refresh
of the document will trigger the input validation event
Irritating if the user refreshes the document before completing the form and every
field on the form disallows blank entries
7. Still More Input Validation
Requiring a particular value is quite simple
@If (@ThisValue > 100; @Failure (“This field cannot contain a value larger
than 100”); @Success)
@Matches or @Length (among other @functions) can be used to check format or
particular characters
@If (@Matches (@ThisValue; “{0-9} {0-9} {0-9} {-} {0-9} {0-9} {0-9} {-} {0-9}
{0-9} {0-9} {0-9}); @Success; @Failure (“Phone numbers must be in xxx-
xxx-xxxx format.”)
8. Input Translation
Trim and replace data to make user-entered data more consistent
Translate the data entered into data that is usable by the application
When possible, it is more user-friendly to translate the data rather than fail
validation and require the user to re-enter data
9. @Trim
@Trim does just what it says, it trims any extra white spaces from text or a text list
It does not remove tabs or new lines
10. @ProperCase and @LowerCase
@ProperCase and @LowerCase convert text or text lists to either proper case or
lower case, respectively
@LowerCase is particularly useful for making user-entered data consistent before
checking for a specific value
Three different users may enter “San Antonio,” “SAN ANTONIO,” and “san
antonio”
Lower case text is preferred for internationalization
11. @ReplaceSubstring
@ReplaceSubstring and @Replace are very powerful @functions
Essentially they provide find and replace functionality on strings or lists of strings
symbols := “!” : “@” : “#” : “$” : “%” : “^” : “&” : “*” : “+” : “=”;
result := @Trim (@ReplaceSubstring (field1; symbols; “”))
@ReplaceSubstring (@ThisValue; “” ; “/”)
@ReplaceSubstring (@ThisValue; @NewLine; “ ”)
12. @Round
Numbers can be tricky in Domino development, particularly during multiplication
and division
3.3*3.3 = 10.89
3.33333*3.33333 = 11.11
Use @Round to make decimal placing consistent
Note that @Round works differently than the Round function in
LotusScript
@Round(10.555; 0.1) = 10.6
Round(10.555, 1) = 10.6
13. @Random
@Random generates a random number between 0 and 1
Use the following formula to create a randomly generated number between x and
y
(y – x) * @Random + x
Help file!
14. @ThisValue and @ThisName
@ThisValue can be used in field formula to get the value of
that field
@ThisName provides the name of the current field
No Hard Coding!
Re-use code!
Can’t be used outside of field formula
Can’t be used in a hide formula
15. @SetEnvironment and @Environment
@SetEnvironment can set or create a variable in the user’s notes.ini file (or Notes
Preferences on a Mac)
Use @Environment to get the variable value from the notes.ini file
@SetEnvironment and @Environment cannot be used in column or selection
formula, or on the Web
Oddly, a text list can be provided for the variableName parameter, and the same
value will be assigned to all the listed variableNames, but …
If a text list is provided for the value parameter, only the first value is used, the
rest are ignored
@SetEnvironment and @Environment can be useful for setting user preferences
For example, a user location can be set and then provided as a default value
to make entry easier for the user
16. Fantastic Feat #1
Include the following formula in the Target Frame (single click) event in the
embedded view:
@SetEnvironment( "eViewSelection"; @Text(@DocumentUniqueID))
Include the following LotusScript in a button on the form where the embedded
view resides:
…
selectedDocIDString = session.GetEnvironmentString("$eViewSelection", False)
…
Set selectedDocID = db.GetDocumentByUNID(selectedDocIDString)
17. @Adjust
@Adjust allows you to adjust a given date value by second, minute, hour, day,
month, and/or year
If more than one segment of the date value needs to be adjusted, @Adjust is
easier than the LotusScript equivalent, as each value needs to be adjusted
individually in LotusScript
Adjust by more than just a number
@Adjust (aDate; 0; 0; - (@Weekday(aDate) – 1; 0; 0; 0) evaluates to the
Sunday before the given date
18. @Text
@Text isn’t just for converting values to a string
The power of @Text comes in the second parameter, the format string
@Text (someDate; “D0S0”) provides a date with the month, day, and year, and
no time
Many of the LotusScript functions associated with date are reliant on the
system format
Several number formats are also available including currency and percentage
19. View Selection Formula
Two problems with the view selection formula are the inability to use @DbLookups
and the best practice of avoiding @Today
@DbLookups just won’t work in view selection formula
@Today is a poor practice due to the drag on performance
Hard coding values is a poor practice workaround!
LotusScript (and formula) to the rescue!
20. View Selection Formula (cont.)
@AllDescendents versus @IsResponseDoc
Use @AllDescendents in view selection formula
@AllDescendents retrieves only those documents that are responses to
the documents included in the view
@IsResponseDoc retrieves all response documents in the application and
checks them against the docs in the view
See Andrew Pollack’s blog for more information, including view index size
comparisons
21. Agenda
Where to use @Formula
Using @Formula to work with lists
@Formula in XPages
Comparing @Formula to LotusScript
What’s new with @Formula
Some Old, but Cool Tricks
22. Working with Lists
Note that many of the previous @functions also work on lists of values, not just
individual values
Now we’ll cover a few more @functions that are particularly useful when working
with lists
23. @Unique
@Unique has two very different, very useful functions depending on the
parameters
@Unique with no parameters provides a random, unique
text value
@Unique when given a text list as a parameter, will return the list with
duplicate values removed
24. @Transform
@Transform takes three parameters
The list to transform
A variable name
The formula for transforming the list
@Transform (@ThisValue; “x”; @If (x>0; x*60; 0) )
This example takes a list of values, checks to see if each item in the
list is greater than 0. If it is the value is multiplied by 60, if not, then
0 is returned.
The return value is a list that has been transformed by
the formula
25. @Transform (cont.)
@Transform can utilize @Nothing
@Nothing is only available in @Transform
@Transform (@ThisValue; “x”; @If (x>0; x*60; @Nothing) )
A great use of @Transform is changing the decimal place on a list of values
For example, a list of values meant to be percentages shown as 50, needs to
be transformed to 0.50
@Transform (@ThisValue; “x”; @If (x>1; x/100; @ThisValue) )
26. @Sort
@Sort is an incredibly powerful @function
Particularly if you use the [CUSTOMSORT] keyword
Take a multi-value field with a list of names:
“John Smith” : “Jane Doe” : “Kathy Brown”
How can you sort by last name?
@sort (list; [CUSTOMSORT]; @If (@Word ($A; “ ”; 2) < @Word ($B; “ ”; 2);
@False; (@Word ($A; “ ”; 2) > @Word ($B; “ ”; 2); @True; @False))
Essentially, a custom sort formula, using $A and $B as temporary
variables
Use any formula you can imagine for the custom sort function!
27. @Max and @Min
@Max will provide the maximum value in a list of values
Likewise @Min provides the minimum value in a list of values
Additionally, each will provide the maximum of a pair-wise list
of values
List1 := 1 : 2 : 3 : 4
List2 := 5 : 6 : 0 : 1
@Max (List1; List2) will return 5 : 6 : 3 : 4
29. @Matches
An earlier example showed @Matches as a way of validating format for a field
entry
Several wildcard characters are available for @Matches
Lists can be passed in as both the parameter to be checked, and the parameter
containing the pattern for which to check
30. @Matches (cont.)
Symbol /Pattern Use /Matches
C Where C is any character. Matches any single, non-special character C (or c)
? Matches any single character
* Matches any string (any number of characters)
{ABC} Matches any character in set ABC
{A-FL-R} Matches any character in the sets A...F and L..R
+C Matches any number of occurrences of C (or c)
ABC The three-character string [a|A][b|B][c|C]
{ABC}{ABC} Any two-character string composed of capital letters A, B, or C
A?C Any three-character string that starts with a|A and ends with c|C
??? Any three-character string
+? Any string, including the null string
+?{A-Z} Any string that ends in a capital letter
+{!A-Z} Any string that does not contain a capital letter
31. @Contains
@Contains is similar to @Matches in that either parameter passed in can be a
string or a string list
@Contains can return a true value if the first parameter contains the second
parameter, but is not an exact match
Use the “=” operator or @IsMember for exact matches
32. Agenda
Where to use @Formula
Using @Formula to work with lists
@Formula in XPages
Comparing @Formula to LotusScript
What’s new with @Formula
Some Old, but Cool Tricks
33. @Formula in XPages
XPages are now available in Domino 8.5.x
@Formula is available to use in Server Side JavaScript (SSJS)
Not all @Formula are supported in XPages
34. @Formula in XPages (cont.)
Three syntactic changes to use @Formula in XPages:
Use commas rather than semicolons
Use exact case
Example:
var uname = @Name(“[CN]”, @UserName())
“null” should be used in place of 0 for formulas such as @Adjust
Example:
var adate = @Adjust (@Created(), null, null, 5, null, null, null)
35. @Formula in XPages (cont.)
Help file is not very helpful!
@Name(“[CN]”, name) – needs those quotes! But there is no example in the help
file to demonstrate that!
@UserName() – needs those parentheses! Again, no example in the help file to
show that!
39. Agenda
Where to use @Formula
Using @Formula to work with lists
@Formula in XPages
Comparing @Formula to LotusScript
What’s new with @Formula
Some Old, but Cool Tricks
40. @Formula vs. LotusScript
Many @functions have LotusScript equivalents
Check the Help file for language cross-reference
Especially check Help file for each language for additional examples
Check the Help file for differences in parameters, syntax, and where the
function can be used
Some @Formula do not have LotusScript equivalents
Some @Formula require less code and/or perform faster than LotusScript
equivalents
41. Evaluate using @Formula in LotusScript
Use the Evaluate method in LotusScript to have access to @Formula
Only use it when it makes sense, like for @DbLookup or other @Formula that
don’t have equivalent LotusScript methods
Dim results as variant
results = Evaluate ( { @Trim (@Unique (tempList))})
Most frequent problem is choosing the right delimiters and keeping them
organized within the formula
results = Evaluate {“@IsMember (‘Joe’; ‘Joe’ : ‘Jane’ : ‘Jen’)”}
42. @MailSend
@MailSend is a great example of @Formula having more functionality over
LotusScript equivalents
@MailSend acts like Send method of NotesUIDocument
However, @MailSend has more parameters, including flags!
43. @Sort vs LotusScript
val := @Sort (TextList);
@SetField (“textListOutput”; val)
vs.
Calls a script library!
44. Agenda
Where to use @Formula
Using @Formula to work with lists
@Formula in XPages
Comparing @Formula to LotusScript
What’s new-ish with @Formula
Some Old, but Cool Tricks
45. @WhichFolders
Shows in which folders a particular document resides
Currently not that useful, only available in view column formula
From the IBM help file: “The function is effective only when the view is open in the
UI and the outline pane on the left is visible”
But, someday ... ?
46. @AbstractSimple
Creates an abstract of a text or rich text field
Must save the document before using
Returns the first 100 characters or first two paragraphs, whichever is smaller
Useful for searching rich text fields for certain strings of text
Less complex than @Abstract, no keywords, size, or beginning text required
Consequently @AbstractSimple is more efficient than @Abstract
47. New @Commands
@Command [CopySelectedAsTable]
Functions the same as Edit--> Copy As… --> Table
Useful for creating a button to streamline user experience in views where
users would typically copy the data
@Command [OpenInNewWindow]
Causes a document selected within a view, folder, or calendar to be opened in
a new window
Valuable when a new window would aid the user, such as comparing one
document to another
@Command [CalendarFormat]
Added two new formats
Two work-week display
One work-month display
48. Agenda
Where to use @Formula
Using @Formula to work with lists
@Formula in XPages
Comparing @Formula to LotusScript
What’s new with @Formula
Some Old, but Cool Tricks
49. Fantastic Feat #3!
Data := [some field with a text string];
src := @Explode(Data; " ");
digits := (0:1:2:3:4:5:6:7:8:9);
digitsRev := (9:8:7:6:5:4:3:2:1:0);
numList := @Subset(((digits*+digits)*+digits); @Elements(src));
numListRev := @Subset(((digitsRev*10)*+digitsRev); -@Elements(src));
targList := @Text(numList) + @Char(250) + src;
@Word(@Replace(@Text(numListRev); @Text(numList); targList); @Char(250);
2)
50. Complicated Functionality, Uncomplicated
@Functions
Prior code uses seven @functions
@Explode
@Subset
@Elements
@Text
@Char
@Word
@Replace
All seven are backwards compatible to Version 3!
Most important, using the building blocks of @Formula, you can create incredibly
complex code
51. Everything Old Is New Again
Formula debugger?
No, not really, but …
You can place @Prompts throughout your code to see values as you go
You can write values to other fields to see @Formula values as you go
For simple @Formula, you can use the subject line of a memo and press
SHIFT+F9
52. Resources
Andrew Pollack’s entry on @AllDescendents vs. @IsResponseDoc
www.thenorth.com/apblog4.nsf/0/6DF6AAD2521ADF9185257647005E9539
Andrew’s session, IBM Lotus Domino Server & Application Performance in the
Real World,
White paper on using Evaluate
www.ibm.com/developerworks/lotus/library/ls-The_Evaluate_
statement/index.html
Niklas Waller’s entry on @SetEnvironment to access a doc in an embedded view
www.wohill.com/design/266/Get-selected-document-from-embedded-view.html
IBM Lotus Notes Documentation Lotus Domino Designer 8.5 Lotus Domino
Designer XPages Reference Guide JavaScript language elements @Functions
http://bit.ly/FormulaMap
Lotus Domino Application Development wiki - www-10.lotus.com/ldd/ddwiki.nsf
53. Bonus Feat
REM {Get a Date};
dateString := @Prompt([OkCancelEdit]; "Enter a Date"; "Please enter a date
below:"; "mm/dd/yyyy");
REM {Convert the date to a Julian Day.};
m := @TextToNumber(@Word(dateString; "/"; 1));
d := @TextToNumber(@Word(dateString; "/"; 2));
y := @TextToNumber(@Word(dateString; "/"; 3));
y := @If(m <= 2; y - 1; y);
m := @If(m <= 2; m + 12; m);
c := 2 - @Integer(y / 100) + @Integer(y / 400);
jd := @Integer(1461 * (y + 4716) / 4) + @Integer(153 * (m + 1) / 5) + d + c -
1524.5;
54. REM {Determine which synodic month we're in, using an average length of 29.53
days per synodic month.};
k := (jd - 2451550.09765) / 29.530588853;
REM {The fractional value of k is how far along in the synodic month this day is. The
full moon should come exactly halfway through the synodic month, so if the
fractional value is 0.5 then today should be a full moon.};
moonPhase := "Nothing special";
fraction := @Round(k - @Integer(k); 0.01);
moonPhase := @If(fraction >= 0.99 | fraction <= 0.01; "New Moon"; moonPhase);
moonPhase := @If(fraction >= 0.24 & fraction <= 0.26; "First Quarter"; moonPhase);
moonPhase := @If(fraction >= 0.49 & fraction <= 0.51; "Full Moon"; moonPhase);
moonPhase := @If(fraction >= 0.74 & fraction <= 0.76; "Last Quarter"; moonPhase);
@Prompt([Ok]; "Moon Phase"; "date = " + dateString + @NewLine +
"jd = " + @Text(jd) + @NewLine +
"k = " + @Text(k) + @NewLine +
"fraction = " + @Text(fraction) + @NewLine +
"Moon Phase = " + moonPhase)
55. Your Turn!
Kathy Brown
@kjbrown13 on Twitter
kathy@runningnotes.net
www.runningnotes.net
@NotesDevTips on Twitter
Don’t Forget Your Evaluations!