{"id":9258,"date":"2015-10-07T06:10:28","date_gmt":"2015-10-07T13:10:28","guid":{"rendered":"http:\/\/www.seedcode.com\/?p=9258"},"modified":"2023-08-08T16:33:01","modified_gmt":"2023-08-08T16:33:01","slug":"filemaker-selector-connector-basics","status":"publish","type":"post","link":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/","title":{"rendered":"FileMaker Selector Connector: The Basics"},"content":{"rendered":"<h2 class=\"p1\"><span class=\"s1\">Background<\/span><\/h2>\n<p class=\"p1\">This post builds on the\u00a0session I presented at\u00a0DevCon 2015:\u00a0<em>Data Modeling Beyond Anchor Buoy <\/em>which described the FileMaker Selector-Connector pattern for the relationship graph. At DevCon we also went through some sample files which are <a href=\"https:\/\/seedcode.com\/wp-content\/uploads\/2023\/08\/SCDemoFiles.zip\">available here<\/a>.\u00a0We\u2019ll reference those files in this article as well. (You can also think of this as a continuation of my the earlier post on Selector-Connector:\u00a0&#8220;<a href=\"http:\/\/www.seedcode.com\/filemaker-data-modeling-with-selector-connector\/\" target=\"_blank\" rel=\"noopener\">FileMaker Data Modeling with Selector Connector<\/a>&#8220;.)<\/p>\n<p class=\"p1\"><span class=\"s1\">DevCon 2015 was an exciting time for the Selector-Connector Model as <a href=\"https:\/\/www.geistinteractive.com\/2015\/07\/26\/geist-interactive-wins-award-at-filemaker-devcon-2015\/\" target=\"_blank\" rel=\"noopener\">Todd Geist<\/a> won the Excellence award for both developing and formalizing the idea. I was very fortunate to have the opportunity to collaborate with Todd as the idea was developing. This collaboration lead to the current model used in our\u00a0<a href=\"http:\/\/www.seedcode.com\/complete-filemaker-template\/\" target=\"_blank\" rel=\"noopener\">SeedCode Complete<\/a>\u00a0template, and was the basis of my DevCon presentation.<\/span><\/p>\n<h2 class=\"p1\"><span class=\"s1\">Why A New Model?<\/span><\/h2>\n<div class=\"lightbox\">\n<figure id=\"attachment_9263\" aria-describedby=\"caption-attachment-9263\" style=\"width: 273px\" class=\"wp-caption alignright\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/10\/1.png\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-9263 size-medium\" src=\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/1-273x300.png\" alt=\"A FileMaker Pro chooser or picker\" width=\"273\" height=\"300\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/1-273x300.png 273w, https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/1.png 480w\" sizes=\"(max-width: 273px) 100vw, 273px\" \/><\/a><figcaption id=\"caption-attachment-9263\" class=\"wp-caption-text\">Contact Chooser (aka picker, selector)<\/figcaption><\/figure>\n<\/div>\n<p class=\"p3\"><span class=\"s1\">On of the things I wanted to stress in my DevCon session is\u00a0that there was never an intention to come up with something <em>new<\/em> in the abstract sense of a &#8220;model&#8221;. Todd and I both had a specific problem we wanted to solve:\u00a0we wanted to build portable choosers (aka pickers and selectors), e.g. a chooser that we could easily move from layout to layout. Not only would this make our development go\u00a0considerably faster, but in the case of SeedCode Complete, our customers would be able to take advantage of this portability as they customized and expanded the template. <\/span><\/p>\n<p class=\"p3\"><span class=\"s1\">As it turns out, there are other benefits to the Selector-Connector that emerged, but focussing on the chooser is arguably best way to understand Selector-Connector.<\/span><\/p>\n<h2 class=\"p1\"><span class=\"s1\">An Anchor Buoy Chooser<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">As I mentioned above, there was no intention to introduce a new data model or replace Anchor Buoy (and indeed, Selector-Connector <em>doesn&#8217;t<\/em> replace it). Anchor Buoy (AB) has served me well since the graph was introduced in FileMaker 7, and even if I was going to bend some of the AB rules, I would do so as little as possible. With this in mind, I started developing the newest version of\u00a0SeedCode Complete using the AB model and intended to\u00a0take it as far as I could. This also had some additional practical appeal as it could lead to a clear process for \u201cretrofitting\u201d an existing AB solution with any\u00a0new benefits that emerged. What I started with very much resembled the demo file <b>aABChooser.FMP12 <\/b>(from &#8220;Selector-Connector Example Files&#8221; <a href=\"http:\/\/www.seedcode.com\/downloads\/\" target=\"_blank\" rel=\"noopener\">here<\/a>); a basic file with Contacts, Projects and Invoices. Projects would allow for multiple project contacts, so I would build the chooser there first.<\/span><!--more--><\/p>\n<div class=\"lightbox\">\n<figure id=\"attachment_9269\" aria-describedby=\"caption-attachment-9269\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/10\/3.png\"><img decoding=\"async\" class=\"wp-image-9269 size-medium\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/10\/3-300x241.png\" alt=\"A chooser done in the Anchor-Buoy model\" width=\"300\" height=\"241\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/3-300x241.png 300w, https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/3.png 638w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-9269\" class=\"wp-caption-text\">Chooser In The Anchor Buoy Model<\/figcaption><\/figure>\n<\/div>\n<p class=\"p1\"><span class=\"s1\">If we look at the graph for <b>aABChooser.FMP12<\/b>, we see that it is still following the AB model. The table occurrences (TOs)\u00a0needed for the chooser have been added as buoys to the Projects anchor. If we wanted to maintain a strict Anchor Buoy model, then adding a chooser to Invoices would require <em>adding duplicate versions of these TOs<\/em> to Invoices as buoys. This is, in fact, the model that the previous version of SeedCode Complete followed, and although certainly better than starting each chooser from scratch, it still required a fair amount of additional development effort for each chooser. This was as far as we could take the AB model in our goal for a truly portable chooser.<\/span><\/p>\n<h2 class=\"p1\"><span class=\"s1\">A Universal Context Chooser<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">In the file <b>bUCChooser.FMP12,<\/b> we\u2019ve moved our chooser TOs from being Project buoys to a new position at the top of the graph. We\u2019ve created a new table called UC; this is for <b>Universal Context<\/b> which was the working term both Todd and I were using for &#8220;Selector-Connector&#8221; at the time. This new table would consist of one record and a few global fields for managing the chooser. All the anchors would now be related to this new table via an x-join relationship with globals on both sides. I knew I wanted to use globals,\u00a0so I didn&#8217;t\u00a0trip any downloading of indexes, and only the x-join relationship supports globals on both sides.<\/span><\/p>\n<div class=\"lightbox\">\n<figure id=\"attachment_9271\" aria-describedby=\"caption-attachment-9271\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/10\/4.png\"><img decoding=\"async\" class=\"wp-image-9271 size-medium\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/10\/4-300x237.png\" alt=\"The FileMaker Selector-Connector Relationship Graph\" width=\"300\" height=\"237\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/4-300x237.png 300w, https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/4-768x607.png 768w, https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/4.png 837w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-9271\" class=\"wp-caption-text\">A New Graph Model Taking Shape<\/figcaption><\/figure>\n<\/div>\n<p class=\"p1\"><span class=\"s1\">Happily, it\u2019s very easy to make this change from <b>aABChooser.FMP12<\/b> to <b>bUCChooser.FMP12<\/b>. Even though we broke the relationship between Projects and the ContactChooser TO, the script references to the TO itself do not change. When we reconnected ContactChooser to Projects via the UC table, all references to ContactChooser from the Projects context remained intact. Only the global fields that were moved from Projects to the UC table needed to be \u201cre-referenced\u201d in our scripts and calculations.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">One of the benefits to this new model that was not planned, but soon became apparent, was that the global fields that now live in UC would have usually needed to live in the anchor tables in an AB model. By introducing the UC table, not only were we working towards a shared chooser, but we were also able to take a whole class of global utility fields out of the anchor tables and consolidate them in the new table.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">We now had a working chooser for Projects that should be easy to use from any additional anchor layout;\u00a0we would just need to add an x-join relationship from the new anchor to the UC TO. However, before we proceeded to hook up our other anchors we wanted to get our chooser fully functional. This meant not only being able to <em>select<\/em> an existing Contact, but to use the chooser to <em>create<\/em> a new Contact from within the chooser.<\/span><\/p>\n<h2 class=\"p1\"><span class=\"s1\">&#8220;Pop-Back&#8221; and The Selector<\/span><\/h2>\n<div class=\"lightbox\">\n<figure id=\"attachment_9276\" aria-describedby=\"caption-attachment-9276\" style=\"width: 273px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/10\/2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-9276 size-medium\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/10\/2-273x300.png\" alt=\"A FileMaker chooser allowing the creation of new contacts\" width=\"273\" height=\"300\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/2-273x300.png 273w, https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/2.png 480w\" sizes=\"(max-width: 273px) 100vw, 273px\" \/><\/a><figcaption id=\"caption-attachment-9276\" class=\"wp-caption-text\">The Chooser Also Needs To Create New Contacts<\/figcaption><\/figure>\n<\/div>\n<p class=\"p1\"><span class=\"s1\">Adding the ability to create a new Contact from the chooser turned out to be remarkably easy, and this was really the point where I realized we were onto something cool. <\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">As we all know, FileMaker allows the ability to create new records through a\u00a0relationship. And any fields that are set up as match keys in the relationship force the newly created child record to inherit the values for these fields from the parent, thus making sure the relationship remains valid after the new record is created. However, less well known is what happens if the parent value for one of the match fields is empty. If the child field is set to auto-enter a value, then that value will be \u201cpopped back\u201d to the parent record. Presumably this is FileMaker\u2019s attempt to maintain the relationship after the creation of the child record. \u201cPop-Back\u201d is the term I learned for this behavior. Our friend <a href=\"http:\/\/filemakerhacks.com\/\" target=\"_blank\" rel=\"noopener\">Kevin Frank<\/a> refers to it as the \u201cMagic Key\u201d which I&#8217;ve also always liked.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">For our creating new Contacts\u00a0in our chooser, this behavior works perfectly. If we want to create a new record, we just need to add a new global field to the UC table and then add a creation relationship to Contacts with the global field and the Contact\u2019s primary key (shown below). We then need to make sure our global is empty and expose the fields from\u00a0this new relationship in our selector (editable fields like FirstName, LastName, etc.). As soon as the user types into these fields, the new record is created and the primary key value is popped back to the global.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Although there\u2019s no editing involved with our chooser, it was clear that this relationship could also be used for editing an existing record from any context as well. Rather than clearing the global field, we&#8217;d\u00a0<\/span><span class=\"s1\">set it to the primary key of an existing record we wanted to edit. This is where the language and term for the \u201cSelector\u201d started to take form, and Todd deserves the credit for clarifying the naming pattern. The central table with the global fields becomes the Selector. This name fits well because it\u2019s the globals in this table occurrence that you manipulate to form a relationship with the \u201cSelected\u201d record. The table occurrences to the right become the Selected, i.e. SelectedContact. With this naming convention, the workflow becomes very clear:<\/span><\/p>\n<ul>\n<li class=\"p1\"><span class=\"s1\">Set the global in the Selector to edit a specific record<\/span><\/li>\n<li class=\"p1\"><span class=\"s1\">Clear the global in the Selector to create a new record<\/span><\/li>\n<li class=\"p1\"><span class=\"s1\">The \u201cPop-Back\u201d behavior means no additional steps are required for record creation<\/span><\/li>\n<\/ul>\n<div class=\"lightbox\">\n<figure id=\"attachment_2618\" aria-describedby=\"caption-attachment-2618\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/10\/5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-9278\" src=\"http:\/\/www.seedcode.com\/wp-content\/uploads\/2015\/10\/5-300x86.png\" alt=\"5\" width=\"300\" height=\"86\" srcset=\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/5-300x86.png 300w, https:\/\/seedcode.com\/wp-content\/uploads\/2015\/10\/5.png 617w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-2618\" class=\"wp-caption-text\">Selector Model Taking Shape<\/figcaption><\/figure>\n<\/div>\n<p class=\"p1\"><span class=\"s1\">Applying these changes, we now have our file <b>cSelector.FMP12 <\/b>which allows us to search and add multiple Contacts to our Project records using the Selector Model. We should now be able to easily add our Contact chooser to Invoices simply by \u201chooking-up\u201d our Invoice buoy to the Selector, but we have one more issue to solve first.<\/span><\/p>\n<h2 class=\"p1\"><span class=\"s1\">Finish In Context<\/span><\/h2>\n<p class=\"p1\"><span class=\"s1\">Although we\u2019ve gone a good ways to make our chooser universal, we still ultimately need to write our chosen record somewhere and in a specific context. Using indirection is one possibility. We could detect our context and then write to the appropriate key field, something like:<\/span><\/p>\n<pre class=\"p1\">Set FieldBy Name [ Get(LayoutTableName) &amp; \u201c::id_Contact\u201d ; $sc_SelectedContactID ]<\/pre>\n<p class=\"p1\"><span class=\"s1\">However, I\u2019ve found these types of script steps somewhat fragile and difficult to support. We also have a different process in the case of Projects where we need to create a join record, so my single script step would invariably need some branching in addition to the indirection, and I think that\u2019s too much complexity. For SeedCode Complete, I opted to use separate scripts for each context and then\u00a0attach one of these unique scripts to the &#8220;save&#8221; buttons in that context&#8217;s chooser. This way, you could copy and paste the chooser from one context to another, <em>and just change the save buttons.<\/em> This is very much like what\u2019s set up in the <b>cSelector.FMP12<\/b> file. We have specific scripts for Saving the contact to both the Projects and the Invoices. All the other chooser scripts are universal.<\/span><\/p>\n<p class=\"p1\">There are other ways to do this final step of specifying where to write\u00a0the newly chosen record:<\/p>\n<h4 class=\"p1\" style=\"padding-left: 30px;\"><span class=\"s1\">The Hook<\/span><\/h4>\n<p class=\"p1\" style=\"padding-left: 30px;\"><span class=\"s1\">Todd uses an interesting method where he adds an invisible button to the chooser and then in his chooser&#8217;s scripts he adds\u00a0a step to go to this\u00a0invisible button. The idea is to add the context specific script as an on-enter script trigger to this object. Todd calls these <a href=\"https:\/\/www.geistinteractive.com\/2014\/09\/20\/virtual-filemaker-script-triggers\/\" target=\"_blank\" rel=\"noopener\">Virtual Script Triggers<\/a>. This way, the scripts that work with the chooser never change, and you delegate\u00a0the context specific logic to triggers. It doesn\u2019t really save any lines of code, but it\u2019s a very good way of separating the logic.<\/span><\/p>\n<h4 class=\"p1\" style=\"padding-left: 30px;\"><span class=\"s1\">The Natural Hook<\/span><\/h4>\n<p class=\"p1\" style=\"padding-left: 30px;\"><span class=\"s1\">One of the things I accidentally stumbled across was some &#8220;natural&#8221;\u00a0script-hook behavior. One of FileMaker&#8217;s behaviors is that when exiting a pop-over, the pop-over button always becomes selected. This behavior used to annoy me and I found myself always adding Go To Object steps, or changing the selected styling of the pop-over button so that you wouldn\u2019t notice it. However, I realized that since\u00a0I could count on it to act this way,\u00a0the script trigger could be added to the pop-over button itself. I really like this because you don\u2019t need to name the object with the hook attached to it. This means you don\u2019t need the Go To Object step and (more importantly) you don\u2019t have to worry about your object names breaking and morphing into something like \u201cChooserHook 2 Copy 3 Copy 2\u201d.<span class=\"Apple-converted-space\">\u00a0 <\/span>You can see the natural hook in action in the file <b>dSelectorHook.FMP12<\/b>.\u00a0<\/span><\/p>\n<h2 class=\"p1\">FileMaker Select0r Connector: Does It Work?<\/h2>\n<p class=\"p1\"><span class=\"s1\">Now that we\u2019ve established our method for writing our chooser results back to context, there\u2019s nothing left to do but the final steps to add the chooser to invoices. For the final file <b>eSelectorFinal.FMP12,<\/b> we just need to add our cross join relationship between Invoices and the Selector. We<span class=\"Apple-converted-space\">\u00a0 <\/span>then copy and paste the pop-over button that encloses the chooser from Projects to Invoices and re-style it to fit the new layout. Lastly we add the new hook to the pop-over button as an on-enter trigger. The script we&#8217;re calling here\u00a0is simpler than the one in\u00a0Projects since we\u2019re just writing back to the Invoice foreign key rather than creating a join record. Back to Browse\u2026and it works! Our chooser is now highly portable and we\u2019ve established a pattern for building new choosers for\u00a0different entities.<\/span><\/p>\n<p class=\"p1\">Enjoy!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Background This post builds on the\u00a0session I presented at\u00a0DevCon 2015:\u00a0Data Modeling Beyond Anchor Buoy which described the FileMaker Selector-Connector pattern for the relationship graph. At DevCon we also went through some sample files which are available here.\u00a0We\u2019ll reference those files in this article as well. (You can also think of this as a continuation of my the earlier post on Selector-Connector:\u00a0&#8220;FileMaker Data Modeling with Selector Connector&#8220;.) DevCon 2015 was an exciting time for the Selector-Connector Model as Todd Geist won the Excellence award for both developing and formalizing the idea. I was very fortunate to have the opportunity to collaborate with Todd as the idea was developing. This collaboration lead to the current model used in our\u00a0SeedCode Complete\u00a0template, and was the basis of my DevCon presentation. Why A New Model? On of the things I wanted to stress in my DevCon session is\u00a0that there was never an intention to come up with something new in the abstract sense of a &#8220;model&#8221;. Todd and I both had a specific problem we wanted to solve:\u00a0we wanted to build portable choosers (aka pickers and selectors), e.g. a chooser that we could easily move from layout to layout. Not only would this make our development go\u00a0considerably faster, but in the case of SeedCode Complete, our customers would be able to take advantage of this portability as they customized and expanded the template. As it turns out, there are other benefits to the Selector-Connector that emerged, but focussing on the chooser is arguably best way to understand Selector-Connector. An Anchor Buoy Chooser As I mentioned above, there was no intention to introduce a new data model or replace Anchor Buoy (and indeed, Selector-Connector doesn&#8217;t replace it). Anchor Buoy (AB) has served me well since the graph was introduced in FileMaker 7, and even if I was going to bend some of the AB rules, I would do so as little as possible. With this in mind, I started developing the newest version of\u00a0SeedCode Complete using the AB model and intended to\u00a0take it as far as I could. This also had some additional practical appeal as it could lead to a clear process for \u201cretrofitting\u201d an existing AB solution with any\u00a0new benefits that emerged. What I started with very much resembled the demo file aABChooser.FMP12 (from &#8220;Selector-Connector Example Files&#8221; here); a basic file with Contacts, Projects and Invoices. Projects would allow for multiple project contacts, so I would build the chooser there first.<\/p>\n","protected":false},"author":3,"featured_media":8574,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[32,30],"class_list":["post-9258","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-devcon-2015","tag-seedcode-complete"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FileMaker Selector Connector: The Basics - SeedCode<\/title>\n<meta name=\"description\" content=\"Example files and a thorough walkthrough from Jason Young&#039;s DevCon session on the FileMaker Selector Connector model. Dig in!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FileMaker Selector Connector: The Basics - SeedCode\" \/>\n<meta property=\"og:description\" content=\"Example files and a thorough walkthrough from Jason Young&#039;s DevCon session on the FileMaker Selector Connector model. Dig in!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/\" \/>\n<meta property=\"og:site_name\" content=\"SeedCode\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/seedcoder\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-07T13:10:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-08T16:33:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"109\" \/>\n\t<meta property=\"og:image:height\" content=\"110\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"jasonchryoung\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dayback\" \/>\n<meta name=\"twitter:site\" content=\"@dayback\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"jasonchryoung\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/\"},\"author\":{\"name\":\"jasonchryoung\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd\"},\"headline\":\"FileMaker Selector Connector: The Basics\",\"datePublished\":\"2015-10-07T13:10:28+00:00\",\"dateModified\":\"2023-08-08T16:33:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/\"},\"wordCount\":2084,\"commentCount\":20,\"publisher\":{\"@id\":\"https:\/\/seedcode.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\",\"keywords\":[\"DevCon 2015\",\"SeedCode Complete\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/\",\"url\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/\",\"name\":\"FileMaker Selector Connector: The Basics - SeedCode\",\"isPartOf\":{\"@id\":\"https:\/\/seedcode.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\",\"datePublished\":\"2015-10-07T13:10:28+00:00\",\"dateModified\":\"2023-08-08T16:33:01+00:00\",\"description\":\"Example files and a thorough walkthrough from Jason Young's DevCon session on the FileMaker Selector Connector model. Dig in!\",\"breadcrumb\":{\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#primaryimage\",\"url\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\",\"contentUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png\",\"width\":109,\"height\":110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/seedcode.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FileMaker Selector Connector: The Basics\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/seedcode.com\/#website\",\"url\":\"https:\/\/seedcode.com\/\",\"name\":\"SeedCode\",\"description\":\"Build the Software You&#039;ve Always Wanted\",\"publisher\":{\"@id\":\"https:\/\/seedcode.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/seedcode.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/seedcode.com\/#organization\",\"name\":\"SeedCode\",\"url\":\"https:\/\/seedcode.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png\",\"contentUrl\":\"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png\",\"width\":595,\"height\":189,\"caption\":\"SeedCode\"},\"image\":{\"@id\":\"https:\/\/seedcode.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/seedcoder\",\"https:\/\/x.com\/dayback\",\"https:\/\/www.linkedin.com\/company\/seedcode\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd\",\"name\":\"jasonchryoung\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/seedcode.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"caption\":\"jasonchryoung\"},\"url\":\"https:\/\/seedcode.com\/author\/jasonchryoung\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"FileMaker Selector Connector: The Basics - SeedCode","description":"Example files and a thorough walkthrough from Jason Young's DevCon session on the FileMaker Selector Connector model. Dig in!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/","og_locale":"en_US","og_type":"article","og_title":"FileMaker Selector Connector: The Basics - SeedCode","og_description":"Example files and a thorough walkthrough from Jason Young's DevCon session on the FileMaker Selector Connector model. Dig in!","og_url":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/","og_site_name":"SeedCode","article_publisher":"https:\/\/www.facebook.com\/seedcoder","article_published_time":"2015-10-07T13:10:28+00:00","article_modified_time":"2023-08-08T16:33:01+00:00","og_image":[{"width":109,"height":110,"url":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","type":"image\/png"}],"author":"jasonchryoung","twitter_card":"summary_large_image","twitter_creator":"@dayback","twitter_site":"@dayback","twitter_misc":{"Written by":"jasonchryoung","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#article","isPartOf":{"@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/"},"author":{"name":"jasonchryoung","@id":"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd"},"headline":"FileMaker Selector Connector: The Basics","datePublished":"2015-10-07T13:10:28+00:00","dateModified":"2023-08-08T16:33:01+00:00","mainEntityOfPage":{"@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/"},"wordCount":2084,"commentCount":20,"publisher":{"@id":"https:\/\/seedcode.com\/#organization"},"image":{"@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#primaryimage"},"thumbnailUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","keywords":["DevCon 2015","SeedCode Complete"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/","url":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/","name":"FileMaker Selector Connector: The Basics - SeedCode","isPartOf":{"@id":"https:\/\/seedcode.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#primaryimage"},"image":{"@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#primaryimage"},"thumbnailUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","datePublished":"2015-10-07T13:10:28+00:00","dateModified":"2023-08-08T16:33:01+00:00","description":"Example files and a thorough walkthrough from Jason Young's DevCon session on the FileMaker Selector Connector model. Dig in!","breadcrumb":{"@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/seedcode.com\/filemaker-selector-connector-basics\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#primaryimage","url":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","contentUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2015\/02\/ab1.png","width":109,"height":110},{"@type":"BreadcrumbList","@id":"https:\/\/seedcode.com\/filemaker-selector-connector-basics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/seedcode.com\/"},{"@type":"ListItem","position":2,"name":"FileMaker Selector Connector: The Basics"}]},{"@type":"WebSite","@id":"https:\/\/seedcode.com\/#website","url":"https:\/\/seedcode.com\/","name":"SeedCode","description":"Build the Software You&#039;ve Always Wanted","publisher":{"@id":"https:\/\/seedcode.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/seedcode.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/seedcode.com\/#organization","name":"SeedCode","url":"https:\/\/seedcode.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seedcode.com\/#\/schema\/logo\/image\/","url":"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png","contentUrl":"https:\/\/seedcode.com\/wp-content\/uploads\/2022\/12\/SeedCodeLogo.png","width":595,"height":189,"caption":"SeedCode"},"image":{"@id":"https:\/\/seedcode.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/seedcoder","https:\/\/x.com\/dayback","https:\/\/www.linkedin.com\/company\/seedcode\/"]},{"@type":"Person","@id":"https:\/\/seedcode.com\/#\/schema\/person\/21c8e63200786c642eb068377e428ebd","name":"jasonchryoung","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/seedcode.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","caption":"jasonchryoung"},"url":"https:\/\/seedcode.com\/author\/jasonchryoung\/"}]}},"_links":{"self":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/posts\/9258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/comments?post=9258"}],"version-history":[{"count":0,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/posts\/9258\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/media\/8574"}],"wp:attachment":[{"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/media?parent=9258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/categories?post=9258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seedcode.com\/wp-json\/wp\/v2\/tags?post=9258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}