BlogsUsing Semantic structures in FileMaker - Generalization and AggregationPosted by: tgantos / Tuesday, February 19, 2008 – 12:23pm
We are discussing handling People and Organizations in the same table, and similar design pattern applications to FileMaker in a series of podcasts called the Database Foundation Series on the Adatasol FileMaker Podcast, http://podcast.adatasol.com. This is known as the Party supertype data model, originally published by Len Silverston and David Hay in the early 1990's (see Hay-Data Model Patterns, and Silverston-Universal Data Models Vols 1 & 2). As far as I know, Kevin Hammond and I were the first to adapt (most of) this complete model into FileMaker, with help from John Mark Osborne, John Sindelar, Joe King, and Chris Kubica. There are three ways to map a supertype structure in FileMaker. Single table, SuperType table with 1:1 subtype tables, and separate tables (no supertype). A variation on the Single table approach using an Aggregation ontology, uses a dynamic attributes table, and was first discussed publicly by Matt Petrowsky in this video on Classification and Organization: http://www.filemakermagazine.com/videos/data-tagging-classification-vs-o.... We will discuss some of the issues in a future podcast with guest Corn Walker. Separating a Person from an Organization is an important step, since neither actually belong to each other and keeping them together creates various relational anomalies (must have a company before a person, deleting a company orphans a person). Putting them back together in the same logical entity is where the common elements can be generalized. The second concept to point out with this model is that people and organizations both act in relation to one another within the context of a ROLE (or roles). Customer is such a role, Salesperson is a role, Manager is a role, Parent is a role, Membership is a role. We often simplify this issue, but it is the ROLE of one party that is related to the role of another, not the party itself. Allowing for multiple roles is an advantage of this structure, where a person may simultaneously be an employee, manager, stockholder, and contractor. A PartyRole (Maggie Jones, employee) connects to another PartyRole (Spacely Sprockets, employer) thru an association entity (AKA join table). Separating the Person-Person, Person-Organization, or Organization-Organization Role ASSOCIATIONS into a separate entity is challenging in FileMaker but it has many advantages in terms of flexibility, and allows for many to many associations and tracking of these associations over time (temporal versioning). I discuss some of the mechanics of this in an earlier podcast (June 2007) with Dan Weiss, http://podcast.adatasol.com/media/Filemaker_PodCast_06012007.mp3. Winfried Huslik correctly points out that not only can person and organization be generalized into Party; but email address, postal address, telephone number, and web address may all be generalized into a Contact Mechanism supertype. Filed under: Aggregation | Data model | Genaralization | Party | Relationship | Role | subtype | supertype
Missing FilesPosted by: aflgenx / Wednesday, December 12, 2007 – 1:41am
For those of you who have recently tried to access the sample files posted through out the blog, I appologize but we recently swapped hosting providers and I forgot to transfer all the files for the domain on which they're hosted. Anyway, I managed to locate them, upload and all links should be working once again. Filed under: General
FileMaker Falls BehindPosted by: Editor / Friday, October 26, 2007 – 2:25pm
Dissapointment hits homeWarning: This post started out simply about FileMaker’s Leopard compatibility. But then, it started to take a path towards becoming a rant. I decided to post it anyway, despite my aversion to doing so, because I feel it’s valuable to anyone who is just coming into the world of FileMaker thinking their brand-new FileMaker solution or web site is going to be loved by FileMaker and they’re going to get all kinds of support and love from FMI the company. To be honest, don’t expect much. It all started with the bad news. I was really excited to taste the new features in Leopard for OS X. Then I read this article on Macworld that gave me the bad news. It is, with this post, my sad duty to inform you that FileMaker is not currently compatible with OS X Leopard. What? Are you kidding me? FileMaker is owned by Apple! Yeah, that was my thought too. Then, after reading this article, my distaste for this news was eased a bit. It seems there are two issues which are causing the problems.
These are spelled out in very little detail by FileMaker. Now, this same announcement states that FileMaker is targeting a release for November 19, 2007. I can only guess there’s some hurried programming going on at the headquarters of FMI and who really knows what else might be broken. My only question is. “As an Apple owned subsidiary….[pause]…uh, how did this happen?”. I ask, not because I’m all heartbroken about installing a new version of the OS, and being an early adopter and having to weed through all the issues I’ll eventually resolve by searching MacFixit. Moreover, it’s because I’m not impressed that FileMaker hasn’t been brought into the 21st century with regards to its user interface and interaction. (No ill will towards my friends in the interaction dept. at FMI) The 1980’s happened over 20 years agoDon’t get me wrong, I love what I can do with FileMaker - and how quickly it CAN be done (that’s why I provide the content I do). What I don’t love is the lack of informational features throughout the interface. For example, why can’t you see, at a glance, in Layout mode, what table occurrence a layout is tied to, which table that’s tied to, and any anything else that will prevent me from jumping into the myriad of dialog boxes I have to swim through just to see what is connected to what. If I was leading FileMaker development, I would have ditched the four dialog boxes you have to open just to add a script parameter to a Perform Script script step all in favor of a single window that allows you to accomplish most of your programming efforts. Yeah, we’ve all heard the “Easy-to-use” mantra, and it worked when fewer people used the software, but it’s developers who are developing with FileMaker - even if they’re just starting out as beginning developers, do they really need all the dialog boxes that FileMaker employs? Seriously, if you have a comment about how you enjoy the number of dialog boxes in the application then please publicly flame me below. Let’s all be nice nowOk, so I don’t need to go slamming the market that feeds me, lest I fear a loss of income because FileMaker Inc. decides to stop providing me with information about what’s coming down the pike - Oh…. wait, they don’t do that currently. In fact, I have to tell you that FileMaker is one of the worst companies I have ever heard about (and personally worked with) with regards to supporting and promoting their third party markets - simply for the sake of supporting those companies who support them - with the desired result of reciprocal support for their own market. I guess they probably figure they’ll get it anyway. In fact, let me go so far as to say that FileMaker doesn’t even know how to leverage their third party market. They’re horrible at it. How do I know? Well, I have friends in other markets, who are paraded around by the companies they support. These companies are much larger than FileMaker Inc. and you’d think there was more red tape at them because they are larger. Who are they? Well, one is Adobe the others are smaller, but still much more supportive of their third party market. Here’s a little bit of info that supports my opinions. Did you know that FileMaker, Inc. only lists products, sites or solutions by members who pay an annual fee to be part of their developer programs - no matter how good it is? I know because there is a blank space on this webpage where the link used to read “Magazines”.
It’s not there anymore because I raised the issue and kept pursuing the fact that I didn’t feel I needed to pay to be part of their business program in order to have my quality resource listed - especially when they had a category which was earmarked exactly for my service. (Of course, who am I to say that my website and content is quality? Maybe my Alexa ranking should mean something.) Need more? Try this Google search looking for anything on the FileMaker.com web site that references this site. Nada. Zip. Zero.
I also have a number of friends within the third party FileMaker market and in pretty much every case, Ok, I’ll say 90% of them, they voice their opinions about FileMaker Inc’s support of third parties in a less than favorable light. Even after speaking with Dominique Goupil directly (probably a year or two ago), about the state of affairs with regards to how FileMaker approaches their third party supporting sites, there was no change. It was simply business as usual. I heard ABSOLUTELY nothing about 8.5 or 9 prior to its release - despite the fact that I personally know the folks responsible for PR. This wasn’t always the case. Trying to get pre-release copies of the software is almost unheard of unless you’re MacWorld or some other larger company. I’ve known a good number of people at FileMaker who have tried to make a difference and they’re not working for FileMaker now - myself included. Boil it down for meSo, Matt, did this one piece of news about Leopard compatibility cause you to break down and start this rant about FileMaker Inc and how they operate? Nope. Quite simply, it’s been on my mind for a number of years now. I think FileMaker needs a wake up call. Sure, they’ll always get feedback from users requesting features they think will make FileMaker better. But what will they do when a top FileMaker web site has something to say? My guess. Not much. Every company and the products they provide can be improved. It’s what humans do. They move forward. While FileMaker has added new features to the software it doesn’t quite feel like it’s moved forward as a whole - at least to me. It feels like it’s hobbled along with the addition of some nice features. What other well used applications still use patterns from 1980’s MacPaint, doesn’t support gradients and doesn’t provide OS native interface widgets. What it boils down to is this “FileMaker, are you listening?” So are you giving up on FileMaker?Criticism and open comment about what you feel about how a company operates can be a double-edged sword. You can fear you won’t ever get invited to speak at Devcon because you publish information such as this or that the company won’t license your products out of spite. Or you can feel that your market is deserving of the information that you have to share. They may not like it, but is it true? And who is “they” anyway? It’s people, not companies, who make decisions and maybe there’s someone or multiple people who simply don’t like this website, or even myself, over at FileMaker Inc. What I do know is that it’s the FileMaker market, you, my reader, who is supporting my efforts regarding FileMaker informational resources. I still like the software, what it can do and how it can be used. I’ll always be honest about where FileMaker fits and I won’t shove it into a round hole when I know it’s a square peg. There are plenty of places that need square pegs. The moral of the storyI remember first getting started with FileMaker. You may be where I was in 1991. I was starry-eyed and quite hopeful that the world of FileMaker (more specifically the company) was going to treat me right. In many ways it has. In other ways it’s been disappointing. It turns out that it’s the market itself that has always been there the most - not the company that makes the software. No, I’m not giving up on FileMaker. I’m getting older and wiser and learning to set your expectations low while relishing the highs is the best way to approach anything you do - be it working with FileMaker, raising kids or making a peanut butter sandwich. Much luck, and as always Happy FileMaking! Filed under: opinion
What makes good content?Posted by: Editor / Monday, October 1, 2007 – 7:24pm
The virtues and pitfalls of trying to cater to your whole marketEvery once in a while, I receive an email from a developer who mentions that my style of video delivery is a bit superfluous. To respond to this form of comment, I reply “Yes, you’re absolutely right. I do occasionally add some ‘fluff’ into the video article - obviously, making it much longer than it needs to be.” These comments don’t hurt my feelings in any way. In fact, I like getting these emails and comments. I need to hear from all levels of viewers watching my content. If I’m not creating what people want to watch, then I’m not going to feed my family. To take this to the extreme, and bypassing any concern that the following statement might cause a loss in subscribers, “I myself wouldn’t even watch my own videos.” They’re often longer than they need to be and they cover certain areas I already know. Ah, there it is, “areas I already know”. This is the part where I feel like the delivery works for those subscribers who value the content. You see, the range of your market, especially a technical one, is always broader than your own level of knowledge. You’re at point X when everyone else is in the range from A to Z. Personally, I would love to see all of my videos covered within an extremely short period of time and offer only the nuggets needed to pull of the tricky stunts. Of course, this takes on a number of assumptions about what you know and what level you’re at. The ProblemWhen you boil it down, there are highly advanced developers who know what you’re talking about as soon as the screen shows a small snippet of code. On the other end of that spectrum, there are viewers who don’t even know what you can do with the Let() statement. While I don’t focus on the low level beginner, I do try to avoid assumptions about what a viewer may (or may not) know. This carries both positives and negatives. I’ve heard that going slow and covering everything is great for intermediate and international speakers who aren’t fluent in English. It provides a basis for which additional learning can sprout even though I don’t offer all the specifics. The downside is that if you know what you’re doing, the video can get boring and even a bit painful to listen to. In fact, I have some developer friends who also view the video articles and use the fast forward playback feature of QuickTime (you can find this by using Command-K or Control-K in QuickTime Player - look for the Playback speed). So, I’m constantly asking myself. “How can I solve this problem?” Solving the ProblemI’ve long considered splitting up the content I cover and offering a beginner track and an advanced track. The problem is truly knowing where the bulk of all my viewers are. True, I can use a survey and ask some technical questions to try to assess this, but, how well will this work? FileMaker isn’t a super large market and my goal is to offer content that appeals to the widest range of possible viewers. I’ve offered the Developer Overview movies in the past, which try to showcase a technique in the shortest time possible, and I’m always open to suggestions. Is it the way I say it - or - what I say? If you have any ideas about how I could make things better or can tell me specifically what you do and don’t like about the content or quality of delivery then, by all means, leave a comment on this page! Tell me what you want to see! Filed under: feedback
Simulating a Basic Key / Value ArrayPosted by: aflgenx / Thursday, September 27, 2007 – 9:04pm
Alright guys, been busy so pardon the greater than one month gap. This is more on the whole numeric addressing issue we have with repeating vars and fields... its really annoying and puts limits on what can be achieved. So, we want to simulate text based key's that are available in every programming language known to man - one method I don't mind (though i haven't extensively run speed tests on it): Custom Function: getValueFromArray( array ; key) Method for setting the key / value array: Now, so lets say we wanted to extract the value for sentance from that array: I hope this has been a fun and eductational experience ;) Cheers guys, will try build a bit on this and run some speed tests over the next few weeks, in the mean time, behave yourselves!! IsValid( "BruceWillisBaldness" )Posted by: aflgenx / Sunday, August 19, 2007 – 4:32am
So I haven't blogged in the while - been busy with something i'll tell "you's all" about later. As I was sitting there I thought, what better reason to blog than to try and reason out why Bruce Willis is as bald as he is. Well, I was going to but thought Matt might get upset... so instead this post will breifly discuss data types and how the IsValid() function mixes it all up (a bit of a let down i know :p ). The thought to write about this came from an auto update plugin ... article type thing... at Six Fried Rice recently - love these guys and somehow, they get their posts to flow in more of a straight line than mine. Anywho, it's a bit of a weird function and while it may be obvious to some, its workings can often escape logical reasoning for no logical reason. Now, the purpose of IsValid() is to determine whether the contents of a data container (i.e. a field or variable) match the data container's data type. With fields this is farily obvious: How It Works with different Data Types: Now with fields where the data type is already defined, it really has little use in most cases, so when do you use it? One potential place is scripts. Think date inputs into a custom dialog, you don't want to manually have to validate this sort of stuff or worse yet let it slip past: IsValid( GetAsDate( input ) ) is your functional statement (*note to self: don't make up terms*). GetAsDate( input ) immediately tells IsValid() that you are checking for the validity of the contents of the input field using the date data type - IsValid( GetAsDate( "17/17" ) ) for example, returns false. Now - here's where a lot of people slip up, data type conversion can happen relatively unoticeably in various places in FileMaker. The most common form though is concatenation - concatenate something and it immediately becomes a string.. i.e. text data type. An interesting note about variables: An interesting note about Script Parameters: PS. Die Hard 4 = Awesome!! By the way, feel free to leave comments if you want... seriously it'd be good to know if anyone's benefiting at all from my ramblings or how bad my speeling is ;) . FileMaker and the Order of the Portal Printing Taboo...ersPosted by: aflgenx / Sunday, July 22, 2007 – 5:24am
Alright so I like Harry Potter :) Before we start, so that no one spends time reading something that won't be useful to them, the final purpose of this post is to achieve a report like this. So, to the Order of the Portal Printing Taboo...ers: It seems that printing portals is about as Taboo as using repeating fields these days (talk to Soren if you want proof of the repeating fields part of that statment ;) – you’ll find him floating around on FM Forums). I'll agree that in most cases printing portals isn’t appropriate (just like repeating fields) – the most common misuse for example is by new users who, blissfully unaware of the standard FileMaker reporting method (we'll refer to as "list view" reporting), use them purely because it’s the only way they have seen of listing related data. On the other hand, what about those users who know what they’re doing? What about those users who long for FileMaker to integrate the sub-reporting functionality available in other Reporting / Database tools such as MS Access. Look inside your hearts lol – shouldn’t they at least be given a glimmer of hope? When to use the techniqueA common use might be a summary report about a person within your database: phone numbers, addresses, family member names, contact reminders, general notes, contact made or a million other things. Our example (downloadable at the bottom as well as an example report) uses a Company example. How It worksWell, here’s the aim of the technique: Display related information about a record whilst hiding a) the portal and b) the column / section headers when they aren’t required due to a lack of related information. a) Hiding The Portal b)Hiding The headers (the cool part) So okay, I’ll ask you to consider this, what would happen if we displayed only the first row of a portal and shoved some information in there like … oh maybe column / section headers. What would happen to that portal row if no related information existed in the numbers table – It would like our other portals, simply pop out of existence. So there’s your solution: Put your column headers into a one row portal (from the same TO as the main portal below it)… Set sliding to on for both the header portal row and the main portal and voila – No related records, no portal rows!! Samples:First Thoughts about FileMaker 9Posted by: Editor / Thursday, July 12, 2007 – 4:43pm
This past Tuesday the 10th, FileMaker Inc. released it’s latest version of FileMaker Pro. Version 9 has a variety of new features, some big, some small. When it comes to the big ones, there are essentially four big with the rest having less significance(1). Big Feature #1The biggest of these features is the ability to connect to SQL data sources. You’re able to interact with a SQL database just like any other table in your database. Adding a new SQL connection is a simple matter of adding a new External Data Source. From that point forward you can use the reference within your Relationship Graph just like any other normal table occurrence. One thing you’ll need to do first, however, is set up the right database connection. This is going to require the use of third party drivers. Depending on the database you’re connecting to, the drivers and setup will vary. Here are the SQL databases which are supported (taken from FileMaker’s help)
Too bad they aren’t supporting MySQL 4. There are a ton of Open Source systems out there running MySQL 4. For more info you can visit the FileMaker site covering SQL information. Big Feature #2The second big feature is called Conditional Formatting. It allows you to conditially control (using the standard calculation dialog box) the way any text is formatted when viewed in Browse mode. This includes both fields and text labels. This is a nice new feature and there are a few things you can do with it. If you need to know more tips about using it then Geoff Coffey has posted a number of great tips at his new website. Big Feature #3Biggie number three would be Auto-Resizing of layouts. This feature, coupled with biggie number four, are the two reasons I would at least upgrade to FileMaker 9 Advanced - even if you’re stuck using FileMaker 8 or 8.5 for all your clients. Auto-resizing of layouts is the feature many people have been asking for for year and years. It’s long overdue and it’s a great reason to upgrade(2). It works just like it sounds. It allows you to create layouts which dynamically resize. Big Feature #4Number four on the list is a complete overhaul of ScriptMaker. You’re now able to keep the ScriptMaker window open and also open as many script windows as you desire. For this one feature alone I would SERIOUSLY upgrade your copy of FileMaker Advanced. This is a HUGE time saver. It takes a bit to get used to leaving script windows open when you’re working/debugging a script, but it eventually becomes second nature. I’ll provide more info about using the new ScriptMaker in a future video. Also of note are the changes to the Data Viewer, which now shows you all active global variables, where a dual pane Data Viewer shows you global variables and your own specified watched variables. OverviewOverall, if you’re not using SQL, then the Conditional Formatting is a nice feature to have - but not a requirement in most cases. The ability to resize layouts may be something you can go without but designing them in 9 is the route I would suggest - even if you’re still using an earlier version. If you can’t afford to upgrade right away, then get 9 Advanced so you can work with the new features and have them ready for when you can upgrade. One of the nice things about working in the latest version of FileMaker is that the file format stays the same going back to FileMaker 7. If using the Conditional Formatting or Auto-Resizing layouts is something you can’t live without then go for it. There are a number of other smaller features in the application - plus some function additions. One function in particular that I’ve been wanting for a while is the ability to specify the temporary path on the client machine. Here is the list of new functions and script step changes Functions
Script step changes
One final feature I’ll mention is the “Automatically check for updates every 7 days” checkbox found in the application preferences. While I’m personally not that proactive about finding new versions of software, this is going to be a great way to know when FileMaker has been updated. More info to come… Notes(1) A certain “feature” may be significant to you, such as being compatible with Windows Vista or the ability to Append to PDF. While useful, these may not be major features. Fortunately, you’re able to discern this from the content above. As I was instant messaging with a fellow develoepr friend, talking about the feature list that FileMaker Inc. provides, I think the marketing for features got a bit ahead of itself. Chat Quotation: “Feature? Works with Windows Vista… Uh, Yeah, I think you would want it too, not a feature.” (Don’t expect me to sugar coat things. ;) (2) When I mention upgrading, I’m not necessarily talking about upgrading all of your copies. My position is that you can develop using FileMaker 9 Advanced and you’re files should work fine in FileMaker 8 or 8.5 and even 7 if you go back that far. The features you use in 9 won’t work in the earlier versions - but your files will be ready for the when you can afford to upgrade. Just be careful and don’t make your solution dependent upon features from a version which your clients can’t support. In other words, if you’re using FileMaker 8 don’t use variables because your clients will need to use global fields! Filed under: FileMaker 9
FileMaker 9 - Is It Worth It?Posted by: aflgenx / Thursday, July 12, 2007 – 1:41am
The Pro'sOkay look there are 3 or 4 features that I would really call quite cool with this update: 1) SQL Connectivity 1) SQL Connectivity 2) CWP Packaged with Server Standard 3) ScriptMaker Overhaul 4) Conditional Formatting The ConsFrankly at this point, I think FileMaker is just trying to pull extra money in without really providing a new product. The lack of the rumoured Thin Client is also a shame, as are the event triggers, the dynamic set field, my progress bar (god i want one lol), copying custom functions, using custom functions over different files and finally the simple short cut keys for things like custom function definitions and all those other menu items that are missing keys etc. I would just like to express my opinion that the resizing which was apparently causing their developers problems is really little compensation for all the small features above that would make the product so much better and would likely only have taken a comparably short time to implement. A conclusionOh well, I'm updating in either case just for the sake of it, but don't see any real reason to update existing clients sitting on FM 7 / 8 / 8.5 given that it's not really providing that much in the way of new. Last thing -- this release should have been green!!! For a decent look at the new features see: And for a look at the opinions of other developers: Well I hope my slightly random rant was informative. Filed under: FileMaker 9 | FileMaker Update
Dynamic VariablesPosted by: aflgenx / Tuesday, June 26, 2007 – 7:10am
Hi Guys, I recently had the need (or more likely the desire) to set global variables dynamically.. As most of you will know, Set variable allows you to specify a dynamic value and repetition, but not a dynamic name for your variable. This often leads you to store info in a delimited list within one repetition when you need to store multiple peices of information per one subject. This will soon make your scripts become messy and the logic harder to follow Hence two small custom functions: Custom Function: SetGlobalVariable( name ; value ; repetition) Example Usage: SetGlobalVariable( "record_" & table::primaryKey ; table::aField ; 1 ) If your primaryKey field contained "991" and your aField field contained "Alex!!" - Which means that if you were to now retrieve the value of $$record_991 - you would get "Alex!!" as the value returned. Call: GetGlobalVariable( name ; repetition) Custom Function: GetGlobalVariable( name ; repetition) Example Usage: GetGlobalVariable( "record_" & table::primaryKey ; 1 ) These examples aren't great, but they certainly simplify my scripts and I hope they'll help someone else out. |
Be Notified!Let us tell you when a new video is posted. We'll send you an email with a direct link right to your email inbox.
Make sure and whitelist (or add to your address book editor@filemakermagazine.comFileMaker Reference Tool10 Most Recent Videos
|