home *** CD-ROM | disk | FTP | other *** search
/ ftp.pasteur.org/FAQ/ / ftp-pasteur-org-FAQ.zip / FAQ / databases / filemaker-pro / faq
Encoding:
Text File  |  2004-04-18  |  172.5 KB  |  3,924 lines

  1. Path: senator-bedfellow.mit.edu!dreaderd!not-for-mail
  2. Message-ID: <databases/filemaker-pro/faq_1082200966@rtfm.mit.edu>
  3. Supersedes: <databases/filemaker-pro/faq_1079601013@rtfm.mit.edu>
  4. Expires: 31 May 2004 11:22:46 GMT
  5. X-Last-Updated: 1996/10/09
  6. From: Martin Trautmann <traut@iht.e-technik.th-darmstadt.de>
  7. Newsgroups:      comp.sys.mac.databases,de.comp.databases,comp.answers,news.answers
  8. Subject:       [FAQ] FileMaker Pro - database for Macintosh and Windows
  9. Organization:    iht/THD
  10. Reply-To:      traut@th-darmstadt.de (Martin Trautmann)
  11. Followup-To:     poster
  12. Approved:      news-answers-request@MIT.EDU
  13. Content-Type:    text/plain; charset=ISO-8859-1
  14. Content-Transfer-Encoding: 8bit
  15. Keywords:      Frequently Asked Questions, FAQ, FileMaker Pro 2.0 / 2.1 / 3.0 , FMPro, FMP, FMP3, Claris, relational database, application, Macintosh, Windows, Windows95, comp.sys.mac.databases
  16. Summary:       This posting contains a list of Frequently Asked Questions (and their answers) on the application FileMaker Pro. The current release of FMP is a simple to use, yet powerful flat database that offers some relational capabilities and multiple views. FMP is        a product of Claris Corp and is available both for Macintosh and Windows Operating Systems. This FAQ gets posted on comp.sys.mac.databases regularly.
  17. Originator: faqserv@penguin-lust.MIT.EDU
  18. Date: 17 Apr 2004 11:26:54 GMT
  19. Lines: 3900
  20. NNTP-Posting-Host: penguin-lust.mit.edu
  21. X-Trace: 1082201214 senator-bedfellow.mit.edu 576 18.181.0.29
  22. Xref: senator-bedfellow.mit.edu comp.sys.mac.databases:42240 de.comp.databases:3555 comp.answers:56854 news.answers:269788
  23.  
  24. Archive-name:    databases/filemaker-pro/faq
  25. Posting-Frequency: monthly
  26. Last-modified:   1996/10/09 
  27. Version:       3.1
  28. URL: <ftp://ftp.th-darmstadt.de//pub/database/filemaker-pro/[FAQ]%20FileMaker%20Pro> "Text release"
  29. URL: <ftp://ftp.th-darmstadt.de//pub/database/filemaker-pro/faq.fp3.sit>         "FMP 3.0 template"
  30. Changes:       indicated within the table of contents by "!"
  31.  
  32.  
  33. ---------------------------------------------------------------------------
  34.              Frequently Asked Questions on FileMaker Pro
  35.  
  36. 1  Where can I get information from
  37. !  1.1     Internet sites
  38. !  1.2     Software and templates
  39. !  1.3     Newsgroups
  40. !  1.4     Mailing lists
  41. !  1.4.1    FMPRO-L
  42. !  1.4.2    FMPRO
  43. !  1.4.3    FMPRO-CGI
  44. !  1.5     Forums
  45. !  1.6     Books
  46.  
  47. 2  Version History
  48.   2.1      What is the current version of FMPro for Macintosh
  49.   2.2      Is Filemaker Pro relational
  50.   2.3      When will FMPro 3.0 be released
  51. !  2.4     Features of FMPro 3.0
  52.   2.5      FileMaker Pro Server
  53.  
  54. 3  FMPro 3.0
  55.   3.1      Think relational
  56. !  3.1.1    Many to many relations (m:n)
  57.   3.2      What are portals?
  58.   3.2.1     Sorting Portal Records
  59.   3.3      Bug & Wish List
  60.   3.4      Relational Examples
  61.   3.4.1     Self Joining list
  62. !  3.5     Globals
  63.  
  64. 4  Field Formats and Index Values
  65.   4.1      What do I need index values for?
  66.   4.2      Lookups
  67.   4.3      Text formats and Index basics
  68.   4.3.1     Character translation for indexed values
  69.   4.4      Printing index fields
  70.   4.5      Number format
  71.   4.6      Date format
  72.   4.7      Time format
  73.   4.8      Hidden fields
  74. !  4.9     Sorted lists
  75.  
  76. 5  Repeating Fields
  77.   5.1      Convert repeating fields to non repeating fields
  78.   5.2      Convert nonrepeating fields to repeating field
  79.   5.2.1     How to create ASCII-29
  80.   5.3      Merge separate records to a single repeating field
  81.   5.4      Removing duplicates or Sychronizing databases
  82. !  5.4.1    Removing duplicates - another approach
  83.  
  84. 6  Find
  85. !  6.1     Some facts
  86. !  6.2     Perform scripted find
  87. !  6.3     No matching records found
  88. !  6.4     Find on multiple fields
  89. !  6.5     Find with AND / OR / NOT
  90. !  6.6     Find on a subset
  91.  
  92. 7  Scripting
  93.   7.1      ScriptMaker
  94.   7.1.1     What's that restore option? - Find & sort within a script
  95.   7.1.2     Special options
  96.   7.1.3     Documenting scripts
  97.   7.1.4     Recursive and Conditional scripts
  98.   7.1.5     Dummy entries
  99.   7.1.6     Go to last record
  100.   7.1.7     Schedule Scripts
  101.   7.2      AppleEvents
  102.   7.2.1     FMP documentation
  103.   7.2.2     Classes
  104.   7.2.3     References
  105.   7.2.3.1   References table
  106.   7.2.4     List of events
  107.   7.2.5     Sending events
  108.   7.3      AppleScript
  109.   7.3.1     System requirements
  110.   7.3.2     General documentation
  111.   7.3.2.1   Books
  112.   7.3.2.2   Online documentation
  113.   7.3.4     Tips
  114.   7.3.5     Examples
  115.   7.3.5.1   Load all image files
  116.   7.3.5.2   Idle handler
  117.   7.3.5.3   Object not found / error -1728
  118.   7.3.5.4   Multiple finds
  119.   7.3.6     Call AppleScript
  120.   7.4      Aretha / Frontier
  121.   7.5      Other tools
  122.   7.5.1     Quickeys
  123.   7.5.2     KeyQuencer
  124. !  7.5.3    Tools for Windows
  125.  
  126. 8  Miscellaneous Tips
  127.   8.1      Removing password
  128.   8.2      Undocumented features
  129.   8.3      Shortcuts
  130.   8.4      Compatibility between DOS and Mac release
  131.   8.5      Buttons
  132.   8.6      Resources for dialog boxes
  133.   8.7      The special name "-" as list separator
  134.   8.8      WWW, HTML and CGI
  135. !  8.8.1    HTML text conversion
  136.   8.9      Comments within calculations
  137.   8.10     Empty fields
  138.   8.11     Sort Order
  139.   8.12     Switch printers
  140.   8.13     Error Codes
  141.   8.14     Get User's Name / Limit Access to Certain Users
  142. !  8.15     Use // as literal text
  143. !  8.16     Faster Screen Redraw
  144. !  8.17     Date calculation
  145. !  8.18     Displaying Data as a Table
  146. !  8.19     Zoom window size
  147.  
  148. 9  Data Exchange
  149.   9.1      Copy a layout from one database to another
  150.   9.2      Modify layout objects
  151.   9.3      Copy a record or list of records to other applications
  152.   9.4      Export / Import
  153. !  9.5     Export formatted text / RTF
  154. !  9.6     Access Files Remotely
  155.  
  156. 10 Useful Tools
  157.   10.0     Useful tools
  158.   10.1     Print2Pict
  159.   10.2     Acid Jazz etc.
  160.   10.3     BBEdit Lite
  161.   10.4     Ram Disk
  162.   10.5     Send Mail from within FMP
  163.   10.6     Dump Mail to FMP
  164.   10.7     Fax from FMP
  165.   10.8     Speed Doubler
  166.   10.9     ROFM CGI
  167. !  10.10    GTQ library
  168.  
  169. 11 Special Solutions
  170. !  11.1     Templates for collecting CDs
  171. !  11.2     Numbers to Text
  172.  
  173. 12 About
  174. !  12.0     About
  175.  
  176. ------------------------------
  177.  
  178. Subject: 1  Where can I get information from
  179.    
  180. 1.1   Internet sites
  181.  
  182.  Claris WWW
  183.  (updaters, templates, technical support articles, trial software and
  184.  product literature):
  185.  http://www.claris.com
  186.  Claris FAQs on FileMaker Pro 2.x:
  187.  http://www.claris.com/TS/FAQs/IndexFileMakerPro2.x.html
  188.  http://www.claris.com/TS/FAQ/FileMakerPro2.x.html
  189.  Claris FMPro and HTTP (featured article):
  190.  http://www.claris.com/TS/Featured/FMProCGI/Article.html
  191.  Claris FTP server (anonymous downloads):
  192.  ftp://ftp.claris.com
  193.  Claris Tech Info Database (more than 4000 searchable articles):
  194.  gopher://spinaltap.micro.umn.edu/70/computer/Claris/FileMaker
  195.  gopher://spinaltap.micro.umn.edu:70/77/computer/Claris
  196.  http://www2.claris.com/techinfo/
  197.  http://www2.claris.com/cgi-bin/eg/techinfo_search.html  "search engine"
  198.  Tips from the File Maker User Group (FMUG)
  199.  at Massachusetts Institute of Technology (MIT):
  200.  http://web.mit.edu/mugs/www/fmtips.htm
  201.  Misc. sites collected by Joel Bowers <jmba@BLUEFIN.NET>:
  202.  ftp://ftp.th-darmstadt.de//pub/database/filemaker-pro/faq.fm.sit "Home
  203.  site of the FAQs, compressed database release"
  204.  http://www.cis.ohio-state.edu/hypertext/faq/usenet/databases/filemaker-p
  205.  ro/faq/faq.html "FAQ monthly html release"
  206.  http://www.kudosnet.com/ISO/ISOmain.html "ISO Magazine"
  207.  http://rowen.astro.washington.edu/ "ROFM CGI AppleScript OSAX"
  208.  http://macweb.com/ "WWW server for FMP"
  209.  http://www.amug.org/~hposoft  "CSA member"
  210.  http://ape.com/Diana/
  211.  http://www.blueworld.com/lists/fmpro/ "mailing list FMPRO"
  212.  http://www.bluefin.net/~jmba/ "CSA member"
  213.  http://canstock.com/
  214.  http://delcom.accsyst.com
  215.  http://www.icon.co.at/icon/e-filefax.html "Send Fax"
  216.  http://www.in.net/~wrskas/Index.html "templates for barcharts, FMP3"
  217.  http://www.macvantages.com/ "CSA member"
  218.  http://www.magic.ca/~octal/octal.html "CSA member"
  219.  http://www2.pps.ca/emplys/kb/kbhome.html
  220.  http://www.shore.net/~tsginc/FM.htm "CSA member"
  221.  http://www.syspac.com/~suncou
  222.  http://www.tiac.net/users/eweiser/index.html "CSA member"
  223.  ftp://ftp.th-darmstadt.de//pub/database/filemaker-pro/ "Plain text FAQs,
  224.  old postings of FMPRO-L, various templates"
  225.  http://www.Xon-Xoff.com "French User Group"
  226.  http://www.venus.it/FMP [Italian]
  227.  http://www.algonet.se/macboden/ [Swedish]
  228.  More Links that may have some FileMaker Connections
  229.  http://www.artscope.com
  230.  http://www.macsite.com/macsite/searcher.html
  231.  http://www.intac.com/~salenick/sa.html
  232.  http://users.aol.com/stevem7994/DPpage/DailyPlanner.HTML
  233.  http://www.powerfiles.com "PowerFiles - A good source for Database
  234.  Solutions, Templates, Demos and Tips (FMP 2.x and 3.0)." (by Allison
  235.  Glass)
  236.    
  237. 1.2   Software and templates
  238.  
  239.  sumex-aim.stanford.edu (info-mac) and its mirrors, most in directory
  240.  Applications and Database, e.g.:
  241.  ftp://ftp.switch.ch//mirror/info-mac/app/
  242.  ftp:/info-mac/app/
  243.  ftp:/info-mac/data/
  244.  (a notation supported e.g. by Anarchie, a ftp and archie software by
  245.  Peter Lewis, to get it from your favorite mirror)
  246.  Umich and its mirrors, e.g.:
  247.  ftp://mac.archive.umich.edu/mac/util/filemaker/
  248.  ftp:/mac/util/filemaker/
  249.  Archie:
  250.  Many templates contain either .fm or FMP within the name - so you may
  251.  perform an archie or index search on those characteristic expressions.
  252.  Claris:
  253.  ftp://ftp.claris.com/pub/USA-Macintosh "Software"
  254.  ftp://ftp.claris.com/pub/USA-Macintosh/Updaters/ "Updaters"
  255.  ftp://ftp.claris.com/pub/USA-Macintosh/Solutions_Showcase/ "Solutions"
  256.  ftp://ftp.claris.com/pub/USA-Macintosh/Templates/ "Templates"
  257.  ftp://ftp.claris.com/pub/USA-Macintosh/Trial_Software/ "Trial_Software"
  258.  America Online:
  259.  Business Section/Database Support/ "FileMaker Pro Templates"
  260.  CompuServe:
  261.  Claris Support
  262.  Claris BBS:
  263.  The Claris BBS is a file upload/download service. You can download
  264.  updaters, trial software, templates, and frequently asked questions.
  265.  Call 408-987-7421 with your communications software set for 8/N/1 to
  266.  connect at speeds up to 14,400 bps.
  267.  Claris Solutions Alliance:
  268.  Commercial Database Developpers. Demos and Solutions are available on
  269.  the Claris sites.
  270.  (see information in section Forums)
  271.  Demos:
  272.  http://www.ccsi.com/n-perspect
  273.  http://www.magic.ca/~octal/octal.html
  274.  Commercial templates and free tips to AppleScript and FMP.
  275.  http://www.amug.org/~hposoft/
  276.  Commercial templates, free tips and demos.
  277.    
  278. 1.3   Newsgroups
  279.  
  280.  news:comp.sys.mac.databases
  281.  Posting concerning FMPro may appear in comp.sys.mac.apps,
  282.  comp.sys.mac.misc, comp.databases, de.comp.databases, several local and
  283.  IBM-PC related groups as well, but I highly recommend to keep them in
  284.  comp.sys.mac.databases only.
  285.    
  286. 1.4   Mailing lists
  287.  
  288.  FMPRO-L is the main list on FileMaker Pro where these FAQs were composed
  289.  from. It is a well attended list with about 20 messages per day.
  290.  There are currently two further lists for discussion of Filemaker Pro
  291.  topics available: The regular Filemaker Pro list (fmpro@blueworld.com),
  292.  and one for discussion of Filemaker Pro CGIs (fmpro-cgi@blueworld.com),
  293.  both created in August 1995. They offer WWW support on
  294.  <http:www.blueworld.com>, e.g. to subscribe and search for old articles
  295.  (searchable archive).
  296.    
  297. 1.4.1  FMPRO-L
  298.  
  299.  send to this list: FMPRO-L@LISTSERV.DARTMOUTH.EDU
  300.  Claris FileMaker Pro discussions
  301.  This mailing list is for discussions on all aspects of the FileMaker Pro
  302.  database development environment, published by Claris Corporation. Both
  303.  the Mac and the Windows versions of the program are welcome topics of
  304.  discussion, as are future speculations on the direction of the
  305.  environment. Posters should refrain from submitting enclosed database
  306.  files to the list, and any freeware and shareware databases should be
  307.  submitted to the appropriate Mac and/or Windows anonymous ftp sites. On
  308.  the  Macintosh side, these are sumex-aim@stanford.edu and
  309.  mac.archive.umich.edu.
  310.  To subscribe to this list:
  311.  Send to: LISTSERV@listserv.dartmouth.edu
  312.  Subject: subscribe
  313.  Message: subscribe fmpro-l <your full name here>
  314.  To Unsubscribe from this list:
  315.  Send to: LISTSERV@listserv.dartmouth.edu
  316.  Subject: unsubscribe Message: SIGNOFF FMPRO-L
  317.    
  318. 1.4.2  FMPRO
  319.  
  320.  send to this list: fmpro@blueworld.com
  321.  "This list was created after consulting with several prominent FMPRO
  322.  developers as well as Claris Tech., all of whom had no knowledge of an
  323.  existing FMPRO list. As well, we've created the associated FMPRO-CGI
  324.  list to allow for an adequate forum for that specific topic." (from
  325.  bill@blueworld.com (Bill Doerrfeld))
  326.  Commands should be put in the message body of the message sent to the
  327.  list request address, "fmpro-request@blueworld.com". Here are the
  328.  commands currently recognized by this list:
  329.  To subscribe to the list fmpro: subscribe fmpro
  330.  If you need a digest version of the list, use the command: subscribe
  331.  digest fmpro
  332.  This command unsubscribes you from one of the lists: unsubscribe fmpro
  333.  To get the help file, send: help
  334.    
  335. 1.4.3  FMPRO-CGI
  336.  
  337.  send to this list: fmpro-cgi@blueworld.com
  338.  "CGI stands for "Common Gateway Interface". The CGI definition provides
  339.  a standard for external gateway programs to interface with information
  340.  servers such as MacHTTP. If You're running Your own WWW-Server, You can
  341.  define FORMS, that Users can fill out. The contents can go into a
  342.  FMP-Database - using these  CGI's)
  343.  More Information: http://hoohoo.ncsa.uiuc.edu/cgi/overview.html "
  344.  (from schneima@uiag.com (Markus Schneider))
  345.  Commands should be put in the message body of the message sent to the
  346.  list request address, "fmpro-request@blueworld.com". Here are the
  347.  commands currently recognized by this list:
  348.  To subscribe to the list fmpro-cgi: subscribe fmpro-cgi
  349.  If you need a digest version of the list, use the command: subscribe
  350.  digest fmpro-cgi
  351.  This command unsubscribes you from one of the lists: unsubscribe
  352.  fmpro-cgi
  353.  To get the help file, send: help
  354.    
  355. 1.5   Forums
  356.  
  357.  Full-service Support Forums
  358.  (from Jim_Spelman@iguanabbs.com)
  359.  Claris does not provide person-to-person support via the Internet.
  360.  [They] invite you to visit [their] full-service support forums on the
  361.  online services below, which include discussion boards monitored by
  362.  Claris Technical Support staff, TechInfo database, and extensive
  363.  software libraries. [Their] forums on America Online and eWorld also
  364.  offer product registration and ordering.
  365.  America Online: keyword CLARIS
  366.  CompuServe: GO CLARIS
  367.  eWorld: shortcut CLARIS
  368.  AppleLink: Third Parties: Claris or CLARIS.TECH
  369.  Claris BBS  408-987-7421
  370.  Contact the online service of your choice for a membership kit. Prices
  371.  and policies current as of 12/1/94. All prices are in U.S. dollars
  372.  unless specified otherwise.
  373.  America Online, 800-827-6364 in U.S. or 1-703-448-8700
  374.  Free kit, 10 hour free trial offer, $9.95 per month includes 5 hours
  375.  free time, $3.50 for each additional hour.
  376.  (keyword: CLARIS)
  377.  CompuServe, 800-848-8199 or 1-614-529-1349 in the U.S., (+44)
  378.  272-760-681  in Europe, 9-9 London time
  379.  Kit is  $25 and includes  $25 usage credit for first month. The $25 is
  380.  refundable if you discontinue during the first month. Subscription price
  381.  is $8.95 per month for access to basic services, with extended services
  382.  being $9.60 per hour at 2400 baud and $16 per hour at 9600.
  383.  (keyword: GO CLARIS)
  384.  eWorld, 800-775-4556 or 1-408-974-1236
  385.  Free software kit offer until 12/31/94. Offer good in U.S. only. Monthly
  386.  fee of $8.95 which includes 2 hours of use during non-prime time (6 PM
  387.  to 6 AM local time). Each additional hour is charged at $4.95 per hour.
  388.  An additional $2.95 per hour will be charged for all prime-time usage (6
  389.  AM to 6 PM local time).
  390.  (go to shortcut: CLARIS)
  391.  AppleLink, 800-877-8221
  392.  Kit is $70. Monthly minimum charge of $12. Connect charges at 2400 baud
  393.  are $12 per hour plus a 5.5 cent surcharge for every 1000 keystrokes.
  394.  Rates for 9600 baud are $37 hour with no surcharge.
  395.  (Third Parties: Third Parties A-G: Claris)
  396.  Claris Solutions Alliance:
  397.  Membership $249 per year. "Our goal is to provide consistent,
  398.  industry-leading marketing service and support to third-parties creating
  399.  new Windows and Macintosh solutions that address the specific business
  400.  productivity needs of users."  Contact Claris, P.O. Box 58168, MS C-22,
  401.  Santa Clara, CA 95052
  402.     800-800-8954 (FAX),
  403.     408-727-8227 (Customer Assistance)
  404.     408-727-9054 Technical Support Macintosh
  405.     408-727-9004 Technical Support Windows
  406.  Directory from Claris Customer Assistance (408/727-8227).  This is a
  407.  150+ page book listing Consultants, Trainers and Custom Developers of
  408.  Claris Products.
  409.    
  410. 1.6   Books
  411.  
  412.  Various books are available, from beginner to advanced users.
  413.  See www.claris.com
  414.  Stephen Cobb, Chey Romfo: 'The Stephen Cobb User's Guide to FileMaker'.
  415.  Windcrest (Blue Ridge Summit, PA)
  416.  Rich Coulombre, Jonathan Price: 'FileMaker Pro 2.0 for Macintosh'.
  417.  Addison Wesley Publishing Company, 1993,
  418.  ISBN 62212-2, Pages/Price unknown
  419.  Guy Kawasaki: 'Database 101'. Peachpit Press Inc., 1991
  420.  Maria L. Langer: 'FileMaker Pro 2.0 for the Mac in a Nutshell'.
  421.  SYBEX,1993
  422.  Charles Rubin: 'The Macintosh Bible   Guide to FileMaker Pro'. Peachpit
  423.  Press Inc., 1993
  424.  Charles Rubin: 'The Macintosh Bible   Guide to FileMaker Pro 2.0'.
  425.  Peachpit Press Inc., 1993
  426.  Michael Singer: 'Database Design with FileMaker Pro'. John Wiley & Sons,
  427.  ISBN 0-471-02022-2, $ 24.95 (3/94), Pages unknown
  428.  Barrie Sosinsky: 'Using FileMaker Pro 2.0 for the Mac'. Que Corp, 1992
  429.  Barrie Sosinsky: 'Using FileMaker Pro 2.0 for Windows'
  430.  Books for FMP 3.0:
  431.  C. Ann Brown: 'FileMaker Pro 3 for Macintosh: Visual QuickStart Guide'.
  432.  Peachpit Press, 1996/04, ISBN 0-201-88357-0 (1995/10), 256 pages, $16.95
  433.  Don Crabb, Jeff Gagne: 'The Guide to FileMaker Pro'. Hayden Books
  434.  Alex Kennedy: 'Filemaker Pro 3.0'. Addison Wesley, 1996/04, ISBN
  435.  0-201-87762-7 (1995/12), 512 pages, $39.95
  436.  Tom Maremaa: 'FileMaker Pro for Macs for Dummies', IDG Books Worldwide,
  437.  Inc., 1995/12, ISBN 1-56884-906-0 (1995/03)
  438.  Chris Moyer: 'Special Edition Using FileMaker Pro', Que, 1996/01, ISBN
  439.  0-7897-0662-8 (1995/11), $34.99 (Retail Price)
  440.  Steven A. Schwartz / MacWorld: 'FileMaker Pro 3.0 for Mac', 2nd Edition.
  441.  IDG Books Worldwide, 1996/03, ISBN 1-56884-728-9 (1995/09), $34.99
  442.  Charles Rubin: 'The Macintosh Bible   Guide to FileMaker Pro 3.0'. 3rd
  443.  ed., 1996/04, Peachpit Press, ISBN 0-201-88356-2 (1995/10), 496 pages,
  444.  $24.95
  445.  Course Material:
  446.  John Latrash: 'Claris FileMaker Pro 3.0 Macintosh and Windows 95: Quick
  447.  Course'. South-Western Educational Publishing
  448.  Newsletters:
  449.  'The FileMaker Report', published 10 x a year,
  450.  Elk Horn Publishing / P.O. Box 1300 / Freedom / CA  95019  / Phone (408)
  451.  726-1232 / Fax (408) 726-1233
  452.  16 pages $65 per year
  453.  'Inside FileMaker Pro', published monthly
  454.  The Cobb Group / P.O. Box 35160 / 9420 Bunsen Pkwy, Ste. 300 /
  455.  Louisville, KY  40220 / 40232-9719 / Phone: 800-223-8720
  456.  12 pages $39 per year
  457.  The ISO Magazine
  458.  <http://www.kudosnet.com/ISO/ISOmain.html>
  459.  FMPro online user magazine / ISO <ISOeZine@aol.com>
  460.  First year subscriptions are free
  461.  Audio and Video Cassettes:
  462.  check www.claris.com
  463.  
  464. ------------------------------
  465.  
  466. Subject: 2  Version History
  467.    
  468. 2.1   What is the current version of FMPro for Macintosh
  469.  
  470.  FMPro 3.0:
  471.  Macintosh: 3.0v3 (US), other national releases
  472.  Windows95: 3.0
  473.  Win3.1: ?
  474.  Windows3.1: announced for June 1996
  475.  (source: BUSINESS WIRE--April 23, 1996, from Steve Dell
  476.  <stevedell@EARTHLINK.NET>)
  477.  trial software:
  478.  <ftp://ftp.claris.com//pub/USA-Macintosh/Trial_Software/FileMakerPro3.0v
  479.  2Trial.sea.hqx>
  480.  <ftp://ftp.claris.com//pub/USA-Windows/Trial_Software/fmtrial.exe>
  481.  updaters from 3.0v1
  482.  <ftp://ftp.claris.com//pub/USA-Macintosh/Updaters/>
  483.  FMPro 2.1:
  484.  US: 2.1v3
  485.  trial software:
  486.  <ftp://ftp.claris.com//pub/USA-Macintosh/Trial_Software/FileMakerPro2.1v
  487.  3.sea.hqx>
  488.  updater from 2.0:
  489.  <ftp://ftp.claris.com//pub/USA-Macintosh/Updaters/FileMakerPro2.1v3.sea.
  490.  hqx>
  491.  <ftp://ftp.claris.com//pub/USA-Windows/Updaters/fmup21v3.exe>
  492.  and on info-mac mirrors
  493.  German: 2.1Dv3
  494.  updater from 2.0 available on www.claris.com
  495.    
  496. 2.2   Is Filemaker Pro relational
  497.  
  498.  FMPro 3.0: Yes. It supports many-to-one and one-to-many relations.
  499.  Many-to-many relations are possible by a manual table.
  500.  As a personal statement: I doubt that FMP fulfills every definition of a
  501.  relational database. My experience is that it supports various statical
  502.  (manual) relations and works as a kind of "bidirectional lookup". It
  503.  lacks dynamic relations based on other criteria such as a field or file
  504.  name.
  505.  FMPro 2.1 has some features, e.g. lookup fields, that may perform some
  506.  relational tasks.
  507.    
  508. 2.3   When will FMPro 3.0 be released
  509.  
  510.  It's available since 18/12/1995.
  511.  Pricing is:
  512.  Mac     $199
  513.  Win(95) $199
  514.  upgrade $99
  515.  The runtime version should be available for CSA members from March '96
  516.  on.
  517.    
  518. 2.4   Features of FMPro 3.0
  519.  
  520.  Relational capabilities:
  521.  * Supports one-to-many, and many-to-one relations
  522.  * many-to-many relations can be masked to one-to many relations
  523.  * Relations are defined in a define relations dialog box. Where you
  524.  relate the current file to another, and then build relationships from
  525.  field to field.
  526.  * Has a portal tool that let you view data from one file in another
  527.  files layouts. You define a portal area then drag an external field into
  528.  it.
  529.  * Lookup functions remain.
  530.  User Interface:
  531.  * Button drawing and defining is done in one step.
  532.  * Buttons in 3D-look
  533.  * Layouts can be hidden
  534.  * Possibility to toggle window refresh on and off
  535.  * Fixed paper margins
  536.  * Redirect Cancel command
  537.  Scripting
  538.  * If..then..else (conditional) statements in scripts
  539.  * Loops
  540.  * Support for relational requirements
  541.  * Improved halt or pause of scripts (while other scripts execute)
  542.  * Replace field by results of a calculation (Set field, Paste result)
  543.  * Copy record, Copy all records to clipboard as tab-delimited text
  544.  * No Paste of multiple fields in one step
  545.  * Scroll window instead of (Home, Page Up, etc.) with freeze or zoom
  546.  percentage
  547.  * Comment lines within scripts
  548.  * Perform on exit script
  549.  * In support of new features:
  550.    Revert Record/Request, Exit Record/Request,
  551.    Toggle Text Ruler, Set Use System Formats, Recover,
  552.    Show Message, Beep,
  553.    Change Password, Set Multi-User
  554.    Flush Cache to Disk (Save changes)
  555.  * PlainTalk support (Mac only)
  556.  * Better support for Apple events and Applescript (Mac only)
  557.  * Send/execute of complete AppleScripts (Mac only)
  558.  * Object Linking and Embedding OLE: insert, update (Windows only)
  559.  * Dynamic Data Exchange DDE: send (Windows only)
  560.  * Send mail (Windows only)
  561.  * No copy/paste of scripts/scriptsteps
  562.  Calculations
  563.  * New functions:
  564.    LeftWords, MiddleWords, RightWords
  565.    PatternCount, WordCount
  566.    Substitute, Occurence
  567.    GetRepetition
  568.    GetSummary
  569.    DayOfWeek
  570.  * About 30 status messages
  571.  * Loops: Loop...ExitLoop
  572.  * Field verification (validation) by calculations
  573.  * User-specified error message
  574.  * Autoenter of data via calculations (entered data is editable)
  575.  * Global fields, entered only once
  576.  * Custom date format
  577.  Data storage and exchange
  578.  * file size maximum expanded to 2 gigabytes (previously 32MB)
  579.  * ability to open up to 50 files simultaneously (previously 16 files)
  580.  * Conversion from FMP 2.1 by simple "point and click" process
  581.  * Indexing of fields only on demand
  582.  * Display index by word or field
  583.  * Database opens with default password
  584.  * Drag and drop text from one field to another and to other applications
  585.  * Export functions are improved, making it easier to select and arrange
  586.  fields for export
  587.  * Automatic generation of a new database from text files, spreadsheets,
  588.  database files
  589.  * The TCP/IP support will let you network cross-platform over LAN's and
  590.  the Internet.
  591.  * Phone dialing through speaker or modem
  592.  * The file limit will be bigger and it can support 50 simultaneous
  593.  users.
  594.  * Containers instead of Picture/Sound, additionally for movies and OLE
  595.  (Windows 95). Data is held internal or as file reference
  596.  * No SQL support by FMP itself, possible via third party products
  597.  * Only AppleScript as interface (Mac only)
  598.  Text editing
  599.  * Mail Merge within FMP (more powerful than sliding objects)
  600.  * Individual paragraph formats
  601.  * Text with Tabs and fill characters
  602.  * Rulers within text fields
  603.  * Text formatting tool bar
  604.  * with font, size, alignment, tab stops, character styles
  605.  * Vertical adjustment of text within field (Top, bottom, centered)
  606.  * Field contents can be included in text with markers
  607.  * No hyphenation or soft-hyphens
  608.  * Replace data based on calculation (even calculations on itself)
  609.  * Revert record as undo on complete record
  610.  * Value listings improved, e.g. as list from related fields
  611.  System Requirements Macintosh:
  612.  * System 7.0 or later, recommended 7.1 or later
  613.  * CD-ROM  or 1.4 MB disk drive
  614.  * 4 MB RAM, recommended 8 MB for 680X0 Macintosh, required 8 MB by Power
  615.  Macintosh
  616.  System Requirements Windows 95:
  617.  * Intel compatible PC
  618.  * Windows 95 or Windows NT 3.51 or later
  619.  * 8 MB RAM, recommended 16 MB for Windows NT
  620.  * CD-ROM or 3.5" disk drive
  621.  ("Claris will consider adding support for Windows 3.1 for a future
  622.  version of FileMaker Pro [...] based on the speed of migration to
  623.  Windows 95..."; MS Access also doesn't support Windows 3.1)
  624.  (From a Claris press release, 24/08/95)
  625.    
  626. 2.5   FileMaker Pro Server
  627.  
  628.  Q. What exactly is FileMaker Pro Server 2.1?
  629.  A. FileMaker Pro Server now supports the Novell IPX/SPX network protocol
  630.  (using the Novell MacIPX system extension) in addition to the AppleTalk
  631.  protocol supported in the previous version of FileMaker Pro Server.
  632.  FileMaker Pro Server also introduces multi-protocol support for
  633.  cross-platform workgroups.
  634.  (From a Claris press release, 24/08/95)
  635.  >> Further information in this press release, dated 24/08/95, is
  636.  available.
  637.  >> Is anyone willing to compose an appropriate description? See:
  638.  <ftp://ftp.th-darmstadt.de//pub/database/filemaker-pro/New FM Pro 3
  639.  Info>
  640.  keywords: multi-protocol, performance improvements of FMP Server 2.1,
  641.  68K/PPC machines only, upgrad price $99 (after 3/95 free), up to 100
  642.  users may now open up to 16 files
  643.  
  644. ------------------------------
  645.  
  646. Subject: 3  FMPro 3.0
  647.    
  648. 3.1   Think relational
  649.  
  650.  FileMaker Pro 3.0 is a further improvement of the simple, flat database
  651.  concept of a table.
  652.  It supports "relational capabilities". What's this? If you knew FMPro
  653.  2.1, it's a kind of editable, bidirectional lookup.
  654.  A relation is a kind of static connection when a certain field of a
  655.  record of a database matches its counterpart somewhere else. Based on
  656.  this relation you may get the contents of other related fields to this
  657.  matching record.
  658.  The basic relation is from one field to another one, a one-to-one
  659.  relation. Example: a relation from a customer database to get related
  660.  data from an address database, based on the matching customer id.
  661.  You may have multiple records that share the same information - this is
  662.  a many-to-one relation. Here the concept of relations demonstrates its
  663.  major power: you change the information only once, and immediately it
  664.  becomes available for all other records that hold a relation to this
  665.  information. Example: A customer ordered multiple times. His address is
  666.  still the same.
  667.  Some definitions on database concepts (by demey@hgins.uia.ac.be (Hendrik
  668.  Demey)):
  669.  * A relationship: a "virtual" link between 2 different databases (based
  670.  on a link between 2 *identical* fields in these 2 databases), allowing
  671.  information from database 1 (the parent) to be displayed in database 2
  672.  (the child). The relationship is based on an exact match between two
  673.  fields in the parent and child database. The trigger field is also
  674.  called a "primary key". When a child database looks at information from
  675.  its parent, it will display this "primary key". Some databases are
  676.  constructed to display information from several "parents", in that case
  677.  all the "primary keys" are called "foreign keys", because they uniquely
  678.  identify information in other databases.
  679.  * A related field: Information in a related field exists only in another
  680.  (the parent) database, and not in the database in which this field is
  681.  being looked at (the child). Related fields are represented by their
  682.  name being prerended by a double colon (::related_field_name). If You
  683.  try to export all the info of a certain record to a tab delimited file,
  684.  starting from a database with one or more related fields, based on one
  685.  or more relationships, the info from the related field is not exported
  686.  to this text file, as it does not exist in this specific child database,
  687.  but only in its related parent.
  688.  Comment: you may include related records for export. This will include
  689.  EVERY matching record! Example:
  690.  Field 1, Related::Field 2 will export as
  691.  Key1,"The first related field"
  692.  ,"Another related field, matching to Key1, too"
  693.  * A portal is a new kind of lay-out tool in FM3, by which You create a
  694.  "window" inside the child database enabling You to view the related
  695.  fields from a parent database. In a one to many relationship (e.g. a
  696.  database of a school, with the parent a list of all pupils, the class
  697.  they attend and their home address; the child is a database of all
  698.  classes. Selecting a specific class will give a view of all pupil
  699.  records attending this specific class), this portal will present a list
  700.  view of all related records, based on a specific relationship. A
  701.  specific portal can only be based on *only one* relationship. In a
  702.  datase, several relationships can be created to different (or the same,
  703.  even the same child) files, therefore, more than one different portals
  704.  can be created. If specifically enabled, it is possible to create new
  705.  records with new information (e.g. a new pupil entering a certain class)
  706.  in a portal, that will be posted into the parent database. Again, if
  707.  specifically enabled, records viewed through a portal can be deleted
  708.  from their parent, while being looked at from the child database.
  709.  * A lookup physically copies information from the parent database, again
  710.  based on a specific relationships (this is different in FM3 from earlies
  711.  versions!). Exporting a tab delimited text file from a record contains
  712.  also the info carried over from a related file through a lookup field.
  713.  Information in a lookup field is static. Once copied over from the
  714.  parent database, the information inside this lookupfield stays
  715.  unchanged, even if the content of the parent field in the parent databse
  716.  is changed in the meantime. Only if specifically asked by a relookup
  717.  command, or by changing the information in the trigger field (the one on
  718.  which the relationship of this lookup is based) will a new relookup be
  719.  performed by FM3 and the content of the lookup field be renewed/matched
  720.  to the parent. Existing contents will get overwritten.
  721.  * Pros and cons of related fields/portals versus lookup fields:
  722.  - Information in a portal or related fields is dynamicaly updated, each
  723.  time the information in the parent database is changed. Lookup fields
  724.  are static.
  725.  - Related databases are smaller than databases based on lookup fields.
  726.  - Related databases present consistent information.
  727.  - Lookups present static information.
  728.  Take a set of invoices and the tax amount (a percentage) based on a
  729.  related field. If You change this tax level, all invoices (included
  730.  older ones) will represent this new value, and all invoices (including
  731.  the older ones) will be recalculated. With a tax based on a lookup
  732.  field, the information in the older invoices remains unchanged, and
  733.  therefore correct. Only newly created invoices will be based on the new
  734.  tax level. (Insofar a relookup order is not being issue!!!)
  735.  - In a lookup field, an exact match is not necesssary; they are more
  736.  flexible regarding the match field to copy next higher or lower matching
  737.  values. In a relationship an exact match is an absolute necessity in
  738.  order to obtain related records. The dialog box of the lookup definition
  739.  contains 4 radio buttons, enabling the user to define an exact match,
  740.  copy an item lower or higher than, or put up a dialog box with a
  741.  message.
  742.  * Types of relationships:
  743.  - One-to-one: only one record corresponds to a certain trigger.
  744.  Information based on a one-to-one relation can easily be entered in the
  745.  same database, in one record.
  746.  - One-to-many: one record in the parent corresponds with multiple
  747.  records in the child (or vice versa). This kind of information is
  748.  represented on the "layout" of an FM3 database by a related field (for a
  749.  many-to-one) or a portal (for a one-to-many).
  750.  - Many-to-many: several one-to-many relationships exist at the same
  751.  moment, and between the same groups.
  752.    
  753. 3.1.1  Many to many relations (m:n)
  754.  
  755.  There are multiple problems on defining many-to-many / m:n relations. FMP's solution is
  756.  not to support them directly. However, you may use them by mapping a m:n relation
  757.  manually down to m:1 and 1:n. For that purpose you may have to create a separate file.
  758.  Example: There's a nice learning example with multiple teachers and pupils. A teacher may
  759.  have different pupils, a pupil several teachers.
  760.  Teacher database              M:N database        Pupil database
  761.  Key, Teacher Name    Teacher key, Pupil key       Key, Name
  762.  T1,  AAA                      T1, P1              P1,  ZZZ
  763.  T2,  BBB                      T1, P2              P2,  ZZX
  764.  T3,  CCC                      T2, P2              P3,  ZZY
  765.  Now you may get every pupil taught by teacher AAA, or any teacher of pupil ZZX.
  766.  Workaround:
  767.  Relations within FileMaker Pro are based on indexed lines. A line is composed of all
  768.  characters up to the end of line (in fact it's an end of paragraph, entered by <return> or the
  769.  full, last line) with a maximum of 60 characters; from the 61st character and up is not
  770.  used. Only text fields should hold return symbols. You may use them e.g. for a one-to-may
  771.  key or a many-to-one key, and thus as well for a many-to-many key.
  772.  Example:
  773.  The teacher database may hold the record and fields
  774.  Teacher: T1, Pupils: "P1<return>P2"
  775.  This will relate to both pupils ZZZ (P1) and ZZX (P2)
  776.  Within the Pupil database you may use
  777.  Pupil: P1, Teachers: "T1<return>T2"
  778.  Now you may find from P1 all other pupils of his class of teacher T1.
  779.    
  780. 3.2   What are portals?
  781.  
  782.  Q: What are portals?
  783.  A: Imagine them as a window to look through at datas within another
  784.  database.
  785.  Actually, there are some limitations:
  786.  * In a portal, records are displayed in their order of creation only.
  787.  * Deleting portals should be done very carefully.
  788.  If you delete a record, and permit deletion of related records, you may
  789.  remove data that is still used for other records.
  790.  If you do not use deletions properly, you may delete by mistake actual
  791.  or related records.
  792.  A related record may contain more data than what you see within the
  793.  portal.
  794.  But here the Pros:
  795.  They are fast and flexible!
  796.  You may use them to navigate around quickly by the "Go to related
  797.  record" script command.
  798.  Additional note on sliding portals: From FMP 3.0v3 on fields must be
  799.  perfectly enclosed to slide properly.
  800.    
  801. 3.2.1  Sorting Portal Records
  802.  
  803.  Portals have no option to sort, but show the records in order of
  804.  creation.
  805.  There are various workarounds:
  806.  - For complete databases this will force a permanent, resorted order:
  807.  * sort the database in question in correct order,
  808.  * create a clone,
  809.  * import to the clone
  810.  - For small sets of records
  811.  1) Flag the records in the portal
  812.  2) Sort the records in the many file (contains the portal records)
  813.  3) Duplicate the sorted records (in creation order the duplicates are
  814.  already sorted)
  815.  4) Delete the flagged records
  816.  5) View the records in the one file through the portal
  817.  (reported by Kirk Bowman <bowman@ONRAMP.NET>)
  818.  Example from Ted Shapiro, NY:
  819.  ----------
  820.  By the way, here's a not too horrible method for sorting the contents of
  821.  a portal, aka the SORTAL (tm):
  822.  - Many students have registered for one class.
  823.  - Each class has a unique ID#.
  824.  - In the CLASSES file there is a portal to view students in the related
  825.  file ROSTERS.
  826.  In CLASSES -- script: SORTAL Part 1
  827.    Freeze Window
  828.    Copy Class ID#
  829.    Perform script (External: ROSTERS "SORTAL Part 2")
  830.    Refresh Window
  831.  In ROSTERS -- script: SORTAL Part 2
  832.    Perform Script (Find & Flag Class ID)
  833.    Perform Script (Sort StudentLastName)
  834.    Perform Script (DupeLoop)
  835.    Perform Script (Find Flagged & Delete)
  836.  script: Find & Flag Class ID
  837.    Enter Find Mode
  838.    Paste (Select, "Class ID")
  839.    Perform Find
  840.    Replace (No Dialog, "Flag", "1")
  841.  script: Sort StudentLastName
  842.    Sort (Restore, no dialog)
  843.  script: DupeLoop
  844.    Go to Record/Request (First)
  845.    Loop
  846.     Duplicate Record/Request
  847.     Clear (Select, "Flag")
  848.     Go to Record/Request (Exit after last, Next)
  849.    End Loop
  850.  script: Find Flagged & Delete
  851.    Perform Find (Restore) --- this is find Flag=1
  852.    Delete All Records (No Dialog)
  853.  ----
  854.  Another solution is to go via a separate database. Example: database 1
  855.  holds field A as trigger for portal B. A script finds all matching
  856.  values in database 3 and sorts them properly. Then the script lets
  857.  import all relevant portal data to a special database 2 that only holds
  858.  e.g. the portal data. The portal then gets all data from this portal
  859.  database 2 to database 1.
  860.    
  861. 3.3   Bug & Wish List
  862.  
  863.  Send suggestions and bug reports to www.claris.com on their suggestion
  864.  page.
  865.  http://www2.claris.com/forms/suggestion.html "Suggestions & Bug reports"
  866.  "James Fortier" <jim40er@halcyon.com> maintains a list that may be
  867.  available on
  868.  http://www.ecxs.com/filemaker/ftp/FixesFeaturesFolder.sea.hqx
  869.    
  870. 3.4   Relational Examples
  871.  
  872.  This section will describe unusual solutions for relations to
  873.  demonstrate the capabilities. Please forward your examples for
  874.  inclusion!
  875.    
  876. 3.4.1  Self Joining list
  877.  
  878.  In case you want to see a portal of records that match a valid search
  879.  criterion only:
  880.  "Now here's something else that's way cool about Self-joins.  If you
  881.  want to generate aggregate data on only a subset of your database, you
  882.  can do so in the following manner:
  883.  1) Create a text field called, say, FoundSet.
  884.  2) Create a calculation field called, say, FoundSetIndex as a
  885.  concatenation of YourKeyValue (such as Customer ID, Client ID, or
  886.  whatever) & FoundSet.  Make the result text.
  887.  3) Create a self-relation on FoundSetIndex, i.e., have the same file
  888.  point back to itself.
  889.  4) Define your aggregate function to be dependent on the related
  890.  (self-joined) field (this is important).
  891.  5) Find the records you want to work with
  892.  6) Go to the FoundSet field and replace the value in your current found
  893.  set with something like an "F".  This makes only the current found set
  894.  records create the self-join.
  895.  7) Stand back and view in amazement the power of FMP3.
  896.  PS Don't forget to clear the value in the FoundSet field before you exit
  897.  the script."
  898.  (from Jim Burd <burdman@cl.k12.md.us>)
  899.  <value sensitive lists under construction, currently about 8
  900.  alternatives to verify and classify>
  901.    
  902. 3.5   Globals
  903.  
  904.  Globals are helpful im many ways.
  905.  They may hold variables, such as
  906.  - a predefined constant value that you use throughout your database
  907.  This may be e.g. a user-defined delimiter for phone numbers, a certain
  908.  key word, a signature, logo, warning etc.
  909.  - a variable value, such as the layout number, a buffer for some
  910.  calculation, replace, set field, copy or paste script step etc.
  911.  Globals are not as global as you might expect. When a database is shared
  912.  between multiple users, every user may modify the global value on his
  913.  own, although he may not be able to save this modified value.
  914.  Be warned that when you clone a database, the value of a global field
  915.  will be removed as well!
  916.  Global fields may be repeating fields. Thus you may use e.g. a
  917.  calculation or script to extract one of multiple choices for variables
  918.  or even pictures.
  919.  Global fields may not get indexed. This may look obvious, but results in
  920.  some drawbacks. A major one is visible for relations: They only may be
  921.  built on indexed values. But as soon as a calculation includes an
  922.  unindexed value, such as another unstored calculation or global field,
  923.  it may not get indexed any more.
  924.  BTW you get a warning when you build a relation on a global field
  925.  itself, but it still is possible. A suitable example is e.g. a dummy
  926.  relation (global field one to related field one, both contain the value
  927.  "1") to a shared database in order to use the same - maybe global -
  928.  information within different databases.
  929.  Any global field within another database may be accessed by any
  930.  relation, regardless how nonsensical or matching this relationship is.
  931.  "did you know you can still modify globals:
  932.   - even if the file is "locked" in the finder
  933.   - even if the file is on a locked disk/volume
  934.   - even if the access privileges are set to disallow edits
  935.  The only way to prevent mods are to set the access privileges for that
  936.  field to be read-only.
  937.  Interestingly, the first two attempts above allow changes which don't
  938.  get saved to disk, but the third does get saved - which could be a
  939.  "gotcha" if you assume otherwise."
  940.  (by Eric Scheid <ironclad@planet.net.au>)
  941.  
  942. ------------------------------
  943.  
  944. Subject: 4  Field Formats and Index Values
  945.    
  946. 4.1   What do I need index values for?
  947.  
  948.  Most operations are based not on the value typed by hand, but on an
  949.  indexed value that was derived from the actually typed value.
  950.  Rapid find commands, comparisons, lookups and calculations all are
  951.  triggered on the index value.
  952.  The index of a field can be displayed by cmd-I. It is a list of all
  953.  indexed values, sorted in alphabetical order.
  954.  The index can be used to select and paste previously entered values
  955.  rapidly.
  956.  Index also works on check boxes and radio buttons - as cut, copy and
  957.  paste do.
  958.  Indexing works different on various field formats.
  959.  Indexing is not done immediately. At least after selecting the next
  960.  record, the index should get updated properly.
  961.  Due to conversions, bugs or system crashes, the index may get corrupted.
  962.  In this case find and lookup won't work properly. Importing in a clone
  963.  of the database will force the construction of a new index.
  964.  Calculations take the indexed value for comparisons. Such "A" = "a" is
  965.  true. If you want to use an exact comparsion, you may use the Exact
  966.  function. Exact("σ", "a") then will return false.
  967.    
  968. 4.2   Lookups
  969.  
  970.  Lookups are based on the indexed values of all records. It will copy a
  971.  value from the first, matching record that it finds.
  972.  For FMP2.1 lookups are based on matching words:
  973.  Example:
  974.  Lookup File "main", Current File "main"
  975.  Copy the contents of "Field1" into the field "Lookup_Field"
  976.  when the value in "Field2" matches a new entry in "Field2"
  977.  This will cause a self lookup, pasting a matching value.
  978.  Text Field2 contains "A B" (record 1) and "B A" (record 2). Both fields
  979.  are indexed as "A " and "B ". Creating a new record "A B" will copy
  980.  Field1 from Record "A B" to the Lookup_Field. Creating a new record "B
  981.  A" will copy from Record "A B", too, since the triggers "A " and "B "
  982.  are the same.
  983.  A lookup on "A" or "B" may match an existing record as well, since all
  984.  words of the actual record ar matched. This may even work on incomplete
  985.  words.
  986.  If you want to copy from exact matching values, use the non-separating
  987.  delimiter option-space. "B<option-space>A" gets indexed as it is. Words
  988.  only get indexed up to 20 characters!
  989.  Lookups will be used only after you entered new data in the trigger
  990.  field (Field1 in example).
  991.  A relookup on all selected records can be forced by selecting the lookup
  992.  trigger field and choosing Relookup from the menu Edit.
  993.  Lookups don't work based on multiple trigger fields. Concatenating
  994.  multiple fields by a calculation and triggering on the calculation is
  995.  possible.
  996.  Relookups on calculations don't work by selecting the calculation field,
  997.  but by selecting any of the fields it is based on.
  998.  For FMP3 lookups are based on exactly matching lines. They use the same
  999.  mechanism as used for relations - check the matching section.
  1000.    
  1001. 4.3   Text formats and Index basics
  1002.  
  1003.  For an introduction, see the manual "working with Information in
  1004.  Records" (Section 4), "Using the Index" (4-9):
  1005.  - "Each word in a text field is indexed separately so you can later find
  1006.  the records that contain any word you've typed"
  1007.  - "Punctuation and special characters aren't indexed"
  1008.  - the first character of a word is converted to Upper Case
  1009.  - all other characters will get lower case
  1010.  - an additional blank character gets appended at the end of the Word
  1011.  Example: "this wordTest" is indexed as "This ", "Wordtest "
  1012.  The ordinary range for characters is [a..z], [A..Z]. The numbers [0..9]
  1013.  get treated as usual. The non-separating blank "option-space" is treated
  1014.  like an ordinary character, thus preventing the separation of words.
  1015.  Some unusual behaviors I found are (undocumented - don't rely on them):
  1016.  - Indexed words are limited to the first 20 characters! Since find
  1017.  requests and lookups are based on the index, take care of this
  1018.  limitation!
  1019.  - Text following an underscore won't get indexed for FMP2.1! "Text_A"
  1020.  and "Text_B" both get indexed as "Text ". Don't use the underscore as
  1021.  non-separating delimiter!
  1022.  - Some special 8-bit characters get translated! Most of the accented
  1023.  characters are translated to plain characters. Some special characters
  1024.  get translated to two character combinations, e.g. the German Umlaute
  1025.  ae, oe, ue and ss. The ligatures fi and fl get lost for FMP2.1!
  1026.  - Between characters &, -, / and ' are handled properly, otherwise
  1027.  ignored.
  1028.  - Between numbers ,, . and : are handled properly, otherwise ignored.
  1029.  - Other characters get ignored. All ignored characters work like a
  1030.  space, for index display, calculation, find and word delimiter.
  1031.  This behavior belongs to text fields. The text limit is 64k, with any
  1032.  number of lines. For other field types the behavior may be different, as
  1033.  described below.
  1034.  FMPro 3 takes an almost identical mechanism for words, but builds its
  1035.  index on lines with a maximum of 60 characters instead.
  1036.    
  1037. 4.3.1  Character translation for indexed values
  1038.  
  1039.  Some of the following 8-bit characters might get lost while mailing.
  1040.  Messages posted to newsgroups will be converted to the ISO 8859-1
  1041.  (Latin) character set (by YA-NewsWatcher 2.0.29 or better). Messages
  1042.  mailed will get translated as Quoted Printable (MIME) (by Eudora 1.5.3
  1043.  or better). Please don't complain about messed up characters in this
  1044.  subsection.
  1045.  ====== Original and Converted Character for Index (US-Version) ======
  1046.    ─  ┼  ╟  ╔  ╤  ╓  ▄  ß  α  Γ  Σ  π  σ  τ  Θ  Φ  Ω  δ
  1047.    A  A  C  E  N  Oe Ue a  a  a  ae a  a  c  e  e  e  e
  1048.    φ  ∞  ε  ∩  ±  ≤  ≥  ⌠  ÷  ⌡  ·  ∙  √  ⁿ
  1049.    i  i  i  i  n  o  o  o  oe o  u  u  u  ue
  1050.    ▀
  1051.    ss
  1052.    ╞  ╪
  1053.    Ae O
  1054.    ¬  ║
  1055.    a  o
  1056.    µ  °
  1057.    oe o
  1058.    └  ├  ╒  æ  ª
  1059.    A  A  O  Oe oe
  1060.    ' (upper apostrophe = ANSI 213 = 0xD5)
  1061.    '
  1062.    ▐  ■ ligatures fi and fl get lost
  1063.  ======================================================================
  1064.  Modifications for FMPro 3.0:
  1065.  ====== Original and Converted Character for Index (US-Version) ======
  1066.    ' '
  1067.    ' '
  1068.    ▐  ■
  1069.    fi fl
  1070.    ======================================================================
  1071.    
  1072. 4.4   Printing index fields
  1073.  
  1074.  The Index itself is not printable. Workarounds are:
  1075.  * export all text, then sort and remove the duplicates.
  1076.  "It's easy to do on an UNIX mainframe (sort -u flatfile) but takes some
  1077.  time [...] It will not return the real index but the contents of a
  1078.  field." (from Patrick Delges <pdelges@SEGI.ULG.AC.BE>)
  1079.  * export all text, open a text editor with spelling capabilities and
  1080.  create a dictionary with all words,
  1081.  * export all text, convert all blanks to Carriage Returns, thus creating
  1082.  a list of all words, import, use strategy to remove all duplicates,
  1083.  * to print the index of a particular field, create a new layout,
  1084.  selecting the columnar report option. Select the field that you wish to
  1085.  print the index of.
  1086.  Double click on the body part and make it a sub summary when sorted on
  1087.  the field in question. Now sort the database on that field and print
  1088.  from this layout.
  1089.  (from tscott@metz.une.edu.au (Timothy Scott))
  1090.  * If you want to export just the index of the field, create a new field
  1091.  of type summary. Sort the database on the field you want to export.
  1092.  Select the field you want to export and deselect the others. Now select
  1093.  your summary field just by clicking on the field name. You now get an
  1094.  extra option "Summarise By..." - click on this button, tick to the left
  1095.  hand side of the field name, click on OK and then untick the new field
  1096.  (if you want to) that FMPro wishes to export.
  1097.  (from tscott@metz.une.edu.au (Timothy Scott))
  1098.  * Consider Print2Pict to get the contents of a print as readable text
  1099.  file.
  1100.  * A final solution to extract a table of all field contents by Excel
  1101.  Did you ever try to create an index for all fields of a FMP3 database?
  1102.  Here's a quick and dirty method that I just developped by using excel
  1103.  macros (German release 4.0)
  1104.  steps required:
  1105.  export all from fmp, e.g. tab delimited
  1106.  open for Excel, option e.g. text tab delimited
  1107.  create a macro table
  1108.  make the proper macros,
  1109.  then let it go.
  1110.  The two macros required are, as pasted from Excel,
  1111.  Extract (a)
  1112.  =AUSW─HLEN("S1")
  1113.  =ZELLEN.EINF▄GEN(1)
  1114.  =AUSW─HLEN("Z1S1")
  1115.  =FORMEL("=Z1S2")
  1116.  =AUSW─HLEN("Z2S1")
  1117.  =FORMEL("=WENN(GL─TTEN(ZS(1)) = GL─TTEN(Z(-1)S2);"""";GL─TTEN(ZS(1)))")
  1118.  =KOPIEREN()
  1119.  =AUSW─HLEN("Z1S2")
  1120.  =ENDE.AUSW─HLEN(4)
  1121.  =AUSW─HLEN("ZS(-1)")
  1122.  =AUSW─HLEN(POSTEXT(AKTIVE.ZELLE())&":Z3S1")
  1123.  =EINF▄GEN()
  1124.  Dateiname=DATEI.ZUORDNEN(1)
  1125.  =KOPIEREN("s2")
  1126.  =NEU(1)
  1127.  =EINF▄GEN()
  1128.  Dateineu=DATEI.ZUORDNEN(1)
  1129.  =GEHEZU(Z1S2)
  1130.  =R▄CKSPRUNG()
  1131.  (hm, pasting from Excel as international macro doesn't work. Maybe
  1132.  someone does request the excel macro file itself and translate it
  1133.  properly. Here's a dictionary: select = auswΣhlen, insert =
  1134.  zellen.einfⁿgen, formula = formel, copy = kopieren, reftext = postext,
  1135.  cell = zelle, active = aktive, paste = einfⁿgen, new = neu, get.document
  1136.  = datei.zuordnen. goto = gehezu, return = rⁿcksprung, trim = glΣtten,
  1137.  row = Zeile, r = z, column = Spalte, c = S, activate = aktivieren, sort
  1138.  = ordnen, edit = bearbeiten, delete = l÷schen, if = wenn,
  1139.  datei.berechnen = calculate.document, paste.special = inhalte.einfⁿgen)
  1140.  This macro creates a first column that computes its value as "" if it is
  1141.  the same as the previous one, otherwise the value itself, both related
  1142.  to the next, second column. IT REQUIRES THAT THE FIRST COLUMN OF THE
  1143.  TABLE HAS NO EMPTY CELLS AND AN ENTRY FOR EVERY RECORD.
  1144.  The second macro takes an unprocessed column, moves it to the second
  1145.  column, sorts, computes the values and appends them to a new table. You
  1146.  must place it as the second column of your macro table, otherwise the
  1147.  goto commands will fail.
  1148.  SortAndFilter (b)
  1149.  =AKTIVIEREN(Dateiname)
  1150.  =AUSW─HLEN("S3")
  1151.  =KOPIEREN()
  1152.  =AUSW─HLEN("S2")
  1153.  =EINF▄GEN()
  1154.  =ORDNEN(1;"Z1S2";1)
  1155.  =AUSW─HLEN("S3")
  1156.  =BEARBEITEN.L╓SCHEN(1)
  1157.  =WENN(Z1S2="";R▄CKSPRUNG();)
  1158.  =DATEI.BERECHNEN()
  1159.  =AUSW─HLEN("S1")
  1160.  =KOPIEREN()
  1161.  =AKTIVIEREN(Dateineu)
  1162.  =AUSW─HLEN("Z1S(1)")
  1163.  =INHALTE.EINF▄GEN(3;1;WAHR;FALSCH)
  1164.  =ORDNEN(1;AKTIVE.ZELLE();2)
  1165.  =GEHEZU(Z2S2)
  1166.  =R▄CKSPRUNG()
  1167.  As you might see, this macro shall stop on the first, blank column. You
  1168.  may force a new execution of the second script. If you assigned a proper
  1169.  name and opt-cmd abbreviation (in my case it is Name "SortAndFilter" for
  1170.  Z1S2, cmd-opt-b) the simple cmd-opt-b keystroke will let it run up to
  1171.  the next blank column.
  1172.  Now, maybe someone else can help me on the "" problem - unfortunately
  1173.  this is not empty, but sorts in front of any other value. How may I
  1174.  force it to be empty? Assigning NV() is no good, skip blank lines on
  1175.  paste.special with results only does not work, and the German docs are
  1176.  incredibly poor.
  1177.    
  1178. 4.5   Number format
  1179.  
  1180.  Entries may be up to 255 characters in only one line. Most characters
  1181.  are accepted, but only numbers will be recognized. Thus you can enter
  1182.  currency symbols, decimal points, percent symbols etc.
  1183.  The valid numbers are 0..9
  1184.  Leading "-" is recognized as minus
  1185.  , (comma) and . (dot) may be used as delimiters. The symbols are treated
  1186.  differently in international versions! In Germany "," is a decimal
  1187.  delimiter, "." marks thousands, in US it's just vice versa. FMPro seems
  1188.  to recognize the system settings.
  1189.  Yes and True are translated to 1
  1190.  No and False are translated to 0
  1191.  All other characters are just ignored, except blank and è (="...") that
  1192.  work as separators.
  1193.  No additional blank is appended to the index value. Only 122 characters
  1194.  will get indexed.
  1195.  Examples:
  1196.  "1.2 DM" is "1.2" (US) or "12" (German)
  1197.  "-3"     is "-3"
  1198.  "4-5"    is "45"
  1199.  "6è7"    is "6" and "7"
  1200.  "8 Pounds 9 Pence" is "8" and "9"
  1201.  Some less known fact is, that the internal representation will use 15
  1202.  digits only! Thus the TextToNum(of a 16 digit credit card number) will
  1203.  get rounded to 15 digits. The random function only produces 15 digit
  1204.  values.
  1205.  Counting serial numbers from
  1206.  999 999 999 999 999 will continue with
  1207.  999 999 999 999 1000 thus taking the leading part as text, increasing
  1208.  only the last part before the delimiter. This is the same usage as
  1209.  serial numbers with a leading string.
  1210.  The maximum possible serial number is "2147483647". Counting from there
  1211.  on FMP may produce "-2147483648", "--2147483647", "---2147483648".
  1212.  2147483648 equals 2^31. The possible integer range of 32 bit is
  1213.  -2147483647 ... 2147483647.
  1214.  As indicated elsewhere, 2147483647 ist the last possible number for a
  1215.  goto last record script.
  1216.  One may assume that the internal representation of numbers is either as
  1217.  32 bit integers (within the range -2^31 ... +2^31) or as 64 bit floating
  1218.  number with 54 bits mantissa (2^54 = 1.8 * 10^16, artificial limit at
  1219.  10^16 - 1), one bit sign and maximum 9 bits exponent for a 64 bits
  1220.  representation. A typical size of 32 bit CPUs for the data type floating
  1221.  double (64 bits) is 2.2 * 10^-308 to 1.7 * 10^308 (plus and minus, 15
  1222.  digits precission)
  1223.    
  1224. 4.6   Date format
  1225.  
  1226.  Entries may be only one line long.
  1227.  The date format depends on the system settings. Possibilities are
  1228.  day/month/year, month/day/year and year/month/date.
  1229.  For further explanations the German format DD.MM.YYYY is used.
  1230.  Input may be any valid one to four digit number, from x.x.x to
  1231.  xx.xx.xxxx. The valid range is from 01.01.0001 to 31.12.3000.
  1232.  Any single non-numerical character may be used as delimiter.
  1233.  If the year is omitted, the actual year will be used. Taking only two
  1234.  digit years should take the actual century.
  1235.  Examples:
  1236.  "1.1.1"   is "01.01.0001"
  1237.  "29.2.94" is "29.02.94"
  1238.  "1-4+04"  is "01.04.04"
  1239.  "1-4"     is "01.04.95"
  1240.  Some more words on the actual date format: The date is stored similar to
  1241.  a numerical value. Calculations on dates will work like those on
  1242.  numerical values. Conversions are done automatically but may work
  1243.  different than you might expect! Take care and it will be very powerful.
  1244.  The date with the number 1 is "01.01.0001" although our calendar didn't
  1245.  exist at that time, but only since the Gregorian calendar was introduced
  1246.  today      728 460 is "16.06.1995"
  1247.  maximum  1 095 727 is "31.12.3000"
  1248.  next higher values might be displayed as "?" and won't get indexed, but
  1249.  e.g. 1 000 000 000 is "04.01.*0,1" as date
  1250.    
  1251. 4.7   Time format
  1252.  
  1253.  Although various output formats are possible, the input is limited to
  1254.  numerical values and the colon as delimiter.
  1255.  AM/PM is available for 12-hour formats.
  1256.  Additional time information is allowed, depending on your system
  1257.  settings. Example: while typing, it was "15:48:23 Uhr", indexed as
  1258.  "15:48:23"
  1259.  Input format is hours/minutes/seconds Input may be from "x:xx" to
  1260.  "xx:xx:xx" in the valid range The valid range is between -32767..32767
  1261.  hours.
  1262.  Similar to the dates, the internal representation can be handled as
  1263.  number in seconds from time "00:00:00" (see above).
  1264.  The time with the number
  1265.  0 is "00:00:00"
  1266.  -60 is "-00:01:00"
  1267.  Numbers outside the valid range may be converted properly.
  1268.  Tip: If you needed the input format minutes/seconds, just use "HH:MM"
  1269.  instead! Most of the time this is fine, e.g. for recording the length of
  1270.  CD tracks. If you need the real time for another calculation, convert it
  1271.  by a division /60.
  1272.    
  1273. 4.8   Hidden fields
  1274.  
  1275.  In order to paste values to a certain field, e.g. while using scripts,
  1276.  find dialogs etc., the field must be available on the choosen layout.
  1277.  If the field shall be available but not be displayed you may
  1278.  - assign a field size of 1 by 1 point to the field:
  1279.  select layout mode, display and edit size (recommended)
  1280.  - assign an invisible font color to the text:
  1281.  choose background color as text font
  1282.  - hide the field behind another field:
  1283.  just move another field on top of it. Fields are staggered by order of
  1284.  creation but may be moved by Arrange forward/backward
  1285.  - exclude the field from the tab order:
  1286.  edit the tab order, exlude it or move it to a late tab order
  1287.  (recommended as additional step)
  1288.  FMP3 offers a new command "Set Field" that works both on visible and
  1289.  excluded fields. Set Field also works on fields in the header or footer
  1290.  of a list layout, while those fields are not editable otherwise.
  1291.  Warning: Set Field may only enter data of the proper type, such as a
  1292.  real date to a date field. If you want to find e.g. the records within
  1293.  the last thirty days, by a find string including a ">" symbol, you have
  1294.  to use a paste command instead, such as
  1295.    Paste Result["> "&Status(CurrentDate)-30]
  1296.    
  1297. 4.9   Sorted lists
  1298.  
  1299.  FMP3 offers pop up lists based on two fields. In general they get
  1300.  alphabetized by their second field. If you don't want this behavior,
  1301.  turn off indexing for the second field or, if you have to have it
  1302.  indexed, make an unindexed calculation field to show the value. (from
  1303.  Stefan Schutt <stefan@MOUSEUP.PP.FI>)
  1304.  
  1305. ------------------------------
  1306.  
  1307. Subject: 5  Repeating Fields
  1308.    
  1309. 5.1   Convert repeating fields to non repeating fields
  1310.  
  1311.  * Import all data in a clone of the database, splitting repeating fields
  1312.  to single records.
  1313.  If repeating fields don't seem to split properly, check that they are
  1314.  real repeated fields. Contents that are separated by <returns> may look
  1315.  like separate repetitions, but are in fact within the same field.
  1316.  (by Steve Rothman <steve_rothman@rdm.scitex.com>)
  1317.  * Create a script to copy from repeating field entries to separate
  1318.  fields.
  1319.  * Create the single fields as calculation fields from the repeating
  1320.  fields, change the format from calculation to the format desired.
  1321.  <gopher://spinaltap.micro.umn.edu/00/computer/Claris/FileMaker/Splitting
  1322.  the Contents of a Repeating Field into Separate Fields>
  1323.    
  1324. 5.2   Convert nonrepeating fields to repeating field
  1325.  
  1326.  Create a script:
  1327.  <gopher://spinaltap.micro.umn.edu/00/computer/Claris/FileMaker/Moving
  1328.  Data to Repeating Fields Using a Script>
  1329.  * Export as text, convert record delimiter to repeating field delimiter
  1330.  (ASCII-29) and reimport.
  1331.  The fields of comma-separated text will be stored in a way like:
  1332.  repeatingfield 1<ASCII-29> 2<ASCII-29>3
  1333.  To move separate fields A, B, C to a single repeating field,
  1334.  - export as text: A, B, C
  1335.  - use a standard text editor or a conversion utility to replace the
  1336.  comma with <ASCII-29>
  1337.  - reimport to a repeating field
  1338.  This works with merge format and tab separated text as well.
  1339.  * Use commercial software (MakeRepeats)
  1340.    
  1341. 5.2.1  How to create ASCII-29
  1342.  
  1343.  The character ASCII-29 is not on the keyboard and is invisible most
  1344.  often. However, some editors will display it, e.g. as a small box.
  1345.  Editors like MS Word or Alpha allow for input of decimal code to create
  1346.  this character.
  1347.  The easiest solution is to open any exported database with a suitable
  1348.  editor, copy the ASCII-29 character and paste it where necessary. For
  1349.  reusage it's appropriate to put it in the scrapbook.
  1350.  The very easiest solution is to select this "" - if you are lucky, it's
  1351.  still there.
  1352.    
  1353. 5.3   Merge separate records to a single repeating field
  1354.  
  1355.  * Create a script to copy from several records to a repeating field.
  1356.  * Export as text, convert delimiter to ASCII-29, reimport
  1357.  The procedure is similar to merging separate fields, but requires some
  1358.  additional effort.
  1359.  Example:
  1360.  Consider a database with the records spearated by Carriage Return <CR>,
  1361.  exported as comma delimited, with fields: Name, Text
  1362.  "A","1"<CR>
  1363.  "B","1"<CR>
  1364.  "A","2"
  1365.  It should be merged to a database
  1366.  "A","1"<ASCII-29>"2"<CR>
  1367.  "B","1"
  1368.  This can be done by sorting the records and replacing the <CR> with
  1369.  <ASCII-29>. To separate between the records A and B some additional
  1370.  criterion is required.
  1371.  Unfortunately FMPro doesn't allow the comparison of a record with the
  1372.  previous one. So one chance is to make this comparison externally, e.g.
  1373.  via a spreadsheet application.
  1374.  Another solution is:
  1375.  create the fields:
  1376.  serial number SN (number): Auto-enter serial number
  1377.  serial number lookup SNL(number): Copy SN if Name matches
  1378.  mark record MR (calculation): If( SN = SNL, Name, "")
  1379.  The sorted database now looks like this: fields:
  1380.  Name, Number, SN, SNL, MR
  1381.  "A","1",1,1,"A"<CR>
  1382.  "A","2",3,1,<CR>
  1383.  "B","1",2,2,"B"
  1384.  Export the fields MR and Number, replace <CR>," with <ASCII-29>" and
  1385.  import. Further more you can find all non-blank MR, sort them similar
  1386.  and import all other fields.
  1387.  For further improvements think about "replace all with new serial
  1388.  number", "relookup" and "sort, import to clone".
  1389.    
  1390. 5.4   Removing duplicates or Sychronizing databases
  1391.  
  1392.  First, you should make sure what a duplicate is.
  1393.  FMP2.1 may treat "firstname lastname" and "lastname, firstname" as
  1394.  duplicate since both entries contain the same words. Even a later record
  1395.  that only contains "lastname" may get recognized as a duplicate of the
  1396.  first ones. Check the sections for indexing to understand why.
  1397.  FMP3 introduced another type of relation that is based on lines (total
  1398.  max. 60 characters) instead of words (multiple, up to 20 characters
  1399.  each). A find for duplicates is still based on the indexed words.
  1400.  In order to remove duplicates, you have to identify them as a duplicate.
  1401.  You can do so on a single field that should be unique (such as the
  1402.  Social Security Number), a combination of multiple or all fields (e.g.
  1403.  FirstName & LastName) or a combination of all (e.g. LastName &
  1404.  Left(FirstName, 3) & Length(comments))
  1405.  This is a "duplicate key" suitable for comparisons. You then may
  1406.  identify all records by a find for "!", a lookup or a FMP3 relation. A
  1407.  further step may be the comparison whether the other fields are really
  1408.  identical, e.g. by comparing all fields by calculation or script.
  1409.  Here is a simple example to mark every record that has a matching
  1410.  duplicate record with the value "1".
  1411.  * use a key field "serial number" (number):
  1412.    auto-enter serial number
  1413.  This field holds a unique identifier for every record
  1414.  * define a lookup field "unique lookup" (lookup, number):
  1415.     if "duplicate key" fields are equal, then copy the serial number
  1416.  This will copy the serial number of the matching record. If there is an
  1417.  already existing record, it will get another serial number than the own
  1418.  one. Due to the indexing mechanism it will return for newly created, not
  1419.  yet matching entries a zero value (nothing, 0 or a dummy value when
  1420.  defined so).
  1421.  * define a calculation field "unique calculation" (calculation, number)
  1422.  =
  1423.    if(serial number = unique lookup, 0, 1)
  1424.  Thus every record gets flagged by a number or any other specified text
  1425.  that there is another, duplicate record. You may use this flag to find
  1426.  and remove duplicates or to display a warning. Original and duplicate
  1427.  may be within the same or different files.
  1428.  Lookups only show proper values at the point of creation. They get
  1429.  updated if the actual record is modified or a relookup is performed, but
  1430.  not if the first, original record is removed. For FMP3 one may use
  1431.  relations instead.
  1432.    
  1433. 5.4.1  Removing duplicates - another approach
  1434.  
  1435.  Here's a more detailed description by Jason Hirschhorn
  1436.  <jason@hirschhorn.com> that uses the "!" as find duplicate command
  1437.  instead.
  1438.  =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  1439.  FileMaker Pro 2.x
  1440.  Removing duplicate information from a database is frequently necessary,
  1441.  especially after updating a central database from another database. Here
  1442.  is a method to remove duplicate records from a FileMaker Pro 2.0 file
  1443.  that takes advantage of the new ScriptMaker features of FileMaker Pro
  1444.  2.0.
  1445.  Before you begin, save a copy of your database as a backup and make a
  1446.  clone as a working copy of the database. Fill the working copy with
  1447.  several duplicate records. Read the User's Guide and, using the working
  1448.  copy, practice making scripts until you understand and are comfortable
  1449.  with using ScriptMaker. You will also need a field with a unique value
  1450.  that will uniquely identify an individual or item and its duplicates but
  1451.  will not find non-duplicate records. Some examples of this are:
  1452.  * a field with a social security number (unique to an individual and
  1453.  will find all duplicate records of the person)
  1454.  * a field with a unique code number (unique to an item and that will
  1455.  find all duplicates of a part, customer or other item number; do not use
  1456.  record number as this is a changing value)
  1457.  * a field that combines the contents of several fields to create a
  1458.  unique value. (this unique value must identify duplicate records without
  1459.  finding any other records.
  1460.  A word about the unique field If you do not have a field that already
  1461.  contains a value unique to the individual person, company, or item, you
  1462.  will have to create one. For
  1463.  example, if you have an address book database you would not want to
  1464.  remove all the people that share the last name "Jones," just duplicates
  1465.  of each individual. And, if the database contains the fields FirstName,
  1466.  LastName, Address, City, State, Zip, and PhoneNumber, you can create a
  1467.  calculation field that concatenates (combines) two or more of these
  1468.  fields to create a unique field. You can call your new unique field
  1469.  DuplicateCalc:
  1470.    DuplicateCalc (calculation, text result) = FirstName & LastName & Zip
  1471.  The result will be a single text string that looks this:
  1472.  FirstNameLastNameZip. Some examples might look like this:
  1473.  JohnSmith10825               MadelineKwan60610
  1474.  PierreMyers33976
  1475.  This approach works well for most databases, but it's still possible to
  1476.  have more than one "John Smith" in the same zip code. In this case you
  1477.  may want to add another field, such as a phone number, to be sure that
  1478.  this DuplicateCalc field will always be unique und
  1479.  er any circumstance. Just make sure the maximum length of the unique
  1480.  field is less than 20
  1481.  characters; FileMaker Pro 2.x does not index any single text string
  1482.  beyond that limit.
  1483.  This limit of 20 characters is for every single word. You may use
  1484.  multiple words, but both "word1 word2" and "word2 word1" get indexed the
  1485.  same, and "word1" alone may relate to both. FileMaker Pro 3.0 takes
  1486.  instead a line of 60 characters as index for relations and lookups.
  1487.  Setting up the scripts
  1488.  Now that you have a field you can depend on to match duplicate records,
  1489.  you are ready to set up the scripts that will delete duplicates. In your
  1490.  working copy of the database create a new layout (call it "Find
  1491.  Duplicates") that will show only the unique field and the fields used to
  1492.  define it.
  1493.  Advantages & Disadvantages
  1494.  The advantage of this process is that it automates the task of removing
  1495.  duplicates by using the scripting capability of FileMaker Pro. The
  1496.  drawback is that it slows down as the database increases in size and the
  1497.  first occurrence of a record is retained and all others are deleted, not
  1498.  necessarily the one with the latest entered information. Duplicate
  1499.  records
  1500.  with spelling errors will NOT be found using this method.
  1501.  Creating the scripts
  1502.  The scripts must be created from the last to the first. The script that
  1503.  finds and deletes the duplicates must be created before the cleanup
  1504.  script. If you must edit the scripts after creating them do not replace
  1505.  the "Find Requests" or repeat step 1 before editing the script.
  1506.  1. Choose Find from the Select menu, and type an exclamation point (!)
  1507.  into the "DuplicateCalc" field created above, and click Find. Review the
  1508.  records to confirm that only duplicates have been found. To fully review
  1509.  the records go to a layout that shows all the information in each
  1510.  record. Be sure to return to the "Find Duplicates" layout before
  1511.  continuing.
  1512.  2. Open ScriptMaker from the Scripts menu and create a new script called
  1513.  "Delete Loop". This script should have the following steps:
  1514.  Perform Find [Restore]
  1515.  Go to Next Record/Request [Exit script after last]
  1516.  Go to Next Record/Request [Exit script after last]
  1517.  Go to Record/Request [No dialog, 1]
  1518.  Copy [Select, "DuplicateCalc"]
  1519.  Enter Find Mode [ ]
  1520.  Paste [Select, "DuplicateCalc"]
  1521.  Perform Find [ ]
  1522.  Omit
  1523.  Delete Found Set [No dialog]
  1524.  Perform Script [Sub-scripts, "Delete Loop"]
  1525.  With that script completed, now create the second script Remove
  1526.  Duplicates. This script will perform some setup work for the "Delete
  1527.  Loop" and do some clean up work afterwards. This script is the one that
  1528.  you will select from the Scripts menu to perform the remove duplicate
  1529.  process.
  1530.  [Note: For FMP3 you may use the newer loop functions instead]
  1531.  3. Open ScriptMaker from the Scripts menu and create a new script called
  1532.  "Remove Duplicates". Include this script in the menu. For convenience
  1533.  wehave used the name "First Field", which is the first field that shows
  1534.  in the Find Duplicates layout, but it cannot be the DuplicateCalc field.
  1535.  This script should have the following steps:
  1536.  Enter Browse Mode [ ]
  1537.  Go to Layout [Find Duplicates]
  1538.  New Record/Request
  1539.  Go to Field ["First Field"]
  1540.  Paste Literal ["ABC123"]
  1541.  Duplicate Record/Request
  1542.  Perform Script [Sub-scripts, "Delete Loop"]
  1543.  Enter Find Mode [ ]
  1544.  Go to Field ["First Field"]
  1545.  Paste Literal ["ABC123"]
  1546.  Perform Find [ ]
  1547.  Delete Found Set [No dialog]
  1548.  You have now successfully created a set of scripts that will delete all
  1549.  the duplicate records in your database. Note: using the value "ABC123"
  1550.  will work even if the "First Field" is defined as a number.
  1551.  [Note: For FMP3 you do not have to create a dummy duplicate record
  1552.  "ABC123" but may check whether 0 records were found]
  1553.  Before testing the script, make sure you have a backup copy in case
  1554.  something goes wrong, then choose "Remove Duplicates" from the Scripts
  1555.  menu. FileMaker will begin identifying and removing duplicate records
  1556.  from your file.
  1557.  You are now ready to work on the data from the original database.
  1558.  1) In your working copy find all records.
  1559.  2) Delete all records (use the Delete Found Set option from the Edit
  1560.  menu).
  1561.  3) Import records (it does not matter if you replace or add to an empty
  1562.  database) from the original database.
  1563.  4) Choose "Remove Duplicates" from the Scripts menu.
  1564.  Review the data to confirm that no valuable information has been lost,
  1565.  i.e., that the deleted records did not have more information than the
  1566.  saved record. If you have lost information do steps 1 through 3 listed
  1567.  above and verify that the information was there in the first place. Then
  1568.  manually find the duplicate(s) of the full information record and delete
  1569.  them manually. You can now choose "Remove Duplicates" from the Scripts
  1570.  menu.
  1571.  
  1572. ------------------------------
  1573.  
  1574. Subject: 6  Find
  1575.    
  1576. 6.1   Some facts
  1577.  
  1578.  - If no other option were choosen, a find command on "string" will
  1579.  search for all records where an indexed word begins with "string"
  1580.  - The last search criterion gets stored. It may be used for a Refind and
  1581.  as a search criterion for scripts while using the Restore Find Request
  1582.  option of Enter Find Mode or Perform Find. While defining a script, the
  1583.  last performed find gets used. Changes can be done by performing a new
  1584.  find, open & close the edit script dialog and accept the replacement of
  1585.  Find Requests.
  1586.  - As indicated above, not more than one restored find is possible per
  1587.  script. Additional finds may be used by defining additional scripts and
  1588.  calling them from within the first script.
  1589.  - The search criterion of a script may be displayed by using the Refind
  1590.  command after performing the script.
  1591.    
  1592. 6.2   Perform scripted find
  1593.  
  1594.  Sounds to be obvious, but the find command will be performed by the
  1595.  script command 'Perform Find [...]'.
  1596.  Example script to find values matching the content of Field_A:
  1597.    Copy [Field_A, select entire content]
  1598.    Enter Find Mode [No Pause, Don't restore find request]
  1599.    Paste [Field_A, select entire content]
  1600.    Perform Find [Don't restore find request]
  1601.  The omit command itself is not a selectable script option for FMP2.1.
  1602.  However, as usual, there's a workaround:
  1603.  - Perform any omit find, e.g. enter find mode, paste "a" to field Name,
  1604.  click omit, perform find.
  1605.  - Define a script "find omit":
  1606.    Enter find mode[restore]
  1607.    Cut[select entire contents, "Name"]
  1608.  That's all. Whenever you call this subscript, the omit box is already
  1609.  checked in find mode.
  1610.  For FMP3.0 this was simplified. The Omit script step in Find mode does
  1611.  the same as marking the omit checkbox. The Omit script in browse mode
  1612.  does, as usual, exclude the current record.
  1613.    
  1614. 6.3   No matching records found
  1615.  
  1616.  If no matching records were found, a dialog gets displayed: no records
  1617.  match this request:
  1618.  - "modify find" will return to the find dialog
  1619.  - "cancel" will omit the find and select ALL records
  1620.  An automated script without dialog in FMP2.1 showed all records while no
  1621.  matching record was found. Thus e.g. a delete on a found set is most
  1622.  critical.
  1623.  For FMP3.0 this was modified. Now while you find no matching records,
  1624.  you'll get a less critical set of zero found records. Another option
  1625.  instead of "modify find" or "cancel" is "continue" with zero found
  1626.  records. Furthermore you may detect easily whether the find command was
  1627.  successful, e.g. by
  1628.   Set Error Capture [On]
  1629.   Perform Find [Restore]
  1630.   If ["Status(CurrentError) = 0"]
  1631.     Perform Script [Sub-scripts, "WhateverYouWantToDo"]
  1632.   Else
  1633.     Show Message ["There are no records found!"] ***
  1634.   End If
  1635.  You may check the ErrorCode itself or check the number of found records
  1636.  as well.
  1637.  For FMP2.1 a workaround by dummy records is possible:
  1638.  Performing an unsuccessful find in a script will not select zero
  1639.  matching records but all - that's really annoying for printouts,
  1640.  exports, deleting records etc.
  1641.  A workaround is to create a dummy record and to add an additional dummy
  1642.  search criterion, e.g.:
  1643.    Copy [Field_XYZ, select entire content]
  1644.    New Record/Request
  1645.    Go to Field [Field_1]
  1646.    Paste Literal ["dummy"]
  1647.    Enter Find Mode [No Pause, Don't restore find request]
  1648.    Paste [Field_1, select entire content]
  1649.    New Record/Request
  1650.    Go to Field [Field_1]
  1651.    Paste Literal ["dummy"]
  1652.    Perform Find [Don't restore find request]
  1653.  This script will find all matching records and the dummy record, or, if
  1654.  no matching records were found, the dummy record only.
  1655.  To exclude the dummy record (that is the last of all, and all<999999):
  1656.    Go to Record/Request [999999, Perform without dialog]
  1657.    Delete Record/Request [Perform without dialog]
  1658.  Another solution is to detect if only the dummy record was found:
  1659.    Go to Record/Request [999999, Perform without dialog]
  1660.    Go to Previous Record/Request [Exit script after last]
  1661.  This script jumps to the last record, tries to go back to the previous
  1662.  one and exits if the last (dummy) record is the one and only. Thus you
  1663.  may use a kind of an
  1664.    if(dummy is only record found,
  1665.      exit/return to main script,
  1666.      perform further part of script)
  1667.  Tip: A similar structure may be used as conditional script!
  1668.  See sections on conditional scripting and dummy entries.
  1669.    
  1670. 6.4   Find on multiple fields
  1671.  
  1672.  Multiple finds may be performed. Logical AND search may be achieved by
  1673.  adding criterions to multiple fields. Logical OR search may be achieved
  1674.  by creating new requests. Find details in the next subsection.
  1675.  Sometimes a find shall be performed on the occurrence of a criterion IN
  1676.  ANY OF several fields.
  1677.  A scripted solution is to copy the criterion,
  1678.    ...
  1679.    Enter Find Mode [No pause, Don't restore find request]
  1680.    Paste [Field 1]
  1681.    New Record/Request
  1682.    Paste [Field 2]
  1683.    New Record/Request
  1684.    Paste [Field 3] ...
  1685.    Perform Find [Don't restore find request]
  1686.    ...
  1687.  Another solution is to concatenate the fields to a single search field
  1688.  SearchField = Field 1 & ", " & Field 2 & ", " & Field 3
  1689.  The "," are just for aesthetic purposes. This find is faster to perform
  1690.  but will increase the memory usage of the database and slow down
  1691.  imports.
  1692.    
  1693. 6.5   Find with AND / OR / NOT
  1694.  
  1695.  In order to use search by multiple criteria according to a logical AND,
  1696.  OR and NOT, you may use:
  1697.  - multiple words in a single field (equals Word1 AND Word2),
  1698.  - multiple fields (equals Field1 AND Field2),
  1699.  - multiple requests (equals Field1 OR Field2) and
  1700.  - the omit command (kind of NOT Field).
  1701.  It's not possible to find Field1 AND (NOT Field2). The logical
  1702.  equivalent, according to deMorgans law is NOT ((NOT Field1) OR Field2),
  1703.  or speaking in FMPro: enter find mode, paste literal to Field1, mark
  1704.  omit, create new request, paste literal to Field2, perform find, find
  1705.  omitted.
  1706.  But the omit works different than a real NOT! It will omit those records
  1707.  from a found set that match your omit request. Thus (Field1 OR (omit
  1708.  Field2) is different to ((omit Field2) OR Field1)
  1709.  Example:
  1710.  OMIT B, FIND A will find all that are not B, plus all that are A
  1711.  FIND A, OMIT B will find all A, THEN omit from the found set all that
  1712.  are not B
  1713.  Example (X is match, (x) is after omitting):
  1714.    [data]   OMIT B + FIND A = found |  FIND A + OMIT B = found
  1715.     A  B      -        X        X   |    X        -
  1716.     A NB     (x)       X        X   |    X                 X
  1717.    NA  B      -                     |
  1718.    NA NB     (x)                X   |
  1719.  While AND and OR are independent on the sequence, OMIT is not the same
  1720.  as a logical NOT, but instead dependent on the sequence of requests.
  1721.    
  1722. 6.6   Find on a subset
  1723.  
  1724.  Assuming that the subset was created by a previous find, the manual
  1725.  solution is not to select the Find command (cmd-F) but the Refind
  1726.  command (cmd-R). You may use AND / OR / NOT and multiple search
  1727.  criterions as described above.
  1728.  The scripted solution works similar. As a refind you may use the find
  1729.  criterions from the last find before creating/editing the script. It is
  1730.  accessable by the restore request option. For multiple searches see the
  1731.  sections above.
  1732.  Sometimes the subset was created manually, or it is not possible to
  1733.  perform the desired find by multiple searches in a single step. The
  1734.  solution is to use a mark field: (unmark all, perform find,) mark found
  1735.  set, perform next find on mark and new criterion.
  1736.  
  1737. ------------------------------
  1738.  
  1739. Subject: 7  Scripting
  1740.    
  1741. 7.1   ScriptMaker
  1742.  
  1743.  Check the manuals, chapter 5, "Using ScriptMaker and Buttons". It's
  1744.  rather basic, but there's not much more behind.
  1745.  Unfortunately, you can't edit scripts manually, you can't copy/paste
  1746.  script steps and you can't copy scripts between databases. You may
  1747.  duplicate scripts and databases.
  1748.    
  1749. 7.1.1  What's that restore option? - Find & sort within a script
  1750.  
  1751.  That's one of the options not so obvious. When you create a script, FMP
  1752.  will keep the options of your previous commands as options. This is
  1753.  valid for: Find, Sort, Page Setup (printing), Import and Export.
  1754.  When you create a find script step and use the restore option, the
  1755.  criterions of the last used find commands get used.
  1756.  You may view these criterions when you perform a refind command. You
  1757.  also may print the script definitions.
  1758.  You have to ensure that your actual layout displays the fields where
  1759.  find criterions will get used!
  1760.  If you want to modify the stored information, you will have to perform a
  1761.  modified find, edit the script, and after clicking ok you will get a
  1762.  dialog box to keep or replace the information. Click the check box to
  1763.  replace Find Requests. Now the new information gets saved.
  1764.  By and large this is all the same for the other restore options.
  1765.  As you might imagine: there is only one valid restore option for each
  1766.  type of script command within a script. Nevertheless, you may use
  1767.  multiple finds easily:
  1768.  Perform first search, create script "Find 1";
  1769.  perform other search, create script "Find multiple";
  1770.  additional to the find criterions in "Find multiple" you may perform
  1771.  additional find requests within by calling the sub script "Find 1".
  1772.    
  1773. 7.1.2  Special options
  1774.  
  1775.  - When you use Copy[] without options while no field is selected (e.g.
  1776.  Goto Field[]), all fields on the current layout get copied to the
  1777.  clipboard. The fields are copied in the creation order, seperated by
  1778.  tabs.
  1779.  There is no known solution to paste in multiple fields in a single step.
  1780.  - Using summary fields in scripts:
  1781.  "Remember to use the Refresh command with an Enter Browse Mode step if
  1782.  you wish to copy the values from Summary fields. However, copying a
  1783.  summary field in a script may not work reliably in all cases. If a
  1784.  script specifies a Copy step for a summary field that has not already
  1785.  calculated, it will copy a null value. This happens because the script
  1786.  progresses before the summary field is given time to calculate. Be sure
  1787.  you are using FileMaker Pro 2.1v2 or later as this was fixed in this
  1788.  version. "
  1789.  (from www.claris.com TechInfo)
  1790.    
  1791. 7.1.3  Documenting scripts
  1792.  
  1793.  Scripts may be printed, including all parameters and options set.
  1794.  See Print2Pict
  1795.    
  1796. 7.1.4  Recursive and Conditional scripts
  1797.  
  1798.  You may call scripts recursively in order to loop, repeat or do while,
  1799.  but you should provide a certain break criterion. This has been a most
  1800.  requested feature for FMP 2.1, and FMP 3.0 offers both if/else/end if
  1801.  and loop/end loop constructs.
  1802.  Here are some workarounds for FMP 2.1
  1803.  A typical example is:
  1804.  Script A:
  1805.    Perform Find[restore]
  1806.    -- now you are within the first record of the found set
  1807.    Perform Script ["B"]
  1808.    -- this is the recursive part
  1809.    Do...
  1810.    -- do some final processing
  1811.  Script B:
  1812.    Copy [field 1]
  1813.    Paste [field 2]
  1814.    ...
  1815.    Go to Next Record [exit on last]
  1816.    Perform Script ["B"]
  1817.  This option [exit on last] is a powerful workaround to implement
  1818.  conditional scripting. Its concept is:
  1819.    if this is the Last/First record
  1820.    then exit
  1821.    else process
  1822.  The simple exit is equivalent to a "do nothing" and is sufficient for
  1823.  many tasks. In order to implement real if/then/else scripts you may use
  1824.  and manipulate special search criterions (such as a simple mark field)
  1825.  or modify the plain
  1826.    if A
  1827.    then B
  1828.    else C
  1829.  to something like
  1830.  Script C:
  1831.    find A
  1832.    mark all
  1833.    perform Script B
  1834.    find marked
  1835.    perform C
  1836.  Script B:
  1837.    exit on last
  1838.    perform B
  1839.    unmark all
  1840.  As you may see, the mechanism is based on a find and work with certain
  1841.  sets of records. In order to use this behavior you have
  1842.  - to create a proper search criterion
  1843.  - to ensure that a find on this set never fails
  1844.  - to do the processing itself
  1845.  A proper search criterion may be based on any fixed value, calculation
  1846.  or user input.
  1847.  You must take care that your search command will return a proper set of
  1848.  records. If it fails without dialog, the find command will select ALL
  1849.  records, and therefore all records will get processed (fatal if you use
  1850.  a Delete Found Set command).
  1851.  For that reason it is recommended to use dummy entries. A find will be
  1852.  performed on the search criterion OR dummy record and will return at
  1853.  least the dummy record. See the section on dummy entries for details.
  1854.  See the section "no matching record found" for another example.
  1855.  I should mention that recursive and conditional scripts can be done
  1856.  within AppleScript or FMP 3.0 much better.
  1857.    
  1858. 7.1.5  Dummy entries
  1859.  
  1860.  Dummy entries may get used to buffer values and to improve the
  1861.  performance of recursive, conditional and find scripts. Most of the time
  1862.  they are more or less elegant workarounds for missing features or bugs.
  1863.  Personally I use two solutions, dummy records or dummy variables. Both
  1864.  may be permanent (static) or variable (dynamic). A third exception is
  1865.  that I buffer user inputs by selecting the find mode.
  1866.  The dynamic record approach is the safest. A script may contain this:
  1867.    Enter Browse Mode
  1868.    Go to Layout ["any layout with the field to paste a dummy value to"]
  1869.    Create New Record
  1870.    Go to Field ["the field to paste a dummy value to"]
  1871.    Paste Literal ["dummy"]
  1872.    Enter Find Mode [use restore, paste literal or by user]
  1873.    Create New Request [use paste literal "dummy" or restored "dummy"]
  1874.    Perform Find
  1875.  Now you will have all found records plus all found dummies.
  1876.  A new dummy record will be the last of all (found and unsorted) records.
  1877.  You may delete it since it is of no further use, e.g. by Go to Last,
  1878.  delete record, then process and step backwards, or step from the first
  1879.  to the next, exit on last, and delete the last within an outer script,
  1880.  etc.
  1881.  The advantage is that after processing there won't be any dummy records
  1882.  left, the data of other records is not touched. The disadvantage is that
  1883.  it is slower to create and delete new dummy records every time, and that
  1884.  a serial counter will continue with an increased value.
  1885.  If you keep the dummy record, you should hide it from the user, since it
  1886.  may confuse. As soon as this dummy record gets deleted, the performance
  1887.  is endangered. For a permanent dummy record I recommend to use the first
  1888.  record as dummy and help, but to protect and hide this record from the
  1889.  ordinary user as good as possible: Take it as record one, displaying the
  1890.  text "No records found", but omit it when other fields were found.
  1891.  For other purposes I insert a dummy value to a special field of an
  1892.  existing record. Best suited is a number field, named e.g. as "[mark]".
  1893.  Number fields get indexed faster than text fields, but may contain text
  1894.  as well. Go again in browse mode to a layout that contains the dummy
  1895.  field,...
  1896.    Go to Field["[mark]", select all]
  1897.    Paste Literal ["999 dummy"]         -- BTW this gets indexed as 999
  1898.    Enter Find Mode  [use restore, paste literal or by user]
  1899.    Create New Request [use paste literal "999" or restored dummy]
  1900.    Perform Find
  1901.  You may keep the dummy value, but it is better to delete it, e.g. by a
  1902.    Perform Find[restored ">0"]
  1903.    Go to Field "[mark]", select all]
  1904.    Paste Literal [""]
  1905.    Replace
  1906.  The drawback is that you may need an additional field, and that the
  1907.  actual record where you paste the dummy value will be processed either
  1908.  every time or never, dependent on your script, but not dependent on its
  1909.  other field contents. I prefer it e.g. when I know that the actual
  1910.  record must be within the set of records, or when the processing is only
  1911.  time consuming, but does no harm.
  1912.    
  1913. 7.1.6  Go to last record
  1914.  
  1915.  Go To Record 2147483647 will take you to the last possible record since
  1916.  this is the maximum number of records possible in an FM Pro file.
  1917.  (From Michael Singer's book)
  1918.  Any other number higher than the real maximum number of records will do
  1919.  so as well. Personally, I use serial number 99999999.
  1920.  When you open the database, you will get not the record you edited last,
  1921.  but the first of the records found. Creating a script "go to last" that
  1922.  is autoexecuted while opening the database will put you to the last of
  1923.  this records. Including a "select all" step may put you to the last new
  1924.  record, while otherwise the find and sort order is still maintained.
  1925.    
  1926. 7.1.7  Schedule Scripts
  1927.  
  1928.  How can I run a script at a specified time?
  1929.  This has become one of the most frequently asked questions on the
  1930.  MacScripting list. There are several commercial, shareware, and freeware
  1931.  utilities that will allow you to do this. Your commercial option is
  1932.  Scheduler, which comes with Script Debugger. You can find a demo version
  1933.  of it on gaea.
  1934.  Your freeware options are Cron 1.0.0 and Cron1.0d16. Cron 1.0.0 is a
  1935.  cdev and an application that can launch application and document
  1936.  aliases. You rename the aliases to reflect the time that you want them
  1937.  to launch. Cron 1.0d16 was written by Chris Johnson of GateKeeper fame.
  1938.  You can always find the latest version of Chris' Cron at
  1939.  http://gargravarr.cc.utexas.edu/cron/cron.html.
  1940.  Your shareware options are Chronograph and CronTab. Chronograph has both
  1941.  a 68k and PPC version of the daemon. It also follows the UNIX cron
  1942.  format. CronTab is an older collection of AppleScript scripts and
  1943.  applets.
  1944.  You can also find these cron programs and scripts on gaea as
  1945.  Chronograph1.1UR.sea, Cron1.0.0.sit, Cron1.0d16Distribution.sit, and
  1946.  CronTab
  1947.  Ziff-Davis Publishing also has a soluton that is available in the
  1948.  ZiffNet forum on CompuServe. It is called T-Minus Ten and is an
  1949.  application and an extension. If you have a CompuServe account, you can
  1950.  get the file. Due to ZD's copyright restrictions, the file cannot be
  1951.  uploaded to any other service.
  1952.  (from the AppleScript FAQs)
  1953.    
  1954. 7.2   AppleEvents
  1955.  
  1956.  Section under construction - please provide information
  1957.    
  1958. 7.2.1  FMP documentation
  1959.  
  1960.  For information on scripting FMP check the template "FileMaker and Apple
  1961.  Events"
  1962.  (formerly called "FileMaker Events and Objects")
  1963.  Included with FileMaker Pro 2.x in the Apple Events Example folder on
  1964.  the Utilities disk. This FileMaker reference database provides
  1965.  documentation of every object and event accessible by AppleScript and
  1966.  Apple Event-savvy programs. Topics include syntax examples, the
  1967.  FileMaker containment hierarchy, keyforms, and event parameters and
  1968.  id's. The new version of this database adds new information, examples
  1969.  for AppleScript and Frontier, and a matrix of events and objects. The
  1970.  update can be found with FileMaker Pro 2.1v2 and later. Also in the
  1971.  Apple Events Example folder, see examples of scripts that take data from
  1972.  a FileMaker database and create charts in Excel or Resolve.
  1973.    
  1974. 7.2.2  Classes
  1975.  
  1976.  Those classes are supported by FMP:
  1977.  capp: class Application
  1978.  cwin: class Window
  1979.  cdoc: class Document
  1980.  cDB : class Database
  1981.  ctbl: class Layout
  1982.  ccol: class Field
  1983.  crow: class Record
  1984.  ccel: class Cell
  1985.  cSCP: class Script
  1986.  cmen: class Menu Item
  1987.  cmnu: class Menu
  1988.  Most classes provide read-only properties. Check FMP itself for details,
  1989.  using e.g. the open dictionary command of the ScriptEditor.
  1990.    
  1991. 7.2.3  References
  1992.  
  1993.  Elements of objects may get referenced in multiple ways. Here are some
  1994.  (all?) types and some examples
  1995.  name: its name
  1996.    tell application "FMP"
  1997.  absolute: its numeric index
  1998.    show window 1
  1999.  relative: before/after another element
  2000.    copy fields of records before (current record of database 1)
  2001.  range: a range of elements
  2002.    (syntax?)
  2003.  ID: the ID of an object. In general an integer property, but on cells it
  2004.  is a list {<record ID>, <cell ID>}
  2005.    exists record 10
  2006.  test: satisfying a test
  2007.    repeat with every record whose cell "searchfield" = FindCriterion
  2008.  "show every record whose cell <cellName> is <cellData>" no longer
  2009.  accepts FMPro special characters within FMP3. To use those you have to
  2010.  use "requests". Unfortunately, use of requests adds several apple events
  2011.  to a search.
  2012.    
  2013. 7.2.3.1 References table
  2014.  
  2015.  This is the hierarchy of FMP objects:
  2016.    capp - cwin - cdoc - cDB  - ctbl - ccol - ccel
  2017.                                     - crow - ccel
  2018.                                     - ccel
  2019.                              - cSCP
  2020.                - cDB  ...
  2021.                - cSCP
  2022.         - cdoc - cwin ...
  2023.                - cDB  ...
  2024.                - cSCP
  2025.         - cmnu - cmnu ...
  2026.                - cmen
  2027.    ref. by         cwin cdoc  cDB ctbl ccol crow ccel cSCP cmen cmnu
  2028.    name           |  x |  x |  x |  x |  x |  x |  x |  x |  x |  x |
  2029.    absolute       |  x |  x |  x |  x |  x |  x |  x |  x |  x |  x |
  2030.    relative       |    |    |    |  x |  x |  x |  x |  x |    |    |
  2031.    range          |    |    |    |  x |  x |  x |  x |  x |    |    |
  2032.    ID             |    |    |    |  x |  x |  x |  x |  x |    |    |
  2033.    test           |    |    |    |  x |  x |  x |  x |  x |    |    |
  2034.    
  2035. 7.2.4  List of events
  2036.  
  2037.  open / print / quit / run Copy / Cut / Paste Begin Transaction / End
  2038.  Transaction / Event Info / Save -- Usage? Class info / Close / Count /
  2039.  Create / Data Size / Delete / Do Menu / Do Script / Duplicate / Exists /
  2040.  Get Data / Open / Redo / Set Data / Show / Sort / Undo
  2041.  ??? What's the difference between open / print / quit (required suite)
  2042.  and Open / Print / Quit (FMP Core, Table, Database suite)
  2043.  ??? What's the difference between Set and Set Data?
  2044.  ??? What's the difference between Get, Get Data and no event at all?
  2045.  - most important events:
  2046.  * Set
  2047.    set cell "Name" of layout 0 to "Martin"
  2048.  * Get <reference>
  2049.    set MyName to [get] cell "Name" of layout 0
  2050.    
  2051. 7.2.5  Sending events
  2052.  
  2053.  In the FileMaker you just create a new script in ScriptMaker, and
  2054.  - add command "Send AppleEvent [...]"
  2055.  - push button "Specify..."
  2056.  - push button "Specify Application" and select your applet.
  2057.  - choose from popup menu "Other..."
  2058.  - input: Event Class: "PIPS" and Event ID: "pip2"
  2059.  If you don't use any parameters, that's all. If you do, you must either
  2060.  1) put value of your parameter in the AppleEvent definition dialog
  2061.  (select "Script text" radio button), or
  2062.  2) put it in one of FileMaker Fields (select "Field value" radio button
  2063.  and show the field you want to use).
  2064.  The AppleScript looks like this:
  2065.  on ½event PIPSpip2╗ (howmany)
  2066.    beep howmany
  2067.  end ½event PIPSpip2╗
  2068.  (by Ilmo Kotivuori <ilmo.kotivuori@ILMO.PP.FI>)
  2069.  The simple events sent from FMP can only send a single parameter (in the
  2070.  keyDirectObject parameter, '----'). You need to build up more complex
  2071.  data structures for most events from and to FMP, so you'll have to use
  2072.  e.g. an AppleScript as an intermediary.
  2073.  (by Wayne Walrath <wkw@acmetech.com>)
  2074.    
  2075. 7.3   AppleScript
  2076.  
  2077.  Section under construction - please provide information
  2078.    
  2079. 7.3.1  System requirements
  2080.  
  2081.  System 7.1 or better
  2082.  AppleScript 1.0 or better (actual 1.1.1?)
  2083.  Editor:
  2084.  ScriptEditor (System 7.5) or
  2085.  ScriptDebugger (URL:?) or
  2086.  ScriptWizard or
  2087.  Scripter
  2088.    
  2089. 7.3.2  General documentation
  2090.  
  2091.  ??? please check and provide information
  2092.  FAQs:
  2093.  http://www.sysnet.com/~pfterry/applescript.faq.html
  2094.    
  2095. 7.3.2.1 Books
  2096.  
  2097.  See http://www.claris.com/techinfo/CAMON9220228814.html for a
  2098.  comprehensive list.
  2099.  Derrick Schneider: "The Tao of AppleScript (second edition)", Hayden
  2100.  Books, Carmel, 1994.
  2101.  Price $24.95 (U.S.); $31.95
  2102.  Danny Goodman: "Danny Goodman's AppleScript Handbook", Random House
  2103.  Electronic Publishing, 1995.
  2104.  Price $39.00 (U.S.); $55.00 (Canada.)
  2105.  Tom Trinko: "Applied Mac Scripting", M&T Books, 1995.
  2106.  Over 800 pages, Price $34.95 (U.S.); $47.00 (Canada.)
  2107.  Dave Mark: "Ultimate Mac Programming: Methods of the Macintosh Masters",
  2108.  IDG Books Worldwide, 1995.
  2109.  Price $39.95 (U.S.); $54.95 (Canada.)
  2110.  "AppleScript Language Guide: English Dialect", Addison-Wesley, 1994.
  2111.  Price $29.95 (U.S.). ISBN 0-201-40735-3
  2112.  same documentation as found in the AppleScript Developer's Kit from
  2113.  Apple Computer
  2114.  "AppleScript Finder Guide", Addison-Wesley, ISBN 0-201-40910-0
  2115.  Steve Michel: "Scripting the Scriptable Finder", Heizer Software, 1995.
  2116.  Price $49.00 (U.S.)
  2117.  Heizer Software at (800) 888-7667 or (510) 943-7667.
  2118.  Claris Corp.: "TechInfo Journal", Claris Support Service.
  2119.  quarterly; call Claris Customer Assistance at (800) 325-2747.
  2120.  The Cobb Group: "Inside FileMaker Pro"
  2121.  Monthly, Price $59.00/yr or $7.00 each (U.S.). ISSN 1068-6908.
  2122.  "INSIDE MACINTOSH: Interapplication Communication", Addison Wesley
  2123.  Publishing Company, Menlo Park, California.
  2124.  Price: $36.95.
  2125.  "Inside Macintosh - AppleScript", ?
  2126.    
  2127. 7.3.2.2 Online documentation
  2128.  
  2129.  Web & FTP:
  2130.  Scripts, scripting additions, demos, and other scripting-related files
  2131.  can be found at the following ftp site:
  2132.  <ftp://gaea.kgs.ukans.edu/applescript>
  2133.  <ftp://gaea.scriptweb.com>
  2134.  <http://www.scriptweb.com/scriptweb>
  2135.  <ftp://gaea.scriptweb.com/pub>
  2136.  <ftp://gaea.scriptweb.com/pub/applescript/00applescript.faq>
  2137.  <http://rever.nmsu.edu/~elharo/faq/Macintosh.html>
  2138.  <http://www.ultranet.com/~mfenner/applescript.html>
  2139.  <http://mmm.dartmouth.edu/pages/macscripting/macscripting-home.html>
  2140.  Internet:
  2141.  The MACSCRPT mailing list is a highly active forum devoted to scripting
  2142.  on the Macintosh and focuses on AppleScript and UserLand Frontier. To
  2143.  subscribe to the Macintosh Scripting mailing list send a message using
  2144.  one of the following methods:
  2145.  - To subscribe to the MACSCRPT list,
  2146.  Send message to: LISTSERV@dartmouth.edu
  2147.  Subject: subscribe
  2148.  Message: subscribe macscrpt
  2149.  APPLESCRIPT Mailing Lists:
  2150.  Purpose: For discussion of AppleScript.
  2151.    applescript-implementors@abs.apple.com
  2152.     is for users creating AppleScript savvy applications.
  2153.    applescript-users@abs.apple.com
  2154.     is for users of AppleScript.
  2155.    applescript-language@abs.apple.com
  2156.     is a private list for creators of AppleScript language pieces.
  2157.    AppleScript-request@abs.apple.com
  2158.     is for more information
  2159.  AppleLink
  2160.  "AppleScript Developer's Forum" in Developer Support: AppleScript Talk
  2161.  "FileMaker Support Forum" in Third Parties:Third Parties
  2162.  A-G:Claris:Claris InfoCenter:Technical Support - (Read):Technical
  2163.  Support - FileMaker
  2164.  "UserLand Forum" in Third Parties: Third Parties P-Z: UserLand
  2165.  Discussions
  2166.  America Online
  2167.  Keyword CLARIS, Technical Support:FileMaker Pro:FileMaker Message
  2168.  Boards:Scripting
  2169.  Keyword MOS, Message Board:General Discussion:AppleScript
  2170.  Keyword USERLAND
  2171.  CompuServe
  2172.  Go MACCLARIS, Browse Messages, FileMaker [2]
  2173.  Go MACDEV, Message Sections:Scripting Month [10]
  2174.  Go USERLAND
  2175.  eWorld
  2176.  Message Sections -Computer Center:Apple Customer Assistance Center:Apple
  2177.  Products &
  2178.  Technologies:The World of Apple Software:System Software Discussion:
  2179.  AppleScript 1.1 folder and
  2180.  Apple events folder.
  2181.    
  2182. 7.3.4  Tips
  2183.  
  2184.  - Fields are like columns, Records like rows of a table. Single elements
  2185.  are Cells.
  2186.  - All fields are available via layout 0
  2187.  - The last record may be used by ID -1, e.g.
  2188.  tell record -1 -- (same as 'tell last record')
  2189.  - Within FMP3 "Document" refers to the found set, as sorted. "Database"
  2190.  refers to the entire database, in record creation order (ignoring the
  2191.  found set). This was also supposed to be true in FMPro 2.1v3, but was
  2192.  not.
  2193.  (from owen@astro.washington.edu (Russell E. Owen))
  2194.  -"create new record" (and create new request) has two bugs for FMP3:
  2195.  1) it sometimes creates in the wrong database, specifically:
  2196.        tell document <databaseName
  2197.            create new record
  2198.        end tell
  2199.  ignores the "tell document" and instead creates the record in the
  2200.  top-most database, but:
  2201.        create new record at database <databaseName>
  2202.  works just fine. Be careful!
  2203.  2) One can supply a list of data with the create command (in field
  2204.  creation order -- ick), but it uses the current layout or layout 1 (I'm
  2205.  not sure which) to set the data. There doesn't seem to be any way to
  2206.  force it to use layout 0 (an invisible layout that contains all fields).
  2207.  The documented method:
  2208.      create new record at layout 0 with data <list-of-data>
  2209.  does NOT work. A workaround is:
  2210.      set recID to create new record at database <databaseName>
  2211.      set record ID recID of database <databaseName> to <list-of-data>
  2212.  (see ROFMUtil for a subroutine to create <list-of-data>).
  2213.  (from owen@astro.washington.edu (Russell E. Owen))
  2214.    
  2215. 7.3.5  Examples
  2216.  
  2217.  Useful examples:
  2218.  * data of first cell
  2219.    cell 1 of database 1
  2220.  * data of first cell of selected records
  2221.    cell 1 of document 1
  2222.  * data of first cell of current record
  2223.    set CurRec to (Current Record of Database 1)
  2224.    cell 1 of CurRec
  2225.      -- should be equivalent to
  2226.    cell 1 of (get Current Record of Database 1)
  2227.  *  data of all cells:
  2228.    cell 1 of every record
  2229.      -- is equivalent to
  2230.    field 1
  2231.    
  2232. 7.3.5.1 Load all image files
  2233.  
  2234.  -- Load all the Image files from a (prompted for) folder into a
  2235.  FileMaker
  2236.  database.
  2237.  -- "PictureLoads" and this file must be in the same location.   (V1.1)
  2238.  -- find the image files
  2239.  set ImageTypes to {"PICT", "JPEG", "BMPp", "TIFF"}
  2240.  set ImagesLocation to (choose file with prompt .
  2241.          "One of the Image files to load" of type ImageTypes) as string
  2242.  set x to (length of ImagesLocation) - .
  2243.          (length of (name of (info for file ImagesLocation)))
  2244.  set ImagesFolder to (characters 1 thru x of ImagesLocation) as string
  2245.  set ImagesList to list folder ImagesFolder
  2246.  -- where the hell are we? (only works in compiled "application" version)
  2247.  set DefaultLocation to (path to current application) as string
  2248.  set x to (length of DefaultLocation) - .
  2249.          (length of (name of (info for file DefaultLocation)))
  2250.  set DefaultFolder to (characters 1 thru x of DefaultLocation) as string
  2251.  -- fire up FileMaker and JPEGView applications
  2252.  set chk to {}
  2253.  set PictureName to ""
  2254.  tell application "Finder"
  2255.          set FileMaker to application file id "FMPR" as string
  2256.          set JPEGview to application file id "JVWR" as string
  2257.  end tell
  2258.  tell application FileMaker
  2259.          run
  2260.          open file (DefaultFolder & "PictureLoads")
  2261.  end tell
  2262.  tell application JPEGview
  2263.          run
  2264.  end tell
  2265.  -- walk the list, open file in JPEGview, copy to new FileMaker record
  2266.  repeat with ImageName in ImagesList
  2267.          --(debug)set PictureName to ImageName
  2268.          set ImageLocation to ImagesFolder & ImageName
  2269.          set ImageInfo to (info for file ImageLocation)
  2270.          set candidate to false
  2271.          if not (folder of ImageInfo or alias of ImageInfo) then
  2272.                  set ImageType to file type of ImageInfo
  2273.                  if ImageTypes contains ImageType then
  2274.                          set candidate to true
  2275.                          set chk to chk & ImageName & ImageType
  2276.                  end if
  2277.          end if
  2278.          if candidate then
  2279.                  tell application "JPEGView"
  2280.                          activate
  2281.                          open {alias ImageLocation}
  2282.                          copy
  2283.                          close windows saving no
  2284.                  end tell
  2285.                  tell application "FileMaker Pro"
  2286.                          activate
  2287.                          Create New Record
  2288.                          --(debug)set PictureName to PictureName & return
  2289.  & (ImageName as string)
  2290.                          Do Script "PasteImage" -- just does a Paste
  2291.  [Select, "PictureField"]
  2292.                          copy (ImageName as string) to (Cell "FileName"
  2293.  of last Record)
  2294.                  end tell
  2295.          end if
  2296.  end repeat
  2297.  -- a little clean up
  2298.  tell application "JPEGView"
  2299.          quit
  2300.  end tell
  2301.  -- de nada
  2302.  (From Sam Malenfant)
  2303.    
  2304. 7.3.5.2 Idle handler
  2305.  
  2306.  "When a stay-open applet has an idle handler but doesn't return a sleep
  2307.  time, the default is to call it every thirty seconds. Strangely, when
  2308.  there is no 'on idle' handler the Applet sucks time all over the place.
  2309.  The solution: always include an 'on idle' handler in your stay-open
  2310.  Applets but return a very large sleep time."
  2311.  (by "Wayne K. Walrath" <wkw@FUTURIS.NET>)
  2312.  on idle
  2313.    return 30000
  2314.  end idle
  2315.    
  2316. 7.3.5.3 Object not found / error -1728
  2317.  
  2318.  Error -1728 is object not found:
  2319.  on error -1728
  2320.    -- "object not found", which could mean no records match
  2321.    -- or the database wasn't found, or a cell wasn't found or...
  2322.    -- it's a shame the error message isn't more specific
  2323.    if (not exists database <databaseName> then
  2324.      error "Database " & <databaseName> & " does not exist"
  2325.      else if (not exists cell <readCellName> then
  2326.        error "Cell " & <readCellName> & " does not exist"
  2327.      else
  2328.        -- either one of the search cells does not exist (a hassle to
  2329.  test)
  2330.        -- or no records match; assume the latter
  2331.        set recData to {} end if
  2332.  end error
  2333.  (example by Russell E Owen <owen@ASTRO.WASHINGTON.EDU>)
  2334.    
  2335. 7.3.5.4 Multiple finds
  2336.  
  2337.  AppleScript is very powerful to use for nested finds.
  2338.  Here's one example on how to find on multiple fields that may be
  2339.  configured by the user easily. A similar ScriptMaker approach would
  2340.  require any possible set of find combinations, including multiple
  2341.  copy/paste of find criterions.
  2342.  Within FMP you should create a field with a predefined value list of
  2343.  field names, e.g.:
  2344.  [search_fields] (text):
  2345.  section
  2346.  subject
  2347.  body
  2348.  comments
  2349.  Format this field as a checkbox field. Autoenter of values is possible.
  2350.  Enter the search criterion to a find field and call the AppleScript.
  2351.  Within the AppleScript use the find criterion on all names of the search
  2352.  fields by something like
  2353.    repeat with TheName in TheSearchFields
  2354.      set cell "[mark]"
  2355.        of (every record whose cell TheName = TheSearchCriterion)
  2356.        to 1
  2357.  This will search for an exact match, but others are possible as well as
  2358.  multiple and nested AND/OR solutions.
  2359.  Unfortunately there seems to be no command for a found set. Thus all
  2360.  records have to be marked, then a find on [mark]=1 within FMP has to be
  2361.  performed, then the mark field should get deleted again.
  2362.    
  2363. 7.3.6  Call AppleScript
  2364.  
  2365.  As described before you may send various AppleEvents from within FMP.
  2366.  When you compiled the script as application, you may pass events to it:
  2367.  on ½event xxxxyyyy╗
  2368.    -- do something
  2369.  end
  2370.  Another solution is to pass complete scripts to an AppleScript editor.
  2371.  You may send e.g. the "run script" event to the ScriptEditor:
  2372.    send AppleEvent ["syso", "dsct", "ScriptEditor"]
  2373.  and pass the script as text. Example:
  2374.  within the ScriptMaker of FMP select "send AppleEvent". Specify the
  2375.  application "ScriptEditor". Specify "Send the [Other] event" with event
  2376.  class "syso", event ID "dsct". Specify the script text as:
  2377.  tell application "Eudora"
  2378.  make new message at end of mailbox out
  2379.  set field "Subject:" to "text"
  2380.  set field "To:" to "your nickname"
  2381.  queue
  2382.  end tell
  2383.  "Effectively you call the Run Script osax (which should be present in
  2384.  your Scripting Additions inside your Extensions folder). The trick is to
  2385.  "tell" a non scriptable application (such as the Script Editor or any
  2386.  other utility with no "aete" resource) to "run script etc..."
  2387.  FMP can send simple events with only 1 direct param.
  2388.  (inspired by raif@fl.net.au (Raif S. Naffah))
  2389.    
  2390. 7.4   Aretha / Frontier
  2391.  
  2392.  Yet another scripting system for AppleEvents.
  2393.  It's free, it's faster than AppleScript, it's powerful.
  2394.  <http://www.hotwired.com/staff/userland/aretha/>
  2395.  please provide further information
  2396.    
  2397. 7.5   Other tools
  2398.  
  2399.  check for:
  2400.  - ControlTower
  2401.  - HyperCard
  2402.  - MacPerl
  2403.  - UserTalk
  2404.  Ross Brown has written an extension called Menu Events. It allows you to
  2405.  control the menus in an application that is System 7 savvy though
  2406.  unscriptable. It is archived at
  2407.  ftp://gaea.scriptweb.com/applescript/addons/MenuEvents1.1.2.sit
  2408.  along with a companion program
  2409.  ftp://gaea.scriptweb.com/applescript/addons/MenuGrabber1.1.2.sit
  2410.  James Davis (jedavis@cs.stanford.edu) has written an AutoType osax that
  2411.  lets you simulate keyboard activity from a script. AutoType sends
  2412.  keystrokes to the front application. It is archived at
  2413.  ftp://gaea.scriptweb.com/applescript/osaxen/AutoType1.0.sit
  2414.  (from http://www.sysnet.com/~pfterry/applescript.faq.html)
  2415.  Probably the slickest solution is PreFab's Player. PreFab Software's
  2416.  Player extension lets you select menu items and click buttons and
  2417.  checkboxes in applications. Player has a smaller memory footprint than
  2418.  QuicKeys, and it is easier to incorporate Player into your scripts than
  2419.  QuicKeys. Player is available for both Frontier and AppleScript. Prefab
  2420.  Software can be reached at 617/628-9555, voicemail; 617/628-9043, fax;
  2421.  617/628-9025, inquires and sales; CompuServe: 70214,424; and Internet:
  2422.  player@prefab.com, http://www.tiac.net/prefab/
  2423.  (from ftp://gaea.scriptweb.com/applescript/PRs/PlayerInfo.sit)
  2424.    
  2425. 7.5.1  Quickeys
  2426.  
  2427.  Quickeys 3.0
  2428.  CE Software, Inc.
  2429.  Quickeys 3.0, a macro program for the Macintosh, now allows you to write
  2430.  AppleScript commands
  2431.  directly in your macros. Quickeys also provides scheduling facilities
  2432.  and extensions that allow you to
  2433.  mount volumes and choose printers. Suggested retail price as of Sept. 1,
  2434.  1994 is $139.00 (U.S.).
  2435.  Contact CE Software at (515) 221-1801.
  2436.    
  2437. 7.5.2  KeyQuencer
  2438.  
  2439.  "We often meet problems that can't be solved within FileMaker. Selecting
  2440.  printers, sending faxes with the click of a button, using alerts and
  2441.  dialogs, dialing phone numbers etc. We need to go beyond FileMaker.
  2442.  Features:
  2443.  - small memory footprint (full installation takes up a total of 124k on
  2444.  my 68k Mac)
  2445.  - modular; remove unused commands to save memory or add capabilities
  2446.  with third party extensions (developer's toolkit included)
  2447.  - powerful, clean and reliable (has never crashed my Mac and I haven't
  2448.  seen an application that doesn't like KeyQuencer)
  2449.  - networkable; control a mac remotely over AppleTalk
  2450.  - fast; no process overhead as in AppleScript solutions
  2451.  - best of all: Apple Events savvy, easy to execute macros from a
  2452.  FileMaker script using Send AppleEvent
  2453.  One disadvantage is that KeyQuencer isn't recordable, but I still think
  2454.  it's easy to use."
  2455.  (from Johan Solve <macboden@ALGONET.SE>)
  2456.  <ftp://umich-mac/system.extensions/cdev/keyquencer1.21.sit.hqx>
  2457.  <ftp:/info-mac/gui/key-quencer-121.hqx>
  2458.  <ftp:key-quencher-121.sit>
  2459.  Shareware 10 $
  2460.  It was developped by Alessandro Levi Montalcini - his next release is
  2461.  supposed to be commercial.
  2462.  It is also useful to import plenty of pictures. It's easy to use in
  2463.  order to script special tasks by automating manual tasks.
  2464.    
  2465. 7.5.3  Tools for Windows
  2466.  
  2467.  While all other tools in general are suited for Macintosh only (as long
  2468.  as not stated otherwise), there are some matching tools for Windows:
  2469.  Q: Is there under Windows a applescript-similar (comparable) programm ?
  2470.  A: Actually there a quite a few of them.  None ship WITH Windows
  2471.  however.  There is a REXX version for Windows, Visual Basic for
  2472.  Applications is for controlling supported applications, OLE can do some
  2473.  things, but it is mostly document based.  WinBatch is an excellent
  2474.  AppleScript-like thing.  It can do ANYTHING you can do in Windows, as
  2475.  well as some system-level things.
  2476.  (From: Kurt Knippel <MondoMail@AOL.COM>)
  2477.  
  2478. ------------------------------
  2479.  
  2480. Subject: 8  Miscellaneous Tips
  2481.    
  2482. 8.1   Removing password
  2483.  
  2484.  Contact Claris. They can do it for you, but it may take some time (> 2
  2485.  weeks). They have a form for you to fill out.
  2486.  The actual release is rather safe against hackers, but successful cracks
  2487.  were reported.
  2488.    
  2489. 8.2   Undocumented features
  2490.  
  2491.  Shortcuts:
  2492.  Control-C exits a field (like clicking in the record area)
  2493.  Control-[ deletes the current field (like Select All & Delete)
  2494.  Control-_ selects within the field to the end of the field text
  2495.  (From Sam Malenfant <Sam_Malenfant@CARLETONBE.OTTAWA.ON.CA>)
  2496.  In the Define fields dialog, the default button changes to Done (instead
  2497.  of Create or Change) if you hit the delete key or erase the name of the
  2498.  selected field.
  2499.  (reported by JoelBowers@eWorld)
  2500.  Shortcuts that work both in ScriptMaker and Sort, Export/Import:
  2501.  Tab toggles control between the steps and the script
  2502.  In the steps, type the first letter to move to a step
  2503.  In the steps, use up and down arrow keys to move to next step
  2504.  When the step is highlighted, use the spacebar to trigger move step to
  2505.  script
  2506.  In the script, spacebar triggers the "specify" dialog for the
  2507.  highlighted script step
  2508.  To move a highlighted step up or down in the script, use command key +
  2509.  up/down arrows
  2510.  (From Sheila Kliewer)
  2511.  Script steps:
  2512.  A Copy[] line in a Script without a specific field when not in any field
  2513.  produces a tab and repeating-char delimited string of the whole record,
  2514.  which can in turn be pasted into a specific field (where for instance it
  2515.  might be parsed to get at Field'n' or Field'n'Repetition'm').
  2516.  (From Sam Malenfant <Sam_Malenfant@CARLETONBE.OTTAWA.ON.CA>)
  2517.  Invisible characters, such as tab or repeating-separator-29 can be
  2518.  pasted into a text field and used in calculations with Position() for
  2519.  instance to find and replace. With scripting or "default data", a field
  2520.  call TAB for instrance, might be useful for parses.
  2521.  (From Sam Malenfant <Sam_Malenfant@CARLETONBE.OTTAWA.ON.CA>)
  2522.    
  2523. 8.3   Shortcuts
  2524.  
  2525.  A new tip for FMP3 for Macintosh:
  2526.  When in layout mode you can hold down the control key when selecting a
  2527.  layout object. Depending on the object, you will be presented with a
  2528.  popup menu of actions that you can take on that layout object. These
  2529.  include the text attributes, colors and formatting, setting of a
  2530.  portal's relations etc..
  2531.  Undocumented Shortcuts, most of them collected from FMP2.1 for Macintosh
  2532.  release:
  2533.  Control-C exits a field (like clicking in the record area)
  2534.  Control-[ deletes the current field (like Select All & Delete)
  2535.  Control-_ selects within the field to the end of the field text
  2536.  (From Sam Malenfant <Sam_Malenfant@CARLETONBE.OTTAWA.ON.CA>)
  2537.  In the Define fields dialog, the default button changes to Done (instead
  2538.  of Create or Change) if you hit the delete key or erase the name of the
  2539.  selected field.
  2540.  (reported by JoelBowers@eWorld)
  2541.  Escape is even faster...
  2542.  Shortcuts that work both in ScriptMaker and Sort, Export/Import:
  2543.  Tab toggles control between the steps and the script
  2544.  In the steps, type the first letter to move to a step
  2545.  In the steps, use up and down arrow keys to move to next step
  2546.  When the step is highlighted, use the spacebar to trigger move step to
  2547.  script
  2548.  In the script, spacebar triggers the "specify" dialog for the
  2549.  highlighted script step
  2550.  To move a highlighted step up or down in the script, use command key +
  2551.  up/down arrows
  2552.  (From Sheila Kliewer)
  2553.  Documented Shortcuts from the Quick Reference:
  2554.  c = /command/apple, o = option, s = shift
  2555.  * Layout Mode:
  2556.  Fields:
  2557.  Redefine a field on a layout                        o-double click
  2558.  Objects:
  2559.  Constrain resizing to horizontal or vertical        s-drag a handle
  2560.  Duplicate by dragging                               o-drag an object
  2561.  Move selected objects by one pixel at a time        Arrow keys
  2562.  Release grid while resizing                         c-resize
  2563.  Reset default format of an object                   c-click
  2564.  Squares object being resized                        o-resize
  2565.  Select all objects of same type                     c-o-A
  2566.  Parts:
  2567.  Drag selected layout part across objects            o-drag
  2568.  Reorder selected part                               s-drag
  2569.  Reorient part labels                                c-click
  2570.  T-square on/off                                     c-T
  2571.  Tools:
  2572.  Constrain line tool to horizontal or vertical       o-drag
  2573.  Constrain oval tool to a circle                     o-drag
  2574.  Constrain rectangle tool to a square                o-drag
  2575.  * Browse Mode
  2576.  Edit:
  2577.  Copy                                                c-C
  2578.  Copy found set                                      c-o-C
  2579.  Delete without confirmation                         c-E
  2580.  Delete without confirmation                         c-o-E
  2581.  Paste                                               c-V
  2582.  Paste without style                                 c-o-V
  2583.  Paste from last record                              c-'
  2584.  Paste from last record and move to next field       c-s-'
  2585.  (German release: use ▀ instead of ')
  2586.  Move:
  2587.  Next field                                          Tab
  2588.  Previous field                                      s-Tab
  2589.  Next Record / Request / Layout                      c-Tab
  2590.                                                   or o-Tab
  2591.  Previous Record / Request / Layout                  c-s-Tab
  2592.                                                   or o-s-Tab
  2593.  Text:
  2594.  multiple for Align left/right/center/full, Bold, Italics, Underline etc.
  2595.  Next point size up                                  c-s->
  2596.  Next point size down                                c-s-<
  2597.  One point larger                                    c-o-s->
  2598.  One point smaller                                   c-o-s-<
  2599.  (how about the German keyboard where > is s-<?)
  2600.  Delete one character left of cursor                 Delete
  2601.  Delete one word left of cursor                      o-Delete
  2602.  Move cursor by one word                             o-Left/Right
  2603.  Move cursor to beginning/end of line                c-Left/Right
  2604.  Misc:
  2605.  Help                                                c-?
  2606.  Network dialog box                                  c-o-O
  2607.  Show/Hide status area                               c-o-S
  2608.  Zoom Window Full/Previous Size                      c-s-Z
  2609.    
  2610. 8.4   Compatibility between DOS and Mac release
  2611.  
  2612.  There's not much problem about.
  2613.  Check the manuals, appendix E, "Cross-Platform Considerations".
  2614.  Have another look at
  2615.  <http://www.claris.com/TS/Featured/CrossPlat/Article.html>
  2616.  - take care to use 8.3 file names,
  2617.  - use the same fonts:
  2618.  Different fonts and small differences within the same font family may
  2619.  produce different display. Take care of proper alignment and use a
  2620.  little wider fields
  2621.  The standard setup of Mac contains Helvetica, while on Windows a similar
  2622.  font is named Arial (same for Times and Courier). There's a translation
  2623.  table to use the equivalent font. See [FontSubstitutes] section of the
  2624.  WIN.INI file, e.g.:
  2625.  [FontSubstitutes]
  2626.  Helv=MS Sans Serif
  2627.  Tms Rmn=MS Serif Times=Times New Roman
  2628.  Helvetica=Arial
  2629.  Monaco=Courier New
  2630.  Otherwise, the standard translation is
  2631.  PC                   Mac:
  2632.  MS Serif             Times
  2633.  Times New Roman      Times
  2634.  Times                New York
  2635.  Tms                  Rmn Times
  2636.  Courier New          Courier
  2637.  Courier              Monaco
  2638.  Commercial equivalent font packages are available.
  2639.  I recommend TTConverter to translate TrueType fonts between Mac and PC
  2640.  <ftp://ftp.switch.ch//mirror/umich-mac/util/font/ttconverter1.5.cpt.hqx>
  2641.  - Printing: expect slightly different results
  2642.  - Pictures: on PCs use the setting "Store Macintosh picture formats" to
  2643.  display as PICT on Macs;
  2644.  - other problems due to specific platforms:
  2645.  Differences in character sets (e.g. not equal, greater than or equal)
  2646.  and exact color mapping.
  2647.  Certain ScriptMaker commands work different (e.g. send mail, page setup)
  2648.  AppleScript is not supported on PCs, PC batch commands don't work for
  2649.  Mac.
  2650.  JPEG and QuickTime are special.
  2651.    
  2652. 8.5   Buttons
  2653.  
  2654.  - You may use any text and picture within a layout as button. Select an
  2655.  object and use the menu Scripts / Define Button (for FMP2.1) to assign a
  2656.  script to the button.
  2657.  - Fields may not be used as buttons for FMP2.1. You may create a proper
  2658.  background for a field that looks like a button and place an invisible
  2659.  button above the field.
  2660.  For FMP3 you may group a field with a button function. This will not
  2661.  permit to select this field by mouse click, but by script or tab order
  2662.  only. There is no status function to detect what field you clicked on.
  2663.  If you need this information, you'll have to create one script per
  2664.  button & field.
  2665.  - An invisible button is an object that doesn't contain any visible
  2666.  information, e.g. a rectangular box without filling and outline.
  2667.  - Objects created by the layout tools of FMP get displayed very fast
  2668.  while using little memory.
  2669.  - Since the drawing capabilities of FMP are limited, you may take
  2670.  virtually any other application to create objects and to paste them on
  2671.  FMP layouts.
  2672.  - Objects created by other tools may use very complex picture formats
  2673.  and increase processing time and memory requirements. Take care to use
  2674.  the minimum resolution (e.g. 72 dpi for screen buttons), the minimum of
  2675.  components and the minimum color depth.
  2676.  - As an option you may design complete button areas and backgrounds by
  2677.  separate tools, paste them on a layout and place invisible buttons above
  2678.  the according area.
  2679.  * Example: The buttons of the [FAQ]FMP database (faq.fm) were created
  2680.  e.g. by drawings within FMP itself, designed at 400 %, displayed at 100
  2681.  %. The color depth was set to 16 colors by the control panel "monitors".
  2682.  Then a screenshot was made by cmd-shift-3. The screenshot picture was
  2683.  opened by SimpleText and a rectangular button selected and copied
  2684.  directly from that display, pasted to an FMP layout and defined as a
  2685.  button. The buttons were marked as non-printing objects.
  2686.  - Try to assign a different line color to a button. Thus you may get
  2687.  variations of a button easily. The greyed buttons within faq.fm were
  2688.  produced by assigning a dark grey to them. This function is gone for
  2689.  FMP3
  2690.    
  2691. 8.6   Resources for dialog boxes
  2692.  
  2693.  (from Dale Saukerson <sauke001@GOLD.TC.UMN.EDU>)
  2694.  FileMaker is great, but I find myself doing excessive amounts of
  2695.  scrolling thru the various dialog boxes when revising a database'
  2696.  structure and layout. Many of the dialog boxes are minimal size, even
  2697.  for a small 14" monitor. To correct this, I used ResEdit to increase the
  2698.  size of the offending dialog boxes.
  2699.  Listed below are the numbered DLOG resources for common dialog boxes,
  2700.  for version 2.1v1 of FileMaker Pro for the Macintosh.
  2701.  By opening these, you can drag the elements around and increase their
  2702.  relative length, much like you would move objects around in a FileMaker
  2703.  layout. If you have even minimal ResEdit skills (like myself) you can
  2704.  easily perform the necessary modifications yourself with no fear of
  2705.  destruction of data. However, ResEdit is a powerful tool and could be
  2706.  dangerous in the hands of the ignorant, so the usual warnings apply.
  2707.  DLOG 514
  2708.  Script definition. Larger list of the script names shown when you select
  2709.  "ScriptMaker" from the "Script" menu
  2710.  DLOG 511
  2711.  Define scripts. Shows the individual steps assigned to a script. Now
  2712.  almost half of the possible script steps will be shown--two clicks of
  2713.  the mouse and you can
  2714.  see ALL of the script step choices. Nice.
  2715.  DLOG 5000
  2716.  Define fields. Create a larger list of the fields and reduce the amount
  2717.  of scrolling. Also allows you to see the full length of the name in the
  2718.  list of the fields instead of only in the "name" box portion of the
  2719.  dialog box.
  2720.  DLOG 5020
  2721.  Reorder layouts. View more of the layout names in the dialog box and
  2722.  minimize scrolling. Does NOT prevent trunctuating of the layout name in
  2723.  the layout name pop up menu portion of the toolbox area. Two mouse
  2724.  clicks to see all 67 layouts in my pet project database.
  2725.  DLOG 5022
  2726.  Sort records. View more of the field names before scrolling, though it
  2727.  is only a modest increase.
  2728.  DLOG 5039
  2729.  Specify field order for import. View more fields with less scrolling.
  2730.  DLOG 5040
  2731.  Specify field order for export. View more fields with less scrolling.
  2732.    
  2733. 8.7   The special name "-" as list separator
  2734.  
  2735.  Whenever you use the "-" as a name, it may get displayed as a dotted
  2736.  line within popup list views. You may use it to group similar or related
  2737.  items. Within FMP you may use it for
  2738.  * Predefined value lists of fields
  2739.  Example for music storage media:
  2740.  (every value is within a unique line, separated by <Carriage Return>)
  2741.  CC
  2742.  CC 60
  2743.  CC 90
  2744.  CC 100
  2745.  -
  2746.  CD
  2747.  CD single
  2748.  CD maxi
  2749.  CD Box
  2750.  CD Set
  2751.  etc.
  2752.  * Field Names
  2753.  You may use the "-" as name, but it's not useful any more after you
  2754.  sorted by any type / name etc. I recommend to sort by name and group
  2755.  field names by a leading character or type, e.g. all parts of a name by
  2756.  Name, Name_First, Name_Title, Name_Sex, Name_SSN etc.
  2757.  Personally, I name fields for internal usage, such as date of creation
  2758.  or serial number, within rectangular brackets, e.g. [date_of_creation]
  2759.  I name calculation fields by a leading underscore, e.g.
  2760.  _previous_serial_number = [serial_number] - 1 (That's a useful construct
  2761.  to lookup values from the previous record)
  2762.  There is no need to compose names as a single word, but within
  2763.  calculations it's more useful just to double-click a name in order to
  2764.  highlight it. For that reason I use the underscore as delimiter.
  2765.  Others use e.g. a leading number or a leading character for the type of
  2766.  the field, e.g. C for calculations, S for summary.
  2767.  * Script Names
  2768.  The "-" is very useful to structure the display of lists. There may
  2769.  still be a real script behind this name. It may get called by other
  2770.  scripts as usual. Use an ordinary name first, then edit any other
  2771.  "perform script [name]" by selecting this script. You may change the
  2772.  name afterwards to "-" again, but the reference won't get lost (I assume
  2773.  the internal reference is not by name). BTW this works as well for
  2774.  layouts and fields.
  2775.  Warning: AppleScript references scripts by name:
  2776.  Do Script "-" -- will perform the first script that is named "-"
  2777.  * Layouts
  2778.  Here the name "-" is most useful to hide layouts that contain
  2779.  statistical fields or dialogs. You don't have direct access to them in
  2780.  browse, finde and preview mode. Thus a user won't get confused by that
  2781.  type of layout.
  2782.  You may grant access to those layouts when you create scripts and link
  2783.  them to buttons. As mentionned before use "Goto Layout [name]" by using
  2784.  an ordinary name first, then change the name to "-".
  2785.  My private solution is to jump to a layout by its number. For that
  2786.  purpose I use a field named [mark]:
  2787.  copy [select all, [mark]]  -- thus the field gets selected, its content
  2788.  gets buffered
  2789.  paste literal ["3"]  -- this is the number of a hidden layout
  2790.  go to layout [take number from field [mark] ]
  2791.  paste[select all, [mark]]  -- thus the original contents get pasted to
  2792.  [mark] again.
  2793.  Within layout mode you may select hidden layouts by entering the layout
  2794.  number, stepping through layouts by cmd-tab or dragging the handle of
  2795.  the book.
  2796.    
  2797. 8.8   WWW, HTML and CGI
  2798.  
  2799.  How to link FileMaker Pro to the World Wide Web:
  2800.  First, you will need a Web Server, such as WebStar.
  2801.  Then, you will have to link FMP to it.
  2802.  One solution is direct exchange of data via AppleEvents, AppleScript or
  2803.  Frontier.
  2804.  The other solution is to create a html output from within FMP:
  2805.  * You may add html tags to fields by using simple calculations
  2806.  Example:
  2807.  _header = "<H3>" & header & "</H3>"
  2808.  _text   = "<P>"  & text
  2809.  Then export the html-formatted calculation fields instead of the
  2810.  original field
  2811.  * You may add or modify html tags by other applications
  2812.  Consider simple find/replace tools, mail merge export and formatting,
  2813.  AppleScript etc.
  2814.  * You may add all tags to a html layout and use this data
  2815.  The simple solution is to place the tags around the fields and use a
  2816.  layout dump, e.g. by preview/copy all (information as PICT), or by
  2817.  printing to a text file with Print2Pict.
  2818.  For further information check the sections on FMPRO-CGI and ROFM CGI.
  2819.  See also
  2820.  http://edb518ea.edb.utexas.edu/scripts/cgix/cgix.html
  2821.  http://www.uwtc.washington.edu/Computing/WWW/Mac/CGI.html
  2822.  http://www.biap.com/machttp/examples/fmpro.sit.hqx
  2823.  http://www.claris.com/TS/TIJ/fmcgi/article.html "Publish your database
  2824.  on the Web"
  2825.    
  2826. 8.8.1  HTML text conversion
  2827.  
  2828.    
  2829. 8.9   Comments within calculations
  2830.  
  2831.  Filemaker has no facility for this, yet it may [be] useful to annotate,
  2832.  in order to remember what the calc was supposed to do.
  2833.  Begin the calc field with:
  2834.    If(1=1 ,"","My solution") &
  2835.  (from jjl@knoware.nl (J. J. Lodder))
  2836.    If (1, "", "Your description") &
  2837.  should do as well.
  2838.  Another one is
  2839.    Left ("Yet another textual description", 0)
  2840.    
  2841. 8.10   Empty fields
  2842.  
  2843.  Find empty fields:
  2844.  Enter an equal symbol as search parameter. This will check on exact
  2845.  match to virtually nothing.
  2846.  Number fields:
  2847.  Their value is zero when no numerical values are included. You may use
  2848.  other characters, but they won't get indexed. Thus a find on characters
  2849.  within a number field will fail.
  2850.  Calculation fields:
  2851.  A calculation does not take place when the fields it relies on are
  2852.  empty.. If (Test, "Yes", "No") thus will not produce a "No" while the
  2853.  Test is empty. Previous calculated values may get kept instead of
  2854.  deleted.
  2855.  "Important: If Test refers to a field that does not yet contain a value,
  2856.  then the If function is skipped and returns an empty result."
  2857.  (from the FMP User's Guide, A-25)
  2858.  You may force the calculation by forcing a value:
  2859.  - If (Qualifier & "x" = "x", "Yes", "No"). This will force the
  2860.  recalculation on existing, but empty fields, but it will still fail on
  2861.  new emtpty records.
  2862.  - Autoenter a value, e.g. default " " to Qualifier:
  2863.    If (Trim(Qualifier) = "" , "Yes", "No")
  2864.  Surprisingly enough, even by only marking the default value checkbox
  2865.  without data made it work
  2866.  - Use a special field, e.g. autoenter " " to a field named BLANK
  2867.    If (Qualifier & Blank = " ", "Yes", "No")
  2868.  FMP 3.0 offers options whether or not to calculate on empty fields.
  2869.    
  2870. 8.11   Sort Order
  2871.  
  2872.  The general sort order of records is [0-9][A-Z].
  2873.  Any symbol that resembles an alphanumeric string gets sorted as its
  2874.  equivalent, e.g. both upper and lower characters A and a as A, ╞ (=AE)
  2875.  as A, ⌐ (= copyright) as C.
  2876.  All other characters get ignored while sorting, such as leading strings.
  2877.  One special exception it the non-breaking space " " (character ID 220,
  2878.  option-space). It is sorted first. Next is the space itself, including
  2879.  all other characters that get indexed as space (see section on
  2880.  indexing). Last come empty fields.
  2881.  As a side effect you may find all filled fields not only by a search on
  2882.  omitting all empty records (find field with contents that match exactly
  2883.  nothing '=' & omit), but much faster by a search on greater equal 0 (ä
  2884.  0)
  2885.  If you'd like to sort case-sensitive, you may create an additional sort
  2886.  criterion, e.g.
  2887.  sort (calculation, result number) =
  2888.  If(Exact(Upper(Left(text,1), Left(text,1)), "1: upper", "0: lower")
  2889.  Then sort on text and sort instead on text alone.
  2890.    
  2891. 8.12   Switch printers
  2892.  
  2893.  FMP does not offer a built-in option to switch printers.
  2894.  The Chooser is not scriptable itself.
  2895.  QuicKeys is capable of receiving AppleEvents out of FileMaker and has a
  2896.  very fast Chooser Switching utility.
  2897.  KeyQuencer can do that as well. However, KeyQuencer can't choose between
  2898.  network printers, just select a printer driver.
  2899.  Yet another tool: Tempo
  2900.  There is also an AppleScript extension (OSAX) called XCMD OSAX that will
  2901.  accept commands to change the printer driver. It's available at:
  2902.  http://www.scriptweb.com/scriptweb/osaxen/default.html
  2903.  "Basically, to choose a printer, just drop the osax into your Scripting
  2904.  Additions Folder (inside your extensions folder--you need Applescript)
  2905.  and then go to Filemaker 3.0 and create a script with an Applescript
  2906.  step like this:"
  2907.    Choose Printer DriverName "LaserWriter 8" PrinterName "My Printer"
  2908.  Zone "EtherTalk"
  2909.  (from Paul Fabris <pfabris@ASTRAL.MAGIC.CA>)
  2910.  "There is a OSAX called "Set Printer to" as part of the GTQ Scripting
  2911.  Library v1.2 that does this. You need AppleScript and the OSAX
  2912.  installed. Here is the OSAX library:"
  2913.  set printer to: chooses the specified device type
  2914.          set printer to  string  -- device type name
  2915.                  [named  string]  -- name of device
  2916.                  [using  printer port/modem port]  -- which serial port
  2917.  to use
  2918.                   (valid for serial devices only)
  2919.                  [zone  string]  -- zone where device is
  2920.  (from ehsan saffari <aa074@sfn.saskatoon.sk.ca>)
  2921.  Comment: the page setup is stored within the FMP ScriptMaker command
  2922.  "Page Size".
  2923.    
  2924. 8.13   Error Codes
  2925.  
  2926.  An Error Code is available immediately after its occurence and may get
  2927.  requested by Status(Error Code),
  2928.  e.g. within scripts as
  2929.  If ["Status (CurrentError) <> 0"]
  2930.  The Error Code is lost after the next step, since the next step may
  2931.  return e.g. "0" again. Thus one may buffer the status to a certain field
  2932.  [Status Current Error] of type global/number:
  2933.  Set Field[[Status Current Error], Status (CurrentError)]
  2934.  Here is a list of error codes taken from the helputility of FMP3 (by
  2935.  romero@atlas.odyssee.net (Frank Romero))
  2936.  Errors:
  2937.  -1      Unknown error
  2938.  0       No error
  2939.  1       User canceled action
  2940.  2       Memory error
  2941.  3       Command is unavailable (e.g., wrong operating system, wrong
  2942.  mode, etc.)
  2943.  4       Command is unknown
  2944.  5       Command is invalid (e.g., a Set Field script step does not have
  2945.  a calculation specified)
  2946.  100     File is missing
  2947.  101     Record is missing
  2948.  102     Field is missing
  2949.  103     Relation is missing
  2950.  104     Script is missing
  2951.  105     Layout is missing
  2952.  200     Record access is denied
  2953.  201     Field cannot be modified
  2954.  202     Field access is denied
  2955.  203     No records in file to print or password doesn't allow print
  2956.  access
  2957.  204     No access to field(s) in sort order
  2958.  205     Cannot create new records; import will overwrite existing data
  2959.  300     The file is locked or in use
  2960.  301     Record is in use by another user
  2961.  302     Script definitions are in use by another user
  2962.  303     Paper size is in use by another user
  2963.  304     Password definitions are in use by another user
  2964.  305     Relationship or value list definitions are locked by another
  2965.  user
  2966.  400     Find criteria is empty
  2967.  401     No records match the request
  2968.  402     Not a match field for a lookup
  2969.  403     Exceeding maximum record limit for demo
  2970.  404     Sort order is invalid
  2971.  405     Number of records specified exceeds number of records that can
  2972.  be omitted
  2973.  406     Replace/Reserialize criteria is invalid
  2974.  407     One or both key fields are missing (invalid relation)
  2975.  408     Specified field has inappropriate data type for this operation
  2976.  409     Import order is invalid
  2977.  410     Export order is invalid
  2978.  411     Cannot perform delete because related records cannot be deleted
  2979.  412     Wrong version of FileMaker used to recover file
  2980.  500     Date value does not meet validation entry options
  2981.  501     Time value does not meet validation entry options
  2982.  502     Number value does not meet validation entry options
  2983.  503     Value in field does not meet range validation entry options
  2984.  504     Value in field does not meet unique value validation entry
  2985.  options
  2986.  505     Value in field failed existing value validation test
  2987.  506     Value in field is not a member value of the validation entry
  2988.  option
  2989.  value list
  2990.  507     Value in field failed calculation test of validation entry
  2991.  option
  2992.  508     Value in field failed query value test of validation entry
  2993.  option
  2994.  509     Field requires a valid value
  2995.  510     Related value is empty or unavailable
  2996.  600     Print error has occurred
  2997.  601     Combined header and footer exceed one page
  2998.  602     Body doesn't fit on a page for current column setup
  2999.  603     Print connection lost
  3000.  700     File is of the wrong file type for import
  3001.  701     Data Access Manager can't find database extension file
  3002.  702     The Data Access Manager was unable to open the session
  3003.  703     The Data Access Manager was unable to open the session; try
  3004.  later
  3005.  704     Data Access Manager failed when sending a query
  3006.  705     Data Access Manager failed when executing a query
  3007.  706     EPSF file has no preview image
  3008.  707     Graphic translator can not be found
  3009.  708     Can't import the file or need color machine to import file
  3010.  709     QuickTime movie import failed
  3011.  710     Unable to update QuickTime file reference because the database
  3012.  is read-only
  3013.  711     Import translator can not be found
  3014.  712     XTND version is incompatible
  3015.  713     Couldn't initialize the XTND system
  3016.  714     Insufficient password privileges do not allow the operation
  3017.  800     Unable to create file on disk
  3018.  801     Unable to create temporary file on System disk
  3019.  802     Unable to open file
  3020.  803     File is single user or host cannot be found
  3021.  804     File cannot be opened as read-only in its current state
  3022.  805     File is damaged; use Recover command
  3023.  806     File cannot be opened with this version of FileMaker
  3024.  807     File is not a FileMaker file or is severely damaged
  3025.  808     Cannot open file because of damaged access privileges
  3026.  809     Disk/volume is full
  3027.  810     Disk/volume is locked
  3028.  811     Temporary file cannot be opened as FileMaker file
  3029.  812     Cannot open the file because it exceeds host capacity
  3030.  813     Record Synchronization error on network
  3031.  814     File(s) cannot be opened because maximum number is open
  3032.  815     Couldn't open lookup file
  3033.  816     Unable to convert file
  3034.  900     General spelling engine error
  3035.  901     Main spelling dictionary not installed
  3036.  902     Could not launch the Help system
  3037.  903     Command cannot be used in a shared file
  3038.    
  3039. 8.14   Get User's Name / Limit Access to Certain Users
  3040.  
  3041.  Date:         Wed, 10 Jan 1996 11:37:50 -0500
  3042.  From: Chris Moyer <fmpro@MINDSPRING.COM>
  3043.  Subject:      Re: Password Question
  3044.  Q: [...] limit access to people using the app to just those employees
  3045.  that work at that particular location. [...]
  3046.  A: Unfortunately, FileMaker 3.0 doesn't have a status function for
  3047.  current group or password, so that part is a little funky, but the rest
  3048.  is pretty straight up.
  3049.  To work around the lack of password status functions, you need to use an
  3050.  extremely modified variation on Michael Singer's old password trick.  In
  3051.  your case, you would set up groups that denoted location, then assign
  3052.  individual passwords to a specific group.  You need to create a
  3053.  calculation field for each group, with the calculation equalling 1, 2,
  3054.  3, 4, 5, etc. It doesn't matter what the values are, but they need to
  3055.  corresponds with whatever code you currently use to denote location in
  3056.  your Regular Location field.  You need to have one more field, a global
  3057.  field (either text or number format should work okay) called Location.
  3058.  In your Access Privileges, you need to set up groups for each location.
  3059.  For the purposes of this example, I'll refer to them as Location 1, 2,
  3060.  3, etc.  In the Access Privileges Overview, select the Location 1 group
  3061.  and shut off access to all the location calcs except its own.  Do the
  3062.  same for the rest of the location groups.
  3063.  In the ScriptMaker, you need to create a twisted version of a looping
  3064.  script called Startup (or Fred or Lulu - you can call it whatever the
  3065.  heck you want...) that has these steps:
  3066.  Allow User Abort [Off]
  3067.  Loop
  3068.  Set Field ["Location", "Location 1"]
  3069.  Exit Loop If ["Location>0"]
  3070.  Set Field ["Location", "Location 2"]
  3071.  Exit Loop If ["Location>0"]
  3072.  Set Field ["Location", "Location 3"]
  3073.  Exit Loop If ["Location>0"]
  3074.     etc....
  3075.  Exit Loop If ["Location=0"]
  3076.  End Loop
  3077.  Since you have access turned off for all of the location calculations
  3078.  except one, all of those Set Field commands except one will fail,
  3079.  returning a 0.  I stuck a final Exit Loop If global does equal 0 in
  3080.  there just so you can get out of the script if something went wrong.
  3081.  Hypothetically, that step should never get executed.  Just in case,
  3082.  though....
  3083.  If you had a ton of locations, you could make this into a regular loop,
  3084.  but you'd have to use a layout and the go to next field step, and
  3085.  another global.  This way's a little more bullet-proof.
  3086.  So...now you know what location a user belongs to, and they have no idea
  3087.  how you know, so they probably won't be able to figure out how to defeat
  3088.  your script even if they wanted to.  What good does the location do you?
  3089.  I'll tell you.  By using calculated validations, you can selectively
  3090.  lock records in a database that otherwise can be edited.  Suppose you
  3091.  have a Name field.  Go into Define Fields, click Options, switch to
  3092.  Validation options, select a calculated validation, and use this
  3093.  formula:
  3094.  Location = Regular Location
  3095.  That's it.  Set Strict Validation and give users a message explaining
  3096.  that they can only edit records for their location, and you're done.
  3097.  Oh, you do need to make that startup script a startup script in
  3098.  Preferences, but after that you're done.  You'll need to set this
  3099.  validation up for every field that you want to restrict entry on.
  3100.    
  3101. 8.15   Use // as literal text
  3102.  
  3103.  The literal "//" within a text object is a place holder for the actual
  3104.  date. Other special characters are e.g. "::" for the time, "||" for the
  3105.  user name, "##" for the page number, "@@" for the record number.
  3106.  But you need "//" in URLs, such as
  3107.  <ftp://ftp.th-darmstadt.de//pub/database/filemaker-pro/faq.fm.sit>.
  3108.  FileMaker Pro does not support characters, such as the regular
  3109.  expression "\//", to escape a special meaning.
  3110.  But there are various workarounds:
  3111.  * place a space between both slashes: "/   /". When you format the space as
  3112.  font size 1 point it's almost invisible.
  3113.  * another solution is to use two separate text objects. The first object
  3114.  ends with a slash, the second objects starts with a slash: "text1/"
  3115.  "/text2"
  3116.  You may place them one aside the other so that no space between is
  3117.  visible. Tip: Verify the position by the position/size info and group
  3118.  both objects together.
  3119.  * Get the full URL or the double slash from a field.
  3120.  FMP3 permits the usage of a global field, e.g. Double Slash = "//" to
  3121.  store this value.
  3122.  FMP3 also permits the usage of merged text where you may place fields
  3123.  within a text's object environment: "text1 <<Double Slash>> text2".
  3124.  * headds@world.net (David Head) reported to select the text object, then
  3125.  assign to it the DATE format "none/none/none". This will use the actual
  3126.  date, but display it as //.
  3127.    
  3128. 8.16   Faster Screen Redraw
  3129.  
  3130.  Here are some suggestions that may speed up the redraw of layouts:
  3131.  Fields:
  3132.  - Do not use border lines
  3133.  - Do not use background colors
  3134.  Fonts:
  3135.  - Use a minimum of different fonts and styles
  3136.  Picture Objects:
  3137.  - Use the fastest drawing type of object.
  3138.  - Objects drawn by FMP layout tools itself usually are optimized
  3139.    for that job
  3140.  - Objects drawn within other applications should be made
  3141.    as small as possible:
  3142.  - Use the minimum required resolution.
  3143.    Cuts from screenshots (cmd-shift-3, rectangles may be cut even
  3144.    within SimpleText) with 72 dpi are well suited.
  3145.  - Use the minimum required color map
  3146.    Personally, I switch to 16 color mode before I take a screenshot.
  3147.    This will reduce memory, increase speed and does not require any
  3148.    color mapping or dithering.
  3149.  - use the minimum of objects
  3150.  Example: you don't have to build a button from multiple drawing objects,
  3151.  or a group of buttons by single buttons, each defined as a graphical
  3152.  object and button of its own, but you may create them as a single
  3153.  picture object (with minimum requirements) and place transparent FMP
  3154.  objects  (e.g. rectangles or circles) as buttons above
  3155.  Other:
  3156.  - Don't use background part colors
  3157.  - Keep your layouts simple
  3158.  - Instead of layouts filled with all fields, use several special
  3159.    layouts with the required fields only
  3160.  - Use the minimum window size
  3161.  - hide unused applications and windows
  3162.  - Maybe using a compressed database copy or a resorted clone can
  3163.    speed up portals and lists.
  3164.  - Assign more memory to FMP3 (less useful for FMP2.1).
  3165.  - Use scripts to freeze the window while you modify multiple fields.
  3166.  Screen redraw of lists became slower for FMP3, compared to FMP2.1.
  3167.  "Use bring to front and send to back to layer things -
  3168.  - layer all your static graphics (and text) to the back
  3169.  - then layer all the local fields next
  3170.  - layer the related fields on top of everything else
  3171.  It won't actually reduce the total redraw time, but it will subjectively
  3172.  feel faster."
  3173.  (From: Eric Scheid <ironclad@planet.net.au>)
  3174.    
  3175. 8.17   Date calculation
  3176.  
  3177.  As indicated before the internal representation of dates is a continuous
  3178.  number of days from 1.1.0001 on. This makes calculations on dates very
  3179.  easy, since you may use them just as numbers.
  3180.  The number of days between two dates is e.g.
  3181.     StartDate - StopDate
  3182.  A person's age thus may get computed e.g. by
  3183.    Status(CurrentDate) - Birthday / 365
  3184.  This will ignore the effect of leap years. A better estimation is
  3185.    Status(CurrentDate) - Birthday / 365.25
  3186.  The best suggestion, reported by  hp.robin@infoboard.be (Henri-Pierre
  3187.  Robin), is:
  3188.    Year(Status(CurrentDate)) - Year(BirthDate)
  3189.    - (Status(CurrentDate)  < DayofYear(BirthDate))
  3190.  It takes the boolean result 0 or 1 if the actual date is before the
  3191.  birthday date of the year, indicating that it's not a full year yet.
  3192.  For FMP3 you may use both Status(CurrentDate), perferable for the
  3193.  unstored calculation, and Today, that gets updated on opening a
  3194.  database.
  3195.  FMP2.1 only offers the time consuming Today function. This function will
  3196.  update the Today value within every calculation field and record,
  3197.  regardless whether you are interested in its value. As a workaround you
  3198.  should avoid the Today function, but use a scripted solution to paste
  3199.  the actual date whenever required to a suitable "ThisDay" field.
  3200.    
  3201. 8.18   Displaying Data as a Table
  3202.  
  3203.  FMP is not a spreadsheet tool, but a record based database while there
  3204.  is little dependency between the lines. Thus building tables is not a
  3205.  simple job.
  3206.  You have various choices to display your data as a table. The normal
  3207.  format is to use a header line within a header part and display in list
  3208.  view the records below as the selected and sorted lines of a table.
  3209.  You may unify matching headers by subsummary parts. They get only
  3210.  displayed in a list when you print or preview a page that is sorted as
  3211.  specified for the subsummary part.
  3212.  When an object's topmost line touches a part, it belongs to this part,
  3213.  regardless how many other parts below it overlaps. This may get used to
  3214.  make an object, such as a field, drawing or label, as belonging to a
  3215.  header part, while it is displayed within the part below.
  3216.  For FMP2.1 you could group objects together and the topmost line of the
  3217.  group determined the part. This is gone for FMP3, but with merge text
  3218.  you may get a similar output.
  3219.  You then may build tables by multiple columns, e.g. to display in order
  3220.  [leading    ---------
  3221.    text       1  |  3
  3222.   object]    ---   ---
  3223.               2  |  4
  3224.              ---   ---
  3225.  Example: HTML table
  3226.  It may get used to produce the html source code for a WWW page.
  3227.  This object is within the header or subsummary part (pate break after
  3228.  every occurence):
  3229.    <HTML><HEAD><TITLE>My html database</TITLE></HEAD><CENTER>
  3230.    <table width=99% border=1 cellpadding=1 cellspacing=1>
  3231.  This single text object touches the header:
  3232.    </TR><TR><TD><B>Label1
  3233.    </TR><TR><TD><B>Label2 </B>
  3234.    </TR><TR><TD><B>Label3 </B>
  3235.  Now place single objects within the body
  3236.    <TD> [Field1]
  3237.    <TD> [Field2]
  3238.    <TD> [Field3]
  3239.  Those objects are on the same height as the labels that you want to use.
  3240.  As a multicolumn preview, printed e.g. to a file, you may obtain a html
  3241.  table with its central part similar to
  3242.  <TR><TD><B>Label1        <TD> 1.1 <TD> 2.1 <TD> 3.1 </TR>
  3243.  <TR><TD><B>Label2 </B>   <TD> 1.2 <TD> 2.2 <TD> 3.2 </TR>
  3244.  <TR><TD><B>Label3 </B>   <TD> 1.3 <TD> 2.3 <TD> 3.3 </TR>
  3245.  where "1.3" is the content of the third field of the first record. The
  3246.  text object </Table> should be somewhere in the footer.
  3247.  But what to do if you want neither a display by lines, nor by columns:
  3248.  FMP3 offers the mechanism of related records and portals. Thus a simple
  3249.  solution is to build a relation for every cell of a table and display
  3250.  the matching information within.
  3251.  Example: TimeTable
  3252.  Day: Monday
  3253.  Time:      8-9   9-10   10-11 ...
  3254.  room 1    user1  user2
  3255.  room 2           user3
  3256.  room 3
  3257.  You got one database "Table" that holds the table, another "Records"
  3258.  that holds the combinations:
  3259.  Day, Period, Room, User:
  3260.  Monday,  8-9, 1, user1
  3261.  Monday, 9-10, 1, user2
  3262.  A proper relation is e.g.
  3263.  Table:"Mon-08-1"  to Records:keyfield
  3264.  keyfield = Day & Period & Room
  3265.  (formatted with additional text operations)
  3266.  The second relation is
  3267.  Table:"Mon-08-2"  to Records:keyfield
  3268.  etc. up to
  3269.  Table:"Mon-17-99" to Records:keyfield
  3270.  You now place the related field user as
  3271.             8-9                9-10
  3272.  room1     [relation1::user]
  3273.  room2     [relation2::user]
  3274.  etc. Use the feature that you may convert a time period, such as "8-11",
  3275.  to three one-hour periods, separated by a carriage return for a proper
  3276.  many-to-many keyfield, resulting e.g. in
  3277.  "Tue-8-1╢Tue-9-1╢Tue-10-1"
  3278.  It's cumbersome to define all these single relations, but straight
  3279.  forward. But instead of many relations there may be suitable solutions
  3280.  that use portals and multiple rows as well.
  3281.    
  3282. 8.19   Zoom window size
  3283.  
  3284.  In case you want to adjust and resize the window for an optimum size,
  3285.  maybe even while switching layouts, you may use the Toggle Window [zoom]
  3286.  command.
  3287.  Create an invisible "frame" the size that you want your windows to
  3288.  display. Use e.g. a rectangular object of the desired outer size with
  3289.  "line: none" and lock it.
  3290.  FMP will zoom to the outer edge of the frame.  Therefore, everytime the
  3291.  user goes to a different screen, they get the screen size that you want
  3292.  them to see.
  3293.  Of course there may be no other objects outside the frame. If you have
  3294.  to use some "hidden" fields, place them hidden or invisible e.g. at the
  3295.  top left edge.
  3296.  This auto-zoom solution counteracts the user who likes to manually
  3297.  resize the window. Thus you may perform e.g. a special "Zoom" script
  3298.  instead of the Toggle Window script command:
  3299.   If[GlobalZoom]
  3300.    Toggle Window[Zoom]
  3301.   End If
  3302.  Global Zoom here is a global number field where you may assign a boolean
  3303.  value whether or not to zoom windows.
  3304.  
  3305. ------------------------------
  3306.  
  3307. Subject: 9  Data Exchange
  3308.    
  3309. 9.1   Copy a layout from one database to another
  3310.  
  3311.  It is not possible to copy complete layouts between databases. However,
  3312.  it is possible to copy any picture information, fields and buttons to
  3313.  other databases.
  3314.  Open Layout mode, select, copy, go to other database, paste.
  3315.  Fields will be copied only if a field with identical names is already
  3316.  defined in both databases.
  3317.  The link of scripts to buttons will be copied only if there is a script
  3318.  with identical names in both databases.
  3319.    
  3320. 9.2   Modify layout objects
  3321.  
  3322.  First a tip to select all objects of a certain type:
  3323.  In layout mode you can select objects by type. First select one object
  3324.  of the type you want, for example, click on a field. Then press
  3325.  Command-Option-A to select ALL the fields on your layout.
  3326.  (from FMUG at MIT)
  3327.  Now some other tips:
  3328.  (1) While in layout mode you can hit the ENTER key and the tool palette
  3329.  will toggle between the arrow tool and the last chosen object tool.
  3330.  (2) Using the DUPLICATE command will offset the duplicated object by 6
  3331.  pixels to the right and 6 pixels down. Using the ARROW keys you can type
  3332.  7 left and 7 up to create a highlight or offset of the original object.
  3333.  (3) Using the OPTION key on Mac or the ALT key on the PC will allow you
  3334.  to drag copy a selection. Hold the SHIFT and OPTION or ALT keys and it
  3335.  will constrain the copy while you drag.
  3336.  (4) Locking your background objects will allow you to drag select your
  3337.  foreground objects.
  3338.  (5) Once a button is created, simply duplicate it and double click to
  3339.  assign it another function. You don't have to go to the Define Button...
  3340.  menu item.
  3341.  (from Matt Petrowsky and its FMPro online user magazine / ISO)
  3342.    
  3343. 9.3   Copy a record or list of records to other applications
  3344.  
  3345.  * If no field is selected, the copy command will copy the current record
  3346.  to the clipboard. The clipboard includes all fields, in order of
  3347.  creation, as tab-delimited text without styles.
  3348.  If you press option while doing this, all selected records will be
  3349.  copied.
  3350.  * Open Preview and Copy.
  3351.  The records are copied to a PICT as they are displayed on the screen.
  3352.  They can be pasted to and modified by other drawing tools.
  3353.  * To copy text info only, see Print2Pict.
  3354.    
  3355. 9.4   Export / Import
  3356.  
  3357.  FMP supports multiple export and import formats for databases as
  3358.  described in section 8 of the User's Guide.
  3359.  Some aspects should be pointed out:
  3360.  * Most export and import formats use the <Carriage Return> (ASCII-13) as
  3361.  a record separator.
  3362.  For that reason the returns within text fields get translated to
  3363.  "vertical tabs" (ASCII-11).
  3364.  Macs use <Carriage Return> as EndOfLine delimiter, while Unix takes
  3365.  <Line Feed> (ASCII-10) and DOS takes both. This might confuse imports
  3366.  and should be fixed before.
  3367.  * Repeating fields are separated by <ASCII-29>. The export formats
  3368.  "Tab-separated Text" and "Mail Merge" support repeating fields
  3369.  Check the section on repeating fields for details. There's an export and
  3370.  import option to split repeating fields.
  3371.  * Take care of various limitations:
  3372.  FMP supports text fields up to 32K characters, while BASIC, SYLK and DBF
  3373.  use 255 or less characters.
  3374.  Some special characters have to be translated when they are used as
  3375.  field delimiters, e.g. quotation marks to double quotation marks.
  3376.  There is no export format for pictures and sounds. Only the import from
  3377.  one FMP database to another FMP database is possible.
  3378.  * Various applications use output formats that may be imported by FMP
  3379.  easily, while others have to be converted.
  3380.  Many common text editors may get used to replace one type of delimiter
  3381.  by another one, e.g. <quotation mark><colon><quotation mark> by <tab>.
  3382.  Alpha allows to highlight, copy and paste text by columns.
  3383.  Add/Strip allows to convert fixed width field formats by inserting
  3384.  delimiters and deleting noise characters.
  3385.  * Finally, you may use import to reorder your records.
  3386.  Create a clone of your database "old", select all (if you wanted all),
  3387.  sort, open the "clone of old", import from "old". Backup (or delete)
  3388.  "old" and rename the clone to "old".
  3389.    
  3390. 9.5   Export formatted text / RTF
  3391.  
  3392.  Formatted text may get exchanged between applications by the usual
  3393.  copy/paste.
  3394.  On export any text format information is lost - only plain text will be
  3395.  available. A mail merge export may get used for mail merge capable
  3396.  applications to re-assign formats on complete fields.
  3397.  In order to export formatted text, some additional steps are required.
  3398.  The idea is to add the special formatting options by calculations of a
  3399.  suitable format, such as RTF or HTML, and to use an application that may
  3400.  handle this coding.
  3401.  RTF (Rich Text Format) is the internal representation used on Macintosh
  3402.  to exchange formatted text between applications. You may see a sample of
  3403.  RTF coding if you save a document in RTF format from a suitable
  3404.  application. The RTF codes below were collected in this manner by
  3405.  j.f.robertson@newcastle.ac.uk (Forbes Robertson).
  3406.  A proper RTF document consists of a header and special codes around the
  3407.  text to format.
  3408.  RTF codes
  3409.  =========
  3410.    bold      \b
  3411.    italic    \i
  3412.    underline \ul
  3413.    return    \par
  3414.  Curly brackets are the way of splitting RTF codes from the actual text
  3415.  that is plain ASCII. The above can be combined e.g. {\b \i sample text}
  3416.  to give bold italic "sample text".
  3417.  Font changes are a little different, composed from corresponding font
  3418.  numbers in the header.
  3419.    Fonts     \f<n>   -- font number <n> of header
  3420.  Example:
  3421.    {\f3 text \par}
  3422.  To set different font sizes the same layout as fonts is used. But
  3423.  instead of \f<n> the code is \fs<n> were n is twice the size of the font
  3424.  you wish to use.
  3425.  Example for font size 10:
  3426.    {\fs20 text \par}
  3427.  If you need to use the characters { } or \ precede them with a \.
  3428.  RTF header
  3429.  ==========
  3430.  It seems that the minimum header is
  3431.    {\rtf1\mac\
  3432.  A matching final } closes the document as footer.
  3433.  The following information is part of the header as well:
  3434.  There is a list of fonts with numbers eg
  3435.      {\fonttbl{\f0\fswiss Chicago;} etc }
  3436.  Then a list of colours eg
  3437.      {\colortbl\red0\green0\blue0; etc }
  3438.  Then a stylesheet. This part has several variables some of which are
  3439.  obvious, while others may be word processor dependant as well
  3440.      {\stylesheet{\s242 \f16 \sbasedon0\snext0 page number;}
  3441.      {\f16 \sbasedon222\snext0 Normal;}}
  3442.  Then details on the paper size and margins, eg:
  3443.      \paperw11880\paperh16800\margl2016\margr1440\widowctrl\
  3444.      enddoc\pgnstart5\fracwidth\sectd\sbknone\pgnx720\pgny15030
  3445.      \linemod0\linex0\cols1\endnhere
  3446.  In conclusion you need a header consisting of a lot of font info. The
  3447.  best way to get this is to save a file in your word processor as RTF
  3448.  then view the file without conversion.
  3449.  Export
  3450.  ======
  3451.  You may include the RTF codes by ordinary calculations.
  3452.  Example:  RTF Text (text calculation) =
  3453.    "{{\b " & [Name] & "}, " & [First Name] &
  3454.    "\par} {email: ""{\f0 \fs20" & [email] & """\par}"
  3455.  It's recommended to export this as tab delimited text, with only the
  3456.  calculated RTF field per record.
  3457.  You may put in the header and footer info while you use a separate
  3458.  record for each and ensure that they sort first and last in the sort
  3459.  order.
  3460.  Also can you get FM to save the exported text file with the correct
  3461.  creator codes so that double clicking it opens it in your word
  3462.  processor. This is possible to do using programs like Filebuddy etc.
  3463.  Print to file
  3464.  =============
  3465.  You may create a special layout where you place the proper RTF or HTML
  3466.  code around the fields, create proper header and footer parts and print
  3467.  this layout to a file.
  3468.  Example:
  3469.  [header part]
  3470.  {\rtf1\mac\
  3471.  [body/list]
  3472.  {{\b[name]}, [first name]\par}
  3473.  {email:" {\f0\fs20[email]"\par }
  3474.  [footer part]
  3475.  }
  3476.  The [fields] and text objects may get defined as sliding to the left.
  3477.  FMP3 permits improved text merge options for the same purpose.
  3478.    
  3479. 9.6   Access Files Remotely
  3480.  
  3481.  Date:         Thu, 18 Apr 1996 20:56:06 +1000
  3482.  From: Graham Nicholson <grahamn@VISION.NET.AU>
  3483.  Subject:      Re: Update from a remote source
  3484.  Something about accessing files remotely.  I am note sure if it was for
  3485.  maintenance only or if you wanted to use concurrently both on site and
  3486.  away.  If for maintenance or on line access only then...
  3487.  OK, I do this to remote access a site that is under my control.
  3488.  I offer you three solutions
  3489.  1) Carbon Copy
  3490.  2) Timbuktu
  3491.  3) Windows 95
  3492.  4) FMPro3 WWW Access
  3493.  1) Carbon Copy
  3494.  I use carbon copy for windows and have essentialy control of the login
  3495.  computer.  The database is running on the dial in which is both good and
  3496.  bad, good speed wise because only screen redraws are passed machine to
  3497.  machine not actual data (which ARA does).  The speed is not great but
  3498.  they have PC 386/40 which is bottom end for FMPro anyway, using 14.4
  3499.  modems. I think with a fast machine/modem it should be quite acceptable.
  3500.  Setup was a breeze, just install the remote software on each machine and
  3501.  choose the modem type.
  3502.  Pros - Speed of link is good.  If the machine you log onto is networked
  3503.  then you also have access to the network.
  3504.  Cons - No cross platform capability (Windoze only (3.1 or Win 95)
  3505.  2) Timbuktu
  3506.  This has always been a very *cool* piece of software that allowed
  3507.  control over appletalk and also dial in.  Recently Timbuktu has been
  3508.  updated to include also a Windows equivalent.  There is an immediate
  3509.  *Huge* advantage, you can control a Mac from a PC and also a PC From a
  3510.  Mac (also PC-PC and Mac-Mac of course) so now if you need to access a
  3511.  clients site which is PC based you can log on with your Mac :-)  As with
  3512.  Carbon Copy only screen data is passed on so speed of the link is not a
  3513.  vital ingredient.  Fairly processor intensive on both sides though, same
  3514.  as Carbon Copy
  3515.  Pros - Speed of link is good.  If the machine you log onto is networked
  3516.  then you also have access to the network.  Cross Platform capability, oh
  3517.  securtiy measures are good also
  3518.  Cons - None spring to mind but I am sure there are some
  3519.  3) Win 95
  3520.  I believe that Win 95 (or Microsoft Plus anyway) has a type of ARA built
  3521.  in and have seen it in action.  No idea about performance speeds,
  3522.  remember that you are now accessing a network not just screen data so
  3523.  having it open on a machine on the network and logging on as a guest
  3524.  would give better speeds than accessing the file off a server as a
  3525.  shared file (I think, not too sure how FMPro handles this)
  3526.  Pros - Built into OS so should be widely supported (Win 95)
  3527.  Cons - I have not used the system, not even sure if FMPro would work
  3528.  using this should in theory
  3529.  4) WWW access.
  3530.  If both are using FMPro 3 then it is possible for the "host" to have a
  3531.  permanent internet connection and the dialup to access it as if it were
  3532.  local talk (nearly, not quite as fast)
  3533.  
  3534. ------------------------------
  3535.  
  3536. Subject:10  Useful Tools
  3537.    
  3538. 10.0   Useful tools
  3539.  
  3540.  This section is still at work. Please join your experience.
  3541.  Most of the recommended tools are available at the usual umich and
  3542.  info-mac sites and its mirrors. If you want any special tool included in
  3543.  this list, please provide the appropriate information. I reserve to
  3544.  include only tools that I consider as useful.
  3545.    
  3546. 10.1   Print2Pict
  3547.  
  3548.  Print2Pict is a chooser extension. Instead of printing to a real device,
  3549.  the output is directed to a file. Different file formats are available.
  3550.  The most important are TEXT and PICT.
  3551.  URL: <ftp:/umich-mac/system.extensions/chooser/print2pict3.6.cpt.hqx>
  3552.    
  3553. 10.2   Acid Jazz etc.
  3554.  
  3555.  tools for fax, phone calls, etc.
  3556.  URL: under construction
  3557.    
  3558. 10.3   BBEdit Lite
  3559.  
  3560.  Freeware text editor; powerful find / replace, suitable for handling
  3561.  repeating fields (ASCII-29 dilemma)
  3562.  URL:
  3563.  <ftp://ftp.barebones.com/pub/freeware/>
  3564.  <http://www.barebones.com/freeware.html>
  3565.  <ftp://info-mac/text/bbe/>
  3566.  It's very handy to edit calculation fields within, and to move to FMP by
  3567.  Copy/Paste:
  3568.  "Starting with BBEdit 3.0, BBEdit Lite 3.5 there is soft wrap
  3569.  capability. This makes convenient editing of FMPR calc fields possible.
  3570.  Calc fields are TEXT, and can be copied and pasted into. Copying to a
  3571.  tmp BBEdit file makes powerful editing of formulae possible, useful once
  3572.  you have formulae longer than the minuscule scroll window of FMPR.
  3573.  Application: US versions use ,'s as separators, eg If(,,), some
  3574.  localized versions may use ;'s, eg If(;;), depending on the installed
  3575.  system. This makes copying of formulae from templates tedious. Compiled
  3576.  formulae will run between versions, any change in a formulae caused
  3577.  recompilation and all ,'s must be changed to;'s. BBEdit does it for you,
  3578.  without errors, but you have to rescue bona fide ,'s occurring between
  3579.  "".
  3580.  Note: FMPR calc fields use Apple's text engine, and are thereby limited
  3581.  to 32K."
  3582.  (from jjl@knoware.nl (J. J. Lodder))
  3583.    
  3584. 10.4   Ram Disk
  3585.  
  3586.  Use a Ram Disk for import / export - it might be much faster.
  3587.  URL: under construction
  3588.    
  3589. 10.5   Send Mail from within FMP
  3590.  
  3591.  You may send EMail directly from within FMP via TCP/IP by AppleScript
  3592.  commands.
  3593.  You will need e.g. the "TCP/IP scripting additions" osax. Its script
  3594.  "emailer" will show a possible example.
  3595.  <ftp://nic.switch.ch//mirror/umich-mac/util/script/tcpipscriptingadd1.12
  3596.  .cpt.hqx>
  3597.  As another approach you may create outgoing messages in other,
  3598.  scriptable mail applications. The template release of these FAQs,
  3599.  faq.fm, contains a send mail button to do this via the included script
  3600.  Eudora2FMP
  3601.    
  3602. 10.6   Dump Mail to FMP
  3603.  
  3604.  * Direct approach
  3605.  FMP may download mail directly via TCP-IP connections. Marionet is a
  3606.  commercial TCP tool suited for that purpose.
  3607.  The AppleScript "TCP/IP scripting additions" may be suited for that
  3608.  purpose as well.
  3609.  <ftp://nic.switch.ch//mirror/umich-mac/util/script/tcpipscriptingadd1.12
  3610.  .cpt.hqx>
  3611.  * Special Applications:
  3612.  MailProcessor converts mailbox files to tab-delimited text that may get
  3613.  imported into FMP. IMO the version I tried was slow, noninuitive and of
  3614.  poor performance.
  3615.  MailConverter by  R Shapiro <rshapiro@BBN.COM> is an excellent tool for
  3616.  converting mailbox formats, but doesn't include a database format.
  3617.  However, R Shapiro might develop yet another tool for that special task.
  3618.  I suppose this would be the premium choice.
  3619.  * MacPerl
  3620.  MacPerl was recommended to write a scriptable conversion utility. It's
  3621.  very powerful on text operations.
  3622.  Bob Dalgleish developped a  MacPerl script that does an excellent and
  3623.  fast job. Check on <http://www.sasknet.com/~dalgl/> for 'mailbox to
  3624.  tsv'. It's still under construction, but already to recommend. It
  3625.  requires MacPerl 5 (<ftp://ftp.switch.ch//software/mac/perl/>).
  3626.  * AppleScript
  3627.  Stefan Schⁿtt (stefan@mouseup.pp.fi) wrote the consequent AppleScript:
  3628.  ++++++++++++++++++++++++++++++++++++
  3629.    tell application "Eudora 1.5.1"
  3630.          set many to (get number of message of mailbox 1)
  3631.          -- (comment from the Author: mailbox 1 is the In box)
  3632.    end tell
  3633.    repeat with i from 1 to many
  3634.          tell application "Eudora 1.5.1"
  3635.                  set day to word 3 of (get date of message i of mailbox1)
  3636.                  --this will get only the short date of the message.
  3637.                  set send to (get sender of message i of mailbox 1)
  3638.                  set sub to (get subject of message i of mailbox 1)
  3639.                  set bod to (get body of message i of mailbox 1)
  3640.                  --delete message i of mailbox 1 -- This one is optional
  3641.          end tell
  3642.          set lista to {day} & {send} & {sub} & {bod}
  3643.          tell application "FileMaker Pro SDK"
  3644.                  Create Record With Data lista
  3645.          end tell
  3646.    end repeat
  3647.    In the FMPRO database you need the following fields: Date, Sender,
  3648.    Subject and Body. To be sure it will succeed, I think you should
  3649.  create
  3650.    the fields in this order. If your database for Eudora mails is the
  3651.    frontmost window in FMPRO when you launch the script, then you don't
  3652.    have to specify the name of the database.
  3653.    ++++++++++++++++++++++++++++++++++++
  3654.  An improved version is included as Eudora2FMP with the FileMaker Pro
  3655.  FAQs. Its major drawback: AppleScript is slow. On an LC II import is
  3656.  about 100 messages per hour, twice the time of the import itself. The
  3657.  import to FMP 2.1 is so slow  due to extensive indexing of lenghty
  3658.  message bodies; FMP3 can do much faster without.
  3659.  <ftp://ftp.th-darmstadt.de//pub/database/filemaker-pro/faq.fm.sit.hqx>
  3660.  Bob Cusick <clickware@aol.com> composed another set of templates
  3661.  <ftp://ftp.fogcity.com/pub/Emailer/Utilities/FMMailer10v3.hqx>. They
  3662.  contain an AppleScript to import from EMailer (ü by Claris). They are an
  3663.  example for most polished FMP 2.1 layouts - give it a try. FM Mailer is
  3664.  freeware and unlocked. Bob Cusick announced to work on a new FMP3.0
  3665.  version with improved features and direct import capability.
  3666.  * HyperCard
  3667.  "ETDü (Eudora To Database) is a great utility that allows you to read a
  3668.  Eudora« mailbox, and create a file that is suitable for importing into a
  3669.  database or spreadsheet (tab-delimited field, return-delimited record
  3670.  format).  I have included a template for use with FileMaker Pro«.
  3671.  Registered users (Shareware - $5.00 [US Funds]) can get support at
  3672.  jacobson@phoenix.net."
  3673.  (from Doug Jacobson <jacobson@phoenix.net>)
  3674.  <http://www.phoenix.net/~jacobson>
  3675.    
  3676. 10.7   Fax from FMP
  3677.  
  3678.  * see Acid Jazz
  3679.  * FaxExpress (fax software) from Glenwarne Ltd.
  3680.  * FileFax allows for a clean and easy connection between FileMaker and
  3681.  FaxStf , they have a demo version, the full version costs 100US$
  3682.  <http://www.Xon-Xoff.com/web/FileFax.html>
  3683.  An automatic mail answer is also available, FileFax@Xon-Xoff.com, to
  3684.  receive an email documentation. No specific syntax required.
  3685.  * FaxStf
  3686.  * use Quickeys to change to a fax driver, and do a print command
  3687.  * 4-Sight, LC has a network Fax solution that is now AppleScriptable...
  3688.  It also includes some sample scripts that work with FM Pro.
  3689.  515-221-3012 - Kevin Clark is a very helpful sales rep.
  3690.  * Prefab Player (scriptable)
  3691.  http://www.tiac.net/prefab/ , Scott Lawton <ssl@prefab.com>
  3692.  * MacComCenter from Smith Micro Software Inc., 31 Columbia, Aliso Viejo,
  3693.  CA 92656 (maybe slow, but works with AT&T Paradyne DataPort 14.4 modem)
  3694.  * Windows: FileMaker is not capable of selecting a printer.
  3695.  You will probably need to use WinBatch to do that (& any usual Fax
  3696.  software)
  3697.  (from various replies on FMPRO-L)
  3698.    
  3699. 10.8   Speed Doubler
  3700.  
  3701.  FMP on Power Macs with Speed Doubler ran 225% or 230% as compared to
  3702.  100% for FMP without Speed Doubler.
  3703.  (September test MacUP)
  3704.  Actual problems on networks
  3705.    
  3706. 10.9   ROFM CGI
  3707.  
  3708.  "ROFM CGI (Russell Owens FileMaker CGI) is an application that allows
  3709.  you to serve FileMaker Pro databases to the World Wide Web (WWW). It is
  3710.  easy to set up and use. It runs on Macintosh computers (only), and
  3711.  requires WebSTAR or MacHTTP, Filemaker Pro 2.1v3 and AppleScript 1.1
  3712.  (which comes with system 7.5). To email notification of new records, you
  3713.  will also need Eudora 1.5 (free) or 2.1 (commercial)." (From Russell
  3714.  Owen's FileMaker CGI introduction)
  3715.  The home site of ROFM CGI is http://rowen.astro.washington.edu/.
  3716.  General-purpose subroutines for adding records and searching databases
  3717.  are available as a compiled script (with included source code) called
  3718.  "ROFMUtil". This script is included in the ROFM CGI package, which is
  3719.  available from <http://rowen.astro.washington.edu>. The subroutines are
  3720.  fairly well optimized, and require Wayne Walrath's ACME Script Widgets.
  3721.    
  3722. 10.10  GTQ library
  3723.  
  3724.  >Does anyone know if FMP3 has the capability of scripting your printer
  3725.  choice?
  3726.  There is a OSAX called "Set Printer to" as part of the GTQ Scripting
  3727.  Library v1.2 that does this. You need AppleScript and the OSAX
  3728.  installed. Here is the OSAX library:
  3729.  set printer to: chooses the specified device type
  3730.          set printer to  string  -- device type name
  3731.                  [named  string]  -- name of device
  3732.                  [using  printer port/modem port]  -- which serial port
  3733.  to use
  3734.                   (valid for serial devices only)
  3735.                  [zone  string]  -- zone where device is
  3736.  it works fine with my serial StyleWriter,
  3737.  set printer to "StyleWriter 1200" using modem port
  3738.  find it at info-mac
  3739.  (From: ehsan saffari <aa074@sfn.saskatoon.sk.ca>)
  3740.  
  3741. ------------------------------
  3742.  
  3743. Subject:11  Special Solutions
  3744.    
  3745. 11.1   Templates for collecting CDs
  3746.  
  3747.  A Box of Rain Database
  3748.  Allison's CD DB
  3749.  Audiofile 1.01
  3750.  CD Catalog (replaced by The CD Database)
  3751.  CD Club
  3752.  CD Directory
  3753.  CD Manager
  3754.  CD Tracker PRO (replaced by Audiofile 1.01)
  3755.  CDelux
  3756.  CD-Lib1.0
  3757.  CDatabase
  3758.  CDBankE
  3759.  Music Store 1.2
  3760.  The CD Database 1.3
  3761.  Klassik1.0
  3762.  CDLite
  3763.  CDLite Classical
  3764.  CD Coyote (helper appl.)
  3765.  Index of Umich-Mac (and ftp.claris.com):
  3766.  SIZE      DATE
  3767.  (KBYTES)  ARCHIVED  COMPRESSION FORMAT(S)
  3768.  -----------------------------------------------------------------------
  3769.  <ftp://ftp.claris.com//pub/USA-Macintosh/Templates/FileMakerPro/
  3770.    AllisonsCD_DB.sea.hqx>
  3771.  <ftp://ftp.claris.com//pub/USA-Macintosh/Templates/FileMakerPro/
  3772.    BoxOfRain.sea.hqx>
  3773.  /mac/util/filemaker/aboxofrain1.1.sit.hqx
  3774.   463    12/21/94    BinHex4.0,StuffIt3.50
  3775.     Filemaker Pro 2.x templates designed to catalogue albums, CDs,
  3776.     DAT, cassettes and other music media as well as song lyrics;
  3777.     print collection lists and custom tape cassette inserts; more
  3778.     buttons, scripts, graphics, special extras and neat tricks.
  3779.  /mac/util/filemaker/audiofile1.01n.sit.hqx
  3780.   425     8/6/95    BinHex4.0,StuffIt3.50
  3781.     Music collection tracker with lots of features and
  3782.     a nifty interface; this is the next step up from
  3783.     CD Tracker Pro (and by the same author, so you see:
  3784.     it's an <*tah-dah*> 'Authorized' version! *heh*duck*).
  3785.  <ftp://ftp.claris.com//pub/USA-Macintosh/Templates/FileMakerPro/
  3786.    CDatabase.sea.hqx>
  3787.  /mac/util/filemaker/cdcatalog1.3.sit.hqx
  3788.   119    11/20/94    BinHex4.0,StuffIt3.50
  3789.     FileMaker Pro document for catloging compact discs allows
  3790.     search, print, and report generation; v1.2 includes a number
  3791.     of field changes and some changes in user interface.
  3792.  /mac/util/filemaker/cdclubs.sit.hqx
  3793.    66     2/10/95    BinHex4.0,StuffIt3.50
  3794.     Are you one of those people who likes to send in a penny
  3795.     to a CD Club and get back 10 CDs?  Here are three templates
  3796.     for you... one for the BMG Music Club (BMG Wantlist),
  3797.     another for Columbia House (ColumbiaHouseWantlist) and a
  3798.     third for Disc Club Account Info (where you can track how
  3799.     much you've saved, or spent, so far).  Includes FAQ and WWW
  3800.     page for the real junkies.
  3801.  <ftp://ftp.claris.com//pub/USA-Macintosh/Templates/FileMakerPro/
  3802.    CD_Database1.2.sea.hqx>
  3803.  /mac/util/filemaker/cddatabase1.3.sit.hqx
  3804.   134     7/18/95    BinHex4.0,StuffIt3.50
  3805.     Catalogs CDs; requires FileMakerPro 2.1 or greater; search,
  3806.     print, generate reports; v1.3 has track numbers for each song,
  3807.     smart sorting (ie: ignores 'the'), and more.
  3808.  /mac/util/filemaker/cddirectory1.0a1.sit.hqx
  3809.    46     10/7/94    BinHex4.0,StuffIt3.50
  3810.     Keep track of your valuable CD collection  Requires FileMaker 2.0.
  3811.  /mac/util/filemaker/cdlibrary1.0.cpt.hqx
  3812.    42     5/30/94    BinHex4.0,Compact1.51
  3813.     A library archive for musical compact discs created in
  3814.     FileMaker Pro; printing is disabled in demo.
  3815.  /mac/util/filemaker/cdlite1.0.sit.hqx
  3816.   292     5/15/95    BinHex4.0,StuffIt3.50
  3817.     Simple database catalogs CD's for those who don't want or need
  3818.     a lot of superfluous info in their databases; requires FMPro2.1.
  3819.  /mac/util/filemaker/cdliteclassical1.1.sit.hqx
  3820.   330     8/27/95    BinHex4.0,StuffIt3.50
  3821.     Variation of CDelux/Lite, but more in line with the needs
  3822.     of a classical cd collector; requires FilemakerPro; v1.1
  3823.     has many new features and a user manual; free.
  3824.  /mac/util/filemaker/cdlux1.1.sit.hqx
  3825.   502     6/23/95    BinHex4.0,StuffIt3.50
  3826.     Contains CDLite and CDLite Pro, cd cataloging databases; require
  3827.     FileMakerPro2.1 and 1.4MB to run; free.
  3828.  <ftp://ftp.claris.com//pub/USA-Macintosh/Templates/FileMakerPro/
  3829.    CDTrackerPro3.02.sea.hqx>
  3830.  /mac/util/filemaker/cdtrackerpro3.02.sit.hqx
  3831.   451     5/15/95    BinHex4.0,StuffIt3.50
  3832.     Nifty CD organizer; cool graphic interface tracks by
  3833.     artist/album, title/song/label, more; imports and exports;
  3834.     requires a 13" color monitor and FileMakerPro2.1 or later;
  3835.     v3.02 contains many new features and user requested changes.
  3836.  /mac/util/filemaker/musicstore1.2.sit.hqx
  3837.   344     9/14/94    BinHex4.0,StuffIt3.50
  3838.     FileMakerPro database archives data about your CDs, LPs, DATs, CD
  3839.     Video, etc.
  3840.    
  3841. 11.2   Numbers to Text
  3842.  
  3843.  These fields will convert to text any amount under one million dollars.
  3844.    Field Name      Field Type        Formula / Entry Option
  3845.    Amt             Number
  3846.    Tn              Calc (Number)   = Int (mod (Amt,100))
  3847.    Hd              Calc (Number)   = Int (mod (Amt,1000) / 100)
  3848.    TTh             Calc (Number)   = Int (mod (Amt,100000) / 1000)
  3849.    HT              Calc (Number)   = Int (Amt / 100000)
  3850.    TnTx            Calc (Text)     =
  3851.  "         One      Two      Three    Four     Five     Six      Seven
  3852.  Eight    Nine     Ten      Eleven   Twelve   Thirteen Fourteen Fifteen
  3853.  Sixteen  SeventeenEighteen Nineteen "
  3854.    TenTx           Calc (Text)     =
  3855.  "              Twenty Thirty Forty  Fifty  Sixty  SeventyEighty Ninety "
  3856.    AllNumberText   Calc (Text)     =
  3857.  if (HT, trim (middle (TnTx, HT * 9 + 1, 9)) &
  3858.    if (TTh, " Hundred ", " Hundred Thousand "), "") &
  3859.  if (TTh, if (TTh > 19,trim (middle (TenTx, Int (TTh / 10) * 7 + 1, 7)) &
  3860.    " " &
  3861.    trim (middle (TnTx,mod (TTh, 10) * 9 + 1, 9)),
  3862.      trim (middle (TnTx, TTh * 9 + 1, 9))) &
  3863.    " Thousand", "") &
  3864.  " " &
  3865.  if (Hd, trim (middle (TnTx, Hd * 9 + 1, 9)) & " Hundred ", "") &
  3866.  if (Tn > 19, trim (middle (TenTx, Int (Tn / 10) * 7 + 1,7)) &
  3867.    " " &
  3868.    trim (middle (TnTx, mod (Tn, 10) * 9 + 1, 9)),
  3869.      trim (middle(TnTx, Tn * 9 + 1, 9))) &
  3870.  " and " &
  3871.  round ((Amt - Int (Amt)) * 100, 0) &
  3872.  "/100"
  3873.  (by Jim_Spelman@iguanabbs.com)
  3874.  
  3875. ------------------------------
  3876.  
  3877. Subject:12  About
  3878.    
  3879. 12.0   About
  3880.  
  3881.  Composed by Martin Trautmann, <traut@th-darmstadt.de>, Germany
  3882.  Please give any corrections, feedback, comments, improvements, requests
  3883.  for additions or deletions or whatever you think might help!
  3884.  Although sometimes still under the construction, the always latest
  3885.  release is on:
  3886.  ftp://ftp.th-darmstadt.de//pub/database/filemaker-pro/
  3887.  compressed database: faq.fp3.sit (almost recent, includes Eudora2FMP)
  3888.  or plain text: [FAQ] FileMaker Pro (less recent)
  3889.  The database release is made available on info-mac and umich. Previous
  3890.  releases are:
  3891.  <ftp:/info-mac/info/sft/filemaker-pro-faq-95-12.hqx> "Info-mac mirrors"
  3892.  <ftp://mac/util/filemaker/filemakerprofaq2.6.sit.hqx> "Umich mirrors"
  3893.  The FAQ as text release might be found at:
  3894.  <ftp://rtfm.mit.edu//pub/usenet/comp.sys.mac.databases/[FAQ]_FileMaker_P
  3895.  ro_-_database_for_Macintosh_and_Windows> "Plain text"
  3896.  <ftp://ftp.uni-paderborn.de//pub/FAQ/comp.sys.mac.databases/[FAQ]_FileMa
  3897.  ker_Pro_-_database_for_Macintosh_and_Windows> "Plain Text, German
  3898.  mirror"
  3899.  <http://www.cis.ohio-state.edu/hypertext/faq/usenet/databases/filemaker-
  3900.  pro/faq/faq.html> "HTML format"
  3901.  <http://www.cis.ohio-state.edu/hypertext/faq/usenet-faqs/bygroup/comp/sy
  3902.  s/mac/databases/top.html> "HTML format"
  3903.  and the other FAQ sites that hold news.answers and comp.answers.
  3904.  Try also the November release at:
  3905.  <ftp://www.claris.com//pub/USA-Macintosh/Templates/FileMakerPro/1195.FMP
  3906.  ro.FAQ>
  3907.  Version history:
  3908.  3.1 Maintenance release
  3909.  3.0 FMP3 sorting portals, other FMP3 stuff
  3910.  All comments without any warranty - please tell me if I missed any legal
  3911.  aspects. Std. disclaimer, std. trade marks, std. copyright, no
  3912.  commercial distribution without my permission, ...
  3913.  
  3914. -- you may test my new mail address at traut@th-darmstadt.de  --
  3915. Martin Trautmann                        .   Solid State Electronics Laboratory
  3916. Tel:  ++49-6151-16-5141                   .   Technische Hochschule Darmstadt
  3917. Fax:              -5233                     .   Schlossgartenstrasse 8
  3918. EMail: traut@iht.e-technik.th-darmstadt.de    .    D-64289 Darmstadt
  3919.  
  3920. Author of the Frequently Asked Questions on FileMaker Pro:
  3921. <ftp://ftp.th-darmstadt.de//pub/database/filemaker-pro/faq.fm.sit>
  3922.  
  3923.  
  3924.