On August 29, 2005, in the keynote address at FileMaker’s annual developers conference in Phoenix, FileMaker, Inc. President Dominique Goupil announced the immediate release of FileMaker Pro 8 and its more powerful alternative, FileMaker Pro 8 Advanced. FileMaker had never released an upgrade at its developers conference before, but the timing was significant. FileMaker 8 is a release for developers in the broadest sense, from what I call "active end users" to experts doing full-blown application development in FileMaker. And that raises an interesting question: Who is FileMaker Inc. trying to reach with this release? Is FileMaker still an easy-to-use database for the little guy, the list-maker, and the do-it-yourselfer? Or is it turning into a powerful development platform that blurs the line between programming and scripting? I think the answer to both questions is yes, but the yes answering the latter question is louder.
Pro 8 for Non-Pros — FileMaker users fall broadly into four categories: passive end users, who launch FileMaker Pro simply to use databases designed by others; active end users, who may create their own simple databases or design their own reports; more ambitious do-it-yourself developers, who, while not full-time FileMaker jocks, are brave enough to venture beyond simple lists and work with relationships and perhaps even scripts; and full-time developers who push FileMaker to the limits on a regular basis. FileMaker Pro’s target audience has always been the active end users and do-it-yourselfers, for whom FileMaker’s ease of use has been more important that its power. FileMaker 8 has a lot for these users.
For active end users, entering and finding data in version 8 is easier than ever. Finally, typing a few letters of text in a field prompts FileMaker to suggest the completion; for example, you type "ro" and FileMaker suggests "Ron", and if you continue typing "rob", the suggestion changes to "Robert," and so on. It’s easy now to configure a date field so that a calendar drops when the user enters the field; the user can select a date from the calendar rather than having to type the date. Finding dates is easier now thanks to several new shortcuts; for example, it’s possible now to search for September 2005 by typing "9/2005" instead of a proper range ("9/1/2005..9/30/2005"). And finding records that match the current record in a given field is now a snap: just click on the field and use the Find Matching Records command. FileMaker 8 also finally adds support for mouse scroll wheels.
Once you find the records you’re interested in, FileMaker 8 can save reports directly to PDF or Excel files. (The save-as-PDF feature is available to FileMaker users under Windows as well as Mac OS X, because the feature uses technology licensed from Adobe and built right into FileMaker and does not depend on Mac OS X’s support for printing to PDF.) Even better, since FileMaker 8 lets you use calculations to specify the options for your mailing, it’s now easy to use FileMaker 8 to send out email announcements to many different recipients, with each recipient getting a completely personalized message.
Another, somewhat less successful, feature for active end users is the Field List Filter. In previous versions of FileMaker Pro, users with access to the export or sort dialogs might have to face long and bewildering lists of fields, some of them perhaps oddly named. To find fields in related tables, you had to know how to select another tab occurrence from the list of table occurrences at the top of the field list. In short, it was quite confusing.
In FileMaker 8, when the user accesses these dialogs, the default field list shows only the fields displayed on the current layout. This works great, provided the developer who designed the layout placed only fields that the user might want to sort on or export data from. The problem is that this often will not be the case. I use many global fields on nearly all layouts as buttons. Users who access the Export Records command from one of my layouts will see not only the data fields they’re interested in, but also a list of all those global button fields, something that in previous versions of FileMaker would have remained unavailable. I’m lukewarm about this change. It gives me, as developer, some options I didn’t have before. If I script the access that users have to these dialogs, I can also go to a layout displaying only the desired fields before showing the dialog. So it’s not a step backwards, but it’s not a big step forward, either. What I’d like instead is the capability, in the Define Fields dialog, to control whether fields are visible in these dialogs or not.
Do-it-yourselfers will appreciate FileMaker 8’s capability to create a new table on the fly when you import data from an external file; in the past, you had to define a table and fields first, then match fields carefully. Converting an Excel spreadsheet – or an export file from another database tool – into a FileMaker database has never been easier.
The award for the niftiest new feature for users who design layouts has to go to the new Tab Control feature. A Tab Control object lets you put a bunch of different groups of fields on the same layout in the same space, but show or hide them selectively, depending on which tab a user clicks. For example, if you didn’t have enough space to show both home and work addresses on a layout at the same time, you could create a simple two-tab Tab Control object, put the home address fields into the rectangular space owned by one tab (which you would label "Home") and put the work address fields into the other tab’s space (and name that tab "Work"). Back in Browse mode – the state of a file when the user is viewing and editing records – clicking one tab shows its fields and hides the fields on the other tab or tabs; and vice versa.
We used to be able to fake this in FileMaker by creating multiple layouts. The common parts of the several pseudo-tabbed layouts would be identical and identically placed, so when users clicked on a button that looked like a tab, they thought that only the tabbed area of the screen changed, when in fact, the entire layout was changed. The old way was tedious and inefficient and caused problems with navigation. The new tab control is easy enough for beginners to master in minutes, but will save both beginners and experts a lot of time.
Variables — All the features I’ve mentioned so far are found both in the standard edition of FileMaker Pro 8 and in FileMaker Pro 8 Advanced. Their presence in the standard edition makes perfect sense, as they involve things that active users and beginning or intermediate developers will want to do. But the standard edition of FileMaker Pro also contains one exciting new feature – support for scripting variables – that I would have expected to see only in FileMaker Pro 8 Advanced, because it is the kind of thing non-expert users are unlikely to use.
When I’m writing a script, I frequently want to grab some values and hang on to them for just a few steps. For example, say I’m writing a script that my users will run to create a note for the current contact record. In this script, I’ll probably start by grabbing the contact record’s primary key or record ID; the script will then jump to the layout for notes, create a new record, and then return to the original contact layout and enter the note field so the user can edit it. In the past, that contact record’s ID had to be stored for two or three steps in a special global field – a field belonging to no particular record and available anywhere. Developers who did a lot of scripting tended to have a lot of global fields defined as temporary value holders.
Things improved somewhat in FileMaker 7, which introduced script parameters. If I had been willing to use two scripts to create a note instead of one, the first script could have passed the contact record’s ID to the second script as a script parameter rather than using a global field. Script parameters were a wonderful addition to the developer’s toolbox, but two scripts are not always better than one, and script parameters did not entirely eliminate the need for globals.
Enter script variables. In FileMaker 8, you can define a local script variable right in the script – say, "$contactID" – using the new Set Variable script step, then access that variable later in the script in a calculation formula, the same way you would have accessed a global field. One advantage of variables is that they can be defined on the fly; to define a global field, it was necessary to exit the script editor, enter the Define Fields dialog, and define a new field. Another advantage of script variables is that they can be either local or global. Global fields were always global, meaning that they could be accessed from any table in the same file, and values stayed set until replaced. Global variables work in much the same way, but local variables are cleared at the end of the script in which they are defined.
Even more interesting is the fact that variables now make possible a variety of file-manipulation features that hitherto required plug-ins, which is worth getting excited about in its own right. I can now write a script that saves a report as a PDF file to disk with a file name that is generated dynamically, like "Acme Q3 Purchases", or I can save a backup copy of my database every time I close it with a name that includes the current date and time.
In many obvious technical senses, scripting in FileMaker is not to be confused with programming. And yet, with the addition of script variables, the distinction between FileMaker’s scripting capability and a simple procedural programming language is becoming a bit fuzzier. And that means a serious boost in power for serious FileMaker developers. Using variables as a replacement for global fields isn’t too challenging, but as a practical fact, active end-users and less ambitious do-it-yourselfers don’t tend to write complicated scripts, and I doubt they’ll make heavy use of variables.
Getting Serious — The product formerly known as FileMaker Developer has, with this release, been renamed FileMaker Pro 8 Advanced. It includes all the features in FileMaker Pro, plus a few features aimed at more advanced developers.
Well, it used to be just a few, and those features weren’t too impressive. The old FileMaker Developer made certain things (like stepping through scripts) easier, and it provided a couple of meta-development utilities, but as far as building databases was concerned, there was very little that you could do in FileMaker Developer 7 that could not also have been accomplished in an ordinary copy of FileMaker Pro 7 if you were willing to work just a little harder. (One notable exception was that Developer 7 let you create custom functions.) FileMaker Pro 8 Advanced, on the other hand, gives developers real power to do things that simply can’t be done in the standard edition, and it improves so significantly on other developer-oriented features that what before was a convenience is now too good to live without.
I suspect the feature in FileMaker Pro 8 Advanced that most developers will be most immediately excited about is the capability to copy and paste just about any database definition element – tables, fields, relationships, scripts, and even individual script steps – within a file or across files. Suppose you want to add a couple of fields to keep track of the modification date and time for records in every table in a 20 table solution. In the past, you were forced to define these fields in each and every table – very tedious. Now, you define the fields, including the auto-entry options (date modified or time modified), copy them in one table, then paste them into the field list for each of the other fields. This feature is even more useful with scripts. The capability since FileMaker 7 to put all your tables in one file has encouraged FileMaker developers to start writing more and more generic, reusable scripts. With the introduction of variables in FileMaker 8, generic and modular scripting becomes not only practical, but genuinely worth the trouble. And when you write a well-focused script in one file, you can copy and paste it (or a few of its steps) into another file. Copied script steps can only be pasted into another FileMaker script; you can’t paste script steps into a text editor. Nevertheless, code reusability is now a reality in FileMaker.
A rather less dramatic enhancement in FileMaker Pro 8 Advanced is the capability to create tooltips, the little information balloons that appear automatically when the user hovers the mouse pointer over an object such as a button or a field for a short time. Tooltips can also be calculated rather than hard coded, so they can be used for many purposes: for instance, you could use Tooltips to convert dollars into pesos or Euros, to convert English measures to metric, to translate field labels into another language, or to explain data-entry problems.
The new Data Viewer is a complement to the rather basic debugger that has been FileMaker Developer’s most used feature for years. The Data Viewer makes it possible to monitor the values stored in "expressions" (that is, fields and/or variables) as you step through a script. This is a major plus for developers who do a lot of scripting! I do have a couple of complaints about the data viewer, however. First, it doesn’t always realize immediately that the value in an expression has changed. FileMaker, Inc. is obviously aware of this problem, because the engineers added a "Refresh Values" button right there on the Data Viewer utility window. My other complaint is that you can’t save expression sets. It would be especially nice to define a set of expressions to be monitored in a particular script and save them in the script, or at least to save them in the current file.
The most powerful and, I think, the most surprising new feature in FileMaker Pro 8 Advanced is support for custom menus. It’s now possible to create fully customized and context-sensitive menus in a FileMaker solution. Yes, you can finally disable that pesky Window menu without using a plug-in, but that’s just for starters. You can create your own lists of commands for different menus, and if you wish, you can attach your own scripts to those commands. So, for example, instead of disabling the native FileMaker menus that many users are familiar with, you can simply disable or delete particular scripts that you don’t want users to have access to (Delete All Records was my first choice), or you can substitute your own script for the default action assigned to a command (so users issuing the New Record command trigger your more intelligent new-record script instead of creating a record directly).
Share and Share Alike — FileMaker Pro 8 uses the .fp7 file format introduced last year with FileMaker Pro 7. This means a copy of FileMaker Pro 7 can open a file created in FileMaker Pro 8 and vice versa, although, of course, features specific to version 8 will either be ignored (tooltips, for example) or break, perhaps badly (such as tab controls). On a more positive note, because the majority of FileMaker’s features are still processed by the client rather than the server, it’s possible to use FileMaker Server 7 to share a FileMaker 8 database that employs most of the features mentioned above, and users on the network who open that database in FileMaker Pro 8 or FileMaker Pro 8 Advanced are able to use the database just fine. This is good to know, as FileMaker Server 8 has not yet been released (it’s expected sometime within the next few months).
Speaking of clients, what about that first category of users I mentioned, the passive end users? These are the folks who never define a field or even tweak a layout, who have no use for the relationship graph or ScriptMaker. They use FileMaker only because it’s required to open the databases that they are required to use. FileMaker Pro 8 has a lot for them, too – a lot that they have no use for at all, namely, all the development features. In short, FileMaker still has no thin client. The problem is, the competition does – in the Mac world, I’m thinking of Servoy and 4D. I suspect that FileMaker, Inc. thinks of FileMaker’s Instant Web Publishing (IWP) feature as a kind of very thin client, since a user needs only a Web browser to access an IWP-enabled database. Instant Web Publishing improved a lot in FileMaker 7 just over a year ago, but it was not a focus of FileMaker 8, and it still has a ways to go before it’s fully usable. I doubt FileMaker, Inc. has any interest in an inexpensive version of its software that does nothing but run databases built by other users with FileMaker Pro 8 Advanced. But it seems to me that something halfway between the current standard edition of FileMaker Pro and a thin client might serve both FileMaker, Inc. and its customers well. The "lightweight client" I have in mind would cater to list-makers and very basic do-it-yourselfers, permitting, say, creation of no more than three tables, and providing access only to certain basic script steps. Something for FileMaker 9? I doubt it, but I would love to be surprised.
Conclusion — Anyone familiar with FileMaker’s history will acknowledge that this is not only the best FileMaker ever, it’s also a significant improvement to version 7, which shook up the FileMaker world just last year. I recommend anybody who does more than very basic development work upgrade to FileMaker Pro 8 Advanced; you may never use custom menus, but the capability to define tables on import and to copy and paste tables, fields, scripts and script steps will make converting and consolidating your multi-file FileMaker 6 solutions much easier than it was in FileMaker 7.
FileMaker Pro 8 is priced at $300, and upgrades from FileMaker 6 and 7 are available for $180. FileMaker Pro 8 Advanced costs $500, with upgrades from FileMaker Developer 6 or 7 priced at $300.
[William Porter is a former classics professor who, in 1998, gave up academic tenure to pursue "other interests," including developing database applications. An Associate Member of the FileMaker Solutions Alliance, William is currently working on a book about FileMaker Pro 8 for No Starch Press.]
PayBITS: Did Will’s review of FileMaker Pro 8 give you the data
you were looking for? Consider sending him a few bucks via PayBITS!
Read more about PayBITS: <http://www.tidbits.com/paybits/>