Your Interests Panel

  • Services
  • Products
  • Case studies
  • Goals
  • Modules
  • Functional areas
  • Events

An Interest was added! Interests were added!

was were added to Your Interests Panel.

Within our site, when you click a that item is added as an Interest.

You can open "Your Interests Panel" with Open Side Panel Created with Sketch. below. Also, Also, from the gray panel on the right (“Your Interests Panel”) you can select interests from drop-down lists, among several categories.

All interests you select can be submitted together on our contact form. This lets us know these are topics you’d like to discuss with us.

Exciting...

The bBox FileMaker plug-in is a toolbox of functions freely available to all developers. Use it with your Mac OS X-based FileMaker solutions to call programs, scripts, code libraries, and OS functions that are not available within FileMaker:

  • Python
  • Ruby
  • JavaScript
  • AppleScript
  • Shell scripts (sh, Bash)
  • SQLite3
  • curl HTTP (for SOAP or REST calls)
  • XPath

Offering dozens of powerful functions, bBox extends the reach of FileMaker’s existing commands. This makes it easier to get your projects done, and without the need for ugly workarounds to provide functionality that should be simple.

Some common uses are:

  • integration with Python-based libraries
  • Parse XML/XPath or JSON
  • AppleScripts that easily return results to FileMaker
  • accessing WSDL (SOAP) services
  • ad-hoc searches for layout elements using XML in clipboard
  • output formatted PDF or Excel files
  • shell access to manipulate file system
  • parsing text with regular expressions
  • customized SMTP email

FileMaker Function List

See the function documentation page for detailed usage information.

Python & JavaScript Functions

When bBox instantiates a JavaScript or Python VM, it adds in a custom class to its environment. The class functions implement callbacks to FileMaker, allowing your Python or JavaScript script to query FileMaker, update tables, or run scripts. For Python, you will need to add the following to your script:

import fm

Except for the executesql function, the parameters are identical for Python & JavaScript. In a future bBox version the JavaScript executesql parameters will be identical.

The functions are:

  • fm.evaluate (expression)
    • expression: text containing a valid FileMaker calculation
    • result: a Python value based on result of expression
  • fm.executesql (expression) [JAVASCRIPT]
    • expression: a FileMaker SQL expression
    • result: a string result from the SQL query (or ?)
  • fm.executesql (expression {, values} ) [PYTHON]
    • expression: a FileMaker SQL expression
    • values: one or more SQL parameters to be used in the SQL expression
    • result: a string result from the SQL query (or ?)
  • fm.run (filename, scriptname {, parameter} )
    • filename: FileMaker file name
    • scriptname: FileMaker script name to run
    • parameter: passed to FileMaker script

The evaluate function may seem to be mainly about pulling data out of FileMaker into Python, but you can also push data out by setting FileMaker variables within the evaluate statement.

executesql can naturally work in both directions using a SELECT statement to pull data in, or an UPDATE or INSERT to push data out to FileMaker. Rows and columns are returned as a non-mutable Python list (tuple), so there is no need to specify characters to delimit these like you would with FileMaker’s ExecuteSQL function.

Session and Re-entrancy/Thread-safe

It is possible with re-entrant calls or with server-side scripts that two calls to a function (or set of related functions) could occur at the same time.

We will use the term “session safe” if multiple PSOS or server script schedules can use the same function. If a function can (for instance) be used re-entrantly, then we will say that it is “thread safe”.

Most functions are thread-safe, but there are some exceptions to be aware of:

bBox_LastError: result is session safe for most cases; for SQLite it is also thread safe
bBox_ShellExitStatus: Not session or thread safe; use bBox_LastError instead
bBox_JavaScript: session and thread safe, but bBox_LastError(-5) is only session safe
bBox_Python: these functions are not thread safe (use mutex or consider creating your own threads in Python)
bBox_SQLite: SQLite functions are session and thread-safe
bBox_XPath: session safe

Function Documentation by Version

Examples

The bBox Plug-in Demo file has 185 examples of the various functions, and is included with the bBox disk image.

Product Information

Related Blog Posts

Current Version

As of September 18, 2019 the current version is 0.94.
Version 0.95 planned for November 2019 release.

We use cookies to give you the best experience possible on our site. Learn More