Article Tags
Click or tap one of the article tags to filter down to a smaller selection.
- Accounts
- Add-ons
- AI
- Alerts
- Analysis
- APIs
- Apple Maps
- Auto-Enter
- Barcodes
- Base64
- BaseElements Plugin
- bBox
- Breadcrumbs
- Button Bars
- Caching
- Calculations
- Calendars
- Card Windows
- Charting
- Checkboxes
- Code Editing
- Code testing
- Coding
- Color Picker
- Colors
- Conditional Formatting
- Containers
- Context Management
- Cropping
- Crypto
- CSV
- cURL
- Custom Functions
- Custom Menus
- Data API
- Data Capture
- Data processing
- Data structure
- Data Viewer
- Date Ranges
- Dates
- Debugging
- Deployment
- Developer Tools
- Dialog Boxes
- Docker
- Drag-n-Drop
- Drop-down List
- Dropbox
- Duplicates
- Duplicating records
- Encryption
- Error handling
- Events
- Excel
- ExecuteSQL
- Exporting
- External Authentication
- External Files
- Field Formatting
- Field Storage
- Fields
- File IO
- File Management
- File Sharing
- FileMaker Go
- FileMaker Server
- FileMaker Settings
- Filtering
- Find & Replace
- Find Mode
- Found Sets
- Functions
- Fundamentals
- Global Fields
- Global Variables
- Google Maps
- Google Services
- Graphics
- Grid
- Grouping
- Hierarchies
- Highlighting
- Icons
- Images
- Importing
- Indicators
- Inspector palette
- iOS
- Java/Groovy
- JavaScript
- Join Tables
- JSON
- Key fields
- Layout Design
- Layout Mode
- Layout Parts
- List function
- Logging
- Looping
- Mapping
- Marking Records
- Media Storage
- Menus
- Merge fields
- Messaging
- Microsoft Surface
- Mobile design
- MonkeyBread plug-in
- Multi-key fields
- Multi-option fields
- Naming Conventions
- Navigation
- New Release
- Node-RED
- Notifications
- Oauth
- Object management
- OCR
- OnGestureTap
- OnLayoutKeystroke
- OnObjectKeystroke
- Parsing HTML
- Perform Script on Server
- Performance
- Permissions
- Photo manipulation
- Pickers
- Pivot tables
- Pop-ups
- Popovers
- Portals
- Preferences
- Printing
- Privilege sets
- Product review
- Productivity
- Progress Bars
- PSOS
- Python
- Quick Find
- Record Locking
- Regex
- Relationship Graph
- Reporting
- REST
- Sankey
- Schema
- Script Parameters
- Script Triggers
- Scripting
- ScriptMaster
- SDK
- Searching
- Security
- Separation Model
- Set Variable
- Settings
- Shortcuts
- Sliders
- Snapshot Links
- Sorting
- Spelling
- Spreadsheets
- Startup
- Summary Fields
- SVG
- Syntax
- Syntax Highlighting
- Tab Controls
- Table View
- Tagging
- Terminology
- Text Parsing
- Themes
- Time fields
- Time Savings
- Tips
- Tools
- Transactions
- Tricks
- Twilio
- UI
- Updating
- User Interface
- Validations
- Value Lists
- vCalendar
- Virtual list
- Web Forms
- Web Scraping
- Web Services
- Web Viewers
- Windows
- XML
Our Library of Videos
There's this special feeling you get when developing software where you feel like you've created something magical. Sometimes, it doesn't even matter if you've done the same type of thing before. It just feels like you're the master of the universe and you've created something super useful.
This may even be the case when you're simply creating a virtual trash can and providing users with the ability to reverse course on that accidental record deletion.
In this video, we're taking a look at a super simple trash can metaphor. It's easy-to-implement and allows users to bring records back from the dead.
While there are multiple ways to handle record deletions, many of which are discussed in this video, the whole concept of being able to dig in the trash and take something out is familiar territory for many computer users. We're just going to emulate it within our FileMaker systems.
Do you need to work with online APIs and find yourself wishing there was an easy way to accomplish it? Well, there actually is. In fact, in much of technology, there's something or someone somewhere which has likely already solved the problem.
In the case of using REST (Representational state transfer) to interact with service APIs within FileMaker, it's nice to have a single tool which will handle most of the heavy work for you. When native JSON was added to FileMaker, the last piece to the puzzle was a more expanded method of interacting with the network. The cURL library was already being used by FileMaker and it was simply a matter of "opening things up" so developers could use the full suite of the cURL library.
By adding the cURL options calculation to the Insert From URL script step the world of the web opened up for our humble FileMaker Pro.
This video provides a comprehensive understanding of how curl is integrated into FileMaker and how you can use a freely provided script to manage all your REST based interactions. Knowing about HTTP status codes and request/response headers is what you'll find covered in this video and the associated file.
Over the years I've spent a lot of time working on a wide variety of themes for FileMaker Pro. Many of those themes involve taking advantage of every possible display mechanism which FileMaker portals offer.
When getting started with creating solutions in FileMaker Pro you don't always know what you can take advantage of. When it comes to portals there are a variety of settings and theme aspects which allow you to create some really creative looks. In this video I strive to show you all those hidden features and how they might impact the look of your designs.
With this video, I hope you learn all the little details which make it really fun to create great looking portal designs!
Here's an interesting dilemma. How do you track when specific fields are modified and adjust your JSON object so it only includes the data which was modified? Or, how about knowing when a user has modified specific fields, then having the user interface direct them down a different path than if they had modified others?
In both situations, you simply need to know when a field was modified. Using the Get ( RecordModificationCount ) function we can know THAT a given record was modified and using a modification field we can know WHEN it last happened. What we don't know is when only a specific set of fields is modified. We also may need to know exactly which fields were modified in order to take some type of action. This is where Detecting Data Changes is quite helpful. There are a number of ways this can be accomplished and the solution, as always, depends on what your needs are.
In this video, I showcase a method I use to detect data changes and then generate a JSON object based on specific fields which were changed. If you find your solution needing to work with an external API or needing to simply know when certain fields have been changed then you're sure to find some valuable info within this video and technique file.
While working on a solution which made heavy use of an online API for REST based communication, the solution slowly revealed it had a large number of "specially dedicated" data processing scripts. Many of these scripts were quite normal in the realm of "I have some data, I want to put it into the right place." You know, your typical Go To Layout then Set Field script steps.
The issue, however, was that most all of them did somewhat they same thing - a lot of code duplication. They either put the data into a field on some layout or they moved it into a global variable.
For myself, while developing within any solution, I always try to see where efficiency can be improved and implement as needed. The result of some recent efforts was creating a generalized data writer for JSON based data. It turns out that this solution is quite efficient and allows you to not only reduce your total number of solution scripts, but also makes it quite convenient to provide instructions about where data needs to be stored.
If you enjoy optimizing your solution's method of handling data, then it's very likely you'll benefit from a number of the valuable lessons within this comprehensive video about a JSON Data Writer script.
While taking the time to write a four hour custom function the other day, it occurred to me that some viewers may think that complex custom functions are just something which pops out of your head and immediately ends up on the screen.
When, in fact, the truth is it takes a lot longer than you expect because you rarely get things perfectly the first time. It's all about wading through the errors and issues and ending up with the desired result.
In this video, I walk through my process of composing Custom Functions and talk about every detail I can think of. Many of the tips and tricks will also be applicable to your normal process of composing calculations. There are a few nuances which are specific to composing Custom Functions and it's well worth the watch if you're dealing with any kind of JSON based data. If you've always wanted to improve your confidence related to composing code for calculations, then I'm sure you'll gain a good bit of insight when watching this video.
Who doesn't like the simplicity of using a single field to search across many. That's essentially what Quick Find is. In fact, by default FileMaker makes the silly assumption that every field you add to a layout is something you want the user to be able to search.
Essentially, you want to take control of the user experience in terms of search and make sure the user is not only searching what you want them to search, but also able to search in a fashion which is both familiar and comfortable.
This technique file and video will walk you through the details needed to take full control of the Quick Find experience. You can enforce desirable effects such as sorted record sets and keep the user within the search field ready for multiple repeated search attempts.
By taking advantage of a variety of FileMaker features, we can create both an easy-to-implement and universally powerful Quick Find feature. Watch the video and use the associated technique file in order to have a better understanding of how Quick Find truly works within FileMaker Pro.
In many situations, you'd think the easiest solution would be the best. Saving time and getting the job done quickly. This, however, just isn't the case if you're going to allow users to use a simple text field for managing keywords or tags. A tagging system relies on making it easy for the user, but it may not be so easy to implement itself. Here are a few questions you might be faced with.
What happens when one user enters "devloper" on record 1 and another user enters the correctly spelled "developer" on record 2? How do you make it easy to rapidly enter multiple keywords with a high degree of accuracy? What about removing keywords from this simple text field? Does the user just get to remove any portion of a whole word - causing a data nightmare? What about those commas being used to separate the keywords? Do you really trust users to get it right all the time? Can users be trusted to add multi-word keywords and get the commas correct?
The answer to all of those questions comes down to you. As the developer controlling the situation, you get to make sure the data is entered as desired and is still easy for the end user. And, in that case, the system is going to be a bit more complex than using a simple text field to allow users to enter whatever they want.
The video and technique file for this topic showcase a wonderful system of being able to enter and remove keywords used for data segmentation. If you've implemented a tagging system prior, then make sure and take a look at this one because you may find some UI niceness that's just too good to pass up!
When talking about logging, error handling and writing clean code it's never quite as exciting as working on the key features of your solution. Adding in the "cool" stuff and simply making things work is way more fun.
Yet, one of the main things you rely on when developing is information from users and from your software itself. If you don't capture any of that helpful information, then you're essentially developing in the dark. You'll get obscure support requests like "It doesn't work." which is... Oh so helpful - isn't it?
So, one of the core things you should add to pretty much any system is a method of both logging and error handling. While an error log sounds like something you should certainly have, you'll want to separate the two and have your errors simply be captured into your logging system. On the flip side, you can use your logging system to capture quite literally anything you might want to track within your system.
In the associated video and technique file, you'll learn about a simple set of tools which will help you both easily and quickly capture information about your system, your users and anything else you want. All into a clean and simple logging system.
Causing a user to make an explicit choice within your software really only happens from some sort of "locked-in" process. This process most typically happens within the form of a dialog box. It's the one roadblock you can stick in front of a user and expect input. Your software then uses that input to determine the output or direction.
While FileMaker Pro does have its own native dialog box, there are some limitations to the native Show Custom Dialog script step. The number one limitation is the lack of control with regards to size and positioning. Aside from that, the dialog box is pretty fixed in terms of how it looks and what it does.
Actually, the limitations on a dialog box are a good thing. It creates a sense of consistency across the whole notion of software itself. Users have seen dialog boxes and interacted with them. They know what they do and how to react to them. So, in order to gain a bit more control and flexibility, we use our own layouts to provide our own variation of a dialog box.
By using a FileMaker layout, we get to control how it looks and reacts to certain situations. This video and technique file revisits an early version which was released when Card Windows had just come out. If you enjoy using powerful and efficient methods of enforcing that "locked-in" process, then make sure to check this one out!