The Missing Credits |
|
xix | |
Introduction |
|
1 | (14) |
Part One: Getting Started with FileMaker |
|
|
Chapter 1 Working with a Database |
|
|
15 | (34) |
|
A Very Quick Database Tour |
|
|
15 | (5) |
|
|
16 | (1) |
|
|
17 | (1) |
|
|
18 | (1) |
|
|
19 | (1) |
|
Opening and Closing Database Files |
|
|
20 | (3) |
|
|
21 | (1) |
|
|
22 | (1) |
|
Adding Data to Your Database |
|
|
23 | (7) |
|
|
23 | (1) |
|
|
23 | (4) |
|
|
27 | (1) |
|
|
28 | (1) |
|
Understanding Browse Mode Error Messages |
|
|
29 | (1) |
|
|
30 | (2) |
|
Navigating Record by Record |
|
|
30 | (1) |
|
|
31 | (1) |
|
|
32 | (6) |
|
|
33 | (2) |
|
Understanding Find Mode Error Messages |
|
|
35 | (3) |
|
|
38 | (3) |
|
|
38 | (1) |
|
|
39 | (1) |
|
|
39 | (2) |
|
Same Database, Different Views |
|
|
41 | (5) |
|
|
41 | (1) |
|
|
42 | (1) |
|
|
42 | (1) |
|
|
43 | (2) |
|
Automatically Arranging Windows |
|
|
45 | (1) |
|
|
46 | (2) |
|
Saving a Copy of Your Database |
|
|
47 | (1) |
|
Saving a Clone of Your Database |
|
|
47 | (1) |
|
Using FileMaker's Help Menu |
|
|
48 | (1) |
|
Chapter 2 Organizing and Editing Records |
|
|
49 | (40) |
|
|
49 | (6) |
|
|
50 | (1) |
|
|
50 | (1) |
|
|
50 | (5) |
|
|
55 | (14) |
|
|
55 | (1) |
|
|
55 | (2) |
|
|
57 | (2) |
|
Constraining and Extending the Found Set |
|
|
59 | (2) |
|
Refining Searches with Find Operators |
|
|
61 | (4) |
|
Using the And Pop-up Menu |
|
|
65 | (4) |
|
Editing What's in Your Fields |
|
|
69 | (6) |
|
|
69 | (1) |
|
Using the Replace Command |
|
|
70 | (2) |
|
|
72 | (3) |
|
|
75 | (5) |
|
|
75 | (2) |
|
|
77 | (1) |
|
|
78 | (1) |
|
|
78 | (2) |
|
|
80 | (3) |
|
Spell Checking with Menu Commands |
|
|
80 | (2) |
|
Spell Checking As You Type |
|
|
82 | (1) |
|
Managing Spelling Dictionaries |
|
|
82 | (1) |
|
Preview Mode and Printing |
|
|
83 | (6) |
Part Two: Building Your First Database |
|
|
Chapter 3 Creating a Custom Database |
|
|
89 | (42) |
|
|
89 | (2) |
|
Creating and Managing Fields in Table View |
|
|
91 | (6) |
|
|
92 | (1) |
|
|
93 | (1) |
|
Creating Records in Table View |
|
|
94 | (1) |
|
Inserting a File into a Container Field |
|
|
95 | (1) |
|
|
96 | (1) |
|
Inserting a File Using QuickTime |
|
|
96 | (1) |
|
|
97 | (5) |
|
|
99 | (1) |
|
The Layout Status Toolbar and Layout Mode |
|
|
99 | (1) |
|
|
100 | (2) |
|
|
102 | (21) |
|
Editing Text Objects and Fields |
|
|
103 | (6) |
|
|
109 | (3) |
|
Inserting a Picture on a Layout |
|
|
112 | (1) |
|
|
113 | (1) |
|
|
114 | (8) |
|
Customizing a Layout's Body Part |
|
|
122 | (1) |
|
|
123 | (4) |
|
|
125 | (1) |
|
|
126 | (1) |
|
|
127 | (4) |
|
Chapter 4 Adding Power to Your Database |
|
|
131 | (50) |
|
Creating a Simple Calculation |
|
|
131 | (5) |
|
Creating Fields with Manage—-Database |
|
|
132 | (2) |
|
Adding New Fields to a Layout |
|
|
134 | (2) |
|
|
136 | (9) |
|
Understanding the Elements of a Relationship |
|
|
137 | (1) |
|
Creating a Key Field with an Auto-Enter Serial Number |
|
|
137 | (4) |
|
|
141 | (2) |
|
Creating a Relationship Between Two Table Occurrences |
|
|
143 | (2) |
|
Creating and Using Portals |
|
|
145 | (10) |
|
Adding a Portal to a Layout |
|
|
146 | (3) |
|
Resizing and Moving a Portal |
|
|
149 | (1) |
|
|
149 | (2) |
|
Creating Records Through a Portal |
|
|
151 | (2) |
|
Editing Records Through a Portal |
|
|
153 | (1) |
|
Performing Finds with Related Data |
|
|
154 | (1) |
|
|
155 | (5) |
|
|
155 | (3) |
|
|
158 | (2) |
|
|
160 | (1) |
|
|
160 | (3) |
|
Using Symbols to Show Important Info |
|
|
162 | (1) |
|
|
163 | (5) |
|
|
164 | (2) |
|
|
166 | (1) |
|
Applying a Script Trigger |
|
|
167 | (1) |
|
Creating a Dynamic Report with the Assistant |
|
|
168 | (5) |
|
Creating a Trailing Group Report |
|
|
173 | (2) |
|
Changing the Default Account |
|
|
175 | (3) |
|
|
178 | (3) |
Part Three: Thinking Like a Developer |
|
|
Chapter 5 Creating and Managing a Relational Database |
|
|
181 | (54) |
|
Understanding Relational Databases |
|
|
182 | (1) |
|
|
183 | (20) |
|
|
183 | (4) |
|
|
187 | (4) |
|
The Entity-Relationship Diagram |
|
|
191 | (7) |
|
|
198 | (2) |
|
|
200 | (3) |
|
Creating a Relational Database |
|
|
203 | (9) |
|
|
204 | (2) |
|
|
206 | (1) |
|
Managing the Relationships Graph |
|
|
207 | (5) |
|
Using Relational Database Power |
|
|
212 | (8) |
|
One Table Occurrence, One Found Set |
|
|
212 | (2) |
|
Viewing Related Fields on a Layout |
|
|
214 | (3) |
|
Creating a Value List Based on a Related Field |
|
|
217 | (3) |
|
|
220 | (8) |
|
|
222 | (2) |
|
|
224 | (1) |
|
Navigating Between Related Records |
|
|
225 | (3) |
|
Reviewing Relationship Concepts |
|
|
228 | (7) |
|
|
228 | (2) |
|
Implicit Relationships in Action |
|
|
230 | (5) |
|
|
235 | (34) |
|
Understanding Field Types |
|
|
236 | (4) |
|
|
236 | (1) |
|
|
236 | (1) |
|
|
237 | (1) |
|
|
238 | (1) |
|
|
239 | (1) |
|
|
239 | (1) |
|
|
240 | (1) |
|
|
240 | (1) |
|
|
240 | (8) |
|
|
241 | (3) |
|
|
244 | (1) |
|
|
244 | (1) |
|
Value from Last Visited Record |
|
|
245 | (1) |
|
|
246 | (1) |
|
|
246 | (2) |
|
|
248 | (1) |
|
|
248 | (6) |
|
Making Validation Stricter |
|
|
250 | (2) |
|
|
252 | (2) |
|
|
254 | (7) |
|
|
255 | (1) |
|
|
255 | (1) |
|
|
256 | (4) |
|
Printing Field Definitions |
|
|
260 | (1) |
|
Beyond Text: Container Fields |
|
|
261 | (8) |
|
|
262 | (1) |
|
|
263 | (2) |
|
|
265 | (2) |
|
|
267 | (2) |
|
|
269 | (80) |
|
|
269 | (8) |
|
|
270 | (1) |
|
|
271 | (1) |
|
|
271 | (1) |
|
|
272 | (1) |
|
|
273 | (1) |
|
|
274 | (3) |
|
|
277 | (8) |
|
|
277 | (1) |
|
|
277 | (1) |
|
|
278 | (1) |
|
|
278 | (1) |
|
|
278 | (1) |
|
Labels or Vertical Labels |
|
|
278 | (1) |
|
|
279 | (1) |
|
|
280 | (2) |
|
|
282 | (1) |
|
|
282 | (1) |
|
|
283 | (1) |
|
|
284 | (1) |
|
|
285 | (6) |
|
|
286 | (5) |
|
|
291 | (14) |
|
|
291 | (1) |
|
|
291 | (2) |
|
|
293 | (1) |
|
|
294 | (1) |
|
|
295 | (1) |
|
|
296 | (1) |
|
|
297 | (3) |
|
|
300 | (2) |
|
|
302 | (1) |
|
|
302 | (3) |
|
|
305 | (12) |
|
|
306 | (3) |
|
|
309 | (2) |
|
|
311 | (1) |
|
|
312 | (1) |
|
|
313 | (4) |
|
|
317 | (5) |
|
Creating Buttons with the Button Tool |
|
|
317 | (2) |
|
Turning an Existing Layout Object into a Button |
|
|
319 | (1) |
|
Making a Button Not a Button |
|
|
320 | (1) |
|
|
321 | (1) |
|
|
322 | (3) |
|
Customizing the Tab Order |
|
|
323 | (1) |
|
Fixing the Tab Order in the People Database |
|
|
324 | (1) |
|
Preserving the Automatic Order |
|
|
325 | (1) |
|
|
325 | (3) |
|
|
328 | (1) |
|
|
329 | (1) |
|
|
329 | (8) |
|
Autoresizing in List Layouts |
|
|
336 | (1) |
|
Creating Layouts for Printing |
|
|
337 | (12) |
|
Visualize the Result in Preview Mode |
|
|
337 | (1) |
|
|
338 | (2) |
|
|
340 | (2) |
|
|
342 | (7) |
|
Chapter 8 Understanding Calculations |
|
|
349 | (34) |
|
Understanding Calculations |
|
|
349 | (5) |
|
|
351 | (3) |
|
The Structure of a Calculation |
|
|
354 | (13) |
|
Using Fields in Calculations |
|
|
355 | (1) |
|
Using Constants in Calculations |
|
|
356 | (1) |
|
Using Operators in Calculations |
|
|
357 | (5) |
|
|
362 | (4) |
|
|
366 | (1) |
|
Using a Related Field in a Calculation |
|
|
367 | (3) |
|
Understanding the Specify Calculation Dialog Box |
|
|
370 | (4) |
|
|
370 | (1) |
|
|
371 | (1) |
|
|
371 | (1) |
|
|
371 | (1) |
|
|
372 | (1) |
|
|
373 | (1) |
|
|
374 | (1) |
|
Changing the Standard Evaluation Behavior |
|
|
374 | (1) |
|
|
374 | (3) |
|
Validate Data Entry with a Calculation |
|
|
377 | (3) |
|
Replacing Data Using a Calculation |
|
|
380 | (1) |
|
|
381 | (2) |
|
Chapter 9 More Calculations and Data Types |
|
|
383 | (30) |
|
Number Crunching Calculations |
|
|
383 | (4) |
|
|
383 | (1) |
|
|
384 | (3) |
|
Going Beyond Basic Calculations |
|
|
387 | (3) |
|
Reviewing the Data and New Business Rules |
|
|
387 | (1) |
|
Planning the Calculations |
|
|
388 | (1) |
|
Constructing the Calculation |
|
|
389 | (1) |
|
|
390 | (14) |
|
|
392 | (9) |
|
Text Formatting Functions |
|
|
401 | (3) |
|
Date and Time Calculations |
|
|
404 | (6) |
|
Math with Dates and Times |
|
|
405 | (2) |
|
|
407 | (1) |
|
Calculations that Create Dates and Times |
|
|
408 | (2) |
|
Containers in Calculations |
|
|
410 | (3) |
|
Calculations with Pictures, Sounds, Movies, and Files |
|
|
410 | (1) |
|
Calculations with References |
|
|
411 | (2) |
|
Chapter 10 Understanding Scripts |
|
|
413 | (42) |
|
|
414 | (1) |
|
|
414 | (12) |
|
|
415 | (1) |
|
|
415 | (1) |
|
|
416 | (6) |
|
|
422 | (4) |
|
Shortcuts to the Edit Script Window |
|
|
426 | (1) |
|
The Importance of the Layout |
|
|
427 | (1) |
|
|
427 | (1) |
|
|
428 | (5) |
|
|
428 | (2) |
|
|
430 | (1) |
|
|
430 | (1) |
|
Performing Scripts When a File Is Opened and Closed |
|
|
431 | (1) |
|
|
432 | (1) |
|
|
433 | (2) |
|
|
433 | (2) |
|
|
435 | (1) |
|
Branching and Looping in Scripts |
|
|
435 | (10) |
|
Branching with If, Else If, Else, and End If |
|
|
435 | (7) |
|
Testing Multiple Conditions |
|
|
442 | (1) |
|
|
443 | (2) |
|
|
445 | (10) |
|
Creating a Simple Script Trigger |
|
|
446 | (1) |
|
|
447 | (3) |
|
|
450 | (5) |
|
Chapter 11 Exploring Script Steps |
|
|
455 | (54) |
|
|
455 | (1) |
|
|
456 | (3) |
|
|
459 | (14) |
|
|
459 | (1) |
|
|
460 | (1) |
|
|
461 | (1) |
|
|
461 | (5) |
|
|
466 | (4) |
|
Other Steps That Work with Fields |
|
|
470 | (3) |
|
|
473 | (11) |
|
Creating, Duplicating, and Deleting Records |
|
|
474 | (1) |
|
|
475 | (3) |
|
Opening, Reverting, and Committing Records |
|
|
478 | (3) |
|
|
481 | (2) |
|
|
483 | (1) |
|
|
484 | (10) |
|
Performing People's Find Requests |
|
|
484 | (4) |
|
|
488 | (2) |
|
Using a Variable to Create Dynamic Find Requests |
|
|
490 | (3) |
|
Constraining and Extending the Found Set |
|
|
493 | (1) |
|
|
493 | (1) |
|
|
494 | (1) |
|
|
494 | (1) |
|
Sorting Records with an OnRecordLoad Trigger |
|
|
495 | (1) |
|
|
495 | (7) |
|
|
495 | (2) |
|
Bringing a Window to the Front |
|
|
497 | (1) |
|
|
498 | (1) |
|
Moving and Resizing Existing Windows |
|
|
499 | (1) |
|
Other Window-Related Script Steps |
|
|
500 | (2) |
|
|
502 | (1) |
|
Opening and Closing Files |
|
|
502 | (1) |
|
|
502 | (1) |
|
Other File-Related Script Steps |
|
|
503 | (1) |
|
|
503 | (1) |
|
|
504 | (5) |
|
|
504 | (1) |
|
|
504 | (1) |
|
|
504 | (1) |
|
|
505 | (1) |
|
|
506 | (1) |
|
|
506 | (3) |
Part Four: Becoming a Power Developer |
|
|
Chapter 12 Applying Developer Utilities |
|
|
509 | (50) |
|
Copying and Pasting Database Structure |
|
|
510 | (3) |
|
Importing Tables and Fields |
|
|
510 | (1) |
|
Copying and Pasting Tables |
|
|
511 | (1) |
|
Copying and Pasting Fields |
|
|
512 | (1) |
|
Copying Scripts and Script Steps |
|
|
512 | (1) |
|
|
513 | (8) |
|
Controlling Script Execution |
|
|
514 | (3) |
|
|
517 | (1) |
|
|
518 | (1) |
|
|
519 | (1) |
|
|
519 | (1) |
|
Working with the Debugger Window |
|
|
519 | (2) |
|
|
521 | (3) |
|
|
521 | (1) |
|
|
522 | (2) |
|
|
524 | (2) |
|
The Database Design Report |
|
|
526 | (6) |
|
|
526 | (2) |
|
|
528 | (2) |
|
Finding Broken Elements with the DDR |
|
|
530 | (2) |
|
|
532 | (6) |
|
Defining a Custom Function |
|
|
534 | (1) |
|
|
535 | (1) |
|
|
536 | (2) |
|
|
538 | (12) |
|
|
540 | (3) |
|
|
543 | (1) |
|
|
544 | (1) |
|
|
545 | (3) |
|
|
548 | (1) |
|
Installing Custom Menu Sets |
|
|
548 | (2) |
|
|
550 | (5) |
|
Using the Developer Utilities |
|
|
551 | (4) |
|
Delivering a Runtime Solution |
|
|
555 | (1) |
|
|
555 | (4) |
|
Chapter 13 Advanced Relationship Techniques |
|
|
559 | (42) |
|
|
560 | (7) |
|
|
560 | (3) |
|
Multiple Criteria Relationships |
|
|
563 | (3) |
|
|
566 | (1) |
|
|
567 | (3) |
|
Understanding Table Occurrences |
|
|
570 | (5) |
|
|
575 | (13) |
|
Listing the New Elements You'll Need |
|
|
576 | (2) |
|
Understanding Table Occurrence Groups |
|
|
578 | (3) |
|
Creating a New Table Occurrence Group |
|
|
581 | (3) |
|
Building the Assign Expenses Layout |
|
|
584 | (4) |
|
Understanding Graph Arrangements |
|
|
588 | (3) |
|
Connecting Database Files |
|
|
591 | (3) |
|
Adding a Table Occurrence from Another File |
|
|
591 | (1) |
|
Defining Data Sources Using a Path |
|
|
592 | (2) |
|
Using Multiple Relationship Techniques |
|
|
594 | (7) |
|
Creating the Invoice Finder Layout |
|
|
595 | (6) |
|
Chapter 14 Reporting and Analysis |
|
|
601 | (42) |
|
Summary Fields and Sub-summary Parts |
|
|
601 | (11) |
|
|
601 | (3) |
|
Other Summary Field Types |
|
|
604 | (4) |
|
Advanced Sub-summary Parts |
|
|
608 | (3) |
|
Leading and Trailing Grand Summaries |
|
|
611 | (1) |
|
Sub-summary Parts and Printing |
|
|
612 | (1) |
|
|
612 | (6) |
|
Putting a Web Viewer on a Layout |
|
|
613 | (2) |
|
|
615 | (3) |
|
|
618 | (6) |
|
Conditional Formatting of Fields |
|
|
618 | (2) |
|
Conditional Formatting of Text Objects |
|
|
620 | (2) |
|
Advanced Conditional Formatting |
|
|
622 | (1) |
|
Removing Conditional Formatting |
|
|
623 | (1) |
|
Basic Charting (found set charts) |
|
|
624 | (5) |
|
|
629 | (2) |
|
|
631 | (4) |
|
|
633 | (1) |
|
Choosing an Appropriate Layout Part |
|
|
633 | (1) |
|
Using the Correct Sort Order |
|
|
633 | (2) |
|
|
635 | (8) |
|
|
635 | (3) |
|
|
638 | (5) |
|
Chapter 15 Advanced Calculations |
|
|
643 | (30) |
|
Understanding Boolean Functions |
|
|
644 | (4) |
|
|
646 | (2) |
|
|
648 | (4) |
|
Understanding Stored and Unstored Calculation Fields |
|
|
648 | (4) |
|
Global Calculation Fields |
|
|
652 | (1) |
|
|
652 | (7) |
|
|
652 | (4) |
|
Constructing a Conditional Calculation |
|
|
656 | (3) |
|
The Let() Function and Variables |
|
|
659 | (4) |
|
Defining Calculation Variables |
|
|
659 | (1) |
|
|
660 | (3) |
|
|
663 | (1) |
|
|
663 | (4) |
|
Step 1: Solve the First Case |
|
|
664 | (1) |
|
Step 2: Assume Your Function Already Works, and Use It |
|
|
665 | (1) |
|
Step 3: Find a Stopping Point |
|
|
666 | (1) |
|
|
667 | (6) |
|
|
669 | (1) |
|
|
669 | (1) |
|
|
670 | (1) |
|
Creating Your Own Plug-ins |
|
|
671 | (2) |
|
Chapter 16 Advanced Scripting |
|
|
673 | (56) |
|
|
673 | (2) |
|
|
675 | (1) |
|
Communicating with Database Users |
|
|
676 | (4) |
|
|
676 | (1) |
|
|
676 | (4) |
|
Organizing Complex Scripts |
|
|
680 | (6) |
|
The Perform Script Script Step |
|
|
682 | (1) |
|
Halt Script and Exit Script |
|
|
683 | (3) |
|
|
686 | (3) |
|
|
689 | (3) |
|
|
692 | (5) |
|
The Set Error Capture Script Step |
|
|
694 | (1) |
|
The Get ( LastError ) Function |
|
|
694 | (2) |
|
The Allow User Abort Script Step |
|
|
696 | (1) |
|
|
697 | (7) |
|
|
697 | (1) |
|
|
698 | (6) |
|
Putting a Complex Script Together |
|
|
704 | (25) |
|
|
704 | (1) |
|
|
705 | (2) |
|
|
707 | (4) |
|
|
711 | (13) |
|
|
724 | (5) |
Part Five: Integration and Security |
|
|
Chapter 17 Sharing Your Database |
|
|
729 | (32) |
|
FileMaker Network Sharing |
|
|
730 | (5) |
|
Setting Up a Host Computer |
|
|
730 | (2) |
|
|
732 | (1) |
|
The Open Remote File Dialog Box |
|
|
733 | (2) |
|
Sharing over the Internet |
|
|
735 | (6) |
|
|
735 | (3) |
|
Connecting from a Web Browser |
|
|
738 | (2) |
|
|
740 | (1) |
|
|
741 | (16) |
|
|
742 | (1) |
|
Installing FileMaker Server |
|
|
743 | (4) |
|
Administering FileMaker Server |
|
|
747 | (10) |
|
|
757 | (1) |
|
|
757 | (4) |
|
Chapter 18 Adding Security |
|
|
761 | (38) |
|
|
761 | (2) |
|
|
762 | (1) |
|
|
762 | (1) |
|
|
763 | (19) |
|
Understanding Privilege Sets |
|
|
764 | (1) |
|
Understanding Individual Privileges |
|
|
765 | (17) |
|
|
782 | (6) |
|
|
784 | (2) |
|
|
786 | (2) |
|
|
788 | (2) |
|
Creating an Extended Privilege |
|
|
788 | (1) |
|
Checking for an Extended Privilege |
|
|
789 | (1) |
|
Assigning Extended Privileges |
|
|
790 | (1) |
|
Managing External File Access |
|
|
790 | (4) |
|
|
794 | (5) |
|
Detecting Privileges in a Script |
|
|
794 | (1) |
|
|
795 | (1) |
|
Running Scripts with Full Access Privileges |
|
|
795 | (1) |
|
Managing Security with Scripts |
|
|
796 | (3) |
|
Chapter 19 Sharing Data with Other Systems |
|
|
799 | (52) |
|
Sharing Your Data with Others |
|
|
799 | (6) |
|
|
800 | (5) |
|
|
805 | (1) |
|
|
806 | (13) |
|
|
808 | (4) |
|
Connecting FileMaker to a SQL Data Source |
|
|
812 | (2) |
|
Adding SQL Tables to a FileMaker Database |
|
|
814 | (4) |
|
|
818 | (1) |
|
|
819 | (7) |
|
|
821 | (5) |
|
|
826 | (11) |
|
|
830 | (4) |
|
Importing over Existing Data |
|
|
834 | (2) |
|
Creating Tables on Import |
|
|
836 | (1) |
|
Creating a New Database from an Import File |
|
|
836 | (1) |
|
Converting Older FileMaker Files |
|
|
837 | (1) |
|
|
837 | (8) |
|
|
837 | (1) |
|
|
838 | (1) |
|
|
839 | (2) |
|
|
841 | (2) |
|
|
843 | (1) |
|
|
844 | (1) |
|
Importing and Exporting in a Script |
|
|
845 | |
|
Save Records Script Steps |
|
|
846 | (1) |
|
The Import Records Script Step |
|
|
847 | (1) |
|
The Export Records Script Step |
|
|
848 | |
Part Six: Appendixes |
|
|
|
851 | (12) |
|
Appendix B: FileMaker Error Codes |
|
|
863 | (8) |
Index |
|
871 | |