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 comes a time when every great database must acquire a brand new look. This really applies if you’ve never even given your database a user interface or you’re looking to revamp the one you currently have.
The best place to start, I find, is with the “primary objective” of the interface. In fact, I would argue that it’s best to focus on the number 1,2 and 3 aspects or goals of the user interface. I do this for every single layout being designed. By doing this before you start to throw fields on the layout, you afford yourself the ability to keep things simple before getting too complex. Many of the most popular products and software interfaces start out super simple.
Some of them become bloatware, like many of the Microsoft Office products, but they had a good foundation when it came to how users have learned to use them.
In this video, we take a look at starting the user interface for our Custom Function database. I provide some foundation and the basis for how I approach the process and showcase how I implement based on the decisions I’ve made.
Lately, here at ISO FileMaker Magazine we’ve been covering a lot about web services and using technologies like REST, cURL and JSON.
Well, that’s not about change with this video. We’re now needing to move forward with our Custom Functions database and make a connection to the web site where the custom functions are hosted.
We do this with a dedicated Custom Function which takes advantage of the Base Elements plugin to make HTTP requests. With the knowledge learned in our cURL video about request & response headers, we can connect to the BrianDunning.com web site and get the id values of any new custom functions.
Making this type of request means we are relying on code which can break at some point in the future, should the web site itself change. So, I talk about how to deal with this and how to parse the data in the most efficient manner.
Let’s scrape some web data and get it into our database!
While FileMaker’s script step Insert from URL does allow for basic communication with web services, it is, by no means, comprehensive enough to provide all the features necessary. What’s really needed is the full cURL library.
This open source tool has been available for over 15 years and is baked into a ton of software packages, including FileMaker itself. However, it’s really only exposed within plug-ins such as Base Elements and the MBS plug-in.
So, in order to fully understand what going on, it’s best to start with the source. And, that’s understanding cURL itself and how options are managed and how you set and parse HTTP headers.
This video walks through the process of using cURL within the context of a plug-in. Once you understand how to set and control settings through the plug-in, you’re off to the races and working with any web service you can think of.
When you know just a little part of how FileMaker works under the hood, you can come up with creative solutions to everyday problems. Take web services as an example. They use defined structures such as XML and JSON. And, when you consider that you’re using this third party defined structure and the need to mix in your own data, you want to find the easy way to solve the problem.
In my case, I really like the path of least resistance. Of course, there are many ways to solve a problem. Let’s consider a FileMaker script. It can be self contained and have no dependencies on any other FileMaker elements. It can be called by another script and can be completely disassociated from any and all context. Context, within FileMaker, if you didn’t know, is the situation where a script can only do something if it’s executing in the right place. The right place would be the current Layout in which the script is running.
If we don’t fight context, however, and simply make our scripts only operate within the proper context, then we can simply handle the error when the right context doesn’t exist and let the proper people know about it.
I’ve coded solutions in both ways. Context independent and context sensitive, and it really boils down to use, preference and perspective. So, for this video we’re taking the context approach and using FileMaker’s ever so easy ability to merge in field data or global variables into text objects in order to make things easy for us to copy our Custom Functions to the clipboard. This information in this video and file have “Oh so many implications.”
As you’re probably aware, whenever a great craftsman has a project in front of themselves, they’re likely picking from not just one tool but many. What this means, in the context of FileMaker, is that you can’t just stop with using FileMaker alone. There are many times when it makes more sense, or will net bigger benefits, when you go outside of FileMaker.
The trick is this, you don’t necessarily need to go too far outside of FileMaker to accomplish some amazing things. Right within FileMaker is the Web Viewer object with direct access to JavaScript and just a little beyond that are plug-ins which can access pretty much anything else you could ever want.
On the Macintosh, we find that we have access to a plethora of tools which can sift through data like nobody’s business. On the Windows side you’re a simple install away from having the same power.
This video is all about going outside of FileMaker in order to leverage a treasure trove of tech for parsing HTML and beyond. Watch this video if parsing anything you could ever want out of a web page is something which appeals to you.
In the world of software development, you’re basically taking things apart. Adding data here, taking away data there and remixing things. Simply put, it’s all just a matter of how the data needs to be presented to those who wish to see it.
In the first video in this series, we did the data collection and now we need to do something with that data. In most cases, you’re typically going to be parsing data if it’s not in a format ready to be stored. So, we need to parse the custom functions and their details from their source. We’d like to store them in a format which will meet our own objectives.
Fortunately, there are a number of ways to parse data. When it comes to native FileMaker parsing, you’re inevitably going to be using Left(), Right(), and Middle(), functions. But, when you’re working with well structured data, such as HTML, you have to do a bit more work than just using a simple Middle() function. That’s what this video is all about.
Developing software is simply a matter of solving a problem by organizing and collecting data in a manner which makes the data useful to the end user. So, we’re just a bunch of data organizers and presenters.
One of the biggest benefits to a software developer is their known resources. There are tons of resources available to us every day. Sometimes, it’s a matter of knowing where those resources are and others it’s a matter of taking advantage of what we already have.
In this video, I start a brand new project which will be a Custom Function database. Along the way, while coding the solution, we’ll be taking a look at a lot of features present within the current FileMaker development environment. Learning how decisions are made and what influences them is a great way to learn how to ask questions about your own creation process.
Click the video to watch.
Click here for more details about the Focus on FileMaker Development Course
Each time a new version of FileMaker is released there are more features and more information about what’s possible with the software. More functionality means more learning in order to take advantage of those features.
There are, however, core features which should be known by all developers. This includes knowing how to script Find mode and building an interface around the search functionality. Knowing how to script an omitted find request may not be super obvious unless you think of Find mode as being the same as Browse mode. Yet, scripting Find mode is exactly like scripting Browse mode. You can create an automated find which can be as complex or as simple as desired. It’s all a matter of translating what you would do with the normal native functionality and wrapping a user interface around it.
That’s what this video is all about. Taking the native methods for finding data sets and putting a user interface around them. When combined with a thought process towards lower maintenance costs, you can create some efficient methods of finding data.