Change Theme #Filemaker12


How easy is it to change the theme of a layout in Filemaker 12 compared to ‘the old days’ and other database applications? Really easy, really fast and probably the best although I must admit to having not tried this with 4th Dimension, the now discontinued Foxbase, Omnis or other database.

But consider this, all I have to do is make one menu item selection and then scroll though a list of choices to see what they look like. Change Theme is a new menu item under the Layout menu.

Change Theme

This menu item, available only in Layout Mode, opens the Change Theme Dialog.

Change Them Dialog

Use the Up or Down Arrow keys to move the selection among the layout themes and a Preview appears in the right hand area. This is light years ahead of the old picker.

The Magical Part of the new layout themes is that when you change theme, it changes every layout object inserted using the previous theme. Buttons change, backgrounds change, fields and tabs and checkboxes and… Well, try it for yourself.

If you haven’t acquired Filemaker 12 you can download a 30 day free trial from Filemaker.com.

One word of caution: as of today do not convert your working databases to Filemaker 12. Wait until v3 or later when the various bugs and problems have been isolated and fixed. This warning is not unique to Filemaker but applies to all database applications, word processors, spreadsheets, graphics and movie software… etc. And NEVER convert a locked down application you do not have Full Access privileges for editing and changes.

But, for new stuff, why not. Try it, test it and have fun. Just keep your hands off of the cash cow if you want to keep the cash flowing.

#CNSBarcode for #FilemakerGo12


CNS Barcode has a new update 1.2.0 that coincides with the update to IOS 5.1.1. Isn’t Apple’s automatic updates method convenient?

CNS Barcode for IOS has a ton of features but one limitation, it doesn’t work with the camera in the Touch but does with the camera in the iPhone and iPad. I am using the Touch and find that all other barcode scanners work with it.

There is a new price of $9.95 and of course I paid $14.95 months ago but that’s life.

Some basic documentation:
http://www.cnsplug-ins.com/iOS/CNS_Barcode/documentation#Settings

And changes for Filemaker Go 12:
http://www.cnsplug-ins.com/iOS/CNS_Barcode/FAQs

You can download sample files here:
http://www.cnsplug-ins.com/iOS/CNS_Barcode/tools

Of course these pages are loaded when you click on the tabs…

Since I cannot get the scanner to work with my Touch, the review ends here. Is there a closeup lens I could use? Anyone want to trade a new iPhone for my Touch? Apple Inc? Filemaker Inc?

What is a computer #Filemaker


In a tech forum discussing Filemaker 12’s new Get(PersistentID) I asked the question “What is a computer? Is it the mother board? Is it the Ethernet card? Is it the hard drive? Is it the….” One response I got took the stance that the question was silly. OK, he never sat with us years ago at coffee houses where questions like this were the beginnings of discussions not an invitation to have some one end the discussion.

Actually after a bit more investigation it turns out to be a very valid question and even more so since some folks don’t quite grasp the idea of identifying the user and how to limit their connectivity. OK, not a big issue if you are the only one using the database…at least until you lose your computer and someone gets to open the database.

One interesting discovery is the my IOS device has free apps the reference an UDID which is stated to be a 40 character unique ID string. My Dell software things it is tied to the USB controller.

There are quite a few bits of hardware and chips on our computers where an ID number exists and could be accessed so back to my original question, “What is the computer ID?”

Let’s look at that for a moment. Every part of our computer can be replaced. Apple used to change out the complete mother board rather than try to repair one small problem. Faster that way and the motherboard could then be worked on in a less time constrained environment. I guess Apple’s cost for a motherboard might be less that a few hours of a technician’s repair cost? Who knows. That was the era when Apple was using stick on serial numbers which were changed every time a computer was repaired.

An ID number is important for allowing access or denying access to computer services. NICs and KNACKs are used to identify a computer or the Internet and to direct a signal back to that computer, much like the address on an envelope.

Let’s keep it simple, does Get(PersistentID) provide a method of identifying one computer, whatever we think that is? Yes. Is it 100% reliable? No. For one thing the computer part that coughs up the ID can be replaced and a new Get(PersistentID) value would appear. Next, depending upon the source of the value, it might be spoofable. I read where Microsoft will use the value stored on disk if one exists rather than access the number burned in a chip.

And of course, someone might alter the value if it is stored in a record.

We can protect against someone altering the value in our database by encrypting that value. Not 100% foolproof but it sure eliminates a lot of not so technical types who might want to change the value.

So, let’s agree that whether or not the Get(PersistentID) value is everything we would want it to be, it’s all that we’ve got. How do we use it?

One use would be to identify the source of a new record. Insert the PersistentID whenever a new record is created and you have a reasonable idea, see above, as to what computer created the record. It’s a piece of cake to add a table of users and computers and that value would appear there for reference.

I am not claiming any technical expertise in the methodology used to create a Get(PersistentID) but instead look to the practical side of using this value, storing it somewhere and being prepared for the moment when it is replaced when a something is replaced in the computer, the computer blows up or is sold or thrown away or the user begins using another computer.

With that in mind, a Firewall Table is a useful tool for tracking these details and can even be quite complex and used to allow one access and deny another for the same computer, say a laptop someone brings to work and is allowed to access the server using it but is not allowed to access the server from home. Piece of cake to set up.

Since we have mentioned Firewall Table maybe we can quietly mention “Cookie in The Filemaker Folder” as another safeguard.

Thumbnails #Filemaker


Filemaker Pro makes it easy to store and display photographs, graphics and color swatches in container fields which is not a unique talent. BUT combine the storage of images with a full featured database and you can create something far beyond iPhoto or other image catalogs (but you may not be able to add every feature they have).

So, let’s consider how to do this and create a fictional company that has a series of photographs taken using one of today’s best cameras and the files it saved are 12 megapixel files that create stunning 11 x 14 inkjet prints or full page images in printed catalogs. We want to create a Filemaker layout using these images. We are novices who just bought Filemaker Pro and are creating our own files and layouts. We discover containers and how to insert and import images and how to size the container images on our layouts. Our graphic talents are extraordinary and our layouts are the envy of all.

We host our file on an inexpensive shared host for $20 a month and invite our clients to log in using Macs, PCs and IOS devices.

And it is a disaster!

Typical phone call or email: I fell asleep waiting for your layouts to load…

What the heck happened?

First let’s consider the shared host. Cheap has its price. At 8:22 every weekday morning one of the sharing databases does an intensive update of 34,000 records and during this update the server is highly stressed and our ability to do our work is restricted. Layouts there loaded briskly now are slow to load. The same thing happens at several other times during the day. But to be fair, we take our own shot at every one else when our clients try to download 480 Megabytes just to list four records… And we have 10 of them logging in at the same time and a total of 30 clients during the day. And we get a notice that we have exceeded our download allotment and our clients exceed their 3G and 4G maximums… YIKES…

Why is it so slow? How can I make it go faster?

First, your file needs to be hosted on the fastest possible server and connection you can afford. A low priced shared server is not the fastest but the slowest even if it is on a T3 or faster. Ask your provider if you can get a private server where you are the only user. Mine provides shared for $20 and private beginning at $100 a month. Your in house server connected by Ethernet to a hub is the fastest but doesn’t compare to opening the file on from your hard drive.

Next, do everything you can to make your file faster. Which brings us to our own venture. We designed the file on our laptop working at home, at Starbucks, on the plane and so on. We imported or inserted all of the photographs from the files we saved from iPhoto and Photoshop or other graphic programs. We impressed the heck out of our self and whomever was looking over our shoulder as we tested the file on the laptop or MacBook Pro. The 17 inch monitor on the mobile computer is a winner.

Wow, is that file a big one! 4 Gigabytes… How did that happen. I only added a few hundred photos.

Sound familiar?

We copy it to the server either in house or on a remote hosted server. I like remote since that provider does all of the work of maintaining the equipment, etc. and has much faster pipes than I do. (If I pay for it.)

Now let’s think about what we did in Novice Mode as first time users.

Filemaker makes it easy to insert or import a 12 Megapixel image into a container field without Filemaker or you worrying about how this will affect the speed of our layout displays. Even experienced developers who haven’t worked with images may insert full size images into their containers as we did above. If the file is hosted on a remote network it can take forever to display a list view of 60 x 60 or 100 x 100 images, especially one where 5 or 6 images are displayed on each line. OK, what web page displays 40 100 x 100 12 megabyte images? NONE. How many Filemaker developers try to display 40 12 Megapixel images resized to fit 40 100 x 100 containers. Did you? Did I? Did We?

So, we are transferring 500 Megabytes of data to display one list view and wondering why it is so slow?

Let’s look at what we did to create that list view of 4 images per record. First we placed the full sized image file into a container field. Then we placed that container field on various layouts and sized it to fit the layout as needed. On the list view we sized the container to 100 x 100 pixels and on the form view we sized the container to 500 x 500 pixels. We discovered we could ask Filemaker to resize the image to fit even though our image file was 12 megs and perhaps 3000 x 3000 pixels.

What we overlooked is that to resize the image to fit much smaller container objects Filemaker must download the full image and then manipulate that image to create the smaller size. And do this for every image on the layout. So, the first time the list layout is displayed ( 6 lines of 4 images each) we are asking Filemaker to download and resize 24 x 12 Megs of image data or 288 Megabytes of data for one screen.

Some techy may point out serious numerical issues with my example and I won’t argue with him about that. Note, technical types, this is not an exercise in technical data but an attempt to point Filemaker designers in the right direction by exaggerated example.

So, back to reality or at least my brand of reality.

My laptop can process this fairly quickly from local files but must wait for a remote host to transmit the data. An in house Filemaker Server is a bit slower and slower still if there is a lot of network traffic. A remote host can be affected both by its own traffic and by bottlenecks on the Internet. Using 3G or 4G is even slower. Pushing 288 megabytes over cellular networks is amazingly slow. 

I have created a file to display 4 images in one list record and sized to fit my laptop screen. These images just happen to be the size of an iPhone screen 320 x 4480 and it just so happens I am using this file to store screen dumps of my layouts and of apps that I find interesting. I use these layouts in this blog.

My laptop is quite happy displaying the list images with maybe just a hit of a redraw lag. I’m sure my next laptop will not do this but I only paid $500 for this one and it only has 4 Gigs of Ram and a 2.3 Gigahertz 4400 dual core processor.

So, let’s try that layout on my Touch/iPhone but first let’s consider its specs. 256 Megs of Ram and a single core A4 processor. 1/16th the RAM and 1/8th the speed or maybe less.

The result of trying to display that massive list is that it can be done BUT there are two issues: transfer speed and RAM image space. Computers allot a portion of ram to hold a desktop image and graphics programs create their own RAM images. Without being too technical it is easy to see that Filemaker Go is using about 1.5 the screen size for a picture map of its screen. I base this on how much of the display can be seen when I swipe to the right before the redraw begins.

This image map is one issue and the redraw rate another. Redraw is affected by the speed of our connection to a remote file and the type of connection to that remote file can be fast, slow or darn slow.

So there are various factors to consider: image size, container size and speed of data transfer and resizing the image and showing a different portion of the images.

The worst design would be to use a very large image size and try to resize it to fit in a small container over a very slow connection.

The best design would be to store use images resized to fit the size displayed on your layout. Thumbnail is a term used for an image that has been resized. Thumbnails can be created for each container object size and stored in a separate container field.

For instance, you will be using 400 x 400, 200 x 200 and 100 x 100 images on various layouts. So, you create three container fields to hold these 3 image sizes in one record. You then use a graphics program to create a new image file where the images are resized to these specs and saved as png.

The 400 x 400 pixel png image is imported or inserted into the container field that will hold all of the same size images. The 200 x 200 png images into that container field, etc.

Now the layout objects are the specified field and the object is sized to match the image size and the formatting is crop to fit. We now have the minimum sized image for the object size on our layout. Saving the file as a png or jpeg reduced the number of colors and also compressed the file.

Now rather than transferring giant image files and asking Filemaker to do a lot of work, we only transfer the minimum sized image and Filemaker does not have to resize it.

I was using a 300 x 200 image and resizing the container to 70 x 50 or so. When I created a thumbnail to match the 70 x 50 I gained a lot of speed displaying 5 images per line in list view using my Touch with an Internet connection to my Laptop.

In the past the thumbnails would require a graphics program to resize the image and save as png. Filemaker does create a thumbnail when you import pictures from a folder but not if you insert the image or use a linked image.

BUT…TRUMPETS AND DRUMS…

Filemaker 12 now has its own native functions for creating thumbnails using a script, features available using plugins for quite some time. Now we can create a thumbnail from an image in a container field and store that thumbnail in a second container in the same or other record, even in another table.

Whew, what a lot of hot air?

So, I am working on a file designed for screenshots of an iPhone since that is where I like to design. I will make this a demo file to show how thumbnails can load faster over wifi and the internet so keep an eye out for it in the Box downloads. Coming soon…

Thumbnails #Filemaker12


Filemaker now provides a sizeable thumbnail from your full size container images…

I haven’t fully tested this but it appears we now have functions can determine the size of a ‘thumbnail’ container field and then create a thumbnail image sized to fit. Takes a bit of effort to script but this should solve those problems where trying to use a 12 meg file in a 200K hole doesn’t produce quite the speed we would like to see on our layouts.

Suppose you have a list view of records with one or more images that are 60 pixels high. Your list view is really sluggish, especially when the file is on a remote server. That’s the worst case. These images where inserted manually or are pointers to the files. So the images are huge. I did a full screen capture and then copied and pasted that image into a container. When my remote file turned to molasses, I did some checking. The capture images were 3 megs. So I saved them to png or jpeg and the file size dropped to 10% and my load time improved instantly.

As I say I haven’t tried this but one idea would be to use these new functions to insert the thumbnail into a field in the record and then use this field for displaying in a list view, etc. I would also NOT have both the thumbnail and the original file in the same record…

Get Internet IP #Filemaker12


Filemaker’s System IP stops at the WiFi connection but if you have an Ethernet connection to your cable modem or router, Filemaker will return both the WiFi IP Addresses and the address of your Internet connection.

In my Login file I want to know the Internet connection and I have a client who wanted to know how to determine if his employee was logging in from work or home with his laptop as work is OK but home not OK.

If he is using a WiFi connection at home then a test for Get(SystemIP) could be unreliable since the home WiFi settings could be made to mimic the work settings. Using WiFi also stops the discovery of the home IP address

Filemaker 12 adds a new function which combined with Akamai.com gets this IP address.

Insert From URL (http://whatismyip.akamai.com/) solves the problem. Check the syntax…

Thanks to PhilModJunk on the Filemaker Forums for pointing me to this new function.

You can also use it to grab the entire html from a page which you can use to break out other information from the website such as email addresses, etc.

The Report #Filemaker


Let’s revisit my post on the poor guy who was asked to create a report and so bought Filemaker and tried to learn how to do this and ended up on a forum where he described the 8000 fields he had come up with and then was bounced back and forth and given everyone’s favorite tool and assorted boastful “Look How Great I Am” posts.

So, being the master I am, I have been analyzing this problem and produced a solution using one table that answered all of his needs. Except for one nagging problem, the entry fields weren’t tied to a conditional value list.

There is also one truth in this, the desire to create tons of related tables but this destroys the ability to produce a report and, well look at this, creates a need for an excessive amount of calculated fields, custom functions and other tricks.

Pretty soon the simple request for a report has taken 2 months and involves so many ego-flattering tricks that the owner of the business is most likely to toss out the project and go back to using an Excel spreadsheet or the outline mode in Microsoft Word.

In reality the project could have been finished in 10 – 30 minutes with only one table (2 if photos are involved) and four fields using conditional value lists, perhaps one or two more.

In other words the project is design with database logic which means that it will work regardless of who wants to use it rather than being designed for just one use.

Now all the user needs to do is decide what text goes in the first level field.

For the real estate condition report the first field might contain Outside Wall, Entrance, First Floor, Second Floor and so on.

Then each area will have its own unique level 2 conditional value list.

Outside Wall

  • North
  • South
  • East
  • West
  • Roof North Facing
  • Roof South Facing

Then Level 2 has its own conditional list

Outside Wall > North

  • Paint
  • Door
  • Window
  • Sign
  • Planted Area
  • Entrance Light

Level 3 also has a conditional list

Outside Wall > North > Entrance Door

  • Lock
  • Hinges
  • Glass
  • Sign
  • Frame

So by using the ideas in my previous post on Conditional Lists, this requested report could be designed in 10 minutes and the best value of all:

The owner can now control the items in each field and is not at the mercy of the designer. The design is flexible enough for changes and is not dependent upon the existence or non existence of related tables, fields, calculations and so on.

And the user can be trained that the four fields reflect how close you are to the objects.

Standing far away I see an outside wall, name it in field 1.

Stepping closer I see the individual parts of the wall, name it in field 2.

Stepping closer I can identify…

Soon I am dealing with the individual parts and can make reference to their conditions and enter notes and maybe take a picture. Be advised that taking pictures on a non-networked IOS device using the local file can burn up a lot of disk space.

Here’s the diagram for the relationships using just ONE table. Each of the related TOs are copies of the ONE table.

Conditional Value List 4 Keys

My next post will discuss how to turn this ONE table into a multi-level report which will take less than five minutes to layout. Throw in how to use this report on an iPhone or iPad as a list view…

So, the project that took many hours for the individual to list the 8000 fields and many weeks on the Forum getting answers to everything except how to quickly and easily make the report (I did post this and was ignored) could have been finished in well under half an hour and in the hands of the owner for approval and in the hands of the investigator for data input.

Unfortunately the simplicity of Filemaker is ignored by developers who want to massage their ego or who have become misguided by the thought that easy is too easy.

OK, now I have to enter data and produce a report. Oh, one last thought. This design is so versatile you don’t have to create a new table for everything. The first key can be Budget, Groceries, Clothing, To Do, Plans, and so on… Right? There goes those tables down the drain…

Conditional Value List #Filemaker #FilemakerGo


A conditional value list will only display the choices based on the choice selected in another field. This narrows the choices in the value list from perhaps thousands to just a few. Quite a convenience…and Filemaker makes it easy. You can create your own conditional value list in less than two minutes. Or you can make it extremely complex and still working on it two weeks from now.

If you are using Filemaker Go, you will find the Conditional Value List extremely valuable since you will see a Giant Scrolling List of a few items rather than hundreds or thousands. Filemaker Pro users also benefit from the restricted number of selections.

Here’s the really easy method.

First create the prime field, I will call it Category and then field for the conditional value list which I will call SubCategory.

The conditional value list is created from a related TO and the secret is to duplicate the TO and then link the two Category fields.

Conditional Value List

From Filemaker’s menu select File:Manage:Value Lists… and create a value list based on the field Category and one based on the field Subcategory. For the Subcategory value list we will create a relationship between the TOs.

Conditional Value List Specify Field

That’s all we need to do…oh, we have to assign the two value lists to the fields. Then we can select our category or create a new one and tab into the SubCategory field and it will display only the previous entries in the field that are related to the Category. We can add a new one at any time.

Conditional Value List Applied

Now you can enter as many categories as you want and as many SubCategories as you want but when you select a category from its popup menu only the related subcategories will appear.

Conditional Value List Selection

You can also use SubSubCategories but I will leave it to you to discover how (try creating another To and linking it using a dual link to category and subcategory..)

When you use the Report layout option you can create a report by category, subcategory and use Title in the body field. The due date and finished can also be used. But that’s for later…

The Conditional Value List can also be used for two poups to filter the display in a portal, do a quick find and much more.

Round Corners #Filemaker12


Filemaker 12 provides the graphic tools to create round corners and gradients eliminating the need to past an object that was created in Photoshop or another graphics program. Filemaker 12 makes anyone a great graphics designer. For instance, I have applied a transparent gradient to a button that allows the list view records to show through as they scroll. Eliminates the loss of screen real estate.

First let’s look at how to make a rounded corner so we can add a set of IOS style buttons within Filemaker and not have to use…

Inspector - Corner Radius

Drag a rectangle object onto your layout and size it 300 by 45, a typical size for an iPhone button. Duplicate the object twice and adjust the three so that they make a set of three buttons.

Select the top button and set the corner radius for 10 and watch the four corners become round corners. Click the two bottom icons as I have to deselect them and the bottom corners return to being square.

Select the bottom button and do the same but deselect the top 2 icons. Now your 3 button set has the rounded corners on the top and bottom buttons.

This will reduce the size of your files by eliminating all of the pasted graphics or related tables with graphics. However, before converting everything, if you use IWP your may not be able to use every layout or graphic trick of the inspector. Test first.

Keep in mind that the classic layout may scroll and load faster than one with heavily formatted gradients and backgrounds and rounded corners and… Just as a plain vanilla list will scroll much faster than one that has 5 graphic containers on each record on an iPhone over a cellular connection, particularly so when your cellular network drops your connection to allow another user access on an overbooked network. Cellular networks were not designed for databases. However, you might get an connection that has a constant connection for a higher fee. 4G is fast, while you have the connection but it is not a constant connection like cable.

Where is this file #Filemaker


Since I am a developer and often have the file open on multiple devices, it is important for me to know which copy I am working on or viewing.

When I was working inside a client’s office or store I could open the file on the server from a user station and make an adjustment to the layout, etc. based on their screen size. And working on my own network I open the file on my laptop from my Touch and watch what happens on the Touch screen when I make a change on the laptop using that layout.

I could have an iPhone, Touch, iPad, laptop, desktop or any other computer upto 9 connections logged into my Filemaker Pro running on my laptop or desktop.

I can also derive information from the device logging in to determine if I want to allow that connection after it opens using the account name and password. This can be important in a large network where someone may surreptitiously acquire one or more account names they have not been assigned. So if Mary’s account is used on Joe’s computer, I can close the file.

For my development purposes and when the Full Access account is in use, I use the Window Title to tell me about the open layout:

  • Set Window Title Network and Device
  • Set Window Title to Table and Layout Name
  • Set Window Title to File and Table and Layout Name
  • etc

On a remote device I set the title during development to

  • [Remote] Filename > Table > Layout
  • [iPhone] Filename > Table > Layout
  • [iPad] Filename > Table > Layout
  • etc

I started doing this after becoming aggravated that my layout wasn’t updating on my Touch when I saved the changes on the laptop it was networked with. (Not supposed to end a sentence with a preposition but it is so convenient to do so.) Now rather than waste 15 minutes trouble shooting I can read the window title.

Filemaker needs to add a function like Get(IOSDeviceType) to complement platform and language. I would like to know if I am using an iPhone, iPad, Touch or future device and just as we have versions with Filemaker, we have versions with these devices.

Get(IOSdevice) would state iPhone 1, iPhone 2, iPhone 3, iPhone 4, Touch 1, Touch 2, iPad 1 or 2 or 3, and so on.  For instance, if you use the first version of any of the listed devices you do not have GPS… If there is a camera, the image resolutions varies. Ram size differs. Etc.

Yes, I can derive a lot of information about the computer or device and then make inferences from it such as I am using a Touch because the NIC returns 02:00:00:00:00:00 in second position which I believe means there is no cellular nic installed. But Filemaker could add the function described and make it easier and more accurate to determine the device.

OK, I can use PersistentID and develop a table for my own use but this doesn’t help if someone else logs in…