Solved

FileMaker: Perform find on unrelated table/field

Posted on 2014-04-02
5
2,277 Views
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
PERFORM FIND (EMPLOYEES:SSN=G_SEARCH_SSN)
IF (GET(FOUNDCOUNT) = 0) THEN
SHOW CUSTOM DIALOG <-- "no employee found"
ELSE
GO TO LAYOUT (EMPLOYEE)
GO TO RECORD <-- I want to go to the one in the found set
END IF
END IF

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.
0
Comment
Question by:rmartes
  • 2
  • 2
5 Comments
 
LVL 24

Accepted Solution

by:
Will Loving earned 250 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.
0
 
LVL 4

Assisted Solution

by:historychef
historychef earned 250 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.
0
 

Author Comment

by:rmartes
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
else
// 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.
0
 

Author Closing Comment

by:rmartes
ID: 39978087
Very helpful!
0
 
LVL 24

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.
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Pop up windows can be a useful feature of any Filemaker database.  Though best used sparingly, they can be employed in a multitude of different ways, for example;  as a splash screen at login, during scripted processes to control user input, as pick…
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…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

707 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now