Learn how to a build a cloud-first strategyRegister Now


FileMaker: Perform find on unrelated table/field

Posted on 2014-04-02
Medium Priority
Last Modified: 2014-04-04
Hi Experts,

I have a table containing global fields called GLOBAL_FIELDS with one field: G_SEARCH_SSN. I have a layout called SEARCH based on the GLOBAL_FIELDS table with that one field on it. This is the default layout opened with the file is opened.

I have another table called EMPLOYEES with its own layout.

Both tables are unrelated.

I'm trying to PERFORM A FIND (EMPLOYEES:SSN=G_SEARCH_SSN) from the SEARCH layout on a field from the EMPLOYEES table. If found, GO TO LAYOUT (EMPLOYEE) then GO TO RECORD. If not found, CUSTOM DIALOG "employee not found":

IF (CODE(GET(TRIGGERKEYSTROKE) = 10)) Then //enter key
SHOW CUSTOM DIALOG <-- "no employee found"
GO TO RECORD <-- I want to go to the one in the found set

Open in new window

When I try this, I get an error: "this operation cannot be completed because the target is not part of a related table"

How would I accomplish this???

Thanks in advance.
Question by:rmartes
  • 2
  • 2
LVL 25

Accepted Solution

Will Loving earned 1000 total points
ID: 39973610
You have two fields in separate tables that have the same name but there is otherwise not connection between them. And it looks like your not setting a value in the Perform Find step. The perform Find Step need to specify a field to perform the Find on and a value to search for. It looks like you specified a field, EMPLOYEES:SSN=G_SEARCH_SSN (though I think it should really be the actual SSN field)  but no value for it. The value typed into Global field need to get passed to the Find request.

To so this, set a variable $FindSSN to the Global field value and then switch to the Employees layout, and set the Find request to search the SSN field for $FindSSN.

However, a much simpler way to do that is simply to have your opener script go to a layout based on Employees table and showing just the actual SSN field. Then:

User Abort [Off]
Enter Find Mode [ Pause ]
then set you script trigger to either Resume script or to start a new script that does the Find and switches to a more complete layout to display the results.

Assisted Solution

historychef earned 1000 total points
ID: 39975331
Given the description of your setup, you don't even need the Find. Relate the two tables on EMPLOYEES::SSN = GLOBAL_FIELDS::G_SEARCH_SSN, then show the data for the related Employee (if any) on the layout containing G_SEARCH_SSN. It's a lot faster, and there's no scripting involved. If you wanted to, you could create a value list of SSNs (taken from EMPLOYEES::SSN), and use that to populate a drop-down list for G_SEARCH_SSN. This would give you the same result, but would only allow you to choose existing SSNs.

Author Comment

ID: 39978085
Thanks guys for your responses:

Will Loving, the reason I don't have the script go into the Employees layout and straight into Find Mode is because it loads at least one record and then goes into Find Mode. I don't want that. It causes the layout to load up slow, especially when your loading a ton of records from an external source. So, I'm trying to isolate the search upon load.

historychef, the value list won't work as I'm connected to an external source that has a ton of records (ton of SSNs). I need them to physically enter search criteria. Also, I'm using a third party plugin from MonkeyBread Software (http://www.mbsplugins.eu/component_SQL.shtml) to run inserts and stored procedures on temp tables I have created in my external source upon searching. So, I need to isolate the search and the global variables. I can't relate them. MonkeyBread Software works really well.

Here is what I ended up doing:

// OnLayoutKeyStroke for my Search Layout
If (code(get(triggerkeystroke)) = 10) //enter key
commit records [no dialog] //saves global value
freeze window
go to layout (employees)
set field (employees::ssn;g_search_ssn)
perform find[]
if (get(foundcount)) = 0)
go to layout (original layout) //search layout
custom dialog // no records found
// perform MonkeyBread scripts
go to record // found
end if
end if

Open in new window

I'm accepting both your answers as you guys were the only ones that replied with helpful thoughts.

Author Closing Comment

ID: 39978087
Very helpful!
LVL 25

Expert Comment

by:Will Loving
ID: 39978239
Well, as I noted in the other question, if you went to a different layout not based on Employees, ran a Custom Dialog to get the SSN (use a Global field somewhere for the Input field), went into Find Mode, THEN switched layouts to Employees you could then run the Find without having to load Employees into Browse.

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Conversion Steps for merging and consolidating separate Filemaker files The following is a step-by-step guide for the process of consolidating two or more FileMaker files (version 7 and later) into a single file with multiple tables. Sometimes th…
Having just upgraded from Filemaker 11 to Filemaker 12 over the weekend, we thought we would add some tips for others making the same move.  In general, our installation went without incident. Please note that this is not a replacement for Chapter 5…
this video summaries big data hadoop online training demo (http://onlineitguru.com/big-data-hadoop-online-training-placement.html) , and covers basics in big data hadoop .
Loops Section Overview
Suggested Courses

810 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question