BaseElements Plugin gets JavaScript

Over the last couple of months, I have been working with Nick Orr at Goya to get a couple of things added to the BaseElements plugin, the biggest one being the ability to execute JavaScript without a web viewer.  Last week, Nick released version 3.0.0. with experimental support for doing just that. So thanks to Nick and Mark Banks for getting it out there. Its a great start!

Read more

filemaker quickbooks mac

FileMaker QuickBooks Mac Integration

We love FileMaker. We love QuickBooks Online. We also love Macs, and that proved to be a problem. The existing solutions for connecting FileMaker to Quickbooks Online required a Windows PC. The combination of FileMaker QuickBooks Mac was a problem. We decided to solve it. Read more

FileMaker Session Model Video

(Thanks to Naomi Fujimoto, you can read this post in Japanese)

Way back before FileMaker 7, Colleen Hammersly from Data Waves, and Wendy King came up with something called the “FileMaker Separation Model”. Part of that model involved only displaying data through relationships from a central file/table.  This pattern came to be called the “Session Model”, and this video is an explanation of its key concepts and its pros and cons.

Tight Control

Since everything is displayed through relationships there is no way for the user to see or edit records that aren’t explicitly made available by the developer.  Typically the developer closes and locks the status area, and puts everything under script control.  The user never sees find mode or list view.  Although you can assert tight control without it, the FileMaker Session Model is tightly controlled by default.

No Obvious Base Table

Every Layout in a FileMaker system needs a base Table Occurrence (TO).  If you are building a Layout to view “Contacts” you can build it right on a Contacts TO.  But what if you are building a “Home” screen or a “Dashboard”?  What TO do you base it on?  The FileMaker Session Model provides a special utility table called “Session,” for this purpose.  The Session TO  becomes the base for all the layouts you need that don’t have an obvious one. It turns out to be great for “Home” and “Dashboard” kinds of views, because often the data for these types of screens comes from many different tables.

Slide Panels and Other UI Goodies

Sometimes you want to switch from a Contact to an Invoice and use the cool slide panel for the effect.  If both Contact and Invoice can be displayed on the same layout, this is easy.  You just switch panels and select the record you want to display by creating or activating a relationship to it.

Why not use the FileMaker Session Model?

It’s not perfect. You don’t get List View, or Find Mode.  A more subtle impact is that your FileMaker Script Triggers have less focus.  They are fired based on the Session record and not the related record you might want them to be responding to.  I typically only build a part of my interfaces this way for these reasons.

Let’s Get Technical

The Session Record has one main job. It is to make sure that it can’t get locked by other users or browser tabs in the case of WebDirect.  It does this by having a unique record for each connection that is made to the Database. I say “connection” because if you just do it based on account name you’ll have problems with WebDirect, since every browser Tab is a new Database Connection.  So the same user can open up many separate connections to the database. And you don’t want them to share the same record or they can lock each other out. Here is what a FileMaker Session Model graph might look like. ( click on  the images to zoom )

FileMaker Session Model

FileMaker Session Model Relationship Graph. Note the use of relationships to display all records

It can also be used to select the records displayed through relationships, as we are doing here, by setting key fields in the table. But it doesn’t have to.  You can use it along with the SELECTOR model, if you want to be modular. And really! who doesn’t want to be more “mod”?  Here is what that looks like. ( click on  the images to zoom )

FileMaker Session Model

Session Model used with the Selector Model

In this case, the SELECTOR model handles selecting records for display and SESSION handles making sure that a record is available for each connection to the DB to prevent record locking.

I prefer this way of keeping things as modular as possible. It fits with the philosophy.

Example Files

Both the files I used in the video are available for download, here.

Thanks for watching. 🙂

FileMaker Selector Connector Video

Updated 11/24/2014 ( see below for whats changed )

Update 2/24/15 –  Jason Young wrote a great blog post about using Selector Connector with Seedcode Complete.

Wasn’t this called Universal Context?

This is a video of what was the Universal Context presentation I gave at Pause on Error last month.  The name however, had to go. It turns out that a “universal context” is only one of the features that kind of falls out of this graph architecture.  So we busted one model into two and came up with a “Selector Model” and a “Connector Model”.  I hope to put up something more definitive in the future, but I wanted to get this out quickly, because many nice people asked me to. 🙂 Read more

FileMaker Master Detail 2.0 Video

MasterDetail 2.0 has been released with a few new features.  MasterDetail 1.0 was a big hit when it was released over a year ago. In this version, we added support for up to 5 fields in the found set, virtual triggers, and automatic found set limiting.  This ModularFileMaker Module is now better than ever! Read more

Virtual FileMaker Script Triggers

Regular FileMaker Script Triggers

Regular FileMaker script triggers fire at times that the FileMaker engine defines.  You are probably familiar with these, but if you aren’t I would recommend reading up them, here and here.  In short, they are over two dozen predefined events that FileMaker allows you to attach a script to. A common example might be the OnLayoutEnter script trigger that fires when ever the user arrives at a layout.

This is all good stuff, but what if you want to add your own Script Triggers?  Maybe you want to define a Script trigger that fires when ever another script reaches a certain point?  Thats what Virtual FileMaker Script triggers are for. Read more

Barcode Creator wins Commercial Product of the Year

I am so excited to announce that Barcode Creator won FBA Commercial Product of the Year at the 2014 FileMaker Developers Conference. This is a huge honor, and we couldn’t be more proud.  In fact, we have decided to keep DevCon going for one more week.  Everybody come to Newbury Park and let’s party for 7 more days.  Just kidding :-).  But we are going to to extend our sale and let anyone who wants to take advantage of the 25% off discount coupon to do so through Friday, August 8th, 2014.

Read more

Syncing FileMaker Found Sets with GoZync 5

GoZync 5 was just released, YAY!. We made some changes to how filtering works to take advantage of some new features that came with FileMaker 13. In this video we cover how filtering works when you are syncing FileMaker with GoZync 5 Read more

Insert From URL Methods And Headers

I needed to figure out what method and headers Insert from URL sent when making requests.  Insert from URL supports a number of different protocols, now.  The two that I was interested in were “http” and “httppost”.  Here is what I found. Read more

Printing Barcodes

Printing Barcodes with FileMaker

I have had a couple of customers of our Barcode Creator product ask me about printing Barcodes.  I referred them to FileMaker’s help on creating label layouts. But there are a couple of oddities about the FileMaker 13 label wizard so I thought I would cover some them in a blog and video. Read more