It's nice to show users record counts (found count, total number of records in the database, current record they're browsing), but it typically means creating separate calculated fields for each value. This can bulk up your system and be a pain to create in every single table.

Here's a trick from forum subscriber Marc Wood at the National Scholastic Press Association. Paste the following code into the Web Address field of a new Web Viewer.

Substitute (
"data:text/html,
<html>
<body style='background-color:white;margin:0;border:none'>
<div align='center'>
<span style='font-family:Lucida Grande;font-size:11px;color:black'>
### of @@@ (%%% total)
</div>
</body>
</html>" ;
["###" ; Get (RecordNumber)];
["@@@" ; Get (FoundCount)];
["%%%" ; Get (TotalRecordCount)]
)

Deselect the checkboxes at the bottom of the setup window.

webviewer_01.jpg

Position the web viewer on your layout. You can move it, resize it and even make the surrounding box disappear by changing its line width to 0 pt.

webviewer_02.jpg

Notice how fast it is as you click through records. Perhaps the best part is you can copy and paste this web viewer into any file and it will work! No need to alter the setup from one database to the next. Thanks Marc!

webviewer_03.jpg

Style Manual: Conventions

| No Comments

<-Previous

  1. Abide by all University policies regarding data collection, use, storage and destruction.
  2. Display short dates as m/d/yyyy.
  3. 5/18/2010
  4. Display long dates as Mon Day, Year.
  5. Nov 4, 2012 
  6. Display time as h:mmxm.
  7. 4:23pm

    Convert a timestamp to the format above with this function by Thomas Seidler. It uses the same codes you'll encounter when formatting dates in PHP. The calculation to display as above is: FormatTimestamp ( rm_Creation ; "M j, Y g:ia" ) where rm_Creation is a timestamp field.

  8. Create a unique ID field in every table. Make it a number field. Serialize and increment it by one. There's no need for leading alpha characters or zero placeholders.
  9. ProjectID: 1, 2, 3, 4, 5..
  10. Every file should have the following fields. Use the "Options..." dialog box to set auto-enter values.
    [A unique serial ID]
    rm_Creation (auto-enter creation timestamp)
    rt_Creation (auto-enter creation account)
    rm_Modification (auto-enter modification timestamp)
    rt_Modification (auto-enter modification account)
  11. Program the main file to perform a script at open which sets global values, navigates to the starting layout, positions the window on the users screen, sizes the window appropriately and renames the window as necessary.
  12. When serving files using FileMaker Pro Server, hide all but the primary files from the user.
  13. Display telphone numbers as follows:
  14. 612.306.6428 (the University's standard)
    +44 (0)1908 214700
  15. Users don't think of timestamps but rather dates and times as discrete values. If date and time values will be provided by the user, separate them into two fields. If, however, the date and time is entered when the record is created or by a script, build a single timestamp field.

Style Manual: Accounts

| No Comments

<-Previous | Next ->

  1. Disable the Guest account on all networked files.
  2. Among developers, agree on a high level username and password. Use these credentials to create an Admin account in every FileMaker database. Set it to authenticate via FileMaker and assign it Full Access control. Share these credentials with no one.

    Reserve this account for emergencies. It's helpful for troubleshooting and opening files when you're not connected to the network.

  3. For day-to-day use, create externally authenticated accounts for each level of access. Manage access by adding and removing users from groups in Workgroup Manager not by creating entries in the database's Accounts and Privileges pane.
  4. Among developers, agree on a web username and password. Use these credentials to create an Web account in every FileMaker database accessible via the internet. Create a corresponding Web privilege set. Turn off all but essential extended privileges.
  5. Externally authenticated accounts need to match group names established in Workgroup Manager. You may want to maintain the same naming convention in the local accounts you create. Where you don't feel bound to be consistent, use upper camel case.
  6. StudentUser
    FinanceUser
  7. Use upper camel case for privilege sets.
  8. AuditorAccess
    ExecutiveAccess

Next ->

Style Manual: Value Lists

| No Comments

<-Previous | Next ->

  1. Use upper camel case.
  2. ApplicationStatusList
    CountryList
  3. Include the word "List" in the name. This helps distinguish values list names from field names when working in CDML or PHP.
  4. In larger solutions, build custom value lists in the primary file and point to it in the supporting files.

Next ->

Style Manual: Scripts

| No Comments

<-Previous | Next ->

  1. Insert the Comment script step as the first step in all scripts. Use it to describe the function of the script. Include the purpose, any parameters and any inputs such as global fields or user responses.
  2. Use plain language.
  3. Print Stakeholders List

  4. Use title case.
  5. Toggle Between List and Detail Views

  6. Be concise, yet include enough detail to make it obvious to future developers and yourself.
  7. Be consistent. Use the same verbiage for similar tasks.
  8. Be economical. Create a single script that performs several tasks depending on inputs and parameters.
  9. Recent versions of FileMaker include ways to group and separate scripts. Use these to subordinate supporting scripts or group similar scripts.

Next ->

Style Manual: Layouts

| No Comments

<-Previous | Next ->

  1. Keep a plain, table-style layout for each table that contains all fields except summary and unstored calculations. This layout is good for scripting and data scrubbing. Give the layout the same name as its assocated table.
  2. Student
    Teacher
    InvoiceItem
  3. Preface layout names with one of the following terms plus an underscore indicating its primary function: web, form, list, search, print, select, misc, script.
  4. form_Student
    list_School
    print_ActivityByGrade
    select_Teacher, Year
    script_Copy All Students
    web_TeacherAdd
  5. Use title case and be descriptive. Good FileMaker construction urges unique layouts for discrete activities, resulting in many layouts even for simple solutions. Beyond the leading term describing its function, feel free to include any language that clearly distinguishes it from similar layouts.
  6. print_Participant, Age by Activity, Coach
    print_Participant, Email, Phone, Birthdate
    select_Teacher Data for Export
  7. Group layouts based on shared tables or similar functions — whichevever is more practical for your solution. In either case, separate groups of layouts with a separator bar.

Next ->

Style Manual: Relationships

| No Comments

<-Previous | Next ->

  1. Use Upper Camel Case to name table occurrence on the relationships graph.
  2. LIB_MediaResource
  3. Employ the Functional Spider Grouping (FSG) method for naming table occurrences and organizing the relationships graph. FSG is explained on pages 29-31 of the FileMaker Developer Conventions white paper but here are the highlights:
    • Establish a two, three or four letter code to distinguish groups with your solution.
    • TEA = Teachers
      SCH = Schools
      EVT = Events
      ENT = Entries
      PAR = Participants
      JUD = Judges
    • As you create table occurrences on the relationships graph, begin with a code that describes the context of the relationship. Within the context of schools, you may have portals showing teachers at the school and entries that school has submitted. The resulting table occurrence might be named:
    • SCH_School
      SCH_Teacher
      SCH_Entry
    • A single entry is submitted by multiple students and graded by several judges. Relationships from the perspective of the Entries table might be named:
    • ENT_Entry
      ENT_Participant
      ENT_Judge
    • Arrange the table occurrences on the relationships graph in a spider web. That is, place the parent table in the center (the body) and the child tables as legs spoking out from the parent.

  4. With FSG, you may have more than one relationship joining the same tables via the same key, yet the table ccurrences are named differently depending on the context. While this would seem to add bulk to your solution, it streamlines relationship drop-down menus by grouping relationships sharing the same context.

Next ->