Introducing FileMaker Pro 10

If you thought FileMaker 9 was a big update ([and we clearly did][fm9]) you’ll be thrilled with number 10. It starts with some flagship new features like Script Triggers (_finally!_) and infinitely more useful Sub-Summary parts, plus the usual round of small tweaks and improvements. But this release takes it one step further with a total overhaul of FileMaker’s most ubiquitous interface element. Gone is the Status Area, replaced by a freshly designed, much more useful Status Toolbar. Here, we’ll introduce you to everything new in FileMaker 10. Keep an eye out for more articles about how to use all this great new stuff.

[fm9]: http://sixfriedrice.com/wp/category/filemaker-9-tips/ “Our Articles on FileMaker 9”

>Update Jan-5-2009: Somehow I neglected to cover the new Modify Table View feature in Filemaker 10. I have updated the article with relevant information, as it is quite important.

>Update Jan-6-2009: I corrected the explanation of the [`Code`][code] function, which was stupidly dismissed in the original text.

>Update Jan-15-2009: I’ve uploaded the live sub-summaries demo file by request. Get it here: [People.fp7][ssdemo].

[code]: #code

##Everything Old is New Again

Here’s what a basic FileMaker database window looked like yesterday (and in fact, it looked a lot like this when I started using FileMaker 15 years ago):

The FileMaker 9 Status Area

As of today, it looks like this:

FileMaker 10 has a totally redesigned look.

As my mother would say…holy catfish. The most striking change, of course, is that the tools are on top now instead of along the side. This will almost certainly rub a lot of people the wrong way because carefully designed layouts that fit in perfectly sized windows on small screens will now be the wrong size and shape. After all, the maximum window size just got a little wider and a little shorter.

>Note: Of course, if you keep the status area hidden in your solution, your database windows are significantly smaller than the screen, or you make heavy use of [auto-resize][resize], then you won’t have to worry about the size change.

[resize]: http://sixfriedrice.com/wp/filemaker-9-tip3-get-the-most-from-autoresize/ “An article about FileMaker Pro 9’s auto-resize feature”

I hope the uproar over this annoyance doesn’t overwhelm the chorus of praise, though. After all, the new Status toolbar (it’s not called the Status Area anymore) beats the old version in several important ways:

* It does lots more. In the picture above, you can see buttons to manipulate the found set, perform finds, and bring up the sort dialog box. Switching between views (you know, Form, List, and Table) is now a quick click away, and the Edit Layout button makes quick work for mousers.
* Its horizontal configuration makes better use of space. Finally, the Layout pop-up menu is wide enough to show reasonable layout names. You can see the difference by comparing the layout pop-up menu in both pictures above. The new version is clearly much bigger.
* It is customizable. Your more adept users can now add buttons to the status toolbar for common FileMaker functions, move things around, switch between large and small icons, and so on. The changes they make will apply to every database they use, introducing a little consistency for folks who use several different databases.
* This is probably a matter of opinion, but to my eye, it is a lot prettier. And I like pretty things.
* Finally, it is more consistent with other applications, especially on Mac OS X. In fact, Mac OS X users will recognize this as a stock-standard toolbar that works just like other applications. And Windows users will still be comfortable with the more common buttons-across-the-top arrangement.

> Note: Before you get your hopes up, you should know that the status toolbar can be customized by the _user_, not by the _developer_. You can’t script the placement of buttons, add new buttons, or otherwise control how your users see things. They get to decide how their toolbar is arranged. Of course you can still hide the status toolbar, and keep it locked away from your users, so you haven’t _lost_ any control here.

A full discussion of the new status toolbar would require an entire article, so for now it will suffice to say it really represents a massive refinement and rethink of the way people interact with FileMaker, both as users and as developers.

It is not simply a cosmetic change. Instead, things have been reconsidered in intelligent, friendly ways. It makes common tasks easier to get to, and helps new users discover FileMaker’s features more naturally. On the thoughtful side, consider the black-ish layout bar which attaches itself under the status toolbar whenever you’re in layout mode:

The new Layout bar in FileMaker Pro 10

It politely shows you the context of the current layout (right after “Table:”) which is important information, and was squirreled away in a dialog box in FileMaker 9. And its little pencil icon gives you one-click access to the Layout Setup dialog box.

One final staff favorite: In Browse mode, when you click the clever pie-chart representation of the found set, FileMaker runs the Records -> Show Omitted Only command. You can quickly click to swap the found set in and out, and the pie chart makes it clear what is happening.

New users will quickly discover the Edit Layout button when in Browse mode. In truth, it is simply another way to get to Layout mode, but it is presented here in a way that saves first-timer’s a trip to the online help. It switches to an Exit Layout button once you get to Layout mode, so getting back is just as easy and obvious.

Individually, these may seem like inconsequential things, but FileMaker 10 is full of subtle refinements like this, and all together, they really make for a more sensible, approachable, and convenient interface. Once you get used to using 10, you’ll find yourself missing the new arrangement whenever you switch back to 9.

> Note: Although the interface redesign is a significant positive step, I don’t want to over sell it. Visually, nothing has changed _inside_ the database window. Pop-up menus still look retro-80’s. Radio buttons still render funny on Windows. Checkboxes still look like something my 7 year old drew in KidPix. Alas, we get no shiny on our layouts in this release. Just a much better experience in the parts FileMaker controls directly.

##Loaded and Ready

Without a doubt, Filemaker 10’s most significant new feature is script triggers. This fabled hero has, over the years, gone by many names: events, triggers, actions, behaviors… Whatever you call it, here’s the scoop: In FileMaker 10, you can cook things up so scripts run automatically in response to various actions. For instance, imagine you want some scripted magic to happen whenever someone clicks to a certain tab in your tab control. In FileMaker 9, the intrepid developer would have to delve into [hidden tabs][hidden-tabs], masked buttons, and who knows what else to pull this off. After all, scripts run when people click buttons, so you have to trick the user into clicking a button when they really want to select a tab.

[hidden-tabs]: http://sixfriedrice.com/wp/tab-controls-without-the-tabs/ “An article about hidden tabs.”

Imagine you could turn that reasoning upside down, though. Instead of thinking about clicks, think about actions. As in: When the user switches tabs, run this script. That’s the gist of triggers. FileMaker runs your script in response to something. In this example, you can tell FileMaker to run your script when the tabs are _modified_—when someone changes which tab is selected.

Triggers are associated either with the layout (choose Layouts -> Layout Setup, then switch to the Script Triggers tab) or a single layout object (select the object, then choose Format -> Set Script Triggers). Some triggers even have the power to cancel the original action by exiting the script with a result of `False`. For instance, if a script triggers when a record is committed, and it exits with a result of `False`, then FileMaker won’t commit the record. In this way, your scripts can gain a little control over the under-the-hood behavior of the application itself.

On the layout, you can trigger scripts in these scenarios:

* **`OnRecordLoad`** fires when a new record is “loaded” when the user is on the layout. In other words, when the user flips to a new record with the book icon, performs a find, makes a new record, and so forth.
* **`OnRecordCommit`** triggers when a record is committed. As mentioned before, this action can be canceled by the triggered script.
* **`OnRecordRevert`** kicks in when a record is reverted. This one is cancelable too.
* **`OnLayoutLoad`** fires when you switch to the layout. Imagine leaving the Status toolbar unlocked, and performing special finds, sorts, and so on automatically as your users switch layouts.
* **`OnLayoutKeystroke`** has the power to act with every keystroke. This is sort of the super-power trigger, allowing you to build single-stroke navigation systems, filter keystrokes based on criteria, and probably a thousand other as-yet-unimagined things. As you probably guessed, your script can cancel the keystroke, as though it was never pressed.
* **`OnModeEnter`** runs a script when the user switches to one or more specified modes. You could switch to a print-formatted layout automatically whenever the user goes to Preview mode, or use a special layout for Find mode, for instance.
* **`OnModeExit`** is a slight variation on `OnModeEnter`: it fires right before you leave a mode. This way your script can see which mode the user is switching _from_ and can even cancel the switch if you want.

The triggers for layout objects are:

* **`OnObjectEnter`** lets you know when a field has been entered, a button or tab has been tabbed to, or a portal row has become active. It also fires when you click on the page in a web viewer, or tab to a field on the page.
* **`OnObjectKeystroke`** is just like `OnLayoutKeystroke`, except it only jumps to action when you press keys while the object has focus. In other words, when you’re clicked into a field, or a button or tab control has the thick black border you see when you tab to it. As before, you can cancel keystrokes.
* **`OnObjectModify`** is the swiss army knife of triggers. For fields, it triggers whenever you’re in the field and change its value in any way (by typing, deleting, pasting, cutting, and so forth). Incidentally, it does not fire if you drag text from one field to another since, by definition, you’re not in the field you drag to. Bummer really. Many times, if you think you want an `OnObjectKeystroke` trigger, you really want an `OnObjectModify` trigger instead. For instance, `OnObjectModify` doesn’t fire when you use the arrow keys to move around in a field, or when you tab to another field. `OnObjectKeystroke` does fire in these situations, making it more powerful, but also much more difficult to work with. Finally, `OnObjectModify` also fires for tab controls when you switch from one tab to another.
* **`OnObjectSave`** does its thing when you finish making changes to a field. You can type, delete, cut and paste, and otherwise mangle the field’s data to your heart’s content without firing scripts. Then, when you tab out of the field, commit the record, or otherwise cause FileMaker to get you out of the field, the `OnObjectSave` field kicks in. It only fires if the field was actually modified, and it can cancel, meaning the user is not able to exit the field until they satisfy the demands of your script.
* **`OnObjectExit`** works just like `OnObjectEnter`, except it fires when you leave the object instead of when you go to it. Once again, it is cancelable, which prevents the user from moving on to something else.

It is worth noting that the power to _cancel_ runs deep. If you write an `OnObjectSave` script that exits with a `False` result, FileMaker won’t let the user leave the field. Period. Even if she tries to switch to a different record, change layouts, close the window, or even quit FileMaker. In every case, the action will simply not happen at all. It is up to your script to provide reasonable feedback to the user (like a custom dialog box or a beep). And of course, if you make a mistake and your script always exits this way, you’ll essentially be stuck in the field forever, so you really need to be careful. (Luckily, triggered scripts work perfectly with the script debugger in FileMaker Pro Advanced, so you can just turn on the debugger, exit the field, then kill the trigger script to work around your troublesome code.)

I’d be a fool to try and predict the kinds of techniques we’ll see popping up [here][fm-mag] and [there][sfr] once people really begin to explore script triggers. I think this is one of those game-changer features: Ball’s in the air and it’s anyone’s guess where it will come down.

[fm-mag]: http://filemakermagazine.com/ “FileMaker Magazine”
[sfr]: http://sixfriedrice.com/ “Six Fried Rice”

> Note: A new View -> Show -> Script Triggers menu command was also added in Layout mode. Turn this on to see a little red star icon attached to any object on the layout that has script triggers. This is super useful, for instance, to help keep you from accidentally duplicating a trigger-happy field for some unrelated use.

##Sub-Summaries Like Never Before

This is a feature that’s easy to explain, requires almost no new learning, and will knock your socks off. Everything you know about sub-summary reporting now works in Browse mode. It’s almost magical to see elegant grouped lists instantly adapt as you edit records, and change the sort order, all the while remaining fully clickable. In this case, a video says it better than words:

>Note: You can download the sample database used in the video here: [People.fp7][ssdemo].

[ssdemo]: http://sixfriedrice.com/wp/wp-content/uploads/2009/01/peoplefp7.zip “A sample database showing live sub-summaries in action.”

##The Persistent Sort

If you paid close attention to the video above, you may have noticed something else new: Records stay sorted. If you sort your contact list by City, for instance, then update the address for someone who moved, the record you edit will instantly jump to the correct sorted position. In other words, the storied state of “semi-sorted” is almost a thing of the past. (“Almost” because it can still crop up when importing records into a sorted list, or when using the Replace Field Contents and Relookup Field Contents commands.)

In truth, once you get used to this behavior, you’ll probably wonder why it didn’t work this way all along. It just feels natural. Best of all, you don’t have to do anything as a developer to take advantage of this feature. It Just Works™.

##Find and Find Again

Here’s another feature that’s more for the users than the developers, but it’s still super cool. The Records menu now has a Saved Finds submenu, where FileMaker keeps track of the most recent find requests you’ve used, lets you perform them over again, and even lets you save a frequent find with a special name. You get the same menu if you click-and-hold on the Find button in the status toolbar:

The Saved Finds menu in FileMaker Pro 10

If your users often perform the same finds over and over, they no longer need to beg you to write them a script. Instead, they can do the find once, then choose Save Current Find… to add it to this menu. Now, the same find (with as many requests and criteria as they want) is just a few clicks away.

The list of saved finds is stored with the user’s account, so if your users each log in with a separate account (even with External Authentication), they’ll have their own persistent set of saved finds. What could be simpler?

##Send Mail the Old Fashioned Way

There are two kinds of people in the world: Those who see the following picture and think, “It’s about time!” and those who…don’t. Which one are you?

The new Send Mail command in FileMaker Pro 10 can send directly to an SMTP mail server.

Starting with FileMaker 10, your scripts (and users, if you so desire) can send email directly through a so called SMTP Server (in other words, an industry standard email handling system). When you send an email this way, it bypasses the mail program on the local computer completely. You don’t have to worry about configuring an email client on a robot computer, or supporting Lotus Notes version 9.2.8.8.3.1.3, or confusing your users with mysterious pop-ups. Instead, your FileMaker solutions can act just like real email programs, delivering any message you want to anybody you want with no interference.

You can even customize the email address the message comes from, so long as it is allowed by your mail server. Put another way, you can now send email quickly, cleanly, and reliably without special plug-ins. As an added bonus, when you use this option in your scripts, they can be run by FileMaker Server as a scheduled script.

Don’t be lulled into thinking you should always use the SMTP Server option in your scripts though. The older behavior is still available (and the default) by way of the E-mail Client option. And it is still the right choice if you want your users to customize the message before it sends, or if it is best for them to see it in their Sent Mail folder. Now, you get to decide which model works best in each situation.
And remember, this feature should be used only for good, never for [evil][spam].

[spam]: http://www.spam.com/

##All Hail the Tab Order

Have you ever had to add a new field to a layout that has lots of fields and a very particular tab order. If so, you have, no doubt, cursed the engineers at FileMaker Inc. a time or two, while you click…every…darn…field…over…again. Apparently one of those engineers ran in to the same problem when helping his girl friend keep track of her antique Pez dispensers. Because that guy, bless him, stayed late one saturday night and fixed the problem.

As of today, my friends, you can now insert a field into the tab order. For example, suppose you already have fields numbered 1, 2, 3, 4, and 5. You then add a sixth field to the layout, which really should go right between 2 and 3. No problem: Just choose Layout -> Set Tab Order, put a 3 in the arrow by the new field, and marvel as FileMaker renumbers the rest for you. 3 becomes 4. 4 becomes 5. And yes, ladies and gentleman, for a limited time only, 5 becomes 6.

We’d call this feature a great leap forward, but seriously, when you have nowhere to go but up, it’s more of an obligatory lurch forward. None the less, thank you engineer dude. You’ve given us our lives back.


##Customizable Table View

Hold on to your socks. In FileMaker 10, _users_ can now add fields to table view without visiting the layout. This adds a level of dynamic data access that has never existed before, which is a great step. Now you can configure a table view layout for your users, and let them add or remove fields as they see fit:

In FileMaker 10, users can add and remove fields from a table view layout.

Many of you will gasp in horror at this, though. Now it is painfully obvious that a field that is not restricted by a Privilege Set is wide open for view *and* edit by a logged in user. That means someone can go to a table view layout, click Modify and add the Password field to the list, or drop in the Cost field and modify it. (If you keep the status area hidden and locked, then this feature is locked away too, so nothing has changed for you.)

Of course this was always possible in a more round about way: If you have access to a database, you can use its tables in a *new* database of your creation, where your access to fields is limited only by your privilege set. But a lot of people ignored this problem either because they were unaware or considered it too obtuse [ed: er…abstruse, see comments below] to worry about. Now poor access privilege settings can lead to trouble much more easily.

The _correct_ solution to this problem is the same as it always has been: Depend on privilege sets to control who can see and edit what data. And “Run with full access” scripts to work around the restrictions as needed.

Alas, this is a difficult change to make. If you are willing to live with the sort of half-baked security you’ve had all along, the simpler solution is to turn off Table view access for all relevant layouts. This can easily be done in the Layout Setup dialog box. Once you do this, users will no longer be able to pry in to fields without the level of effort required in 9. (And remember, if you have the status area hidden and locked, the user won’t be able to get to the Modify button in the first place.)

>Note: To reiterate, blocking table view **is not secure**. But if this new feature causes you trouble, then **your system isn’t secure in 9 either**. So it is a quick method to get back to the slightly more obscure insecurity you had before. As always, we recommend you use proper security if security really matters.

##Indirection

FileMaker 10 has one new feature that will almost certainly prove to be a sleeper sensation. At first it seems so weird, so obscure, that many will wonder why in the world they would ever use it. But in time, as clever developers put it to use and share their experiences, I’m confident we’ll begin to understand its true power. I’m talking about a new script step called `Set Field by Name`, and its companion function, `GetFieldName`. The first works just like the `Set Field` script step you know and love, except that instead of choosing the field you want to set from a list, you use a calculation formula. For instance, if you want to set the First Name field, you could use a formula like this:

“Customers::First Name”

Or this:

Get ( ActiveFieldTableName ) & “First Name”

Or even this, if you like this sort of thing:

“Customers::” & LeftWords(“First things first”, 1) & ” ” & Filter(“Nxaxmxex”, “abcdefghijklmNopqrstuvwyz”)

To put it succinctly, the result of the calculation is the name of the field you want to set. So if you do this mind-bender:

Set Field by Name [ Globals::Name, “Something” ]

It is not the Name field itself that gets modified, but rather the field whose name is _in the Name field_.

Because storing field names in literal text values in your calculations is inherently fragile (if you rename a field, you script will break), FileMaker 10 also introduces the `GetFieldName` function. This function, at first blush, seems even weirder. Consider this formula:

“You have a field called ” & GetFieldName(Customers::First Name) & “.”

If you put this in a calculation field or a Show Custom Dialog script step, you’ll see this: “You have a field called Customers::First Name.” When a field is inside `GetFieldName` in a calculation, you get its _name_ instead of its _value_.

If this just confuses you, don’t worry. You’re not alone. The popular name for this feature seems to be “indirection” or “field indirection.” This is probably because it is tangentially related to a [computer science concept][indirection] of the same name. But I like the dictionary definition better:

[indirection]: http://en.wikipedia.org/wiki/Indirection

>_indirection_: indirectness or lack of straightforwardness

That about sums it up. Truthfully, although its use will be rare, it is an exceptionally powerful feature. You’ll see an article or two appearing here on SFR soon showing techniques that take advantage of indirection.

##Where to Print

When you use the Print script step, you can turn on the “Specify print options” checkbox to hard-code printer-related settings like the number of pages, the page range, collation, and so forth. In FileMaker 9 on Windows, in some cases, this checkbox would also cause FileMaker to automatically select the correct printer for you. In other words, if you wired the script to the printer called Sales Office Laser, then anybody who ran your script would get output on that printer too.

This printer selection never worked on Mac OS X, and it was a little flaky on Windows. As of FileMaker 10, it is an officially supported feature, and works seamlessly with any printer and on any platform. Now you can force the Fax printer driver in your script, or send bar code labels to the thermal printer, with no user interaction, and no messy plug-ins.

##File Recovery and Maintenance

The Recover process has long been a source of anxiety for even the most capable FileMaker developers. Nobody knows quite what it does, everybody swears off recovered files like plague-stricken corpses, and you have zero control over the process. All that changes in FileMaker 10. Witness:

The new Recover dialog box in FileMaker Pro 10

We’ll have an entire article devoted to all these knobs and switches, but as you can see, you have a much greater (and possibly more confusing) degree of control over the recovery process. What’s more, FileMaker now produces a comprehensive log of the entire recover process, so you can see exactly what (if anything) it changed. On the down side, these logs are abstruse—you have to know a lot about FileMaker database internals to really make sense of them. Luckily, FMI has promised a whitepaper to help us mortals make the most of it. We’ll provide a link as soon as we find it.

On a related note, we should mention the [Milli Vanilli][milli] of FileMaker features: File Maintenance. This handy command made its debut in or around FileMaker 7, to the cheers of FileMaker developers everywhere. Its compress and optimize operations seemed to speed up our databases while at the same time making the files smaller. Many of us started performing file maintenance as a part of our regular upkeep.

But a couple years ago at the FileMaker Developer’s Conference, FileMaker personnel made an apparently official about face, suggesting that we should never use these commands. It turns out the ancient Save a Copy As command, with its “compacted copy” option, performs the same basic service. The difference is that file maintenance operates directly on the open database, which means if anything goes wrong, you can damage your file permanently. If you use Save a Copy As instead, you get a compressed and optimized copy. If a problem arises, the original file is still OK.

[milli]: http://en.wikipedia.org/wiki/Milli_Vanilli

Once this became clear, nobody wanted to use file maintenance anymore, and a few folks began to wonder why the feature even exists. Why offer an appealing, but unsafe version of an existing useful command? FileMaker apparently agrees. As of FileMaker 10, the File Maintenance command no longer exists.

##Miscellaneous Changes

No new version would be complete without a laundry list of relatively minor changes. Here it is.

###ESS Enhancements

FileMaker 9’s flagship feature was External SQL Sources, or ESS, so it is unsurprising that it ESS got a little love in 10:

* Value lists based on fields from ESS tables are now supported.
* ESS now supports Single Signon authentication with Microsoft SQL Server. If you don’t know what that means, you also don’t need it.
* DATETIME columns are now handled more intelligently with Microsoft SQL Server. You get to decide if you want just the Date portion of the value, just the Time portion, or both.
* You can now use the latest versions of MySQL and Oracle with ESS.

###A Few Good Functions

FileMaker 10 adds five more calculation functions we haven’t yet mentioned, and makes a subtle change to a sixth:

* The **`Char`** function creates a text character from its numerical equivalent. Now you can insert a Line Feed character in your calculation easily: `Char(10)`

* The **`Code`** function works opposite to `Char`. It gives you back the numerical equivalent of the text value you pass in. This is critical information when building scripts for Keystroke triggers. It allows you to handle complex keys like `escape`, `enter`, function keys, and so forth.
* The **`Get(TriggerKeystroke)`** and **`Get(TriggerModifierKeys)`** functions tell you which keys someone pressed to fire you `OnLayoutKeystroke` or `OnObjectKeystroke` script triggers.
* The **`Get(DocumentPathListings)`** function returns a list of paths to every file in the user’s Documents or My Documents folder. Again, I’m not sure what inspired this function. It seems odd that it is limited to just the Documents folder, but I’m sure there’s a reason in there somewhere.
* The **`Get(TemporaryPath)`** function has changed just a touch. It now returns a path to a special folder *inside* the user’s temporary items folder. Anything you store here will automatically be deleted by FileMaker when it quits. Before, files would stick around until the operating system decided to clean them up, potentially wasting space. In general, this should not effect your scripts at all, unless they make the (faulty) assumption that files created in the temporary folder will be there across restarts of FileMaker.

###Import and Export Formats

FileMaker can now import data directly from [Bento][bento], the Mac OS X only consumer database program FileMaker Inc. released last year. Time will tell if it proves useful, but this means you can now import data from the Mac OS X address book and calendar into FileMaker by way of Bento. Let us know if you come up with any cool uses for this.

[bento]: http://www.filemaker.com/products/bento/features.html “FileMaker’s Bento application.”

In addition, a few prehistoric formats are no longer supported for import or export: SYLK, DBF, DIF, WKS, and BASIC. Honestly, we might miss DBF a little, but the rest we haven’t used in years, if ever.

Finally, FileMaker can now import and export the new .xslx format used by Microsoft Excel 2007 for Windows and 2008 for Mac OS X.

###Edit Scripts Tweaks

The Manage Scripts window has seen some minor changes too. Script groups, which were first introduced in FileMaker 9, are now called _folders_ in keeping with their function and icon. Also, you can now create an empty script (just like before), or a so called Default Script, which, in homage to FileMaker 5-ish, is a script with a few pointless steps already inserted. I guess the idea here is to show people what a really small script will look like. Thankfully, Empty Script is still the default, so that’s what you’ll get if you just click New.

###Etcetera

Some things really only warrant a bullet point:

* FileMaker now supports IPv6 for database sharing. We don’t have enough expertise here to comment, except to say, “sounds good to us.”
* The QuickStart panel, another FileMaker 9 newbie, has been redesigned a touch. It now includes recent database, a favorites list, and more. In other words, I haven’t turned it off yet, which is a first for me.
* A new Launch PHP Site Assistant command in the Tools menu gives you quick access to this web site builder if you have it installed.
* The Database Design Report has (duh) been enhanced to cover script triggers and the other new FileMaker 10 features.
* The Starter Solution (template) databases included with FileMaker are now a little less embarrassing. For instance, they actually use real tab controls now. And normalized tables. And other features introduced in the last five years.
* My notes say there is no longer a hard copy User Guide in the box. I suppose someone out there will care, and with you, I condole.

##Another Year(ish), Another Release

FileMaker has been progressing so steadily since the 7 release, that it would be easy to get a little jaded. But when you look at it objectively, you can’t help but be impressed. I find it heartening that FMI put time into big new power features like script triggers and a less bullet-point-worthy but equally important user interface overhaul. This release certainly looks different, but it also has enough new power to keep people like us busy finding new solutions for a good while.

Also, I don’t talk about this much, but because I write [books on FileMaker][amazon], I typically get to play with the software a little bit before release. I’ve been lucky enough to get pre-release access to most versions of FileMaker since 5.5, so I have a lot of experience toying with new releases at night while I use last year’s model all day. It took me a few days to get used to the new interface in 10 (I kept trying to show the already-visible status area, for instance). But once I was in the groove, I suddenly found FileMaker 9 to be aggravating in ways I’d never noticed before. I think this is the first time that’s happened.

The new release completely supplanted my subconscious expectations almost over night. The Layout bar, the Preview button, the Formatting bar, the Status toolbar—all these little changes seem, to me, to fit the way my body wants to work better than FileMaker ever has before. I now feel like 9 is clunkier, like my workflow in 9 just isn’t as smooth as it is in 10. And for a software product I’ve been using almost daily for 15 years, that’s really saying something. I wasn’t convinced at first glance, but now I’m impressed.

[amazon]: http://www.amazon.com/exec/obidos/search-handle-url/ref=ntt_athr_dp_sr_1?%5Fencoding=UTF8&search-type=ss&index=books&field-author=Geoff%20Coffey

Only one question remains: Where do they go from here? You almost never see a Version 11 in major software. CompuGlobal Hyper FileMega Pro 1.0, anyone? Cheers, FMI, and cheers, FileMaker community. Let us know what you think in the comments.

Leave a Comment

85 thoughts on “Introducing FileMaker Pro 10

  1. David:

    I hear you loud and clear. Many people love IWP. I just haven’t had the right set of needs. As a professional web developer (I’ve been building web applications for about 6 months less time than I’ve been using FileMaker) I usually prefer to build things with a CWP-like technology. But IWP absolutely has its place, and its fans.

    As for professional UI and improved controls on the layout, I agree. I would love prettier elements on my layouts very much.

    Geoff

  2. Hi, thanks for a very good article!
    Please tell us why Filemaker hasn’t made Tab Control script triggers. Or a function that tells me what Tab (Tab Name) is up front. I tried to make a work-around with GetLayoutObjectAttribute, but didn’t succeed.

  3. This was the solution:
    For Tab Control: Used the following in Script Trigger OnObjectModify
    Case(GetLayoutObjectAttribute ( “Tab1”; “isFrontTabPanel”);”Tab1″;
    GetLayoutObjectAttribute ( “Tab2”; “isFrontTabPanel”);”Tab2″;
    GetLayoutObjectAttribute ( “Tab3”; “isFrontTabPanel”);”Tab3″;
    GetLayoutObjectAttribute ( “Tab4”; “isFrontTabPanel”);”Tab4″)

    Purpose is to set a global variable so I can go to this object next time I enter the Layout

  4. Tore:

    Ah, but they did. You just need to know the secret handshake 🙂

    To trigger a script whenever the user switches tabs, add an OnObjectModify trigger to the tab control itself. It will fire with every tab change.

    To discover which tab is frontmost, you have to work a little harder. First you need to assign an object name to each tab panel. Then you can use the GetLayoutObjectAttribute function to ask if the named tab panel is frontmost. You need to pass it the object name of the tab panel, not the label that shows in the tab. You can read more about this here.

    Hope it helps,

    Geoff

    Edit: Ah…you beat me to it. Excellent 🙂

  5. Hopefully the new “Reports in Browse Mode” in FMP 10 will allow “sliding up” and “reduce the size of the enclosing part”. Pray tell. I have a partially completed solution in 8.5 sitting on the shelf for 2 years waiting for this feature. Preview Mode just doesn’t cut it when it comes to presenting reports on screen as opposed to the printed page.

  6. Regarding the “Default Script” in what is formerly known as ScriptMaker, it takes on the steps of what was last manually done.

    So for example, if you went to a Customer Entry layout and did a find for Bob in the first_name field, and Smith in the last_name field, the default script will be something like this:

    Enter Browse Mode [ ]
    Go to Layout [ “Customer Entry” (Customer) ]
    Perform Find [ Restore ]

    Kudos to Kent_S on fmforums.com for finding this.

    -John

  7. Hi Geoff,

    When you say, force the Fax printer driver, does this mean I could send pdf’s as faxes to my clients from FM. I used to do this through a plug-in but gave up on it for various reasons. If this is what you mean, how would I begin to make it work?

    Cj

  8. Geoff:
    Wonderful article! Thanks 🙂

    With regards to pretty interface elements, I guess I’m kinda torn. On the one hand it would be really nice to have more modern tools and widgets, yet, on the other hand, most of my users don’t use the client anyway.
    Where I work, folks are increasingly wanting everything to be via the web browser — they don’t want to have to learn multiple applications. Thus, I’m finding that I have about 20% of my users firing up FMPro and the other 80% just wanting to access things via the web. Thus, I’m spending as much time in PHP as in the client these days.

    On another topic, the ‘Default Script’ would actually be pretty useful if you could define your own defaults. That way you could have all of the documentation comments, sections, etc. already there when you create a new script.

    Derek

  9. Mr. Vodka:

    Whoa. I had no idea. Now I think that is actually a pretty slick thing for new users. I wish I had known this before my book went to the printer 🙁

    Thanks!

    Geoff

  10. Cj:

    I haven’t played with it much, but that is the idea. For faxing, though, you’ll have to work out how to tell the fax software what number to send to if you don’t want your users to see the dialog box. But if they can see the UI, then it should work. You can just configure your script to use the Fax printer driver directly regardless of their default printer.

    Geoff

  11. Hi Everyone – thanks Geoff for doing such a nice writeup. Does anyone know if a good objective article has been written about FMP 10 Advanced? I just cannot see paying $300 without knowing what it offers above FMP 9 Advanced.

    Also, I agree that it’s been nice having these new versions of FMP come along these past few years, but whatever happened to 9.1, 9.2, 9.5 and so on? Jumping from 9.0.3 to 10 with no great advancement in the developer UI or UI-building technology has me more than a little downhearted. Apart from the much nicer toolbar, it all still looks and acts much like ClarisWorks 3 did back in the mid-90s, i.e., frustratingly archaic by today’s standards. I really think FMI needs to address this issue, as many others have mentioned. Compare FMP layout capabilities to those found in the iWork suite, for example, and you feel like you’re in a time warp.

  12. Kaliko:

    FileMaker Pro Advanced 10 gives you all the same upgrades from 9 and Pro 10 has over 9. There are no new Advanced-only features. I have no inside info, but it really seems to me that FMI has settled on Advanced being the same as Pro plus developer utilities, like data viewer, debugger, etc… This release focused on new core features. I completely understand that some people find this frustrating.

    As for version numbers, I gave up trying to make sense of them. For instance, if you ask me, FileMaker 4 -> 4.1 was a bigger upgrade than 4.1 -> 5. It is all just marketing hoo haa I think, and the numbers themselves have long since become meaningless. (Look at Mac OS X, which is still on the same “major” version it was a decade ago, despite being almost an entirely different doughnut.)

    8.5 was an exception really – pushed out the door just to get Intel native support on OSX without waiting for a major release. Aside from those sort of things, I would expect full version number updates with a chunk of new features every couple years.

    And finally, with respect to high-quality tools and widgets for making beautiful layouts: amen.

    Geoff

  13. Hi from a n00b

    Could you please post the sample database used in the subsummary demo? Just want to see how the multiple sorts were arranged on the layout.

    Thanks

  14. Hi all, and thanks Geoff for this thorough article, it was very helpful!

    As a designer my big feature wish is for the ability to flow text around objects. With this and a few other minor enhancements to it’s typographic capabilities, FMP could realistically replace InDesign as the best application for creating many POP print design templates.

    I’ve set up a system for my company that prints marketing and POP materials using a large number of print layouts. I can’t tell you how enormously more time consuming it is when we have to use a separate template in InDesign for a new marketing program simply because FMP can’t wrap text around images.

    While my wish is probably not a priority for most developers, i do think it could significantly grow the market of Mac/designer types using FMP.

    j

  15. food for thought…

    xslx (excel 2007+ format) allows you to export > 65356 (or there abouts) records into an exel file…

    under FMP9 you would be truncated at the max row count allowed in Exel, now it keeps on dumping out your data… thank god!

    as for DBF… pls write to FMP and ask them to put it back,… I have done so at their request…

  16. I’ve had it on the to-do list to read through all of this article for a while. Just did. Great job Geoff!

    Minor quibbles on grammar. Look for these two phrases:

    the simpler solution is to turn of Table view access… [“off” instead of “of”]

    FileMaker 10 has one new features… [“feature” not “features”]

    Good job. Thanks!

    Bill

  17. I noticed in your post that you made the statement that FM10 now gives you control over the Print Setup. Obviously you have used this script step yet because it appears that it gets overrode by the Print step. That’s right, you can set the Print Setup in a script and it will remember everything you set UNTIL you add the Print step. Whatever you default printer was last set to print (landscape, portrait, various paper sizes) will be restored and that isn’t always what you just had the Print Setup change.

    If you test it and get that Print Setup to work, I would love to know what the trick is because it’s basically ignored in all of my databases. This means I am having to get my customers retrained on what type of print settings they need to select for their printer. I’ve been debugging this thing for over a week now and have even reported it to Filemaker but haven’t received a response yet. It seems to me that all of the problems that version 9 and 8.5 are still existing in 10 when comes to print

  18. Just another tiny editing note, but “obtuse” is a word that describes a dullness of perception or acuity in a thinking being — it’s the that FMP *developers* may be obtuse, not the program:

    “But a lot of people ignored this problem either because they were unaware or considered it too obtuse to worry about.?”

    “On the down side, these logs are obtuse—you have to know a lot about FileMaker database internals to really make sense of them.”

    I think the word you probably were aiming at is the similar-sounding “abstruse” — “recondite” would also be good.

    Acutely,
    Albert

  19. Albert:

    I went straight to my dictionary to get the definition that would prove you wrong, and alas! You are completely, 100% correct. I’ve been using the word “obtuse” wrong for ages.

    And “abstruse” seems like precisely what I thought “obtuse” would mean. I love it when *I* learn from my own blog 🙂

    Thanks!

    Geoff

  20. Does v10 correct the longstanding bug in which the bottom line of text in a report are cut through horizontally, so that the tops of characters print at the bottom of the page, and the bottom halves print at the top of the next page? Makes for a very UNprofessional looking invoice!

    (This is an intermittent problem, occurring in some reports consisting of several parts – Body, Subsummary, etc. “Page break before each occurrance” has to be UNchecked to see the error.)

    I made an elaborate billing system to suit a demanding professional, and the only problem I cannot solve is this one. Serge LeSouef of Experts Exchange confirmed this problem exists up to version 9. So I am hoping it is finally fixed.

  21. To respond to an earlier post. Filemaker actually remembers your print settings for a whole session. So, for instance, if you have Forms that run several pages long because your client wants data to populate automatically across several pages. Then you do the Page Setup for the first page and then run it through the rest of the process (Go to next Layout, Print;No Dialog, etc.) It will print the rest of your layouts with the same settings.

  22. I cannot believe I’m missing this but I’m just trying to rename a button label and cannot find the way to select the text to change.
    Help!

  23. Yo. Basically want to leave a swift commentary and inquire where you grabbed your particular site theme I will be starting on own weblog and tremendously really like your particular design.