BIOS Serial Number on Windows

If you like to know the BIOS Serialnumber of a Windows PC, you can use WMI classes and a query like "SELECT * FROM Win32_BIOS" to get it.
Simply try it in our example project WMI Query. Compile the project on Windows, enter the query and run it. In the list of the values you get, you see SerialNumber near the bottom.
It should look like this:

Sybase with Real Studio

One of our plugin users, Dr Gerard Hammond, uses our MBS Real Studio SQL Plugin to connect to a Sybase database on Linux using the open client libraries.

Read the details here:

It is always great to see what people do with our plugins.

OCR for Real Studio and Filemaker

Today we added OCR functions for our Filemaker plugin. The example looks like this:

We use tesseract3 as engine and provide the plugin functionality for both Real Studio and Filemaker with our latest plugins. Basically you simply give it an image and ask for the text. For better results you should check the options like defining the page segmentation mode or an rectangle of interest.
The results in first tests of some users are less than optimal. Mostly because they use the wrong options. Like for a business card, the default page segmentation mode is wrong. Single Block mode does not work well with multi column texts or mixed texts like in a business card. Better use Auto mode here.
Next you need to make sure you have the best image. We recommend at least 150 dpi, better 300 dpi. And if you have RGB or Grayscale. B/W is often not so good. Internally tesseract applies some filters and converts itself to black and white later. But the result with RGB or grayscale is normally better if you let tesseract convert the colors. Using an image with poor resolution can cause tesseract to not recognize anything at all.
Finally you have to choose a language. The reason is that the engine has been trained with demo text from a given language. You can of course create your own file here. If you don't know the language you can simply try with all packs you want to support and pick the result with best confidence.

You find documentation here for Filemaker and here for Real Studio.
We hope you have fun adding OCR functionality to Real Studio and Filemaker solutions. If you have questions, please do not hesitate to contact us.

MBS Filemaker Plugin, version 2.9pr4

New in this prerelease of the 2.9 plugins:
  • Added new OCR functions.
  • Fixed a bug with GraphicsMagick functions error handling for loading an image.
  • Performance improvements for Audit function. Some values like UserName are only queried once per record instead of per field.
  • Fixed Window.Resizable for Filemaker 12.
  • Improved Audit functions to make them a little bit faster.
Download later today at

MBS Real Studio Plugins, version 12.4pr4

New in this prerelease of the 12.4 plugins:
  • Fixed problem with events in QTMovieViewMBS and CustomNSScrollerMBS.
  • Added new NSLayoutManagerMBS methods to show invisible characters. Use with NSTextViewMBS.
  • Added NSTextContainerMBS class.
  • Added classes for avahi library on Linux (like Apple's Bonjour)
  • Added LargeBinaryStreamMBS.Lasterror and LargeBinaryStreamMBS.QueryDiskGeometry.
  • Changed color functions for DynaPDFTableMBS class, so you can now pass integers or floats for up to 16 channels.
Download: Or ask us to be added to our shared Dropbox folder.

Show invisible characters in NSTextView/TextArea

With next plugins, you can show invisible characters in Mac OS X with NSTextViews. Of course this also works for textarea controls in Cocoa targets.

The plugin can replace space, tab and new line characters with new characters and draw them. Also you can change the text color if needed, like use a dark gray or a red like in the example.
For this we extended NSLayoutManagerMBS class with new properties and also added methods to NSTextViewMBS to change the layout manager.

Mac & i magazine

The new Mac & i magazine is now available. It is a german magazine, but it may be worth for you even if you only need the license. Included on the magazine DVD is a copy of Real Studio in Person Edition. So you can get a copy of the magazine, register for the free personal license and later benefit from automatically updating to Desktop license in October.

Also in the magazine: A four page tutorial for beginners on how to write a little game with pictures, folder items, canvas and much more.

Thanks to the Mac & I team for supporting Real Studio :-)

Bonjour on Linux

We have for years now the classes for DNS Service so you can register and search for services on Mac OS X and Windows.

Now we had the request to search services on Linux, too. The Apple implementation of Bonjour is only available on Mac OS X and Windows, but not on Linux. But on linux there is a similar library called avahi. And we can use this library with our plugins.

So with next prerelease plugins, you can try examples and check the new classes like the AvahiBrowserMBS class. And if your app already support linux and uses our Bonjour classes on Mac and Windows, how about adding the same for Linux?

Audit Tip for Importing

Have you checked our Audit functions? (see Documentation and introduction tutorial)

If you import a lot of records in a database, the Audit function can slow down the import process a lot. Because for each field, Filemaker triggers the plugin and we record all the changes while importing. This is not necessary. So when import and you see this dialog, please make sure the checkbox is not marked:

Now you import and the plugin does not record changes while importing, so it's very fast.
To inform the plugin about your changes and to log them, you now loop over the imported records and call the Audit.Changed function for each record. You can easily find the imported records by checking the AuditState field as it has no value. Use a Set Field script step to set the AuditState field with the result to calling Audit.Changed with the same parameters as in your table definition.
Now the plugin has all entries logged, so it can keep history and you have old values on changes for a later undo/restore operation.

MBS Real Studio Plugins, version 12.4pr3

New in this prerelease of the 12.4 plugins:
  • Fixed bug with OverlayMBS not positioning right in RS 2012r1.
  • Added SunTimesMBS module.
  • Added CDBaseChartMBS.patternColor, CDDataSetMBS.setDataSymbol, CDPolarLayerMBS.setDataSymbol and CDThreeDScatterGroupMBS.setDataSymbol. They take a Real Studio picture.
  • Added MultiThreaded property to WindowsFileCopyMBS class.
  • Changed CIFilter*MBS classes to use less auto releasing and release memory faster.
  • Added MacQuarantinePropertiesMBS.Dic for debugging.
  • Fixed CFShowMBS and CFShowCFStringMBS, so it uses NSLog internally and works on Mac OS X 10.8.
  • Fixed crash on Windows with LargeBinaryStreamMBS.Length.
  • Fixed bug in EyeOnePro4MBS events.
  • Added LinuxWebViewMBS and LinuxWebFrameMBS classes.
  • Added better Windows support for FolderItem functions AccessDateMBS, ModificationDateMBS and CreationDateMBS.
  • Added Windows support for Folderitem.KindMBS function.
  • Rewrote big parts of LargeBinaryStreamMBS class.
  • Added shared methods to LargeBinaryStreamMBS, so you can open files with folderitem or path.
  • Added more nil object exception tests for memoryblocks passed to plugin.
  • Improved exceptions from plugin. Out of bounds exception have now message with range, function name and parameter name, so you can easier find problem when debugging.
  • Fixed a bug in EyeOnePro4MBS.OpenDevice.
  • Fixed a problem with PNGReaderMBS reading iOS optimized PNG images.
  • Fixed ThreeDScatterChartMBS.addScatterGroup.
Download: Or ask us to be added to our shared Dropbox folder.

Some news from today

Licenses per developer

Do you work alone or do you have several developers working with Real Studio or Filemaker?
Well, not sure if you know, but the license from Real Software is given per developer. So if you have three people working with Real Studio, you also need three licenses.
The rules are similar for Filemaker products, but you often have volume licenses for using Filemaker in bigger companies.

For our plugins, we also sell licenses per developer. We do not count which platform you use or if you have several desktop and/or laptop computers.

Also you should know that for businesses the Mac App Store sells software per user. So a company needs to have several licenses of Mac OS X 10.8, one for each user. But for the Mac Developer Programm members, the Mac OS X licenses are included as far as I see and covered for all Macs you use for development/testing. A private consumer only needs one license for all of his computers.

Licensing is not always easy and if you have questions or we can assist you, please contact us.

Please update plugins for Real Studio 2012r1

If you install Real Studio 2012r1, please also update plugins.
We had today a few support calls where people had trouble with older plugins. With older plugins, you may see problems like plugins not loading, errors on compilation or crashes.
MBS Plugins 12.3 and newer works fine. If you have trouble with MBS plugins, please contact us.

Real Studio 2012 Release 1

Real Software announced earlier today that Real Studio 2012 Release 1 is now available! With more than 350 improvements and support for OS X Mountain Lion, this release also includes:
  • Webkit Support for HTMLViewer on Windows
  • Incremental Reading/Writing of BLOBs in SQLite/RealSQLDatabase
  • Significant progress with Cocoa support. Most, if not all, of your projects should compile for Cocoa at this point!
  • Tons of improvements have also been added for Real Studio Web Edition - 106 to be exact!
View the preview video of this release to learn more. Download Real Studio 2012 Release 1 today.

SQLite Backup Functions

We are adding backup functions to our MBS Real Studio SQL Plugin. This way you can do online backups of your SQLite database. Even if your normal app uses SQLite using REALSQLDatabase class, you can still open a second connection with our plugin and do a backup while the database. Read about the backup functions in sqlite here.
Code is like this:

      dim s as SQLite3MBS = con.NativeAPI
dim b as SQLite3BackupMBS = s.BackupInit(conBackup, "main", con, "main")

if b<>nil then
while s.BackupStep(b, 100) = s.kErrorOk
// show progress

if s.Backupfinish(B) = s.kErrorOk then
MsgBox "backup okay"
end if
MsgBox "Failed to start backup."
end if

As you see, you get the native API of the SQL connection with the SQLite3MBS class. There you call backup methods there. You keep and pass the SQLite3BackupMBS object to the functions.

Accept file drops in Filemaker with MBS Plugin

This tutorial is about accepting file drops on a Filemaker window with MBS Filemaker Plugin and performing a script. We create a little database with fields FileName and FileSize. The setup looks like this in Filemaker 12:

Linux WebKit Support for Real Studio's HTMLViewer control

For some time now Real Studio uses WebKit on Linux for the HTMLViewer control. Our plugin now gets a few new classes in 12.4 release to use more webkit features. So with the new LinuxWebViewMBS class and the new LinuxWebFrameMBS class you can control more things than before. Like GoBack or GoForward or setting a proxy URL.

In the next months we can add more. But first we await your feedback. Because we have no idea how many people use this feature of Real Studio beside the developers who asked for this classes.

New 12.4pr3 plugins will be available soon, so you can test this.

Omegabundle 2012 - ending today

The Omega Bundle is available until 20th August 2012:

MBS Filemaker Plugin, version 2.9pr3

New in this prerelease of the 2.9 plugins:
  • Added Files.AccessDate, Files.CreationDate, Files.FileDisplayName, Files.FileKind, Files.FileName, Files.FileUTITypes and Files.ModificationDate.
  • Changed Files.FileSize to give on Mac also data- or resourcefork size and either logical or physical size.
Download later today at

Better OutOfBoundsException

Maybe you saw my feedback case 12703 about adding more details to the message of OutOfBoundsException objects automatically. A little change in the code generator could create message texts for those exceptions giving details on what went wrong.

Today I spend a couple of hours going through my own plugins and do this change myself for my functions. The plugin knows the allowed range and also which function you called. So we can give this detail in the message. If you have a bug reporter phoning home, you can analyze the message later. (For example using our Bug Reporter Kit).

So this code:

dim m as new PictureMatrixMBS
m.Matrix(9,9) = 5

Now raises an OutOfBoundsException with message "Parameter x to method Matrix is too big. Range is 0 to 4, but value is 9.".

In addition we improved memoryblock checks for nil. So calling some functions with a nil memoryblock no longer silently fails, but raises an exception. For example NewCFBinaryDataMBSMem now raises a NilObjectException with message "memoryblock is nil" if you call it with nil for the memoryblock parameter. Something you should never do.

Those new checks may raise exceptions where code worked just fine before. But I think it's important to fix problems and not have functions fail silently in case something is really screwed up. Of course there is a possibility that one of the checks is wrong, so please report if you see an exception and you thing it is wrong placed. For example an out of bounds check could off by one. If you see a problem, please do not hesitate to tell us.

By the way, I also made some new feature request in this direction: Feedback #22194: Show Exception message in debugger and Feedback #22194: Show exception in debugger variables

MBS Filemaker Plugin, version 2.9pr2

New in this prerelease of the 2.9 plugins:
  • Fixed bug in internal text encoding conversion. Affected several functions like the XL functions and on Windows the File Dialogs, File functions, Preferences and fonts.
Download later today at

MBS Real Studio Plugins, version 12.4pr2

New in this prerelease of the 12.4 plugins:
  • Updated DynaPDF to version
  • Due to the changes in the DynaPDF API, we removed DynaPDFTableBaseMBS, DynaPDFRowMBS, DynaPDFCellMBS and DynaPDFColumnMBS.
Download: Or ask us to be added to our shared Dropbox folder.

Introducing Filemaker Runtime Shrinker

With our 2.9pr1 plugin we included the Filemaker Runtime Shrinker for Mac OS X. Download it on our prerelease plugin download page. This is a little tool which can shrink your Filemaker runtimes significantly.
The main window looks like this:

Left Filemaker 11, right Filemaker 12.

As you see we have 4 options:
  • First you can remove PPC code. As Filemaker does not even run on PowerPC based Macs, you can safely remove the old PPC code. It's not needed and we are not sure why Filemaker actually does include it in the first place.
  • Second, we remove duplicate libraries. Yes, the runtime contains a few shared libraries several times and it works fine if you remove the duplicates.
  • Third, there are some icon files in the runtime which are not assigned to file types, so the operation system will never use them. You can remove them easily with this option.
  • Finally you can reduce the number of languages you support.
When we click the shrink button with all options and leaving only one language, we get the runtime smaller and the result dialog:

As you see we save 95 MB (64%) for a Filemaker 11 runtime here and 85 MB (55%) for a Filemaker 12 runtime.

We already had questions for a Windows version. Filemaker runtimes on Windows include a lot of DLLs and all are required as far as we see. You still can yourself delete some localization files if you like. Also you don't need to include the Microsoft Runtime folders on Windows 7 as far as we see. Those libraries do ship with Windows 7, but please test that yourself.

Please give it a try and if you have questions, please do not hesitate to ask us.
if you want to share this news with friends, please point them to our website/blog so they can download the latest version. This app will probably need updates regularly for newer versions of Filemaker. And I hope Filemaker Inc is not upset with us providing this tool.

1000 tweets!

If you follow us on twitter, you may have seen it: We now have a tweeted a 1000 times.

To keep in touch with updates and news, you can follow us on twitter, watch our page on Facebook, subscribe the RSS feed or look on our blog regularly.

MBS Filemaker Plugin, version 2.9pr1

New in this prerelease of the 2.9 plugins:
  • Added Runtime Shrinker application.
  • Added Math.NumberToText and Math.TextToNumber.
  • Fixed debug output from Trace so it works on Mountain Lion.
  • Added new XL methods for using libxl to read text from Microsoft Excel files.
  • Added new PDFKit methods.
Download later today at

MBS Real Studio Plugins, version 12.4pr1

New in this prerelease of the 12.4 plugins:
  • Added NSPageLayoutMBS, NSPrinterMBS, NSPrintInfoMBS, NSPrintOperationMBS and NSPrintPanelMBS classes.
  • Added defaultPalette, transparentPalette and whiteOnBlackPalette to CDBaseChartMBS class.
  • Improved GetFile method in CarbonEventsScrapMBS to work on Mac OS X 10.8.
  • Added FlavorCount, FlavorFlags and FlavorType to CarbonEventsScrapMBS class.
  • Added more NSTextViewMBS methods.
  • Fixed bug with error method in LCMS2ErrorHandlerMBS.
  • Added NSMutableParagraphStyleMBS, NSParagraphStyleMBS and NSTextTabMBS classes.
  • Added more constructors to SQLBLobMBS, SQLBytesMBS, SQLCLobMBS, SQLLongBinaryMBS and SQLLongCharMBS.
  • Added ABGroupMBS.searchElementForProperty and ABPersonMBS.searchElementForProperty.
  • Fixed crash in NSSharingServiceDelegateMBS events.
  • Fixed a bug in BackingScaleFactorMBS for Carbon.
  • Changed LCMS2TransformMBS.CreateTransform* functions to allow passing nil for output profile.
Download: Or ask us to be added to our shared Dropbox folder.

Filemaker Magazine Article with MBS Plugin

With the last Filemaker Magazine they included an article from me about how to use file dialog functions from MBS plugin.

With a little image database, we import images and batch export them later. With the plugin you can define initial folder or customize the dialog with different captions or titles. Also you can ask the user for file, folder or even both.

The article is in german and currently we have no translation to english.

Download PDF: fmm_201203_30-31.pdf

Version Information in MBS Plugins

  1. We have functions like MBSPluginVersion and MBSPluginCompileDate.
  2. We have the MBS module with some details:

    This allows you to write code like this
        #if MBS.Year >= 2012 then
    // use new method
    // use old method

    if val(MBS.VersionString)<12 then
    MsgBox "Please upgrade the plugins for this example."
    end if
  3. In Mac OS X Finder our plugins show version information in the version column:
  4. Also in Finder's Info dialog you see details in version field:
  5. In compiled application on Mac you can check the version on the dylibs:
  6. And in Windows explorer you see the version in the properties:


Our ChartDirector plugin can take colors either as Real Studio color or as an integer which typically comes in hex notation. For colors, ChartDirector uses the invisible ones special. So typically full alpha gives you no color (transparency). But there are 16.7 million transparent colors. And those are used for special colors in ChartDirector. So with functions like yzoneColor, linearGradientColor, dashlineColor or silveColor on CDBaseChartMBS class, you can create special colors. Those react on different values on the chart like the zone colors or give you gradients or even metallic effects.
Like this code:
    dim c1 as integer = c.yZoneColor(10,     &h80FF3333, &h80EE4433)
dim c2 as integer = c.yZoneColor(20, c1, &h80CC5533)
dim c3 as integer = c.yZoneColor(30, c2, &h80AA7733)
dim c4 as integer = c.yZoneColor(40, c3, &h80888833)
dim c5 as integer = c.yZoneColor(50, c4, &h8077AA33)
dim c6 as integer = c.yZoneColor(60, c5, &h8066CC33)
dim c7 as integer = c.yZoneColor(70, c6, &h8044EE33)
dim c8 as integer = c.yZoneColor(80, c7, &h8033FF33)

call c.addAreaLayer(data, c8)
can color a chart like this:

Do you see that this is not just a gradient, but gives 9 different strips which we can color in any color? We concat several zone colors in a long chain which is evaluated at runtime when drawing the chart. Amazing, isn't it?

If you have questions, please do not hesitate to ask us. And don't forget to check the 225 example projects for our ChartDirector plugin and the gallery for a quick overview.

ChartDirector everywhere

You probably know that we have a Real Studio plugin with ChartDirector. Now if you look into Filemaker, you'd notice that charts there are made using ChartDirector, too.
Amazing, isn't it?

in two months: Filemaker Conference 2012 in Salzburg

Just two months left until the great conference takes off!

Your chance to meet over 100 filemaker developers from Europe. Also you can meet people from Filemaker, Inc and of course you can talk to me and learn about our plugin.

For more details, please check the website.

With the coupon code "mbsplugin", you get a 10 Euro discount on the conference ticket.

MBS FileMaker Plugin 2.8 for OS X/Windows - More than 1100 Functions In One Plugin

Nickenich, Germany - MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 2.8 for Mac OS X or Windows, the latest update to their product that is easily the most powerful plugin currently available for FileMaker Pro. As the leading database management solution for Windows, Mac, and the web, the FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 2.8 has been updated for Filemaker 12 and now includes 1100 different functions, and the versatile plugin has gained more than 100 new features:

With our new Audit functions you can log all changes on a database in a log table. This way you always know who edited what value in what table. And you can restore the old state if needed. On normal workflow the performance cost is not noticeable.

For Mac OS X 10.8 you can now send notifications to the new notification center. For example for reminders or to report status for background activity. With a runtime you can have your runtime launched when the notification was clicked. And if your solution is running, you can receive a script call when the notification was shown to your user.

New RemoteControl functions allow you to move the mouse programmatically and press the mouse buttons. Also you can press keys and on Windows enumerate all windows on the system. This functions can help you scripting other applications.

New file functions allow you to copy, move and rename files and folders. Of course you can also move files/folders to the trash. And using Files.List function you learn what files and folders exist in a given folder.

Read about all changes in detail in the release notes on our website. Please also take time to check our more than 100 example databases showing you the functionality of our plugin.

MonkeyBread Software Releases the MBS Real Studio plug-ins in version 12.3

NICKENICH, Germany (August 7th, 2012) -- Monkeybread Software releases version 12.3 of the MBS plug-in for Real Studio.

The MBS plug-in comprises a collection of several plug-in parts which extend the Real Studio development environment with 1,500 classes featuring over 42,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console.

Some of the highlights on the 12.3 update:

The new plugins offer features for Mac OS X 10.8. A new MountainLion plugin offer classes for GameKit, User Notifications and Sharing Services. Other plugin parts have been updated for new features: Address book, StoreKit and CoreLocation with the new CLGeoCoderMBS class. The plugins also include functions for retina displays and supporting bigger icons.

The new Twain plugin allows you to talk to scanner devices which support the Twain standard on Mac OS X and Windows.

With our updated ChartDirector plugin (using version 5.1 of ChartDirector library), we now have new classes for 3D scatter chart with grouping. And we can have dynamic layers on top of a chart which can be used for track cursors.

We rewrote our OCR plugin with tesseract 3 library. This way we can now support more languages and get better result with more detailed results.

There are also Windows specific additions like the new WindowsPreviewHandlerMBS class for showing previews of common file types. For recording video/audio with DirectShow you can now receive live picture data to process it. Overlay windows can now be always on the top on Windows.

Finally we updated DynaPDF to version and SQLAPI to version 4.0.1 and CURL to version 7.26.0 on Windows.

See release notes for a complete list of changes.

Filemaker Magazine

The Filemaker Magazine (in German) published a new issue today and it features an article from me about our MBS Filemaker plugin.

Included is an article from us about using our MBS Plugin to show file dialogs. First we show you how to select a file using the plugin and importing it. Than we show you how to select a folder for export and export all images in a table into the folder.
If you have questions, please do not hesitate to ask us.

Also if you have time to come to Austria in October, don't miss the Filemaker conference in Salzburg. 11th to 13th October 2012.

MBS Filemaker Plugin, version 2.8fc

New in this prerelease of the 2.8 plugins:
  • Added String.AppendTextFile function.
Download later today at

Our MBS Real Studio Tiff plugin

While Real Studio has built in features for loading and saving Tiff picture files, this plugin gives you much more features:

  • Read and Write Tiff Images
  • Supports multiple images in one tiff file
  • Read only header option.
  • Read and write metadata values like Version, Software, Make, DateTime or DocumentName.
  • Handle errors/warnings when reading/writing images.
  • Supports RGB, CMYK, Gray, Palette and B/W color spaces.
  • Read all colors spaces as RGB for display.
  • Read/write raw scanlines
  • Read preview from huge images
  • Read image from string and write image to string
  • Read/write ICC profile and XMP Metadata
On the right you see a damaged JPEG file which our plugin could read.

MBS Real Studio Plugins, version 12.3pr17

New in this prerelease of the 12.3 plugins:
  • Fixed bug in internal CGImage conversion which stretched images.
  • Added 1024 pixel support to IconFamilyMBS class.
  • Changed PNG Plugin on Linux links to local png library of linux installation. This avoids a crash on some linux systems.
  • Added WinUSBMBS.Available.
  • Changed WinUSBMBS class so that WinUSB.dll is loaded dynamically.
  • Updated CURLSMBS on Windows to offer IPv6.
  • Added CDNotInitialzedExceptionMBS class.
  • Removed CDMissingFunctionExceptionMBS class.
Download: Or ask us to be added to our shared Dropbox folder.

Real Studio Meeting next Friday near Stuttgart

There is another Real Studio meeting in Germany. This time near Stuttgart in Esslingen, Dornierstrasse 30. 18 to 22 o'clock.

We'll talk about Real World News and Manfred will show his app Mac-ProLi. I hope you have time for a visit!

More details on the website

3D Scatter Charts

Today I worked on the new examples for CDThreeDScatterChartMBS class from ChartDirector 5.1:

MBS Real Studio Plugins, version 12.3pr16

New in this prerelease of the 12.3 plugins:
  • Fixed memory leak in NSAppleScriptMBS.setValueDescriptorForProperty method.
  • Added more methods to SQLDatabaseMBS class.
  • Added variants of MoviePictureFramesMBS, MoviePictureMBS and PosterPictureMBS to movie class which take picture size parameter so they query pictures in the requested size.
  • Internal conversion from PicHandle to Picture now always converts to bitmap in order to avoid leak in Real Studio. see Feedback case 22002.
  • Improved GameKit classes.
  • Added NSLogMBS to write messages to on Mac OS X 10.8.
  • Added CDThreeDChartMBS, CDRanSeriesMBS, CDThreeDScatterGroupMBS and ThreeDScatterChartMBS classes.
  • Removed CDBaseChartMBS.LoadLibrary as now everything is static linked for ChartDirector plugin.
  • Updated ChartDirector to version 5.1.
Download: Or ask us to be added to our shared Dropbox folder.

MBS Filemaker Plugin, version 2.8pr10

New in this prerelease of the 2.8 plugins:
  • Added CURL.GetInputAsText function. (For Email with Attachments example)
  • Ported project to Xcode 4.4 on Mac OS X 10.8. We only had to update screen functions.
  • Changed Audit functions to take name of fields to ignore directly.
Download later today at

Introducing Audit Plugin Functions for Filemaker

Sometimes people want to know who edited which record when and what values changed. All this questions can be solved with an audit log and our plugins. The idea is simple: Whenever someone changes something, we write a records for those changes to the AuditLog. Later you can check the log or have a script restore the changes.

The MBS Filemaker Plugin 2.8 introduces a few new Audit functions.

To show you how it works, we add Audit Logging to one of the starter solutions, the Event Management database. First we go and create a new table named AuditLog. This table can be in a different database file if needed as long as the plugin can find a table with that name. But in all cases, we need you to have a layout for the AuditLog table. It's not required to be user visible, but the plugin needs to find it.

Next we create a couple of fields. Required for the plugin are FieldName, FieldHash, TableName, RecordID. So we can store which table and which field changed. RecordID is the unique ID of the record and FieldHash stores a hash value for the content of the field. Optionally you can add more fields: FieldValue, FieldOldValue, FieldType, UserName, IP, CurrentTimestamp, TimeStamp, CurrentTime, CurrentDate, Action, CurrentHostTimeStamp, PrivilegeSetName, AccountName, LayoutNumber, ApplicationVersion, FileName, HostApplicationVersion, HostName, HostIPAddress, LayoutName, PageNumber, LayoutTableName, TableID, FieldID and WindowName. In this example we added FieldValue and FieldOldValue, so we know the new and old values for the change. The action field stores what happened and FieldType can tell us what data type we have for the value.
You can later add more fields if you like. The plugin dynamically detects them and fills them with values. Like if you need to know the IP of the user, simply add a new IP field and all new log entries record the IP addresses.

Now we can check all the tables in the database. For each we create two fields. First AuditTimeStamp with the timestamp when record was last modified. And second the AuditState calculated field which calls our plugin. The fields do not need to have exact this names. But if you don't use the default names, you have to change them everywhere and inform the plugin.

Here you see the definition for the time stamp field. We check the checkbox to store here the record modification timestamp. Filemaker will update this field automatically every time the record changes.
We typically do not allow the user to edit the Audit fields.

We define the AuditState field. Simply a text field which is calculated. Also make sure the checkbox "Do not replace existing value of field (if any)" is unchecked.
Here we also declare that user should not edit the field.

In the calculation for the AuditState field, we call the plugin: MBS( "Audit.Changed"; AuditTimeStamp; "Contacts" ). As you see we call the Audit.Changed function and pass the time stamp field from above. Third parameter is the name of the table. Filemaker simply does not tell the plugin what name the current table has, so we need to pass it here. If the table contains fields which you don't want to be logged or you have given AuditState/AuditTimeStamp fields a different name, you should pass them here as additional parameters. So for example you can call MBS( "Audit.Changed"; AuditTimeStamp; "Contacts"; "myAuditState"; "myTimeStamp"; "internalField" ). This way the plugin will not log those three fields. Unstored calculations and global fields are never logged. With the function Audit.SetIgnoredFieldNames you can globally define which fields you want to ignore always.

When all tables have been prepared, you can use the database. As you see, the first time the plugin sees a record, it writes log entries with "Create" as action. Next time you touch the record, you see "Change" entries for all the changes you made.
You can later add more fields to be logged like UserName or WindowName.

With Audit.Delete function you can also log deletion of records. But that is a topic for another blog entry.

If you have questions, please do not hesitate to contact us.


Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008