« Seven months till XDC… | Home | News from the MBS Xoj… »

Connect to Claris FileMaker Server from Xojo via Data API

With MBS Xojo Plugins 20.4 we include a new MBS Xojo FMAPI Plugin part with a few new classes to connect to a Claris FileMaker Server:

The FMDataMBS class does a Data API connection while the FMAdminMBS class provides methods for the Admin API. Both have FMConnectionMBS as base class for the core functionality to connect.

Connect

Lets connect to a server via Data API using user name and password:

// connect Dim connection As New FMDataMBS connection.Password = "admin" connection.Username = "admin" connection.Server = "localhost" connection.Database = "test" Dim r As FMResponseMBS = connection.Login If r = Nil Then MsgBox "Failed?" Else MsgBox r.ErrorMessage return End If

To learn what databases are available, please use ListDatabases method in FMAdminMBS class.

Create Record

Next you may want to create a new record. For this we provide a dictionary with keys and values. The plugin passes data to the server in JSON and you may need to provide values as text or numbers as variants. If you need to upload a file to a container field, please use a second call with UploadToContainerField method later.

We specify the layout to use. This layout defines what fields are available to set. The request may include more parameters like a script to run. But here a simple create record example:

// now create a record connection.Layout = "Testing" Dim request As New FMRequestMBS Dim fieldData As New Dictionary fieldData.Value("First Name") = "Joe" fieldData.Value("Last Name") = "Smith" fieldData.Value("Title") = "Mr." fieldData.Value("Company") = "Test Ltd." fieldData.Value("Website") = "http://www.mbs-plugins.com/" request.fieldData = fieldData r = connection.CreateRecord(request) If r.ErrorCode = 0 Then // okay Else MsgBox r.ErrorMessage Return End If

Query Records

To query records, please specify the layout to use as that one defines which fields. With request object you can specify the limit and offset for the query to get paged results. Otherwise the default setting is to return first 50 records.

For a lot of operations, a layout must be specified. The layout defines which fields are available to set or query. Optionally you can specify a script to run before the query to gather the records. e.g. by doing a find operation in the script. You can also run a script to sort and specify in your request which portals to return.

// and query records on that layout request = New FMRequestMBS r = connection.GetRecords(request) If r.ErrorCode = 0 Then // okay Else MsgBox r.ErrorMessage Return End If Dim Result As Dictionary = r.Result Dim dataInfo As Dictionary = Result.Lookup("dataInfo", Nil) If dataInfo = Nil Then Break Return End If Dim returnedCount As Integer = dataInfo.Value("returnedCount") Title = Str(returnedCount)+" records." Dim Data() As Variant = result.Lookup("data", Nil) Dim fields() As String Dim List As Listbox // some listbox to fill Dim recordID As Integer For Each record As Dictionary In data recordID = record.Value("recordId") fieldData = record.Value("fieldData") Dim c As Integer = fieldData.Count If fields.Ubound < 0 Then // first time Dim keys() As Variant = fieldData.keys For Each key As String In keys fields.Append key Next // set listbox heading List.ColumnCount = c For i As Integer = 0 To c-1 List.Heading(i) = fields(i) Next End If List.AddRow "" For i As Integer = 0 To c-1 List.Cell(List.LastIndex, i) = fieldData.Value(fields(I)) Next Next

More

Please check our example projects for Data API and Admin API queries. You may write your own server monitoring application using the Admin API.

See also FileMaker 19 Data API Guide and Claris FileMaker 19 Admin API Guide.

For all queries and data transferred, FileMaker Server counts data going out and applies a 2 GB per user and per month limit. As a server has minimum 5 users, you have 120 GB/year or more available.

Please do not hesitate to contact us with your questions.

21 09 20 - 08:15