Archive for the ‘FileMaker’ Category

FileMaker Server 12 Console + Java 7 Issue

Wednesday, January 16th, 2013

The latest Java 7 installer for OS X places a new control panel on the system, replacing the Java Preferences app. If you disable Java, the server console for FileMaker Server 12 will not open and no log entries are created.

If Java has previously been customized, you can resolve this issue by turning Java back on. There is a new System Preferences pane for Java 7. Click on the Java icon in System Preferences and unlike many software packages, a new Java Control Panel application opens.

Screen Shot 2013-01-16 at 9.05.30 AM

At the new Java Control Panel application, make sure that “Enable Java content in the browser” is checked.

Screen Shot 2013-01-16 at 9.06.44 AM

This is an important note to consider for FileMaker Server 12 administrators as Java 6 is reaching End Of Life next month, prompting many vendors to update their code in the recent past and not so distant future. Disabling java in Safari has no impact on using FileMaker Server.

Filemaker 12 New Features & Key Changes

Friday, April 6th, 2012

FileMaker Pro 12, Go and Server were all released to the public in early April 2012. Each product brings its own set of new features. First and foremost is the new .fmp12 file format. It is the first file format update since version 7 of FileMaker which added multiple tables per file. This file format update feels more incremental but will introduce a number of changes for environments as they upgrade into the latest version. All the recently released products require this new file format.

Filemaker Pro 12 and Pro 12 Advanced
These are the workhorses of the Filemaker world. Much of the interface remains familiar to user of FileMaker 11 and earlier. Most of the updates in the FileMaker Pro client are related to layout and display. Version 12 provides new visual updates including gradients, alpha channel support, rounded ends on data fields and image slicing. Guides for common screen sizes for both Desktop and iOS devices will make layout designers much happier by reducing the number of times you’ll need to go back and forth between Layout and Browse while tweaking a layout to see if you’ve exceeded the display dimensions. Additional visual goodies in the new version include rounded buttons and hover states. All these visual goodies make Filemaker 12 appear much like CSS-3 webpages.

Containers are now treated a bit differently. You can specify default locations for files stored in containers. This option is selected in FILE:MANAGE:CONTAINERS. Container files also have additional options when defining them as fields in the database. In Field Options:Storage, there is a new section for Containers where you can specify the default location, and whether or not the file is encrypted (by choosing Secure Storage or Open Storage).

Real World Performance.
Working on a client file, conversion from .fp7 to .fmp12 took about 15 minutes for a 650MB file with around 700K records in it. Conversion was smooth and the resulting file opened and appeared and parsed ok, both in terms of schema, data, scripts and security. A script for parsing through some text fields for an automated data migration takes about 13 minutes to run in FileMaker Advanced 11 and FileMaker Advanced 12. Performance appears to be substantially similar among the clients without making further changes, although given some of the new features of 12, it is entirely possible to get far better performance, especially if you have a 64 bit system.

Filemaker Server and Server Advanced
FileMaker Server packs perhaps the biggest change in a 64 bit engine on the backend. This will make FileMaker Server Admins much happier. This means that FileMaker Server will be able to address much larger datasets natively in RAM, without paging them to disk. Also of interest to the FileMaker Database administrator is new progressive backups which should allow for a better balance between performance of the database and protection of the data. Backup and plugins have now been spun out to their own processes so a problem with either backup or a problematic plugin won’t take down your whole FileMaker Server.

Containers in databases hosted on the server will also now support progressive downloads so that you won’t need to wait for an entire video to download before you can start watching it. This will be a boon to iOS users. Which leads me to the final piece of the new FileMaker 12 triumvirate.

FileMaker Go
FileMaker Go also sports many of the new features of its siblings. Support for the .fmp12 is the biggest change, but not the only change. Also of interest is the ability to both print and export records. This will make FileMaker Go much more attractive as a client for users out in the field. No longer will you need to have FileMaker on a laptop or desktop to get outputs for clients or hard copies for signatures. The final coup de grace for Filemaker Go is its price, free from the App Store. FileMaker Go still requires a database created with Filemaker Pro or Advanced 12. FileMaker Go doesn’t provide the tools for developing a database as that’s not really what it’s meant to be. Once developed, the database can either be hosted on the iOS device itself or FileMaker Server for collaboration with other users (both iOS and FileMaker Client users). Databases hosted locally, as may be the case if you have users going offline, can then be synchronized to the server when the device comes back online (which may require some custom work to get just right).

FileMaker 12 Pro, Advanced, Server and Server Advanced are available as either a boxed product or a download from www.filemaker.com. FileMaker Go is available as a free download from the App Store. 318 is a FileMaker partner and our staff are enthusiasts of the product. If you need help or want to discuss a migration to the latest version FileMaker, please feel free to contact your Professional Services Manager, or sales@318.com if you do not yet have one.

Installing The Taxi Script in Microsoft Entourage

Friday, January 15th, 2010

1. Get to the Taxi Login screen. This comes up when you start Taxi initially.

2. From the Scripts menu select Install Entourage Action Scripts.

3. Find the Taxi Actions script file in ~/Documents/Microsoft User Data/Entourage Script Menu Items and open it with Script Editor. Click the Compile button and save it. Quit Script Editor.

4. Quit and relaunch Entourage. It should now recognize the script and respond to commands issued by Taxi.

Note: The Taxi scripts places drafts of e-mails in the local Drafts folder, not the IMAP Drafts folder.

FileMaker Developer Conference

Tuesday, July 28th, 2009

318 will be attending the FileMaker Developer Conference at the San Francisco Hilton from August 13th to August 16th. If you plan on attending or are in need of a custom FileMaker solution, send us a note at http://www.318.com/filemaker. Hope to see you there!

Recovering FileMaker and FileMaker Server Databases

Tuesday, April 21st, 2009

INTRODUCTION

The most common thing that happens to FileMaker databases is file corruption. In this case, the local or server files will not be accessible, and customers will report issues.

Normally, one specific file is down and inoperable in FileMaker or FileMaker Server, but sometimes could be multiple files. You will either have to grab the affected items from a recent backup or otherwise recover the files.

FILE RECOVERY

If you have to recover files, you will need FileMaker Pro. If you are recovering .fp5 files (FileMaker 5 databases), either version 5 or 6 would be appropriate. If the files are .fp7 files (FileMaker 7 databases), then versions 7, 8, 9 and 10 will work. Open FileMaker, choose menu command “File, Recover”, and select the damaged database file. FileMaker will save a recovered copy.

**Important** For .fp5 (FileMaker 5) files, after recovering, each file’s shared hosting status might revert to Single User Mode. To fix this, open the file in FileMaker Pro 5 or 6, go to “File, Sharing” and set the file to either Multi User or Multi User (Hidden), depending on whether or not you want it to be selectable in FileMaker Server. (If you do not have a version of FileMaker Pro 5 or 6 to work with, most likely a 318 developer will.)

FileMaker IWP Database Development

Monday, April 13th, 2009

Centering IWP

If you turn off the status area in IWP and edit the file iwp.css (inside the “FM Web Publishing” package), you can get the entire site to center. Add this code to the file iwp.css:

.part, #part { margin-left: auto; margin-right: auto; max-width: 600px }

(Hint: Make sure that the max-width property is smaller than your smallest FileMaker layout width.)

Then to have FileMaker center all the layouts, select everything on each layout, and using the Object Info box, set the anchor on the top and deselect any other anchors. (This is for fixed-width solutions.)

List View issues

If you were planning to use a list view, FORGET IT! List views only show up to 25 records and then FileMaker wants you to page through them. There is no way to specify a smaller or larger paging size.

Instead, use a portal to show the same information. Portals have unlimited records.

If you need to perform a search, you can still list the results in a portal:
1) Get your found set of records
2) Copy all record IDs as a return-delimited list into a global field.
3) Create a relationship from that global field to the table where you got your search results from.
4) Set up a new layout with the background table being the table with the global field, and create a portal using the new relationship.

If you want pages as well (like max 100 records per page so that not all of them loads), set up two new fields:
1) page_number
2) page_records — A calculation field using the return-delimited list global field:
Let ( m = 100 ; MiddleValues(global_records; ((page_number – 1) * m) + 1; m ) )
Change the relationship to use the page_records field instead of the global_records field.

No preview mode

Forget about subsummary reports altogether. You’ll need to be very creative to accomplish anything like this. If you do need to, consider scripting the subsummary totals and storing them into fields. There is no sliding either, so this needs to be taken into account as well.

If you need to print things out, this is possible. Create a layout that fits on all browsers (about 700×885) and make sure to center IWP. However, you can’t create visible “Go Back” buttons for navigation (since they’ll print out), so you’ll either have to make certain areas of the layout clickable to return you, or you’ll have to do a PHP solution (see “No new windows” section).

Portal issues

If you are trying to submit data to a script by placing a button inside a portal, you might run into problems. For example, if the button or field that has the script on it is an image or field stored in a different table than the portal itself, data from the portal table will not be passed to the script.

No new windows

If you want the solution to open a new page in another window, it is nearly impossible to accomplish. IWP will open new “virtual windows”, but they’re useless. You can use Open URL to spawn a new window or tab, but if you use it to access IWP using a link, the session will then think that you’re in a new layout, and so the old window will have problems.

If you need the new window for display purposes, such as a print-out, create this using PHP designed in HTML instead. You can generate pages from FileMaker using whatever table you want (using fields from a specific layout) and then just borrow the code from that.

Image (container field) boundaries

You should make the boundaries of fixed-size image fields (containers) one pixel larger on each side and set it to crop, and then center it. This will make the graphic look correct in FileMaker and in all browsers.

If you need to stretch an image, just make sure that the boundaries are also one pixel larger on each side and set it to Reduce/Enlarge.

If you need lines to connect to or line up with graphics, DO NOT use FileMaker vector lines! The lines will not necessarily align properly in all browsers, and there will be a difference between a FileMaker session and IWP. Instead, save a one-pixel container image and then stretch this on a page (making the container field 3 pixels wide).

Image speed

If you want your images to load faster in IWP, you should set up web viewers instead of container fields. Web viewers would point to an image located on a web site.

Web viewers will show up in individual iframes (frames within pages on the web site). This way, the browser will cache the image, making it faster to load.

Here are a couple caveats to using web viewers:
1) You cannot use web viewers within portals.
2) iframes by default have a gray border. To fix this, edit your iwp.css file to include this line:
iframe {border:0px solid #FFFFFF; }

Text field boundaries

In IWP, you should make text fields larger than you normally would, especially the height. This is because different browsers have different text sizes, and the text easily gets cut off. Also, many fields do not justify properly (especially vertically), so you might have to toy around with the layout to find a happy medium between FileMaker and the different target browsers.

View Mode vs Edit Mode

IWP Browse Mode actually has two modes: View Mode and Edit Mode. When a record is not yet being edited, you will be in View Mode. IWP will enter Edit Mode as soon as you click into a field that is editable. You can also script it to go into edit mode by using the script step Open Record. Once in edit mode, IWP acts like a regular web site submit form, where nothing is actually changed until you hit a button that submits (or commits) the record.

Be aware that when you change the contents of a field in IWP, field calculations based on this will not change until the form is submitted (the record is committed). So the page is static until a scripted button is pressed!

No custom formatting

Custom formatting unfortunately doesn’t work in IWP at all. If you want text to change colors, make it part of a calculation field.

Disabled script steps

There are many script steps that you cannot use in IWP, most of them having to do with windowing, exporting to files, displaying dialog boxes, or dictionary features. Make sure that “Web Compatibility” is selected at the bottom right of the script editor when writing scripts.

Speeding Up FileMaker Calculations

Wednesday, February 4th, 2009

Make as few calls to database fields as possible!

When using fields in calculations, each time the value is retrieved, FileMaker has to read from disk in order to get the information. Even if you use the same field twice in a row, FileMaker will read that field twice from the disk!

Here are some examples where you could really speed things up.

// Calculation 1
Case (
table_1::field_1 < 1; "green";
table_1::field_1 < 10; "red";
table_1::field_1 < 100; "blue";
"orange"
)
// End Calculation 1

In this case, multiple comparisons to table_1::field_1 are being made. Each time it compares the field to a value, it is retrieving it from hard disk. Instead, set a variable to the contents of the field, and then compare the variable to the values:

// Calculation 1 Revision
Let ( $table1_field1 = table_1::field_1 ;
Case (
$table1_field1 < 1 ; "green" ;
$table1_field1 < 10 ; "red" ;
$table1_field1 < 100 ; "blue" ;
"orange"
)
)
// End Calculation 1 Revision

This places the contents of the field into memory for fast access, and on average may speed up the calculation 2x!

// Calculation 2
If ( table_1::field_1 = "animal" or table_1::field_2 = "dog" or table_1::field_3 = "labrador" ; 1 ; 0 )
// End Calculation 2

In this one, three separate fields are being compared with the "or" operator. The calculation will always retrieve values from all three fields even if the first condition is met. Rewrite this as a case statement:

// Calculation 2 Revision
Case (
table_1::field_1 = "animal" ; 1 ;
table_1::field_2 = "dog" ; 1 ;
table_1::field_3 = "labrador" ; 1 ;
0
)
// End Calculation 2 Revision

This will give the same results; however, if field_1 does equal "animal", the next two comparisons will not be made, and will save time by not retrieving the additional fields.

// Calculation 3
Case (
IsEmpty(table_1::field_1) ; 1 ;
IsEmpty(table_1::field_2) ; 1 ;
IsEmpty($var1) ; 1 ;
IsEmpty($var2) ; 1 ;
0
)
// End Calculation 3

Here we have the same result (1) given by all of these cases. You would want to place the conditions with variables first because these will calculate much faster than the fields:

// Calculation 3 Revision
Case (
IsEmpty($var1) ; 1 ;
IsEmpty($var2) ; 1 ;
IsEmpty(table_1::field_1) ; 1 ;
IsEmpty(table_1::field_2) ; 1 ;
0
)
// End Calculation 3 Revision

This way, if conditions 1 or 2 are met, the calculation does not need to retrieve any fields at all!

// Script 1
Set Variable $$concat = "";
Set Variable $x = 1;
Set Variable $count = Count(Relationship_1::Field_1);
Loop
Exit Loop If $x > $count;
Set Variable $$concat = $$concat & GetNthRecord(Relationship_1::Field_1; $x);
Set Variable $x = $x + 1;
End Loop
// End Script 1

In this script, $$concat is a concatenated string of all values in the relationship Relationship_1::Field_1. In this case, you could make a single call to the database using the List command rather than retrieving the contents from each individual record:

// Script 1 Revision
Set Variable $$concat = “”;
Set Variable $field_values = List(Relationship_1::Field_1);
Set Variable $x = 1;
Set Variable $count = ValueCount($field_values);
Loop
Exit Loop If $x > $count;
Set Variable $$concat = $$concat & GetValue($field_values; $x);
Set Variable $x = $x + 1;
End Loop
// End Script 1 Revision

Caution #1: When using the List command, if the field contents of a record is blank, the value will not be included in the returned list. In this particular case, since concatenating a blank value would result in the same string, the results will be the same either way.

Caution #2: If you know that the field could contain return characters, do not use List (unless you really know what you’re doing!). The List function actually works best with serial number fields or fields that you know contain one line of data.

318, Inc. Announces Immediate Availability of RepTools™ 2008

Thursday, April 24th, 2008

RepTools™ 2008318, Inc. is proud to announce the immediate availability of our flagship software product, RepTools™ 2008.

RepTools™ 2008 is a customer relationship management (CRM) suite developed specifically for the entertainment industry. RepTools™ 2008 has nine integrated modules that are designed to efficiently manage all of the information businesses need to manage sales forces automation, asset management, and customer relationships from the beginning to the end of production. With instantaneous access to every aspect of the production process and comprehensive metrics for detailed analysis, RepTools™ 2008 will let you worry about what matters the most: your customers.

Over 100 New Features:

  • Document Management – RepTools™ 2008 has an all new document management system that will automatically organize your storyboards, bids, treatments, callsheets, location photos, and more.
  • Completely New Interface – Built to be faster over your network and keep you more productive than ever before.
  • New QuickFind – Now you can find any of your projects, contacts, or bids in seconds.
  • Live Filters – See only what you decide is relevant and prevent information overload from bogging down your workflow.

For more information about RepTools™ 2008 and how it can dramatically increase the productivity of your business, please visit http://www.reptools.com or call us toll-free at (888) 347-3318.

Routine FileMaker Maintenance

Monday, February 11th, 2008

This work can be performed remotely and would want to occur after hours to eliminate downtime.

Order of Operation is as follows:

1. Run Backup from FileMaker Server 2. Close All Databases 3. Shut down FileMaker Server 4. Open most recent Backup Locally 5. Execute master maintenance script (if no script, perform manually in each file) 6. Locate compressed files 7. Record difference in file sizes 8. Replace current hosted version of files with new compressed files 9. Restart FileMaker Server ( maybe restart entire server for good measure ) 10. Test new installation

Checking FileMaker Server Backups

Tuesday, December 11th, 2007

When checking backups for clients that have a FileMaker-based solution, it is imperative that we check the backup mechanisms for FileMaker in addition to Retrospect (or other backup solutions). This article will outline this process.

1) First, we need to refresh the finder so that the dates reported will be correct (you’ll see why this is important in a minute). To do this, you simply need to log out of the account and log back in. Keep in mind that programs like Retrospect will quit on logout. If the computer cannot be logged out due to the fact a program is hosting a service that is in use, there is another way to refresh the Finder’s timestamps. When you create a new folder in a finder window, it should refresh the timestamps. Do this in the folder you are checking, and then delete the newly created folder.

2) Once you have logged back in, we need to find out where the backups are stored. To do this, simply launch FileMaker Server Admin (/Applications/FileMaker Server /FileMaker Server Admin) and connect to the database by typing 127.0.0.1.

3) Once the FileMaker Server Admin is open, click on the “schedule” button at the top. Here you will see the schedule for the backups. Double-click on one scripts and note the file path starting with filemac:/. This is the location of FileMaker’s backups. The default location is:

/Library/FileMaker Server/Data/Backups/

4) Navigate to the listed location in the Finder.

5) Switch to details view (Apple + 2). You should see folders that indicate timed backups. For instance:

0800 1000 1200 1400 etc.

1 – Mon 2 – Tuesday 3 – Wed etc.

This would indicate that the database is being backed up every 2 hours, and on each day of the week.

6) Now, to check the backups, go into one of the folders. Make sure you are in list view (Apple + 2) and look at the timestamps. The last modified timestamp should fall in line with the type of backup you are looking at. If it is a daily, then the items in the folder for the day before should read “Yesterday”.

7) Go through the various backup script folders and verify that the database is backing up properly.

The FileMaker backup system should be checked in addition to the main backup system. The system should be set up so that FileMaker is creating backups, and those backups are being backed up again by the main backup program.

The developers have requested that we check and ensure that these clients also have at least one backup on each weekend day (in the evening). If they do not, go ahead and create one for Saturday and Sunday (10PM is fine as long as it doesn’t conflict with other backups). Add the script by doing the following:

Go to the folder where the backups are located and create a SAT and SUN folder. Make sure ownership is for fmserver (read/write) and group is fmsadmin (read/write). Then go into FileMaker Server Admin and go to schedules. Duplicate the Friday backup and change the file location and timing to meet your new scheduled backup. Name it appropriately.

FileMaker Server 9.0.2 PHP on Windows

Tuesday, December 4th, 2007

The version of the PHP API that shipped with FMS 9.0v1 is configured to expire, as did the 8.0 Public Beta of the PHP API. The 9.0v2 updater includes a new version of the stand-alone PHP API that fixes this bug, but the installer does not automatically place it where it needs to go — you have to do so manually. You can find the PHP API Standalone package here:

C:\Program Files\FileMaker\FileMaker Server\Web Publishing\FM_API_for_PHP_Standalone.zip

Just uncompress that and replace the existing PHP API on that machine with it.

Restart FileMaker Server from the Command Line

Friday, October 12th, 2007

If you’ve got a misbehavin’ FileMaker Server and you need to force restart the daemon without restartin’ the box:

Open Terminal:

Type:

ps aux

Look for fmserver services still running and kill those processes

then go to Directory:

/Library/FileMaker Server/Tools/

and

Terminal command is fmserverd START

You should be up and running : )

Preparing FileMaker Databases for Backup By An External Backup Agent

Tuesday, September 11th, 2007

First and foremost, it must be clear to the person building the system that FileMaker MUST back itself up. Depending on the version of FileMaker being used, this is done in the FileMaker Server Admin. Therefore, when final, the steps for a backup will be:

1. The FileMaker Server backs itself up to pre-determined folders in the folder structure of the server. This allows to folders that are NOT in use when the external backup agent runs. In addition, this allows the architecture of highly specific and timely backups of the database.

2. Using the destination folders for the backup performed by FileMaker as the source, we will use the backup agent on the server (Retrospect, Veritas, Backup.app, etc) to move that data to the onsite backup drive and therefore be folded into the general machine backups.

——————–

Backups of the live database will be done using FileMaker Server Admin. Connect to the server, and then choose ‘Schedules’ in the icon list.

From this screen, we will be creating our backup times and choosing the folders to backup to. While this window is open, you should also choose a default folder for the backups to be stored. This does not need to be in any particular location for technical reasons, but the 318 standard is:

/server HD/Library/FileMaker Server/Data/Backups/

This default backup location can be specified in the Configure > Default Folders area. Once specified, that will be the default location for all the backups built in the Schedules area.

To create a new Schedule entry for backup, click New (bottom right). Typically, these databases are backed up at hourly intervals throughout the day, daily through the week, and then with backups on individual days of the month. This tiered approach allows the database to be rolled back. In the event of unrecognized data loss for a period of time, you can roll a database back a number of days, weeks, etc and reconstruct your data.

With regard to the logistics of building such a tiered topology, it is typically easiest to use the Default Backup Folder (specified above) as the root of the backup directory and create subfolders within that directory. That is, if the server will be backing up in 2 hour increments from 6am until 10pm, you should have folders named 0600, 0800, 1000, 1200, 1400, 1600… 2200. Using a 24 hour clock time removes the need for AM/PM specifications. Similarly, when creating the daily backups, folders should be named 01-Mon, 02-Tue, 03-Wed, etc. Depending on the specific topology, these folders can either have the hourly folders in them, if it is necessary to keep a full week of hourly backups. The specific organization and scheduling is always going to vary based on the client’s specific needs.

Once the logistics of the backup plan have been worked out, create the necessary subfolders in the Default Backup Folder. At that point, you have the folders in place to create the Schedule items that will populate those backup folders with data.

When the Schedule in FileMaker is complete, there are a number of things that need to be done to ensure that the backups can run properly.

1. Verify permissions on the backup folders. The group should be fmsadmin, with full control. This ensures that the FileMaker Server will be able to back itself up to the backup folders.

2. Build an exception in the external backup agent (Retrospect, Veritas, etc) that protects the live database from any scanning by the external backup agent.

3. Verify the backups are running properly. As with any backup solution, you must ensure that the backups are actually firing. Make sure that the backups are showing up in the correct folders, and that the date and time stamps are accurate.

4. Configure the external backup agent to use one of the backups in the FileMaker Default Backup Folder as the source for the scripts that will provide onsite and offsite backups. Typically clients keep the final hourly backup for the day as the daily backup, however this can be changed based on the specific topology.

* A note about using .Mac Backup, iDisk syncing, etc. The purpose of backups such as these are to keep a single iteration of the database backed up offsite immediately. This is the backup that we would rely on to have more recent information than the last physically rotated offsite backup. That said, there are many difficulties that come hand-in-hand with using a remotely mounted volume for such tasks. The primary obstacle is that .Mac Backup.app does not support a duplicate type of script, only incremental backups. This means that the most effective way to keep the database uploaded without filling the iDisk in 2 days (DB ~ 500Mb, iDisk = 1Gb) is to turn on iDisk syncing in the System Preferences. This will keep a local copy of the iDisk on the desktop to be the destination of a Retrospect (,etc.) script and then use its own syncing daemon to automatically push the contents of the backups in the local iDisk up to the .Mac servers.

Importing Modules Into a FileMaker 1 File Solution

Saturday, July 7th, 2007

There is clearly a process that should be followed when combining multiple modules [files] into a single file solution. Without careful adherence to these guidelines it is easy to find that scripts and layouts (layout objects) will to break and therefore you end up starting over or trying to fix all of the errors that occur. Hopefully after reading this article you can save time in the front end and a lot of grief along the way.

Step 1: Make sure all Global Elements are in place.
Having a good handle on how the navigation and global elements and the discrepancies between your two solutions will keep you from scratching your head later on. Add any fields and global elements that you think will be necessary before continuing.

Step 2: Importing Tables and TOG’s and File References-
The most important step is to import all related tables. In the new solution make sure that none of the existing tables have the exact name as a table you plan to import. Rename any existing tables in the new solution BEFORE importing the old tables. Once they have been renamed you’ve setup a clean consistent naming method that won’t create any field missing links later on.

Depending on your method of importing the table, you may need to worry about the data. If this is a Navigation module or similar, don’t delete the records after import and use the import records from file as table command. Make sure you update your auto-enter serials.

Check that all the necessary file references exist. It is easier to make them first before creating any TOGs that need these relationships.

Recreate alll TOG’s EXACTLY as they are in the old solution. The names must be consistent to avoid scripts and layouts to break along the way.

Go through all field definitions and fix any broken calculations. Keep track of any that you can’t fix and need to be fixed later. Documentation is your friend!

Step 3: Recreate all Custom Functions, Privilege Sets & Custom Menus & Value Lists
Recreate any Custom Functions in the old solution that do not already exist in the new solution. (You must do this before scripts are imported. You may need to fix and field definition calculations at this time.) All these have to be done by hand because FMP won’t allow cutting and pasting of custom functions and value lists. Privilege Sets and Custom Menus are not as necessary unless you have a lot of scripting that depends on them. If so, do this now! Field Layout Objects are dependent on Value Lists so do these now.

Step 4: Make Blank Layouts-
Make blank layouts with the exact same names as the ones you wish to import. (This will save any scripts that use the go to layout command and buttons that also would use the go to layout command.)

Step 5: Import Scripts-
The best way to do this is first to make a print out of the names of all the scripts in the old solution. Go through and make sure you have a general understanding of each one of the scripts that you plan to import. (This way if something breaks you will know where the error occurs. )

Import the scripts. Some renaming may be necessary but DON’T rename them yet! You haven’t imported the layouts yet and many objects are dependent upon these names. Just make notes on the scripts you wish to change names.

Review the import log file and fix any errors you do encounter in the scripts. This information is golden. If the errors are too numerous, delete the imported scripts, fix the issues and reimport the scripts.

Step 6: Fix Custom Menus that use scripts-
This is a which comes first the chicken or the egg situation. If all of your custom menus are dependent on scripts, create the scripts first, and then create the custom menus. Either way you may have either scripts steps that load a custom menu or unknown scripts in your custom menu sets. You choose the best approach.

Step 7: Layout Objects-
Now is the time you can recreate the layout objects. Select ALL and copy and then paste the objects on the blank layouts you created earlier. Hopefully if you’ve followed all the above steps in order you will be left with minimal if not no table missing and field missing objects. [Although, FMP best practices state that copy and pasting graphic objects into a layout as opposed to using the FMP menu command of “Insert...”, is, according to FMI, the leading cause of corruption in FMP systems - It is always best to follow best practices, but not always practical or profitable.]

Remember the global objects you created earlier? This will be the time you’ll find out if you’ve missed one! Sometimes it might be easier to go back and recreate the missing objects first and then redo step 6. Weigh your options when you begin clicking through the layouts.

Step 8 & 9: Test, Debug & Rename:
Click on all buttons, go under the hood and look for buttons with unknown scripts and missing parameters. Just find out what is broken. Make notes as you test.

AFTER you’ve tested everything NOW you can go back and change the names of your TOG’s, your fields, your scripts, and everything else you had the urge to change but shouldn’t have.

And your solution should be good to go!

Final note: DO NOT EVER SUCCUMB to the urge of changing names as you go. No matter how you justify it, it will break something during the import process Guaranteed.

The FileMaker Magic Eight Ball

Tuesday, June 19th, 2007

Input: Will I get that promotion I’ve been waiting for?
Answer: Signs point to yes

This is a not-so-elegant take on the classic Eight Ball. Enter any question at all and get a random answer, just like the actual Eight Ball novelty ofyesteryear. Enjoy

Case(

0 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96

)

NAV: Counting Open Windows In FileMaker

Tuesday, June 12th, 2007

This function will give you an active count of how many windows you have open to better maximize your window control.

function name: f_openSystemWindows

copy and paste code below:

Let( [

nextFile = GetValue( fileNames; 1 );
fileCount = ValueCount( fileNames )
];

ValueCount( WindowNames( nextFile ) ) +
If( fileCount > 1;
f_OpenSystemWindows( RightValues( fileNames; fileCount – 1 ) );
//else
0 )

)

NAV: Capturing and Restoring Active Layout Tabs in FileMaker

Sunday, June 10th, 2007

Ever navigate away from a layout via a script and when you return, you’re on the layout’s default tab instead of the tab you were working under? Ever feel cold, desolate and alone?

The combination of the custom function and scripts below will allow you to script return navigation without abandonment of tabs. (3 tab levels deep)

function name: f_ActiveTabs

copy and past code below:

Let( [ objectNames = LayoutObjectNames ( Get( FileName) ; Get( LayoutName) );
currObj = GetValue ( objectNames ; objectNum )] ;

If( objectNum <= ValueCount( objectNames);

If( GetLayoutObjectAttribute ( currObj; "isFrontTabPanel") and
Let( parentObj = GetLayoutObjectAttribute ( currObj; "enclosingObject");
IsEmpty( parentObj ) or GetLayoutObjectAttribute ( parentObj; "isFrontTabPanel")) ;
currObj & ¶
) &
f_ActiveTabs( objectNum + 1)

)

)

Scripts:
GrabTabs = Set Variable [$$frontTabs; Value:f_ActiveTabs (1)]
Restore Tabs = Set Variable [$count; Value:1]
Loop
Go to Object [Object Name: GetValue ( $$frontTabs; $count )]
Set Variable [$count; Value:$count + 1]
Exit Loop If [$count > ValueCount( $$frontTabs )]
End Loop

Building Recursive Functions in FileMaker

Friday, June 1st, 2007

This is an example of a recursive function:

Name of Function (name whatever gives a clear indication of what the function does – in this instnance I’ll use a generic name)

f_Recursion

Parameter: n

Code:

If ( n > 1 ;
f_Recursion( n-1 ) & ¶ ; “”

)
&
GetNthRecord ( tableName::feildName ; n )

This will return a list of every value for the related set of records in that field. Note that recursion has about a 25,000 record limit.

Using Output from Recursive Functions in FileMaker

Friday, June 1st, 2007

One of the ways to use a recursive function is to build a list and then test to see if a specific value exists in that list. To determine if a value exists in the list, the following method is usefull:

1. Build a calculation field that builds a list with the custom recursive function.

2. Build a calculation field or know the field that contains the value you need to test for.

3. Build a custom function as follows:

Name: f_valueInList

Parameters: checkList, checkValue

Code:

not IsEmpty( checkList ) and Position ( ¶ & checkList & ¶ ; ¶ & checkValue & ¶; 1 ; 1 ) > 0

4. Build a field that uses the custom function you just created. For the paramters of the custom function, use the calc field that you created in step 1 above for the “chekList” parameter and the calc field that you created in step 2 above for the “checkValue” paramter.

You can now determine whether a dynamically occurring value or static value exists in a dynamically changing group of records.

FileMaker / XML Exploits Security Concerns

Tuesday, May 1st, 2007

When running FileMaker Custom Web publishing, it should be considered whether or not External Authentication via a domain should be used for the FileMaker system due to this exploit which will allow a savvy tech to grab domain userIDs and passwords to the entire domain:

An XML document fragment is loaded into the request-query parameter in the following grammar:




]
Note The query information is defined to be in the namespace fmq=”http://www.filemaker.com/xml/query”. Make sure you include a declaration of the fmq namespace in the element at the start of your XSLT stylesheet. See “About namespaces and prefixes for FileMaker XSLT stylesheets” on page 55.

For example, suppose you want to access the query commands and query parameters in this request:
http://192.168.123.101/fmi/xsl/my-stylesheet.xsl?-db=products&-lay=saIes&-grammar=fmresultset&-token.1=abc123 &-findall

If you include the statement before the template section, the Web Publishing Engine will store this XML document fragment in that parameter:
abcl23 < /query>

You can then use the request-query parameter to access the value of a token that was passed in a URL by using an XPath expression. For example:
$request-query/fmq:query/fmq:parameter[@name = '-token.l']

Obtaining client information
You can use the following FileMaker XSLT parameters to obtain information from the Web Publishing Engine about a web client’s IP address, user name, and password:


Include these parameter statements in your XSLT stylesheet before the top element.
These parameters provide the web user’s credentials when a stylesheet programmatically loads additional password-protected XML documents. See “Loading additional documents” on page 61. The web user must provide the user name and password initially via the HTTP Basic Authentication dialog box. See “When web users use Custom Web Publishing to access a protected database” on page 19.

For more information and examples of using these three FileMaker XSLT parameters, see the FileMaker XSLT Extension Function Reference.

This information is excerpted from the XSLT Reference database.

This FileMaker XSLT parameter provides the web client’s IP address.
Note: needs to be inserted before the top element. For example, this:

returns this:
Client IP: [your browser machine's IP address]

This FileMaker XSLT parameter provides the web client’s user name. You can use the parameter if your need to provide the web user’s credentials when programmatically loading additional password-protected XML documents processing, the original request.

When accessing a password protected database, you must provide a username and password within a URL. The syntax as is defined in HTTP standard is:

http://username:password@host/fmi/xml/ [Filemaker XML grammar name]. xml?query_string

Note: needs to be inserted before the top element. For example, in order to obtain the layout information from the source database, you can use client-user-name and password in the following manner.


This FileMaker XSLT parameter provides the web client’s password. You can use the parameter if your need to provide the web user’s credentials when programmatically loading additional password-protected XML documents while processing the original request.

When accessing a password protected database, you must provide a username and password within a url. The syntax as is defined in HTTP standard is:

http://username:password@host/fmi/xml/ [Filemaker XML grammar name]. xml?query_string

Note: needs to be inserted before the top element, For example, in order to obtain the layout information from the source database, you can use client-user-name and password in the following manner.



Tags: , , , , , , , ,
Posted in Directory Services, FileMaker, Security, Web Development | Comments Off

Managing FileMaker Pro Clients

Wednesday, November 22nd, 2006

From Wikipedia:
FileMaker Pro is is a cross-platform database application from FileMaker Inc. (a subsidiary of Apple Computer), known for its combination of power and ease of use. It is also noted for the integration of the database engine with its GUI-based interface, which allows users to modify the database by dragging new elements into the layouts/screens/forms that provide the user interface. This results in a “quasi-object” development environment of a kind that is still largely unique in the “industrial strength” database world.
FileMaker was one of a handful of database applications released on the Apple Macintosh in the 1980s.
FileMaker is now available for the Macintosh and Microsoft Windows operating systems, and can be networked simultaneously to a mixed Windows and Macintosh user base. FileMaker is also scalable, being offered in desktop, server, web-delivery and mobile configurations.
-

To complete a FileMaker Pro setup there are some things that you should remember to do, such as installing the latest patch for the version of FileMaker Pro being used, and testing the setup with the client.

When using FileMaker Pro, there are different ways to browse files, one of these ways is to implement Launcher Files so that users can access files and database with the fewest amount of clicks as possible.

To log into a FileMaker Server from FileMaker Pro, you can use paths to connect. The path would need to use a FileMaker-like application connection which is accomplished by typing “Fmnet://” without quotes. You are not required to put the username or password in the directory path to connect, just use the servername and databasename that you are trying to connect to, in the aforementioned order.

If you ever get serial number conflicts with FileMaker Pro, then ensure that you are ALWAYS using the correct license code to install the application. When entering the serial number, and FileMaker Pro refuses to accept the serial number, CHECK to make sure that the “registered to:” and “Company” fields MATCH the license code.

FileMaker Pro Advanced has some features that separate it from the regular version, such as Develop Utilities, Database Design report feature, Script Debugger, Data Viewer, Copy feature, Tooltip feature, Custom menus feature, File Maintenance Tools, and Custom Functions Utility.

Server External Authentication supports Single Sign On for the Windows platform and an analogous behavior on Macintosh OS X. This is a commonly employed technique in IS/IT system and network management. The concept behind Single Sign On, sometimes called universal authentication log–on or single–source log–on, is the belief that it simplifies user credential management activity by requiring the user to remember only one set of credentials to access digital assets and network based assets. Strictly speaking Single Sign On for FileMaker Pro 8 is a Windows OS client to Windows OS server feature only. However, in Macintosh OS X the feature can be mimicked by storing the credential information in the Keychain.

FileMaker Pro uses port number 5003 with both the TCP and UDP protocols when communicating via TCP/IP. Remember this when you have a firewall to go through.

FileMaker Pro Server is important because files running on a shared system without FileMaker Pro risk data loss. FileMaker pro files cannot be hosting using AFP in the same manner as using a FileMaker pro server.

FileMaker shares databases by sharing the database over a share point and opening it. Dymo is the most commonly used label printer with FileMaker.

When troubleshooting a connection from FileMaker Pro to FileMaker Pro Server, and it works from other systems, you should fall back on the normal networking troubleshooting tactics, such as checking the network connectivity on the client workstation, check the basic physical, then check the basic logical connectivity.

If you ever need to defrag FileMaker Pro Files than you can use SpeedDisk to defrag the databases.

If you are using FileMaker Pro on Windows XP to connect to a database hosted by FileMaker Server on a Mac OS X Server, and you are not able to connect to the database, you would check to see if anyone else can connect, then check the physical networking topology, after, you should check the Windows Firewall, as this is the most likely cause after everything else has been eliminated.

When trying to make it easier for users to open databases stored on a FileMaker Pro Server, you should save the users password for the FileMaker Server.

PS drivers are highly important in the FileMaker Pro world, if you don’t have the proper PS drivers installed, you can have a slew of different print problems, remember to always have the proper PS drivers installed.

To use a bar code scanner with FileMaker Pro, all you have to do is click in the field and pres the button to scan on the scanner. There is not much more you have to do to get a bar code scanner to work with FileMaker Pro. What it will do it capture the numbers from the barcode, have them show up on the screen in the appropriate (or selected) field.

The User Name in FileMaker Pro is set using the User Name option under the FileMaker Pro Preferences dialog box, under the General tab. This is where you can either set the system name, or type in the user name of the user once you click on “user name”, and select “other”.

FileMaker Pro client cannot share a database that is hosted on a server, but FileMaker Pro Server can.

A VLA is a volume license agreement, and like with most software, it is only available when you purchase more than one piece of software. It allows you to use the same serial number for numerous installations. For FileMaker Pro it is 10 or more users, and the number of installs you can deploy is determined by the VLA, and most time this is limited to the amount of licenses you purchases with your VLA.

The default file cache size for FileMaker Pro is 8MB, you can see where this is at by opening up FileMaker Pro, and clicking on Edit, Preferences, and then clicking on the Memory tab. This route will work for FileMaker Pro 8.5.

FileMaker Pro 6 can open databases hosted by FileMaker Server 5 and 5.5. FileMaker Pro 6 was released in or around 2002.

Active Directory and FileMaker Security

Tuesday, August 8th, 2006

ARCHIVE: This was only applicable for earlier versions of Mac OS X Server

1. First of all you need to know how to bind a computer running Mac OS X Server to an Active Directory domain. Bind it in /Applications/Utilities/Directory Access.

a. Check Active Directory.
b. Click Configure.
c. Under Active Directory Forest, enter yourdomain.com.
d. Under Active Directory Domain, enter yourdomain.com.
e. Enter the name of the computer.
F. Click Apply then Restart.

*If you are ever having problems with authentication for the whole machine to the primary domain controller of your active directory domain, burning the link then rebinding with this utility is a good place to start.

2. Now you need to tell FileMaker Server 8 to authenticate to an external server.
a. In FileMaker Server 8, open FMS Admin.
b. Click on the Configure button.
c. Enter the address of the primary domain controller
d. You usually can leave the distinguished name blank.
e. Under login settings (since you are authenticating to an Active Directory, a Windows product), check Windows Authentication.
f. Login as a user who is a member of the fmsadmin security group in Active Directory.

*** If you haven’t added a user to this group yet, RDC into the Domain using an account with Administrative privileges and open Start > Programs > Administrative Tools > Active Directory Users and Computers. Make sure you add an account that the FileMaker server can use to the group.

g. Save your changes.

3. Or you need to tell FileMaker Server 9 to authenticate to an external server.
a. Open a web-browser and go to the url: http://filemakerserverip:16000/.
b. FileMaker Server admin will load.
c. Login.
d. Click clients.
e. In the Task List, click Configure external authentication.
f. Make sure under client authentication, filemaker and external server authentication is checked.
g. Click the FileMaker Pro Clients chic-let at the top.
h. Click the Configure Directory Service button.
i. Under directory server, enter your primary domain controller.
j. Leave the point of entry blank.
k. Check my directory server requires me to logon.
l. Enter your fully qualified domain login for the user that you put in the fmsadmin group (i.e., DOMAIN\User). Use exact capitals/lowercase letters.
m. Enter the password.
n. Save and quit.

4. Troubleshooting.
a. Make sure the External logins you specify in your FileMaker solution match those that are in Active Directory.
b. Make sure your groups in your files are lower case if you are running FM Server on a Mac (the groups pulled from AD will become lowercase on the Mac regardless of what they are in AD).

Boolean vs Logic Arguments in FileMaker: Scripting and Field Creation

Saturday, July 1st, 2006

When creating an argument to determine if a field or variable contains data it is faster to use a Boolean argument as opposed to a logic, text string argument. The Boolean will only argue the ‘true’ / ‘false’ value of the statement as opposed to parsing out the full logic of the statement.

According to the “Under the Hood” sessions given by FMI at the last DevCon, Boolean arguments can provide boosts to speed.

Instead of “Yes / No” values in checkboxes, use “ 1 / null “ then when you argue for that checkbox, the argument becomes:

If ( checkbox ) or If not ( checkbox )
as opposed to
If ( checkbox = “ Yes / No “ )

Use IsEmpty ( field ) or not IsEmpty ( field ) as opposed to field >< “”

FMI also had some considerations for boolean calculations:

It only matters if something is True. If it’s not true, it must be false (which is also a null value), therefore, FileMaker does not need to know if it is false , only if it is true. ex:

Case ( myName = myName ; 1 )

Do not include the default negative result in the calc. This can aid in speed for searching and scripting.

Custom Function to Determine if a Windows Exists in FileMaker

Tuesday, April 11th, 2006

Name: f_winExists

Parameter: WindName

Code:

Position ( ¶ & WindowNames & ¶ ; ¶ & WindName & ¶ ;1 ; 1 ) > 0

This will return a boolean value

For the parameter, you can pass it the window name you’re looking for in a script paramter.

Use of this function will prevent you from opening more than one window from the same file when used with good navigational scripting.

FileMaker and Directory Services

Sunday, March 26th, 2006

Did you know FileMaker can be configured to authenticate with Open Directory and Active Directory? What does that mean? Well, most companies use a Windows Server or Macintosh Server to allow their employees to log in every day. FileMaker Server 7 now has the ability to connect to those same user accounts instead of having to remember usernames and passwords for both your FileMaker account and your computer account. This also allows companies easier account maintenance when employees join or leave companies. You no longer have to add an account for both the network and FileMaker. In addition to all these benefits, external authentication provides more security for companies that allow their employees to log in remotely.

RepTools v2005 is Released: New Module, New Features, and Lower Price

Thursday, May 26th, 2005

Celebrating our 11th year of helping production and post-production companies operate more effectively, Three18 proudly announces the release of RepTools v2005.

Please accept my sincere thanks for choosing RepTools as your comprehensive job tracking, sales automation and media asset management tool over the past decade and please let me know what I can do to help comfortably move you into this feature rich and extremely capable version of RepTools 2005.