8. the easiest way to send e-mail, text messages and faxes
from FileMaker Server 12
• Checks which e-mails
need to be sent, based
on FileMaker field criteria
• Runs a background
process
• Supports plain text as
well as HTML e-mail
• Easy implementation
• Ideal for integration in
9. the ultimate developer tool that saves you tons of
development time
• Stores complete
FileMaker fields, tables,
scripts, script steps and
layouts in an easy-to-use
library.
• Clip Editor
• Clip History
• easy access with the
“snippets”feature.
10. allows you to easily control printer switching from within
your FileMaker
• switches printers on the
fly
• generates PDF in runtime
solutions
• captures printer
settings like page
orientation, paper size
etc. and restores them at
the time of printing
11. Do more with SQL in FileMaker
• uses SQL statements to
select, update, create or
delete FileMaker records.
• doesn't require any
drivers
• Returns native FileMaker
data types like dates,
images, formatted text,
• Debug tools
12. Menu
• FQL Engine demystified
• Overview of most common SQL commands
• Other DoSQL Commands
• Common mistakes
13. FQL engine?
• FileMaker code that accesses the data in
another way
• Providing an alternative way of“talking”to
the data
• Using multiple FQL interfaces to the
database(s)
29. Result = TEXT
• Date:“2013-08-15”
• Time:“02:49:03”
• Timestamp:“2013-08-15 02:49:03”
• Containers: only the name of the file: e.g.
image.jpeg
30. Select with DoSQL
• DoSQL can retrieve the data like ExecuteSQL
if you want
• FQL-engine does support native FileMaker
types, so does myFMbutler DoSQL 2
• DoSQL supports container fields
• Compatible with FileMaker Pro 11 and
above
34. INSERT,
UPDATE & DELETE
• Supported through JDBC, ODBC and the
plug-in API
• NOT supported through ExecuteSQL()
• So plug-ins are the only ones capable of
supporting FQL fully from the inside
35. Let’s start with INSERT
• syntax: INSERT INTO table_name
[(column_name, ...)] VALUES (expr, ...)
• can be a prepared statement ( it better be )
• VALUES can be a SELECT expression
• can be a lot faster than a script doing new
record, set field, set field,… why?
36. Committing records
• for JDBC & ODBC this is a setting
• the plug-in API is always auto-committing
and has no cursor support
37. INSERT
• No need to change the context
• Logging
• Audit trail
• Creating statistics, reports, ...
38. So, You Think You Can
UPDATE
• UPDATE table_name SET column_name =
expr, ... [ WHERE { conditions } ]
• A user can lock a record
• the error codes returned are the FileMaker
error codes ( e.g. 301 )!
• compare with SELECT, it will never return
error 401
39. Select for update
• SELECT for UPDATE only locks records on
JDBC and ODBC
• plug-in cannot lock a record, but SELECT for
UPDATE returns error when records are
locked
• user can lock a record
40. UPDATE
• No need to change the context
• Changing data (in bulk) of related records
• Triggering auto-enter calculations of related
records
41. Delete
• DELETE FROM table_name [ WHERE
{ conditions } ]
• check for record locking!
• check for privileges!
43. Modifying Structure
using SQL
• this is dangerous stuff, keep backups
• a calculation field cannot return a result
when the schema is being changed, this
results in a deadlock
• modifying schema on idle can be done
using DoSQL 2.
57. Use hard coded
field names
• Do not use GetFieldName ( field ) instead
• Do not push FileMaker to solve
GetFieldName() validation bugs with
unrelated fields
Linda DuBose - http://www.sxc.hu
58. Use SQL in
Stored Calculations
• And see the continents move while your
schema recalculates
59. Never check for errors
• Just assume you SQL queries are perfect
• ExecuteSQL(): never check for Get
( LastError )
• DoSQL: set DoSQL_SupressAlerts( True ) and
never use DoSQL_LastErrNum
Michael & Christa Richert - http://www.sxc.hu
60. Leave your queries in
the data viewer
• when you are finished with debugging
and use your computer to grill your meat
Chris Chidsey - http://www.sxc.hu
61. Do more with SQL
• Even when it’s faster to do it using old
school methods
• Know that because SQL calculation are
harder to write, they must be the better way
do to things
Everything
62. Do more with SQL in FileMaker
• uses SQL statements to
select, update, create or
delete FileMaker records.
• doesn't require any
drivers
• Returns native FileMaker
data types like dates,
images, formatted text,
• Debug tools