Jump to content

Portals and relationships revisited


Recommended Posts

First, I appreciate any help I can get as this project has been evolving over two years and, as these kinds of projects to, has become more involved and complicated over that time. I've posted related questions, but exploring other parts of my project. As I'm not a programmer, but a sort of user nerd, my inquisitive mind wants to learn, but sometimes simple concepts elude me. Feedback, both on the specific goal at hand as well as the project overall is always appreciated.

Performers is one piece of a much larger project, but I'm trying to enhance the project and working on a piece at a time. 

BACKGROUND

I'm sharing the entire project layout to provide some insight into how the parts fit together. The application is a booking management tool for performers, consisting is several tables as shown:

image.png.baca3dce396c23391d55edbf88649588.png

Again my focus right now is the Performers table and how to use it in relation to the Gigs (and Gigs~Songs_Join) tables.

There is a Gigs layout which is the hub for performances by one or more Performers. On that layout is summary information about a gig and a portal which shows which songs were performed and in what order (Set & Slot fields). The portal also includes a Performer Name. The assumption at this point is that up to 4 performers will do a given gig. This might change in the future, and could impact the below goals.

Gigs~Songs_JOIN is a connecting table for Gigs, Performers, Songbook, Venues, Musicians, etc. Performers is a table of singers and includes fields for a serialized SingerID, name, area of speciality (Tenor, Baritone, etc.), etc., and additional fields for combinations of the same performers including: 

Multi: checkbox-indicates this record is more than one performer
PerformerName: calculated based on Multi: if NOT Multi, show performers Name, if Multi, show MultiName (below)
Type: value list-is this a duet, trio, quarter, all, etc.
MultiName: the description of this record (i.e., Duet-Clayton/Vicky)

Other summary fields include:

Total Gigs: count of gigs in which this person has performed
Total Songs: count of songs this person has performed
GigID: match field to Gigs~Songs_Join

image.png.2057a02d3275f5db79b451904aa577af.png

GOAL

I have two goals, one related to the other. First, if the Performer record is checked Multi, I want to "attach" or "associate" individual singer(s) to the record (i.e., show what people are "included" in the MultiName). For example, MultiName=Duet-Clayton/Vicky, I want to show that Clayton and Vicky (each in separate records) are part of Duet-Clayton/Vicky.

Second, ultimately on the Gigs layout, I want to show which Performer sang which song (currently works in the portal), but more importantly, show variable summary information (goal layout below) which changes for each Gig as to each Performer, how many songs they sang and the total amount of time they sang. The catch is, in the summary I don't want to show the Multi records, but instead increment individual singers. So, in the summary info with related portal records in the example below, rather than showing Clayton sang one song, Vicky sang one song and Duet:Clayton/Vicky sang one song, I want to show Clayton sang 2 songs and Vicky sang 2 songs. In summary info, Duet:Clayton/Vicky wouldn't appear. In other words, the summary would show how much time each person was singing.

image.png.3e5d2e22f9dcdbe1e1e0ab8692dab2ea.png

 In the summary block of the Gig's layout, each of the above sets is a one-row portal filtered by set. I want to have the SINGER1,2,3,4 replaced with the actual Performer's name, and each band/portal show summary info for the appropriate singer. 

Here is my relationship graph:

image.thumb.png.1e8356bf470a345f7adb1d76dcd94a27.png

 

Edited by Clayton King
typo
Link to post
Share on other sites

There are two parts to your question:

  1. How to organize the data;
  2. How to present it.

I will address mainly the first part.

IMHO, you should have a checkbox field in the GigSongs table, to allow you to assign multiple singers to a performance of a song. Accordingly, each singer should have a single entry in the Performers table. You can easily tell that a song is performed by a duo or a trio by counting the values in the checkbox fields (or the related records in the Performers table). If you like, you could have buttons for often-used combinations of performers, that would enter their IDs as a return-separated list into the checkbox field. But the idea of having separate records for these combinations is counter-productive to your goal of summarizing the performances of each individual, whether solo or as part of a combo, together.

As for the second part, all I can say is that it's not easy. Filemaker is not good at cross-tab reporting. And there is no way to have a dynamic numbers of columns. And you seem to be missing a table of Sets. There are several ways to work around these limitations, with various levels of complexity. For example, you could script the creation of the summary. Or you could use a web viewer for the display.

There is a relatively easy way to produce totals for each performer, without breaks for sets: add a global GigID field to the Performers table and populate it with the currently viewed gig's ID. Then count the related performances and sum the related durations and show the results in a portal to Performers. (Note that if the same song can be performed more than once, you need to have the durations on the GigSongs table and take them from there.)

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By ggt667
      For FileMaker hosted solution does anyone use $$VARIABLE for external data source? I'm able to make $$VARIABLE="file:filename" work, however $$VARIABLE="fmnet:/host/filename" does not.
      In my case this would be $$FM16S00CONTACT="fm16s00.domain.tld/contact" and $$FM18S00CONTACT="fm18s00.domain.tld/contact"
      This now works, however it's unclear to me what triggered this working. I have a startup script that sets the variables. I have configure the External Data Source with $$FM16S00CONTACT, and this works, however adding another data source does not work for now, I tried quitting FileMaker and relaunch.
    • By Clayton King
      Similar to a previous post but different.
      My portal contains records where a musician (MusicianID) may have multiple entries based on participation on a song (SongID). My goal is for the song count (circled) to show how many songs this musician has 'touched' regardless of the role or involvement. In order words, in this example, the song "For Good" appears twice because the musician has two records for this song in the portal - one for Cover Artist and one for Comp/Lyricist. However, the song "For Good" should only get counted once in the summary field.
      The song count field is a summary field =Count of SongID in the related table.
      I'm sure this is a fairly simple exercise, but I'm going in circles.

    • By ggt667
      Is there a way to query CWP using FMPXMLRESULT as payload to create new records in FileMaker? Goal is to be able to insert records from command line using curl from FMPXMLRESULT files to avoid a somewhat clunky query from FileMaker XML import.
      I tried the following:
      cd /tmp/ curl -X POST -kL -o /tmp/findany.fmpxmresult.xml "user:pass@127.0.0.1/fmi/xml/FMPXMLRESULT.xml?-db=PushTest&-lay=Table&-findany" curl -X POST -kL --data @findany.fmpxmlresult.xml "user:pass@127.0.0.1/fmi/xml/FMPXMLRESULT.xml?-db=PushTest&-lay=Table&-new" A new record is created, however the payload is ignored.
      Payload below FTR
      <?xml version="1.0" encoding="utf-8" standalone="no"?><!DOCTYPE FMPXMLRESULT PUBLIC "-//FMI//DTD FMPXMLRESULT//EN" "http://127.0.0.1/fmi/xml/FMPXMLRESULT.dtd"> <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> <ERRORCODE>0</ERRORCODE> <PRODUCT BUILD="03/16/20" NAME="FileMaker Web Publishing Engine" VERSION="18.0.4.428"></PRODUCT> <DATABASE DATEFORMAT="MM/dd/yyyy" LAYOUT="Table" NAME="PushTest" RECORDS="17" TIMEFORMAT="HH:mm:ss"></DATABASE> <METADATA> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="name" TYPE="TEXT"></FIELD> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="number" TYPE="NUMBER"></FIELD> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="date" TYPE="DATE"></FIELD> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="timestamp" TYPE="TIMESTAMP"></FIELD> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="time" TYPE="TIME"></FIELD> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="_global" TYPE="TEXT"></FIELD> </METADATA> <RESULTSET FOUND="1"> <ROW MODID="13" RECORDID="24"> <COL> <DATA>Sweet</DATA> </COL> <COL> <DATA>667</DATA> </COL> <COL> <DATA>06/05/2020</DATA> </COL> <COL> <DATA></DATA> </COL> <COL> <DATA>10:44:15</DATA> </COL> <COL> <DATA></DATA> </COL> </ROW> </RESULTSET> </FMPXMLRESULT> If I simply put the parameters after the "?" in the payload file it works, however INSERTing the actual FMPXMLRESULT would be desirable.
      curl -X POST -kL --data @/tmp/GETlike.txt "user:pass@127.0.0.1/fmi/xml/FMPXMLRESULT.xml" Where /tmp/Getlike.txt contains
      -dbnames as pr example returns expected list of database names.
    • By Msaeed
      Hi All,
      I would like to find solve my issue, as mentioned on the topic of how can find more than fields like serial No. or Code by IOS camera. please find below the script.
       
       
       
      thank in advance for any help or support  
    • By tomp
      I'm having a problem getting BE_SMTPsend to successfully send an email with an attachment.
      No problem sending without an attachment, but when I add an attachment, I get an error 2 (not sure exactly what that means, but without the attachment, no error)
      These are the argument strings with and without attachments:

      I have tried both relative and direct file paths for the variable $attachment. Examples are:


      Both of them return an error code of 2.
      Since the 'send' without an attachment works, all the values of the fields/variables other than $attachment must be valid.
      Can anyone offer a suggestion as to what might be going on and what I might try to resolve this?
       
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.