<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">

    <title type="text">FileMaker: Explore</title>
    <subtitle type="text">The Support Group&#39;s all&#45;things FileMaker blog</subtitle>
    <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/" />
    <link rel="self" type="application/atom+xml" href="http://www.supportgroup.com/explore/feed/" />
    <updated>2013-05-15T18:35:15Z</updated>
    <rights>Copyright (c) 2013, Chad Novotny</rights>
    <generator uri="http://expressionengine.com/" version="1.6.8">ExpressionEngine</generator>
    <id>tag:supportgroup.com,2013:05:15</id>


    <entry>
      <title>Purchase FileMaker Pro 12 and Learn As&#45;You&#45;Go!</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/purchase-filemaker-pro-12-and-learn-as-you-go/" />
      <id>tag:supportgroup.com,2013:explore/17.315</id>
      <published>2013-05-15T18:16:13Z</published>
      <updated>2013-05-15T18:35:15Z</updated>
      <author>
            <name>Chad Novotny</name>
            <email>chad@supportgroup.com</email>
            <uri>http://www.supportgroup.com/team/#novotny</uri>      </author>
      <content type="html"><![CDATA[
        <p><a href="https://store.filemaker.com/US/ENG/RTL" target="_blank" class="image"><img src="http://www.supportgroup.com/images/site/explore/FTS_FMP_Q3PROMO_Banner.jpg" class="center"></a></p>

<p>A special message from our friends at FileMaker:</p>

<p>Purchase either FileMaker Pro 12 or FileMaker Pro 12 Advanced <a href="https://store.filemaker.com/US/ENG/RTL" target="_blank">directly from FileMaker, Inc.</a> or from your preferred reseller and receive an electronic copy of the FileMaker Training Series at no extra cost!</p>

<p>Don’t miss your opportunity to master the essentials of FileMaker 12. This self-paced curriculum provides step-by-step exercises, examples, and videos to improve your development skills and help you create more professional FileMaker solutions.</p>

<p><a href="http://info.filemaker.com/US_enUS_FMP_FTS_Promo_terms_conditions.html" target="_blank">Terms and conditions apply.</a>
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Get Innovative at FileMaker DevCon 2013!</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/get-innovative-at-filemaker-devcon-2013/" />
      <id>tag:supportgroup.com,2013:explore/17.311</id>
      <published>2013-03-13T21:19:09Z</published>
      <updated>2013-05-15T18:28:10Z</updated>
      <author>
            <name>Chad Novotny</name>
            <email>chad@supportgroup.com</email>
            <uri>http://www.supportgroup.com/team/#novotny</uri>      </author>
      <content type="html"><![CDATA[
        <p><a href="http://www.filemaker.com/developers/devcon/" target="_blank" class="image"><img src="http://www.supportgroup.com/images/site/explore/devcon_banner_13_horiz.png" class="center" width="348" height="133" /></a></p>

<p><br />
The <a href="http://www.filemaker.com/developers/devcon/" target="_blank">2013 FileMaker Developer Conference</a> is back in San Diego, which runs from Monday, August 12th through Thursday, August 15th.&nbsp; The beautiful Hilton San Diego BayFront is within walking distance from the Gaslamp District and across the street from PETCO Park.</p>

<p>This year, yours truly (Chad Novotny, Vice President of Technology) will be presenting two sessions on reporting. In the first, I&#8217;ll be teaching material from <em>Module 7: Reporting</em> of the <em>FileMaker Training Series</em>, introducing attendees to summary reports and charting. Later in the week, <em>Reporting Outside the Box</em> will cover advanced techniques for reporting with tricky relationships, using web viewers, ExecuteSQL, and the like.</p>

<p>Register by June 18th to save $300, and be sure to book your hotel room early to reserve your space. Get all the details at <a href="http://www.filemaker.com/developers/devcon/" target="_blank">FileMaker&#8217;s DevCon</a> site.</p>

<p>If you&#8217;ll be in San Diego this year, we hope to see you there!
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Talking About Risks</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/talking-about-risks/" />
      <id>tag:supportgroup.com,2012:explore/17.310</id>
      <published>2012-11-29T19:19:15Z</published>
      <updated>2012-11-29T19:29:16Z</updated>
      <author>
            <name>Jud Wolfskill</name>
            <email>jwolfskill@supportgroup.com</email>
                  </author>
      <content type="html"><![CDATA[
        <p>Every project of any kind faces risks: future events and possibilities that threaten to undermine it by preventing it from coming to completion or by reducing the benefits it offers. For example, in custom database development, misunderstandings about what the client needs for a report or feature, political conflict in an organization, differences in personal styles, and a hundred other things can slow the project&#8217;s momentum or create obstacles such as conflicts or technical hurdles.</p>

<p>As a project manager for custom development projects, I find myself increasingly naming risks, presenting them in bulleted lists so no one misses them. You might wonder why I do this. After all, aren&#8217;t risks the bad news, the worst-case scenarios? If everything is going well&#8212;the client and the development team understand what the database needs to do, there are plenty of hours left in the budget, and the deadline for completion is weeks away&#8212;why accentuate the negative by bringing up pitfalls, gray areas, and uncertainties?
</p> <p>I talk about risks early and often because they are always lurking at the edge of a project, and I need everyone watching for them. On a ship, the navigator must remember and be mindful of rocks and shallow places on the route, even if the weather is good and the winds are light. In the database world, the project manager serves as navigator, but everyone working on the project influences its trajectory, whether they are systems engineers identifying requirements and providing specifications, developers coding the system, or clients testing the new database. A developer&#8217;s code contributes to the movement of a project in the same way feedback from someone testing the database does.</p>

<p>Often our clients have not worked with a team developing custom software before. They need information about how best to test and give feedback about a database as well as how to watch for problems. I believe in treating everyone involved with a development project as a member of a single team. While we work for different companies and have different roles, clients, developers, and systems engineers share a goal: development or enhancement of a database that will help our clients work more efficiently. If everyone on the team speaks up about red flags when they see them, the group and the project are more likely to succeed.</p>

<p>For any group endeavor, someone needs to look at the world pessimistically in order to avoid danger and minimize risk. A custom development project benefits from everyone with a stake in the project playing that role. When the database is installed on time and within budget, the team can go have a drink and turn off the negative thinking.
</p>
      ]]></content>
    </entry>

    <entry>
      <title>FileMaker Training Series: Advanced Training for FileMaker 12</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/filemaker-training-series-advanced-training-for-filemaker-12/" />
      <id>tag:supportgroup.com,2012:explore/17.309</id>
      <published>2012-06-12T13:00:41Z</published>
      <updated>2013-04-05T18:06:42Z</updated>
      <author>
            <name>Chad Novotny</name>
            <email>chad@supportgroup.com</email>
            <uri>http://www.supportgroup.com/team/#novotny</uri>      </author>
      <content type="html"><![CDATA[
        <p>The Support Group is excited to announce our new Advanced FileMaker classes for FileMaker 12, using the FileMaker Training Series!</p>

<p>The Support Group’s <a href="http://www.supportgroup.com/training/advanced-filemaker-1/">Advanced FileMaker I</a> and <a href="http://www.supportgroup.com/training/advanced-filemaker-2/">Advanced FileMaker II</a> classes are arranged as two separate, two-day sessions. Scheduled back-to-back to make it convenient to attend both, our Advanced training will immerse you in the essential information you need to be highly proficient in FileMaker and helps prepare you for the FileMaker 12 Certification exam by covering a number of advanced topics. These classes are taught by experienced FileMaker Authorized Trainers who themselves are also FileMaker Certified Developers.
</p> <p>These classes will build on your current knowledge of FileMaker Pro and take you to a higher level. Advanced FileMaker I focuses on data modeling, fields and calculations, and advanced development techniques. You’ll learn how to build more robust, feature-rich databases by learning about the Relationship Graph and complex relationships, logical and aggregate functions, managed container storage, and filtered portals. Plus, we’ll cover tips and techniques that will shave hours off your development time.</p>

<p>Advanced FileMaker II focuses on scripting, reporting, security, and FileMaker Server.&nbsp; In Advanced FileMaker II, you’ll learn how to build more robust, feature-rich databases by learning about script triggers, script parameters and results, window management, advanced sub-summary reports, and charting. You’ll also learn ways to implement your organization’s security needs and configure FileMaker Server for performance and backups.</p>

<p>The Support Group&#8217;s Advanced FileMaker class schedule is now available for all of our training locations in the <a href="http://www.supportgroup.com/training/boston/">Boston area</a>, <a href="http://www.supportgroup.com/training/new-york/">New York</a>, and the San Francisco Bay Area in <a href="http://www.supportgroup.com/training/san-francisco/">San Mateo</a>. To learn more, check out the course descriptions for <a href="http://www.supportgroup.com/training/advanced-filemaker-1/">Advanced FileMaker I</a> and <a href="http://www.supportgroup.com/training/advanced-filemaker-2/">Advanced FileMaker II</a>, or <a href="http://www.supportgroup.com/register/">register online now</a>.
</p>
      ]]></content>
    </entry>

    <entry>
      <title>A little bit of SQL in FileMaker 12</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/a-little-bit-of-sql-in-filemaker-12/" />
      <id>tag:supportgroup.com,2012:explore/17.296</id>
      <published>2012-04-05T20:32:53Z</published>
      <updated>2012-04-30T20:56:54Z</updated>
      <author>
            <name>Chad Novotny</name>
            <email>chad@supportgroup.com</email>
            <uri>http://www.supportgroup.com/team/#novotny</uri>      </author>
      <content type="html"><![CDATA[
        <p>One of my favorite new features of FileMaker Pro 12 is the <strong>ExecuteSQL</strong> function, which allows you to perform a SELECT SQL query against your FileMaker tables. <strong>ExecuteSQL</strong> allows you to use SQL to create calculations that otherwise might be very difficult or cumbersome. For example, in the past, if you wanted to get the list of values that had been used anywhere in the field <strong>areaCode</strong> in your <strong>contact</strong> table, you had to first create a value list using that field, then create the calculation: <strong>ValueListItems ( Get ( FileName ) ; &#8220;AreaCodes&#8221; )</strong>. It worked, but it was a bit of a hack to have to create that extra value list.</p>

<p>Now, all you need is:</p>

<p> </p><div class="codeblock"><pre>ExecuteSQL ( "SELECT DISTINCT areaCode FROM contact" ; "" ; "" )
/* The last two empty parameters tell FileMaker to use 
    the default comma and carriage return as column and row separators */</pre></div>

<p>Okay, so it does require learning a bit of SQL (check out the <a href="http://www.w3schools.com/sql/default.asp" target="_blank">W3Schools&#8217; SQL Tutorial</a>). But many queries are straightforward, and using SQL this way can simplify the relationship graph.
</p> <p>Say I wanted to get all the area codes used in Massachusetts. Using the old value list method, I would need to create a field somewhere to store the abbreviation &#8220;MA&#8221;, create a relationship from that field to the <strong>contact::state</strong> field, and define my value list to use only related values starting from the table with the new field. With <strong>ExecuteSQL</strong>, all I need is to update the formula to:</p>

<div class="codeblock"><pre>ExecuteSQL ( "SELECT DISTINCT areaCode FROM contact 
               WHERE UPPER(state)=?" ; "" ; "" ; "MA" )
/* The fourth parameter is used to fill in the ? in the query.
    It could be a field instead of a text constant */</pre></div>

<p>Here&#8217;s one of my favorites: often it&#8217;s useful to know the name of the base table (the ones define on the Tables tab of the Manage Database dialog) that is the source for a table occurrence (the tables that appear in the graph). You may have lots of table occurrences, named <strong>leads</strong>, <strong>students</strong>, <strong>personsOfInterest</strong>, <strong>relatives</strong>, and so one, but each is really an instance of the <strong>contact</strong> table. Outside the Manage Database dialog, any reference to a table is really a reference to a table occurrence (so <strong>Get ( LayoutTableName )</strong> returns <strong>leads</strong>, for example, not <strong>contact</strong>). </p>

<p>In the past, it would be necessary to name each consistently to include the underlying base table (so <strong>contact_leads</strong>, <strong>contact_students</strong>, <strong>contact_personsOfInterest</strong>, etc.), and then parse the table occurrence name. Be careful changing table names! But with SQL, you can use the following to get the name of the base table of the current layout:</p>

<div class="codeblock"><pre>ExecuteSQL ( "SELECT BaseTableName FROM FileMaker_Tables 
               WHERE TableName=?" ; "" ; "" ; Get ( LayoutTableName ) )
</pre></div><p>
&nbsp;   <br />
<strong>FileMaker_Tables</strong> is a special table you can query via SQL to get a list of all table occurrences, and the <strong>BaseTableName</strong> column tells you the name of the source table.</p>

<p>You can replace <strong>Get ( LayoutTableName )</strong> with any table occurrence name to get it&#8217;s base table. I like the following calculation field that stores the name of the table as data, which can be extremely useful when exporting and importing data:</p>

<div class="codeblock"><pre>Let ( [ 
FQFN = GetFieldName ( Self ) ;
tableOccurrence = GetValue ( Substitute ( FQFN ; "::" ; ¶ ) ; 1 )
] ; 
    
ExecuteSQL ( "SELECT BaseTableName FROM FileMaker_Tables
               WHERE TableName=?" ; "" ; "" ; tableOccurrence )
    
)
</pre></div>

<p>The two variables in the <strong>Let</strong> function first get the fully qualified field name (including table occurrence name) of the calculation, and then parses out just the table occurrence name for use in the query. Since the calculation never makes reference to anything but Self, you can copy and paste this calculation field to any table without needing any editing.</p>

<p>What&#8217;s your favorite use of <strong>ExecuteSQL</strong>?
</p>
      ]]></content>
    </entry>

    <entry>
      <title>Upgrade to FileMaker 12 without Worries</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/upgrade-to-filemaker-12-without-worries/" />
      <id>tag:supportgroup.com,2012:explore/17.295</id>
      <published>2012-04-05T13:52:57Z</published>
      <updated>2012-04-05T14:42:58Z</updated>
      <author>
            <name>Vince Dolan</name>
            <email>vince@supportgroup.com</email>
                  </author>
      <content type="html"><![CDATA[
        <p>This is my first week at The Support Group, and I get to kick it off with FileMaker 12!</p>

<p>FileMaker 12 is here and with it comes a new file format. However, this isn&#8217;t your father&#8217;s file format change (i.e. fp5 to fp7), full of architectural rewrites, modifying scripts, and changes in behavior. If planned for correctly, it is a fairly painless and worthwhile adventure, chalk full of performance increases and development possibilities (awesome layout themes, better and easier charting, more robust container field behavior and many more).</p>

<p>As with any file format change (whether it&#8217;s Word, Excel, or our FileMaker), you&#8217;ll need to be aware of some rules:</p>

<ol>
<li>FileMaker Server v12 only works with v12 clients</li>
<li>FileMaker v12 clients only work with v12 server</li>
<li>Any FileMaker file (v7-v11) opened with v12 will be converted resulting in 2 files, both your old version and your shiny new v12</li>
</ol>

<p>After you upgrade, give it some testing of course (this never hurts). Since you can&#8217;t run FileMaker Server 11 and Server 12 on the same machine, you may need to run separate servers while you test.</p>

<p>Follow these simple rules and you should have no issues, only joy. You can take my word for it, having myself converted and tested a 102 file, 8 GB solution that contains some really old school elements hauled all the way from FileMaker Pro 3 (remember when you had to copy and paste dates, because the set field script step wouldn&#8217;t work with dates? - yikes).
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>The Royal Treatment</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/the-royal-treatment/" />
      <id>tag:supportgroup.com,2012:explore/17.293</id>
      <published>2012-02-21T21:05:06Z</published>
      <updated>2012-02-21T21:15:07Z</updated>
      <author>
            <name>Jeff Turner</name>
            <email>jturner@supportgroup.com</email>
                  </author>
      <content type="html"><![CDATA[
        <h2>The Support Group Helps a National Entertainment Company Manage Royalty Reporting</h2>

<p>What&#8217;s a well-known, national entertainment organization to do when they need a way to track the music for their many television programs? Turn to FileMaker Pro, of course.</p>

<p>Six years ago the company faced a significant challenge: how best to log all of the music &#8220;cues&#8221; that are used for their television shows? It is not unusual for a single episode to have anywhere from 30-50 different tracks; given the number of shows the company airs this can add up to an average of 10,000 cue sheets per quarter. The producers need to record the song usage not just for their own internal purposes but so that it can be accurately reported to performance-rights organizations such as ASCAP and BMI. It was clear they needed a database, so they approached The Support Group with their vision for building one. The result was a cue-tracking system that logs each cue sheet by program name, airdate, territory and show number, ultimately allowing each user to enter the list of related cues for each sheet, which consists of the song title, composer name, and publisher information. The collected data is then used to generate thousands of pdf files, which are then reported for royalty collection on a quarterly basis. The new reports are much more efficient and accurate than the old manually prepared ones, and generating them from the database requires considerably less man hours.
</p> <p>It was also the beginning of a long and successful working partnership. Over the years several members of The Support Group team have helped to contribute to the development of the system, most recently New York office Systems Engineer Kathryn Anderson. &#8220;Kathryn was a quick learner,&#8221; says the company&#8217;s Music Specialist, &#8220;and she fully understands every aspect of the system.&#8221; The client adds that it is sometimes hard for her to articulate exactly what she needs, but &#8220;I can tell Kathryn what I&#8217;m looking for and she&#8217;ll give me a few different options. We have a great working relationship.&#8221;</p>

<p>Both the system and the partnership have continued to evolve over the last 6 years. The structure has been updated, features have been added, and new entry controls have been implemented to help maintain the integrity of the data. Script changes were added to make the pdf conversion of their thousands of cue sheet reports a smoother process. Most recently the client began accessing the system on her iPad via FileMaker Go. It speaks a lot to the stability of the system that no additional programming was needed to make it iPad-ready; the client says she installed the application, opened up the system and &#8220;it works like the full version.&#8221; The client is the only administrator on the system and therefore the only person that can make high-level changes. Because most of the producers work off hours, it is not unusual for new music requests to come in at night or over the weekend. Being able to access the system on her iPad allows her to log the new changes right away from wherever she is.</p>

<p>In addition to Anderson, the client reports that all of the staff she&#8217;s worked with from The Support Group has been &#8220;responsive and respectful. I&#8217;ve never been disappointed with their results.&#8221; It is not unusual in her business for emergencies to crop up at the last minute, but according to her, The Support Group has never left us hanging. &#8220;Time is of the essence here,&#8221; she says, &#8220;but we always feel like we are a priority client for them.&#8221; She adds, &#8220;It&#8217;s amazing how I can just ask for 5 key things I&#8217;m looking to have implemented and then quickly see a result. I say it all the time - they are truly gifted.&#8221;</p>

<p>&#8220;Plus,&#8221; she adds, &#8220;they&#8217;re just nice people.&#8221;
</p>
      ]]></content>
    </entry>

    <entry>
      <title>Select Script Options by First Performing Them Manually</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/select-script-options-by-first-performing-them-manually/" />
      <id>tag:supportgroup.com,2012:explore/17.292</id>
      <published>2012-01-16T19:47:37Z</published>
      <updated>2012-01-16T19:56:38Z</updated>
      <author>
            <name>Jeremy Kipling</name>
            <email>jkipling@supportgroup.com</email>
                  </author>
      <content type="html"><![CDATA[
        <p>Sometimes, when writing a FileMaker script to do a find, sort, or export, doing it manually first can save you LOTS of time.</p>

<p>I was just tasked with creating a script to export all the fields on a layout.&nbsp; The layout, however, is non-trivial and contains fields from multiple different tables, and the relationship graph I inherited is very complicated and nearly impossible to decipher.&nbsp; It would have taken me HOURS to identify the table occurrence and field name of every field on this layout and then set up the export in a script.</p>

<p>What I did instead was first perform the export manually. When exporting manually, the <strong>Specify Field Order for Export</strong> dialog defaults to showing you all the fields on the current layout, including the related fields (when writing a script, the same dialog only allows you to choose each table, since there is no &#8220;current layout&#8221; for the script to use).&nbsp; I chose the <strong>Move All</strong> button to select all the fields on the layout, went back to editing the script, added the <strong>Export Records</strong> script step, and chose <strong>Specify export order</strong>. The last, just-performed export was already there by default.&nbsp; I was done in minutes.</p>

<p>You can use the same idea to speed up specifying a sort order (where you can again choose the current layout&#8217;s fields) or search (where it&#8217;s easier to find fields laid out on the screen, rather than hunting around for them in the <strong>Edit Find Request</strong> dialog).</p>

 
      ]]></content>
    </entry>

    <entry>
      <title>Understanding Line Indentation in Text Fields</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/understanding-line-indentation-in-text-fields/" />
      <id>tag:supportgroup.com,2012:explore/17.291</id>
      <published>2012-01-10T20:51:16Z</published>
      <updated>2012-01-10T21:23:17Z</updated>
      <author>
            <name>Ray Santangelo</name>
            <email>rsantangelo@supportgroup.com</email>
                  </author>
      <content type="html"><![CDATA[
        <p>I recently had a student ask, &#8220;How do I get word wrapping to indent the second line, and all lines thereafter, for a standard [edit box] text field?&#8221;.</p>

<p>&#8220;That&#8217;s easy,&#8221; I said, and I proceeded to show the class by going into Layout Mode, selecting a large text field, turning on the text ruler and … uh… what?&nbsp; I suddenly remembered that the indent tools (i.e., the &#8220;first line indent&#8221;, &#8220;left indent&#8221;, and &#8220;right indent&#8221; sliders) are only activated when a text object (or merge field) is being edited … but cannot be leveraged at all for edit boxes.</p>

<p><img src="http://www.supportgroup.com/images/site/explore/indenting_1.png" class="center"></p>

<p>I looked up and saw the entire class staring at me, waiting, with that same smug look on their collective face: &#8220;Let&#8217;s see you explain this one, smart guy.&#8221;</p>

<p>After a good cry, I finally found the answer by playing with the Paragraph menu (located in Format > Line Spacing > Other… or, using the Inspector tool, on the Appearance tab > Paragraph).&nbsp; By selecting the edit box and using this dialog, I set the &#8220;Left&#8221; indent to 8 pixels, and set the &#8220;First line&#8221; to -8 pixels.&nbsp; This is how we tell FileMaker, &#8220;Indent by 8 pixels all lines in this word-wrapping edit box; except the first line, have that one start right up against the left margin.&#8221;</p>

<p><img src="http://www.supportgroup.com/images/site/explore/indenting_2.png" class="center"></p>

<p><img src="http://www.supportgroup.com/images/site/explore/indenting_3.png" class="center"></p>

<p>Whew.&nbsp; Sometimes all we need is a good cry.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Using Custom Extended Privileges</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/using-custom-extended-privileges/" />
      <id>tag:supportgroup.com,2011:explore/17.290</id>
      <published>2011-12-28T19:13:25Z</published>
      <updated>2011-12-28T21:23:26Z</updated>
      <author>
            <name>Irwin Alvarado</name>
            <email>ialvarado@supportgroup.com</email>
                  </author>
      <content type="html"><![CDATA[
        <p>Over the years I have noticed that some beginner and intermediate level developers are not aware of the possible uses of extended privileges, other than as a means of controlling methods of sharing (such as through standard FileMaker Pro to Server networking, Instant Web Publishing, PHP, etc&#8230;).&nbsp; Extended privileges are probably one of the most underused features in FileMaker and at the same time incredibly simple and powerful with regards to enforcing security and access control.&nbsp; I have seen people write very complex scripts that attempt to manage or limit access to specific areas of a system, creating elaborate, complex security access levels or hard coding some of this security functionality within the data structure when they could have used custom extended privileges to do the same in a cleaner and most efficient manner. </p>

<p>What are extended privileges?&nbsp; Extended privileges are just permissions that can be attached to an existing access privilege set and are used to determine whether a user has access to certain elements within a system or not. The most common type of extended access privileges are used to determine if users can access files via FileMaker networking (<em>[fmapp]</em>), ODCJ/JDBC, or the web publishing options.</p>

<p>Why are they powerful?&nbsp; FileMaker allows developers with the ability to create custom extended privileges, which are basically keywords, that can be called from any script, calculation or custom function in your file. This simple feature gives you the ability to setup access control groups.
</p> <p>Let&#8217;s say we are managing a system for a company that has three departments: <strong>Accounting</strong>, <strong>Production</strong>,&nbsp; and <strong>Sales</strong>. Each department has three levels of user privileges that need to be setup: a <strong>Manager</strong> level, a <strong>Supervisor</strong> level and a <strong>User</strong> level access. That&#8217;s a total of nine different privilege sets, not including development accounts. </p>

<p>We have a set of financial reports that must be accessible to all managers and to the accounting supervisors. For simplicity purposes, let&#8217;s pretend we have a script that runs all reports and at the beginning of this script we run a test to determine if the user running the script has access to these report; if not, the script should stop.</p>

<p>Without the use of extended privileges we could just setup the following script steps:</p>

<div class="codeblock"><pre><strong># test access</strong>
Set Variable [ $privilege ; Value: Get ( AccountPrivilegeSetName ) ]
If [ $privilege &ne; "Accounting-Manager" and $privilege &ne; "Accounting-Supervisor" and $privilege &ne; "Production-Manager" and $privilege &ne; "Sales-Manager" ]
  <strong> # User doesn't have access</strong>
   Exit Script
End If
<strong># User has access, continue with reports&#8230;</strong></pre></div>

<p>A problem here could be if at one point in the future the developer decides to change the names of the access privileges, add more levels or departments or maybe revoke access to these reports to a certain group. He would have go into all the scripts that handle this restriction and make the changes. </p>

<p>The solution: we can create an extended privilege set called <strong>FinancialReports</strong> and assign it to the privilege sets that should have access to the reports. Defining a new extended privilege is as simple as specifying a keyword, giving it some sort of description, and then checking off which privilege sets should have it.</p>

<p><img src="http://www.supportgroup.com/images/site/explore/custom_extended_privileges_1.png" class="center"></p>

<p><img src="http://www.supportgroup.com/images/site/explore/custom_extended_privileges_2.png" class="center"></p>

<p>When it comes time to test for user access we can simplify our script steps with the following:</p>

<div class="codeblock"><pre><strong># test access</strong> 
Set Variable [ $privilege ; Value: Get ( AccountExtendedPrivileges ) ]
If [ IsEmpty ( FilterValues ( $privilege ; "FinancialReports" ) ) ]
  <strong> # User doesn't have access</strong>
   Exit Script
End If
<strong># User has access, continue with reports&#8230;</strong></pre></div>

<p>The <strong>Get ( AccountExtendedPrivileges )</strong> function returns a carriage return separated list of all the extended privileges associated with the privilege set the account is part of. In this case, if we were logged in as an accounting supervisor, it would return </p>

<div class="codeblock"><pre>[fmapp]
FinancialReports</pre></div>

<p>The <strong>FilterValues</strong> function compares that list to the second input (&#8220;FinancialReports&#8221;), and shows all matching values. So, if the result of the FilterValues function is empty with no matches, the user does not have access to the reports, and the script aborts itself.</p>

<p>This way, if we rename, add, or remove privilege sets or revoke or grant access to certain groups, our test won&#8217;t have to change (unless we rename the extended privilege itself, so it will require some careful planning on your part). In this scenario we can control access to these reports using only the custom extended privileges we created. </p>

<p>The same solution could be applied to other scenarios were there we have access to areas of a system that overlap within different accounts. For example, you might want to show a Daily Production Report to users in either the <strong>Production-Manager</strong>, <strong>Production-Supervisor</strong>, or <strong>Sales-Manager</strong> privilege sets every time they log in into the system. </p>

<p>&nbsp;</p>
      ]]></content>
    </entry>

    <entry>
      <title>Searching Across Relationships for &#8220;Empty&#8221; Fields</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/searching-across-relationships-for-empty-fields/" />
      <id>tag:supportgroup.com,2011:explore/17.289</id>
      <published>2011-12-27T16:46:02Z</published>
      <updated>2011-12-27T16:48:03Z</updated>
      <author>
            <name>Jud Wolfskill</name>
            <email>jwolfskill@supportgroup.com</email>
                  </author>
      <content type="html"><![CDATA[
        <p>Have you ever wanted to find records where a certain field is empty? Suppose you are updating your contact database and trying to capture email addresses for as many people as possible.&nbsp; You need to find every person for whom you do not have an email address. When searching in FileMaker, the equal sign operator (<strong>=</strong>) is used to find an exact match; when used by itself in a field, with nothing else following it, it tells FileMaker to find records where the field is empty. So&#8230; easy enough, right?&nbsp; Just go to the contact detail view, enter Find mode, type an equals sign into the email field (or select the symbol from the <strong>Operators</strong> popup in the toolbar), and click the <strong>Perform Find</strong> button.</p>

<p>But&#8230; suppose you are tracking contacts that may have multiple emails.&nbsp; Such a setup probably requires a relational system where emails are stored in a separate table, with a relationship defined from the contact table to the email table. On your contact detail screen, a portal can show you the many related email addresses for each person.</p>

<p>In this scenario, typing the equal sign in the (related) email field isn&#8217;t going to work. The problem is that we are no longer trying to find contacts records where an email field is empty. Instead, we&#8217;re looking for contact records that <em>do no have a related email address record</em>. In other words, it&#8217;s not that the email field is empty (using the equal operator <em>will</em> find contacts where a related email address record was created but not filled in); it&#8217;s that the email record doesn&#8217;t exist. And finding a non-existent record is kind of hard. I mean, you can&#8217;t&#8230; it doesn&#8217;t exist.</p>

 <p>To find our records, we need to invert our original approach, in a way.&nbsp; Start by finding contact records that <em>do</em> have a value &mdash; any value &mdash; in the related email field: enter Find mode and type an asterisk (<strong>*</strong>) into the email field, to find email addresses with <em>any</em> character. Next, before clicking the <strong>Perform Find</strong> button, comes the key step: in the toolbar, next to the label <strong>Matching Records</strong>, choose <em>Omit</em> instead of the default <em>Include</em>. FileMaker understands this as a request to subtract records that have any value in the related email field. Starting from the complete set of contacts, this leaves us with all those without an email address.</p>

<p>What if we need to perform a search for contacts where some fields are filled in and other, related fields are empty? For example, how do you find all email-less contacts that are also active (a field in the contacts table, in this case formatted as a checkbox). In this case, we need to first search for active contacts, and then omit <em>from that group</em> those with emails. Start by entering Find mode and select the Active checkbox, leaving the <strong>Matching Records</strong> option on the default <em>Include</em>. Next, from the <strong>Requests</strong> menu, choose <strong>New Request</strong> command, and repeat the above omit procedure (enter an asterisk in the related email field, and choose <em>Omit</em>). Finally, click <strong>Perform Find</strong>. FileMaker first finds the active contacts, subtracts those with emails, and leaves us with the remaining active contacts without emails.</p>

<p>Want to see more tips on searches with operators, multiple requests, and different actions?&nbsp; Check out the <a href="http://www.supportgroup.com/explore/finding-and-sorting/">Finding and Sorting Your Data webinar</a> that our Chad Novotny, our Vice President of Technology, presented last year.
</p>
      ]]></content>
    </entry>

    <entry>
      <title>Making an Old FileMaker System Young Again</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/making-an-old-filemaker-system-young-again/" />
      <id>tag:supportgroup.com,2011:explore/17.287</id>
      <published>2011-12-22T14:33:00Z</published>
      <updated>2011-12-22T15:45:01Z</updated>
      <author>
            <name>Jeff Turner</name>
            <email>jturner@supportgroup.com</email>
                  </author>
      <content type="html"><![CDATA[
        <h2>The Support Group Helps Mass Insight Help Schools</h2>

<p>Mass Insight is a Boston-based group that works to benefit education and provide competitive advantages to schools on multiple levels. The organization is comprised of two segments: Mass Insight Global Partnerships, a consulting firm that unites schools, companies and government agencies for the purpose of building competitive advantage, and Mass Insight Education, a non-profit affiliate that works to improve public school performance in the maths and sciences as well as help to revive the schools themselves.</p>

<p>The organization uses a FileMaker Pro database to store every one of their contacts for both sides of the business. As of the spring of 2009 the system was still running on 5.0, the version it was originally built in. It was a single flat file that had grown haphazardly over the years and was now a mass of entry layouts and hard-coded checkboxes that the staff used to categorize their records. The system was confusing to use; some of the labels were so old that &#8220;no one knew what anything meant,&#8221; says Joanna Manikas, VP of Business &amp; Information Systems. &#8220;There was no common language or identifiers.&#8221; Furthermore, accurate searches were nearly impossible for users that needed to be able to pull up a set of contacts at a moment&#8217;s notice. Manikas wanted to do a lot more with the system but it was clear that a massive overhaul was needed before any new functionality could be added.
</p> <p>Enter The Support Group, Inc.&#8216;s J Caprioli, who took over as Mass Insight&#8217;s lead developer and continues to work with them to this day. J&#8217;s first order of business was to upgrade the system to FileMaker 10, and then begin a complete restructuring of the file. He condensed the 50+ category fields (along with their 50+ matching value lists) into a much more manageable four - for program, sector, type/level of school, and district - and converted all of their data to related records so that users could enter more relevant categories and perform more targeted searches. He streamlined the data entry process and created more flexible reporting tools. Once the initial work was completed many new features were added as well, including the ability to log notes for each contact, track fundraising efforts, and schedule meetings with multiple attendees. The meeting component in particular &#8220;has been huge,&#8221; says Manikas. &#8220;We can now facilitate gatherings of leaders and track the invitees with ease, as well as record if they accepted, declined, or attended. We can easily pull attendance lists, send emails to a group of attendees, and see all meetings for a contact and all attendees for a meeting. I love it.&#8221;</p>

<p>Manikas says she is &#8220;thrilled&#8221; with J&#8217;s work and everyone she&#8217;s dealt with at The Support Group. &#8220;The relationship has been great right from the start. Every touch with company has been terrific - whether I&#8217;m going to a training, working with J, or just contacting their sales team to put together a proposal for another project. J has done a great job; I haven&#8217;t thrown him any curve balls that he hasn&#8217;t been able to figure out for us, and very quickly. He goes right at it and immediately understands what we&#8217;re trying to do.&#8221; Manikas looks forward to the relationship continuing and says there are already plans in the works for additional modules.</p>

<p>Most importantly, says Manikas, the team at The Support Group has been &#8220;extremely responsive and helpful in getting us to think about how we use data and what data can do. A lot of times people have a hard time knowing what they want. These guys ask the right questions.&#8221;
</p>
      ]]></content>
    </entry>

    <entry>
      <title>Siri Rocks!!!</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/siri-rocks/" />
      <id>tag:supportgroup.com,2011:explore/17.286</id>
      <published>2011-11-28T20:49:09Z</published>
      <updated>2011-11-28T21:40:10Z</updated>
      <author>
            <name>Rich Coulombre</name>
            <email>coulombre@supportgroup.com</email>
            <uri>http://www.supportgroup.com/team/#coulombre</uri>      </author>
      <content type="html"><![CDATA[
        <p><img src="http://www.supportgroup.com/images/site/explore/iphone4s.gif" align="left">Like a lot of people, I am the proud owner of a shiny new iPhone 4S.&nbsp; Now, that may not sound unusual (I mean, Apple has sold MILLIONS), but the guys and gals I work with are saying &#8220;OMG!!!&#8221;</p>

<p><img src="http://www.supportgroup.com/images/site/explore/LG-enV-VX9900.gif" align="right"> You see, for years, I&#8217;ve had an old LG 9900 ENV.&nbsp; Those that know me have always wondered why I&#8217;ve never upgraded my phone.&nbsp; The reason I did not upgrade to an iPhone years ago was simple: I never warmed up to the onscreen keyboard.&nbsp; It just didn&#8217;t seem the same as the &#8220;real&#8221; keyboard on my trusty old Env 9900, with real buttons to push.&nbsp; Text messages have become the primary method of communication with my three kids (their choice, not mine).&nbsp; I quickly realized they would generally reply to a text message and ignore all other forms of communication.&nbsp; Sometimes you&#8217;ve gotta go with the flow.&nbsp; But it made a real keyboard that much more important to me.</p>

<p>But with the iPhone 4S, it&#8217;s no longer an issue, because of Siri.&nbsp; I can get things done via voice command and control.&nbsp; I can add items to my calendar, make phone calls, send text messages, get stock quotes, and my new best friend: I can set reminders and timers.&nbsp; Which has me yelling OMG!!!, but in a good way.
</p> <p>I spend 60 to 90 minutes a day in the car, and sometimes more.&nbsp; It&#8217;s my downtime, when I can both collect my thoughts and break out in a panic over the things I&#8217;ve forgotten to do.&nbsp; But now, while tooling around on old New England roads, I can actually DO something about those gremlins that slipped through the cracks, like set a reminder to do them in the morning.&nbsp; I can even set a location-based reminder to do them when I get home.&nbsp; Or, if I realize that I need to call someone next week, I can set a reminder for that too.&nbsp; All via voice.&nbsp; All without looking at the iPhone screen at all; all without a keyboard!&nbsp; The iPhone 4S takes a time during my day when I&#8217;m most alone with my thoughts, and allows me to capture and schedule it.&nbsp; OMG!!!</p>

<p>Apple recently announced that 70% of their revenues came from iOS.&nbsp; Here&#8217;s an industry that&#8217;s only five years old, yet already it provides many tens of billions in revenue for Apple.&nbsp; Some claim that iOS devices are supplanting their desktop/laptop counterparts.&nbsp; For personal and business communications and basic day-to-day organization that is likely true.&nbsp; I&#8217;m using my trusty MacBook Pro to write this article; iOS devices aren&#8217;t designed as well as a tool for the creation of larger documents&#8230; authoring so to speak.&nbsp; Well, not yet anyway.</p>

<p>During the great Halloween storm of 2011, pretty much all of New England lost power to one degree or another. My daughter&#8217;s a junior at Mount Holyoke College out in Western Mass, where they had lots of trees, power lines and branches down across campus.&nbsp; She texted one morning after a full day without power that her phone was almost out of juice.&nbsp; Later that day she texted that she was charging her phone off her MacBook.&nbsp; What does that tell us?&nbsp; She finds her phone more important than her laptop, particularly when there&#8217;s no Internet access.&nbsp; The phone is her lifeline, and limited power resources are going to go to the device that keeps her connected.</p>

<p>In a conversation recently with one of my managers, I noted that iPhone reminds me of the early days of the Macintosh.&nbsp; I worked at Apple in 1984 and 1985 and was there to witness the beginning.&nbsp; Here&#8217;s the thing: the Mac&#8217;s interface was revolutionary; it changed the way we worked with computers.&nbsp; It kindled a flame deep inside, making technology accessible to the masses without their having to type long, ugly, syntactically sensitive strings of DOS commands.&nbsp; And that&#8217;s what Siri and the iPhone 4S are doing too&#8230; it&#8217;s the next revolution in technology that will drive major innovation.</p>

<p>Certainly Apple did not invent voice recognition.&nbsp; They didn&#8217;t invent the graphic user interface either.&nbsp; Instead what Apple has done is taken existing technologies, smoothed off the rough edges, and made them available to the masses.&nbsp; Yes, Android had this ability earlier, and yes, I tried it.&nbsp; But I just never warmed up to Android&#8217;s implementation.&nbsp; It didn&#8217;t work as smoothly or elegantly for me.&nbsp; And that&#8217;s what Apple does best.</p>

<p>Although Siri isn&#8217;t available on older iPhones nor iPads, we&#8217;ve seen a staggering increase in businesses using these devices to improve their productivity.&nbsp; Wherever there is a distributed workforce, there&#8217;s an opportunity to use these portable technologies to review or collect information outside the office.&nbsp; Our clients are using iPads and FileMaker Go to collect inspection information for ships, to review and enter information on sales activities, and to check in guests for bus trips and tours.&nbsp; The future is here!&nbsp; And hey, <a href="http://help.filemaker.com/app/answers/detail/a_id/10073" target="_blank">you can even use voice dictation on the iPhone 4S with FileMaker Go too!</a></p>

<p>Years ago the late, great journalist Don Crabb was at our home for a party.&nbsp; At one point I asked Don if my kids would ever use a keyboard in their business careers.&nbsp; He felt that they would, but not forever.&nbsp; He said the keyboard was a very crude method of getting our thoughts and words into a computer.&nbsp; But it was the best we had.</p>

<p>Well, Don, I wish you were here to see this and to read your thoughts and insights, &#8216;cause the new revolution has just started.</p>

<p>OMG!!!
</p>
      ]]></content>
    </entry>

    <entry>
      <title>FileMaker Developers Wanted: The Support Group is Hiring</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/filemaker-developers-wanted-the-support-group-is-hiring/" />
      <id>tag:supportgroup.com,2011:explore/17.285</id>
      <published>2011-11-15T21:42:33Z</published>
      <updated>2011-11-15T21:46:34Z</updated>
      <author>
            <name>Chad Novotny</name>
            <email>chad@supportgroup.com</email>
            <uri>http://www.supportgroup.com/team/#novotny</uri>      </author>
      <content type="html"><![CDATA[
        <p>If you love FileMaker, we&#8217;re a GREAT place to work!</p>

<p>The Support Group is one of the largest and most successful FileMaker consulting companies in the world, with offices in Boston, New York, Los Angeles and the San Francisco Bay Area.&nbsp; We&#8217;re looking for seasoned FileMaker developers in our Boston-area headquarters in Natick, Los Angeles, and San Mateo</p>

<p>Our team consists of full time, salaried professionals who design and implement attractive and functional FileMaker systems for our clients in business, education and government.&nbsp; We have some leading, industry-recognized FileMaker gurus on staff here, who work with ALL our developers as part of a team of true, high-caliber, FileMaker experts.</p>

<p>Interested?&nbsp; Head over to our <a href="http://www.supportgroup.com/hiring/">Employment Opportunities</a> page to learn more.
</p> 
      ]]></content>
    </entry>

    <entry>
      <title>Using the Web Viewer as a &#8220;Field&#8221; in FileMaker Go</title>
      <link rel="alternate" type="text/html" href="http://www.supportgroup.com/explore/using-the-web-viewer-as-a-field-in-filemaker-go/" />
      <id>tag:supportgroup.com,2011:explore/17.283</id>
      <published>2011-11-15T17:17:52Z</published>
      <updated>2011-11-15T21:24:53Z</updated>
      <author>
            <name>Chad Novotny</name>
            <email>chad@supportgroup.com</email>
            <uri>http://www.supportgroup.com/team/#novotny</uri>      </author>
      <content type="html"><![CDATA[
        <p>One of our customers recently needed a field to be both non-editable <em>and</em> scrollable in FileMaker Go.&nbsp; Here&#8217;s his request:</p>

<div class="question"><p>I need to build a system for someone to read a form on an iPad and capture their signature in a container field.&nbsp; The forms are of variable length and will change over time.&nbsp; So I want to put the body of the text into a field for each form for each signature.</p>

<p>Since the form can be very long, the user will need to scroll to read the whole thing.&nbsp; But, when you click into a field, the keyboard pops up on the iPad.&nbsp; Is there away to suppress that?</p></div>

<p>Well&#8230; no.&nbsp; Not with a field.&nbsp; <em>But</em>... yes.&nbsp; With a web viewer.
</p> <p>There&#8217;s no way to stop the virtual keyboard from appearing as soon as a user clicks into a field in FileMaker Go. On top of that, the cursor will jump to the end of the text in the field; if you&#8217;re trying to present a large amount of text with many paragraphs (such as one of those End-user License Agreements I&#8217;m always skimming over), the user will have to scroll back to the top. We need a way to allow the user to scroll through the field contents without actually entering the field.&nbsp; Adjusting the field in Layout mode to prevent entry in Browse mode gets you part of the way there. But if the amount of text exceeds the size of the field, you end up with hidden and inaccessable text, as there&#8217;s no way to scroll the field contents if you can&#8217;t enter it.</p>

<p>But there&#8217;s a simple workaround to create a scrollable, non editable area displaying text field contents.&nbsp; Enter the Swiss Army knife of layout objects: the web viewer. Pages in a web viewer can be scrolled through, and even copied from, without ever invoking the iOS keyboard.</p>

<p>We normally think of the web viewer as a tool to display web pages.&nbsp; But you can also feed a web viewer raw HTML for it to display using a <a href="http://en.wikipedia.org/wiki/Data_URI_scheme" target="_blank">data URI</a>. If the web viewer&#8217;s web address starts with &#8220;data:text/html,&#8221;, whatever HTML follows will be parsed and displayed. </p>

<p>So, don&#8217;t use a field to display your form&#8217;s text; use a web viewer.&nbsp; To get our field&#8217;s contents as HTML, we can use the GetAsCSS() function.&nbsp; Our web viewer&#8217;s calcuated web &#8220;address&#8221; is a simple:</p>

<div class="codeblock"><pre>"data:text/html," &amp; GetAsCSS ( formTable::textField )</pre></div>

<p>This is a trick we use both in FileMaker Go and on the desktop in FileMaker Pro when we need to present a &#8220;field&#8221; that can be scrolled or from which one can copy (meaning we have to allow entry in Browse mode), and where using access privileges to restrict editing isn&#8217;t the right solution (if, for example, they can edit the field on other layouts).
</p>
      ]]></content>
    </entry>


</feed>