Let's review what happened in the year 2024. In total I visited seven of the thirteen FileMaker conferences this year. We run our own Xojo conference in Andernach. And we released six updates to our plugins for FileMaker and Xojo.
January
January started with the development of new 14.0 and 24.0 plugins, a lot of blog posts advertising for the conferences.
(more)
Ab 1. Januar 2025 könnte jeder empfange PDF Rechnung eine e-Rechnung im ZUGFeRD Format sein. Es steht ja nicht immer dabei und bei einer ZUGFeRD Rechnung sollte der XML Anteil ausgewertet oder wenigstens kontrolliert werden.
Jede Rechnung im Eingang sollte geprüft werden, u.a.
- Sind alle Angaben nach §14 UStG einhalten?
- Sind die Mengen korrekt?
- Sind die Beträge und folglich die Summen korrekt?
- Ist die Umsatzsteuer korrekt ausgewiesen?
- passt die Rechnung zum Angebot bzw. Bestellung?
(more)
Frohe Weihnachten und ein gutes neues Jahr!
Merry Christmas & Happy New Year
Joyeux Noël et Bonne Année
Buon Natale e Felice Anno Nuovo
Franziska, Sebastian, Michael, Monika & Christian Schmitz
![candy cane](/image/L_Zuckerstange.png) |
![Monkeybread Monkey as an elf](/image/Elf.png) |
![candy cane](/image/R_Zuckerstange.png) |
Day 24 - Merry Christmas with Apple Script
|
It's December 24th and it's time for the presents to be delivered. That's why we want to wish you a Merry Christmas in our application and we want to do this in a very special way, with Apple Script.
AppleScript is a scripting language developed by Apple that makes it possible to automate applications on macOS and simplify various tasks. Since its introduction in 1993, AppleScript has served as a bridge between the operating system and numerous programs to control them through scripts. The scripting language makes it possible to automate recurring processes, exchange data between applications or create complex workflows.
AppleScript is particularly useful when many recurring tasks have to be performed manually. An example of this would be editing and sorting files, extracting information or controlling external applications such as Safari, Finder or Microsoft Word.
The basic syntax of AppleScript is comparatively easy to learn.
With the MBS FileMaker Plugin you can also start Apple Scripts from FileMaker. Today I will show you how this works. I would like to take this opportunity to point out that this door is not a course on Apple Script syntax, but simply presents three different examples.
(more)
Today our monkey wants to make a list of the presents that need to be bought by Christmas Eve so that he can check off what is there and what still needs to be bought. Our monkey would like to document this in a PDF.
So first we have to create this list. Do you remember how we read out the wish lists on day 10?
We now need the list of things that our Giftee wants. This list contains the wishes as text, each separated by a line break. We now want to write these entries in a table. Each gift should have a data record and be able to be assigned to the gift without mistakes. To do this, we first create a new table Gifts, which has the fields Giftee and Gift. The Giftee table is linked to this table via its primary key and the Giftee Foreinkey in the Gifts table to enable it to be assigned to a Giftee. In our script, we first transfer the gift list for a person into a variable and ask how many entries this list has. We also note the PrimaryKey for the person and then open a window to our new table. We then go through each entry in our list in a loop and combine it with the primary key of the gift to form a record. Once we have added all the entries to our database, we close the window again.
Set Variable [ $Gifts ; Value: Giftee::Presents ]
Set Variable [ $Length ; Value: ValueCount ( $Gifts ) ]
Set Variable [ $Key ; Value: Giftee::PrimaryKey ]
New Window [ Style: Document ; Name: "Gifts" ;
Using layout: "Gifts" (Gifts) ]
Set Variable [ $i ; Value: 1 ]
Loop [ Flush: Always ]
Exit Loop If [ $i>$Length ]
New Record/Request
Set Field [ Gifts::Giftee ; $Key ]
Set Field [ Gifts::Gift ; GetValue ( $Gifts ; $i ) ]
Set Variable [ $i ; Value: $i+1 ]
End Loop
Close Window [ Name: "Gifts" ; Current file ]
The layout in which we would like to display our data looks like this:
(more)
Our monkey is worried that someone might log in with a coworker account who shouldn't actually have access, like Grumonky the grumpy ex-Christmas elf. Our monkey has come up with a solution. When opening the application, he wants to take a picture of who is sitting in front of the computer and save it in a table.
To record the photo, we use a separate table, which we call User. In this table we have the standard fields that are created directly with the table and also the container field Image in which the recorded image is to be found later. We create the list layout Layout User as shown in the picture:
(more)
![candy cane](/image/L_Zuckerstange.png) |
![Monkeybread Monkey as an elf](/image/Elf.png) |
![candy cane](/image/R_Zuckerstange.png) |
Day 21 - Continuity Camera and Vision
|
Yesterday we saw how we can scan a wish list and use text recognition for Windows. Today we would like to look at a way of scanning a document and recognizing the text for Apple users. To do this, we first use the Continuity Camera functions in combination with the iPhone for scanning and then recognize the text with Vision.
The ContinuityCamera functions allow you to capture an image or scan a page by controlling your iPhone from your Mac and having it perform the scan or image capture. The requirement for this is that the devices are logged into iCloud with the same Apple ID, are on the same network, Bluetooth is enabled, the mobile device is running iOS 12 (or newer) and the computer is a Mac with macOS Mojave (or newer).
(more)
In Door 17 we got to know the UserNotifications, which we display once every time the solution is opened. But our little monkey doesn't think that's enough, so he wants to be able to call it up more often. However, he doesn't want an additional button on the layout, but would like to start the script automatically with a key combination. The HotKey functions under Mac and Windows are available in the plugin for this purpose. We can use them to define hotkeys to start scripts or calculations.
With the HotKey.Register function, we can register a specific key combination by first entering the virtual key code of the key to watch in the parameters. This can be the function keys (F), for example. So that the keys cannot fire if only this key is pressed, as otherwise normal use would not be possible, we also enter so-called keyboard modifiers. These can be the additional keys command, shift, alpha, option, control, RightShift, RightOption and RightControl. We can also specify other optional parameters in this function. For example, we can specify whether a hotkey should be exclusively assignable for this solution, which would prohibit other applications that also want to register this combination, because this combination is already assigned and can only be used again when this hotkey is released. Then we can also define the script in the parameters that is to be started when this combination is pressed. To do this, we specify the name of the database in which the script is located and the script name.
(more)
![](/image/fmplugin19.png)
New in this prerelease of version 14.6 of the
MBS FileMaker Plugin:
- Updated DynaPDF to version 4.0.96.273.
- Added MinDataInterval, MaxDataInterval, DataRate, MinDataRate, MaxDataRate and isOpen as property names for Phidget.GetProperty function.
- Added DataRate as property name for Phidget.SetProperty function.
- Added DynaPDF.DeleteOutputIntent function.
- Increased the column width for script IDs so you see more digits.
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
Since macOS 15.2 we can use Image Playground in our applications. The users love to generate an image with Apple Intelligence. Whether you need a cool image to add to a social post, a placeholder image for some operation, the AI can just generate something based on a few keywords.
Our ImagePlayground functions add this functionality to FileMaker. You create the image playground, configure it with maybe a few concept phrases, a source image and then show it. We recommend to show it from a button somewhere in the user interface.
(more)
In door 16 we took care of the fact that we can enter appointments in our calendar, but what do we do if our monkey wants to share an appointment with someone, e.g. as an attachment for an appointment confirmation. We can also realize this by assembling an ics file that contains the data for an appointment. As with the business card that we embedded in the QR code, an ics file also has a specific form, where some data is required and some is optional. But let's take a look at the structure of such a file by exporting an existing appointment from the calendar and opening it in an editor. It is an event that takes place on 24th December 2024 from 17:00 to 23:30 and has the title Christmas Eve Dinner. It takes place in Home, has a further description and a link to a website. And this is what it looks like in the editor:
(more)
Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch.
A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.
We check out the XL functions in MBS FileMaker Plugin to export data from FileMaker to Excel files. With LibXL we can edit xls and xlsx files without having Microsoft Excel installed, do custom imports and exports by scripts.
(more)
![candy cane](/image/L_Zuckerstange.png) |
![Monkeybread Monkey as an elf](/image/Elf.png) |
![candy cane](/image/R_Zuckerstange.png) |
Day 17 - User Notifications
|
Advent is running faster and faster and there are not many days left until Christmas. We want our monkey to keep an eye on the time and so we always want to receive a user notification when FileMaker is opened showing how many days are left until Christmas.
I will now show you how this works with our user notifications under Windows and Mac.
First we have to determine the number of days left until Christmas. We always start from the current year, so if it is December 30th we want a negative number to come out. First we get the current date in a variable. Then we determine the date of December 25th in the current year by taking the year from the current date. Internally, a date value is seen as a number of days since a specified day. For this reason, we get the exact number of days by subtracting the current date from the Christmas date.
(more)
![](/image/fmplugin19.png)
New in this prerelease of version 14.6 of the
MBS FileMaker Plugin:
- Updated to Xcode 16.2.
- Added Process.LoadFramework function.
- Fixed a problem with CGImageSource.SetProperty function not passing floating point numbers in automatic mode.
- Deprecated Calendar functions. Please move to Events functions.
- Updated DynaPDF to version 4.0.96.272.
- Added ImagePlayground functions.
- Added DynaPDF.ConvToFreeTextCallout function.
- When logging that you have a ton of objects, we now list the object type and script name.
- Fixed contextual menu additions to not show up in database design dialog, broken in pr3.
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
![candy cane](/image/L_Zuckerstange.png) |
![Monkeybread Monkey as an elf](/image/Elf.png) |
![candy cane](/image/R_Zuckerstange.png) |
Day 16 - Add Entries In Apple Calendar
|
Our monkey has lots of appointments and uses the Apple Calendar app to keep track of them. Now it would be nice if our monkey could also enter appointments directly from FileMaker into this calendar and we would like to implement this today.
The functions from the Calendar section are available for this purpose.
Since our layout is getting pretty full and we don't need to see the information from the last created appointment on the layout all the time, we use a button with a popover and position our fields on this popover. As the fields do not belong to a specific data record, we create these fields as global fields in the Data table. We need the following fields:
Appointment_Title |
Text |
Appointment_Start |
Timestamp |
Appointment_End |
Timestamp |
Appointment_All Day |
Text |
Appointment_URL |
Text |
Appointment_Location |
Text |
Appointment_Notes |
Text |
We can fill these fields with information later when we create an appointment. The appointment should then be transferred to the calendar app by clicking on a button.
Behind this button is the script that I would now like to introduce to you.
(more)
Today we want to create QR codes that contain the contact details of one of our giftee. If we scan this contact with our cell phone, it can be transferred directly to the phone's address book. To do this, we first have to write a so-called vcf file. The ending vcf stands for Virtual Contact File. We can see how such a file is structured if we export a contact from the Apple calendar and open it in a text editor. It may look like this:
BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//macOS 13.4.1//EN
N:Mustermann;Max;;;
FN:Max Mustermann
ORG:Mustermann AG;
EMAIL;type=INTERNET;type=WORK;type=pref:xyz@abc.de
TEL;type=CELL;type=VOICE;type=pref:012346789
TEL;type=IPHONE;type=CELL;type=VOICE:1011121314
TEL;type=HOME;type=FAX:15161718
ADR;type=HOME;type=pref:;;Musterstraße 3;Musterstadt;;1234;Germany
NOTE:Conference
item1.URL;type=pref:www.xyz.com
item1.X-ABLabel:_$!<HomePage>!$_
BDAY:2000-04-01
END:VCARD
We have different key and value pairs here that are separated from each other with a colon.
(more)
When rebuilding the weather station, you have probably already seen that you can get the data not only as JSON, but also as XML.
XML stands for eXtensible Markup Language and is a markup language that was developed to store and transport data in a structured and easily readable form. It was standardized by the World Wide Web Consortium (W3C) and first published in 1998. Similar to JSON, XML is often used to exchange data between interfaces. Like JSON, XML is also structured in layers, but the way it is written is more reminiscent of HTML. This is because in XML we also work with tags.
(more)
![candy cane](/image/L_Zuckerstange.png) |
![Monkeybread Monkey as an elf](/image/Elf.png) |
![candy cane](/image/R_Zuckerstange.png) |
Day 13 - Share Files With Apple Dialog |
As today is Friday the 13th and we don't want to push our luck too far, we're only adding one little thing today, but it's very effective. Because under Mac we can also use the typical sharing dialog in FileMaker.
Today we want to add this option for the files in the portal. To do this, we create an additional button in the portal. Then we call the following script step with it:
Set Variable [ $r ; Value: MBS( "SharingService.ShareItems"; ""; Files::File ) ]
This function shows us the dialog. In the first parameter, we can specify which service is to be used for sharing.
com.apple.messages.ShareExtension |
Messages |
com.apple.Notes.SharingExtension |
Notes |
com.apple.reminders.sharingextension |
Reminders |
com.apple.share.AirDrop.send |
AirDrop |
com.apple.share.Mail.compose |
Mail |
com.apple.share.System.add-to-iphoto |
Add to Photos |
If you specify one of these service identifiers in the parameter, the file is shared via this single option. If you want to give the user the choice of which of the options they want to use, simply leave this parameter empty. We have also chosen this option.
(more)
![](/image/fmplugin19.png)
New in this prerelease of version 14.6 of the
MBS FileMaker Plugin:
- Added StoreKit.LastError function.
- Added StoreKit.SetRequestFailedTrigger function to set a script trigger for an error.
- Changed Script ID column for script workspace to be wider and allow more digits to show.
- Updated curl library to version 8.11.1.
- Added UTF-8 validation checks to WordFile functions to avoid creating invalid word files with invalid text.
- Fixed an insufficient escaping for JSON.SortWithEvaluate function, which sometimes caused an internal error and prevented sorting.
- Added our field picker extension to another field picker dialog in FileMaker, which you see when you duplicate a portal and reassign the fields. This dialog also now gets tooltips for fields.
- Added FileNames parameter for Plugin.LimitFunction function.
- Fixed a problem with font handling for XL functions.
- Changed custom function auto complete to not add bracket for function name if you are not at the end of the text.
- Added checkbox for custom functions autocomplete.
- Added SyntaxColoring.AutoCompleteCustomFunctions.GetEnabled and SyntaxColoring.AutoCompleteCustomFunctions.SetEnabled functions.
- Improved auto complete for custom functions to show MBS FileMaker Plugin names.
- Added Plugin.LibExpatVersion function.
- Updated expat library to version 2.6.4.
- Updated mongo-c-driver library to version 1.29.1.
- Updated ShowURL function for iOS to work again in newest iOS SDK version.
- Fixed an issue where custom function auto complete would show Get multiple times.
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
We have already put together an archive in one of the previous doors. We would now like to be able to send this archive by email with the click of a button. To do this, we create a button in the mail portal.
When the button is pressed, a dialog is displayed. In this dialog we then set our text and our subject. In addition, we would like to have three buttons here with which we can either Cancel, Send the mail without archive attachment or Send with archive.
To create the dialog we use the functions from the dialog area. With these functions we can freely design our dialog. We can add buttons and fields and even display an icon to give the dialog a nicer look.
(more)
Today we are already on day 11 of our advent calendar. Our little monkey would like to take a look at the region where the recipients live. The best way to do this is to take a look at the map. MBS has the MapView functions for Mac and iOS to display maps from Apple Maps.
To do this, we mark the position where we want to display our map with a rectangle. We name this rectangle Map. Now we want to create our map. We can either use the MapView.CreateWithSize function to place the map with a specific size at specific coordinates on the screen or we can use the MapView.CreateWithControl function and place our map on a control that we have previously placed on your layout. We want to place our map on our rectangle with the name Map. So we use the second option. In the function, we first specify the window in which we want to create this map. As we want to place the button in the same window in which we want to display the map and the window must be the frontmost one, we can enter a 0 for the window index, followed by the name of the control on which we want to place the map. Optionally, we can now enter x and y values by an amount that we would like to move the map in relation to the control. We don't want to do this, so we will leave it out.
Set Variable [ $$Mapview ; Value: MBS("MapView.CreateWithControl"; 0; "Map") ]
Now that we have a map, we want to display the customer's address on the map. To do this, we use the MapView.ShowAddress function to set the focus of our map on the address. In this function, we first enter our Mapview reference and then our address, which we have put together from the street, city, state and country, separated by commas. But we don't just want to display the address, we also want to mark it with a picture of our monkey. We already have this image in the global variable $$Overlay_Image. To mark the point of the address on the map, we use the function MapView.AddPoint. We pass this function a JSON with the information about this point. We have already seen how a JSON is structured on day 8.
Now we create new information in an empty object with the functions JSON.AddStringToObject and JSON.AddNumberToObject. In these two functions, we first specify the JSON object to which we want to add the information and then the key and the value. In our case, we want to specify the address, the title of the annotation, the image of the annotation and the size of this image in the JSON. For our title, we take the first and last name. The title is displayed next to the icon when we move the mouse over it. The part of the script then looks like this:
(more)
As you may know we have a feature where you can add new contextual menu commands to the Script Workspace with our SyntaxColoring.AddContextMenuCommand function. The custom commands can edit script lines, paste some template code or do whatever you like. Read more here Goodies 33: Custom context menu commands and Adding ChatGPT to the ScriptWorkspace context menu
For the next MBS FileMaker Plugin version 14.6 we add the possibility to do the same for the contextual menus in Layout and Browse mode for FileMaker. Just call SyntaxColoring.AddContextMenuCommand with the new flags 16 for browse mode and 32 for layout mode. The plugin will show your custom commands and run whatever you pass as expression if the user selects them. And as usual we store them in the preferences file, so they presist.
(more)
![](/images/mbslogo200.jpg)
The year 2024 will end in less than three weeks. Do you need some more licenses?
- You can order licenses for 2025 or later and have invoice, delivery and payment done in 2024.
This way you secure the current pricing and the possibility to keep upgradeability for older licenses.
- And of course you can order updates for several years in advance for all your MBS products.
- As all our Xojo and DynaPDF plugin licenses are per developer, you should check if you got a new developer in your team this year and adjust licenses to match team size.
- For MBS FileMaker Plugin please check if you have enough license for the number of seats or servers you have in use.
If you upgrade to unlimited seats or servers, the plugin won't need to check the usage counts.
- For LibXL you can check if you like to upgrade from individual developer licenses to the Enterprise level. We can assist and may apply a special upgrade price.
Especially if you run on a budget and you want to spend some money in the old year, you can buy updates for several years in advance.
If you need help to decide what Xojo, FileMaker or plugin license you need, we may be able to assist you.
![](/image/fmplugin19.png)
New in this prerelease of version 14.6 of the
MBS FileMaker Plugin:
- Improved stack printing for Windows to help debugging issues.
- Updated SQLite to version 3.47.2.
- Improved SyntaxColoring.AddContextMenuCommand function to allow them to show in browse and layout mode.
- Fixed crash in DuckDB client for SQL functions.
- Added a sort feature to the plugin for the Show Window list.
- Added Archive.IsOpen function.
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
If you have a lot of databases in FileMaker and not all windows are visible, you are certainly a power user with a huge database project. And whenever you go to the window menu to show a window, you have to scan the list to find the one you like. To make live easier, the MBS Plugin now sorts this starting with 14.6pr3 later this week.
As you see we just sort the menu entries in place if the plugin is installed. Enjoy!
Available for macOS only in MBS Plugin 14.6pr3 and later.
Our monkey likes to have things together in a compact form.
For this reason, it also likes archives and would like to have
the option of creating an archive from the children's information and the individual files in the portal.
We want to implement this now.
(more)
![candy cane](/image/L_Zuckerstange.png) |
![Monkeybread Monkey as an elf](/image/Elf.png) |
![candy cane](/image/R_Zuckerstange.png) |
Day 8 - Weather data with JSON |
Today is day 8 of our advent calendar and winter is getting a bit chilly for our monkey. To avoid any surprises at Christmas, he wants to be able to call up the current temperature and weather conditions for each customer in FileMaker.
We would like to retrieve the weather data from a weather database. The weather data can be found on the website openweathermap.org. A few years ago we already made a video about how we implement this with FileMaker nativ functions. Today I would like to show you how this works with the JSON functions of MBS. These have the advantage that they can work very quickly, even with large amounts of data.
(more)
Many customers in Germany are currently interested in the topic of electronic invoices. With the MBS FileMaker Plugin and the DynaPDF functions, we can help you to implement this in FileMaker solutions.
ZUGFeRD
If you are looking into the topic of e-invoicing, then you should read on the website of the Forum elektronische Rechnung Deutschland what ZUGFeRD, what XRechnung and what Factur-XX is.
Then download the current standard: ZUGFeRD 2.3.2. In the download you will find the specification for ZUGFeRD (and Factur-X). There are also various code lists, schema files and many sample invoices.
(more)
![candy cane](/image/L_Zuckerstange.png) |
![Monkeybread Monkey as an elf](/image/Elf.png) |
![candy cane](/image/R_Zuckerstange.png) |
Door 7 - Open Files With Roundabout Route Via Temporary Files |
Welcome to day 7 of our advent calendar. Today we would like to add a function to our document portal from day 3. So far we can add documents to this portal via drag and drop, what we are missing now is the possibility to open them from FileMaker.
To do this, we use the MBS function Files.LaunchFile. We can pass a path to this function and the file or folder located at this path is then launched with the standard program provided for this purpose.
But we realize now that we have a container value and no path, how do we do this now? You could perhaps come up with the idea of writing the path to a field when reading it in. This procedure becomes problematic, if we move the original file to a new location and the path is no longer correct. So we have to take a different way. We save the file in the temporary folder and display it from there.
To do this, we first create the path where we want to save the file. We determine the temporary folder with the Folders.UserTemporary function. In the Folders area, we also have further functions for other special folders such as Desktop, Applications or Documents.
Once we have the path to this folder, we still need to append the file name with the correct file extension. The file name is made up of the primary key and the file name. The file name already contains the file extension. We now put together this determined file name with the Path.AddPathComponent function, specifying our temporary path in the parameters.
(more)
![candy cane](/image/L_Zuckerstange.png) |
![Monkeybread Monkey as an elf](/image/Elf.png) |
![candy cane](/image/R_Zuckerstange.png) |
Door 6 - Sending Out Wishlist Forms |
Today it is time for us to take care of the wish lists of the giftees. We want to prepare a form that we send by e-mail to the giftees, who fill out this form. In a later door we can then read this information from our returned document.
To do this, we first create the template we want to send. To do this, we first need a simple PDF file on which we can position our fields. We have the option of either building this form with DynaPDF, or we can use a pre-designed PDF in which we create fields. I chose this method now. The document was created with Pages and then output as a PDF via the print settings. We want to write several labels in this file. The labels are not only important for the labeling, so that the customer knows which data is to be entered there, but also for positioning the form fields. We want to position these behind the labels.
Now we have everything we need to create our template.
Since we are working with DynaPDF, we first have to initialize it again, as we already explained in door 4.
If [ MBS("DynaPDF.IsInitialized")=0 ]
Perform Script [ Specified: From list ; "InitDynaPDF" ; Parameter: ]
End If
(more)
![](/image/fmplugin19.png)
New in this prerelease of version 14.6 of the
MBS FileMaker Plugin:
- Removed the dependency on VCRUNTIME140_1.DLL. Appeared back in pr1.
- Updated DynaPDF to version 4.0.95.269.
- Added DynaPDF.GetLastTextPosXAbs and DynaPDF.GetLastTextPosYAbs functions.
- Improved XML.SetPathValue to not create duplicate nodes when finding them using namespaces.
- Tuned formatting of calculations to break behind and/or for long lines.
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
Today is day 5 of our calendar and our monkey has a few calls to make on his iPhone. He just doesn't want to keep typing in the number and searching for the customer. It would be much easier if he could simply save the specific contacts in Apple Contacts with the touch of a button. That's no problem, because as a Mac user you can read and write data in Apple Contacts. We use our Contacts functions for this.
But before we can start, we first need to be able to assign phone numbers and email addresses to our contacts. Until now, this was very complicated because we had to leave the giftee layout and enter the data in the respective layouts of the tables. We would now like to change this. To do this, we go to our relationship diagram and double-click on the equal sign between our phone and giftee relationship. Then the Edit Relationship dialog opens and we can make settings.
Here we can decide whether we can delete or create data records via this relationship. To do this, we can make a choice in the checkboxes at the bottom. We tick Allow creation of records in this table via this relationship and Delete related records in this table when a record is deleted in the other table for the Telphone table. This allows us to create records in our portal and if a gifte is deleted, the associated telephone numbers are also deleted. We now do the same for the mail addresses.
(more)
![candy cane](/image/L_Zuckerstange.png) |
![Monkeybread Monkey as an elf](/image/Elf.png) |
![candy cane](/image/R_Zuckerstange.png) |
Door 4 - Add GTC with DynaPDF |
Today I would like to show you a tool that you can use in FileMaker with the MBS FileMaker Plugin: DynaPDF. With DynaPDF you have the possibility to create, edit, merge, analyze or sign PDF documents in FileMaker. DynaPDF offers you many possibilities around the topic of PDF.
Our monkey also wants to use one of these functionalities today. Because today we want to build the possibility to attach user terms and conditions to a PDF document. The user terms and conditions always remain the same and can be attached to any outgoing document, e.g. an invoice. I will show you how this works today in this door.
First we have to initialize DynaPDF, which means we have to tell FileMaker where the DynaPDF function library is located. The files are automatically delivered with the download of the plugin and can be found in Examples > DynaPDF. The files have the extension dll and dylib. Which of the files you need depends on your operating system. If you want to use DynaPDF on a Mac, you will need the path to the dynapdf.dylib file. If we are working with Windows, it also depends on whether we are working with a 32 or 64 bit version. If you are using FileMaker 19 or higher, this decision is easy, as only a 64 system can be used here. In any case, the library has the extension .dll.
If you are not sure, just put both dll in the same folder and the plugin will grab the file it needs. The next piece of information we need is the DynaPDF license key. If you want to use DynaPDF in your solutions, you need an appropriate DynaPDF license and an MBS FileMaker Plugin license.
There are four different DynaPDF licenses. Which license you need depends mainly on which DynaPDF functions you use. If you need more information, please visit our website to find out which license is right for you. However, we do not necessarily need a license to try it out, but need to live with the watermark.
After we have determined the path to the libraries and the license key, if available, we can now call the DynaPDF.Initialize function. In the parameters we first enter the path to the library and then the license key. If we do not yet have a license key, we pass an empty string here.
(more)
This is the German version. See the English version here.
Viele Kunden interessieren sich im Moment für das Thema elektronische Rechnungen. Mit dem MBS Plugin und den DynaPDF Funktionen können wir Ihnen helfen dies in FileMaker Lösungen und Xojo Anwendungen zu implementieren.
ZUGFeRD
Wenn Sie in das Thema e-Rechnung rein schauen, dann sollten Sie auf der Webeite vom Forum elektronische Rechnung Deutschland einmal lesen, was ZUGFeRD, was XRechnung und was Factur-X ist.
Dann laden Sie sich den aktuellen Standard mal runter: ZUGFeRD 2.3.2. In dem Download finden Sie dann die Spezifikation für ZUGFeRD (und Factur-X). Dazu kommen noch diverse Code Listen, Schema Dateien und viele Musterrechnungen.
(more)
Welcome to our third door in this advent calendar.
Today we would like to start expanding our database.
We want to have the possibility to store additional documents for the giftees.
For this purpose, we will create a table with the name Files.
This table should store the name of the file, the type and the file itself as a container value.
In addition, we also need a field with the Foreigen Key here,
because we want to establish a relationship so that the files can also be assigned to the giftee.
Now we have to think about how we want to bring these files into our database.
We want to use drag and drop to do this.
So we build an area where we can drag the desired file and the type and name are then automatically
read out and the file and the remaining information are then stored in a record in the new table.
This data record should be related to the giftee that is currently displayed.
We can create drag and drop areas with the MBS FileMaker Plugin.
To avoid wasting useful space for a drag and drop field on our layout,
we would like to place this drag and drop field as an overlay,
i.e. a freely movable area on our layout that can be activated and
deactivated by clicking a button. To do this, we first need to create an overlay
and then assign drag and drop functionality to it.
So let's start with the overlay first.
To do this, we have the functions from the Overlay section.
First, we create a new overlay with the MBS function Overlay.Create.
This function returns a reference.
We also need to specify this reference in the other functions so that we know exactly
which overlay in our project the functions should be applied to.
Next, we want to determine the size and starting position of our overlay.
To do this, we use the Overlay.SetFrame function and,
as already mentioned, specify the overlay reference, the position with X and Y
coordinates and the height and width of the overlay in pixels.
So we want the top left corner of our overlay to be 30 pixels away from the right and top edge.
In addition, our overlay should be square and 200 x 200 pixels in size. Our function call looks like this:
Set Variable [ $r ; Value: MBS("Overlay.SetFrame"; $overlay; 30; 30; 200; 200) ]
(more)
![](/image/fmplugin19.png)
New in this prerelease of version 14.6 of the
MBS FileMaker Plugin:
Download at
monkeybreadsoftware.com/filemaker/files/Prerelease/
You can subscribe to our FileMaker mailing list to get notified for new pre-release and release versions.
Hello and welcome to this year's MBS FileMaker Advent calendar.
This year our logo monkey has turned into a Christmas elf and has to take care of the coordinated distribution of presents at Christmas.
What could be more obvious for our monkey than to get an overview with a FileMaker database.
Over the next 24 days, we'll show you how to pimp a simple database with the help of the MBS FileMaker Plugin.
All you need is to have fun with FileMaker.
We'll start by creating the database and work our way through step by step.
Even though the advent calendar is suitable for beginners,
advanced users and professionals can certainly use some of the ideas from the advent calendar for their own purposes.
So let's start with our first door and thus with the basis for this calendar.
Our FileMaker database.
Although we provide you with this database,
it can be useful to deal with the topic of how such a database can be set up.
Initially, we only have a few tables, which we will expand over the course of the Advent calendar.
Initially, our database consists of 3 tables.
The table with the name of the giftee is our main table in which we find the information about the giftee,
such as the last name, first name, date of birth and address.
In addition, each recipient has their own identification number that can be uniquely assigned to them.
This means that the number exists exactly once for each recipient.
In this example, we call it the Primary Key in the table.
(more)