home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / fish / disks / d1022.lha / Programs / QuickFile / QuickFile.doc < prev    next >
Encoding:
Text File  |  1994-10-23  |  35.7 KB  |  1,061 lines

  1.   Quickfile v3.1 copyright 1992-1994 by Alan Wigginton
  2.  
  3. I accept no liability for any loss or damage resulting from the use of
  4. this program.  Users must evaluate the program and decide its usefulness
  5. for their own purposes.
  6.  
  7. QuickFile is not Public Domain, however it can be freely distributed
  8. provided all documentation and sample files are included unchanged.
  9.  
  10. QuickFile is a flexible, flat file database. It uses random access with
  11. indexing for fast access to records. Files can be larger than available
  12. ram, but as much of the file as possible is kept in ram to reduce disk
  13. accesses. Features include:
  14.  
  15.     - Multiple indexes with unique and non-unique keys
  16.     - Character, date, integer, floating point and calculation data types
  17.     - Up to 250 characters per field  and 250 fields per record.
  18.     - Form and list style displays and reports.
  19.     - Unlimited number of views of each file.
  20.     - Sort over any number of keys, ascending and descending order.
  21.     - Search operators include Like, Equal, Between, Sounds Like, Not Like
  22.       and Not Equal.
  23.     - Fields can be added, changed, or deleted at any time.
  24.     - ASCII export/import
  25.     - ulti column label printing.
  26.     - Multi-level grouping and totalling
  27.     - Any number of open windows
  28.     - Online context sensitive AmigaGuide help
  29.  
  30. System Requirements
  31.  
  32.     Any Amiga computer with 512K or more RAM
  33.     Workbench 2.04 or later
  34.     mathieeesingtrans.library
  35.     mathieeedoubbas.library
  36.     mathieeedoubtrans.library
  37.  
  38. QuickFile is written in C using DICE version 3.0.
  39.  
  40. ====== CONDITIONS OF USE =====
  41.  
  42. This version of the program is free, but please let me know if you find it
  43. useful - a postcard would be great.
  44.  
  45. Donations of money, stamps, software etc will be gratefully accepted. If
  46. you require bug fixes or support, please send $20.00 to the address below.
  47. Overseas users please use International money order or bank draft - not
  48. personal cheques. Any cash currency is OK, but send it at your own risk.
  49.  
  50.       Alan Wigginton
  51.       23 Carissa Street
  52.       SHAILER PARK
  53.       Queensland       4128
  54.       AUSTRALIA
  55.  
  56. I need feedback. Please let me know if you find it useful or I will assume
  57. I am wasting my time.
  58.  
  59. WARNING. QuickFile is a random access data base that buffers records in
  60.      memory. Failure to exit the program properly after updates are
  61.      made will result in lost updates.
  62. ALWAYS     exit the program before a reboot or power off.
  63. DO     backup your files regularly.  When backing up a data base make
  64.      sure you backup all of the files - definition, data and indexes.
  65.  
  66. To install QuickFile to a hard disk or floppy, drag the QuickFile icon to
  67. the drawer of your choice. If you want to use the AmigaGuide help system,
  68. copy QuickFile.guide to the same directory. To install AmigaGuide
  69. doubleclick on the InstallAmigaGuide icon.
  70.  
  71. Icons are not generated by the program. Sorry, but if you want them you
  72. will have to create them yourself.
  73.  
  74.  
  75. ===== About Views ======
  76.  
  77. Views allow you to display data from a file in different ways. There are
  78. two basic types FORM and LIST.
  79.  
  80. Each view has its own field titles, positions and lengths, window size and
  81. report details. Once you have a view set out the way you want it, you can
  82. save it for future use.
  83.  
  84. The Define View requester is used to select or change the fields included
  85. in a view. The positions of fields on a form can be changed by dragging
  86. them around with the mouse.
  87.  
  88. When you open a file, QuickFile looks for a view called filename.VIEW. To
  89. automatically use your favourite view, save it as filename.VIEW in the
  90. same directory as the data base.
  91.  
  92. If you want to keep things simple and are happy with the default view, you
  93. need not define a view at all.
  94.  
  95. Views are typically used to print labels, export or import selected fields
  96. or print lists containing only selected fields.
  97.  
  98. =========== Keyboard ===================
  99.  
  100. The following keys are available when the cursor is not in a string
  101. gadget (Press return to de-activate a string gadget):
  102.  
  103.    RETURN          Same as OK button
  104.    ESC              Same as CANCEL button
  105.    HELP           Displays help text using AmigaGuide.
  106.  
  107. The following keys can be used in string gadgets:
  108.  
  109.    TAB              Move to next field
  110.    Shift-TAB          Move to previous field
  111.    Down arrow          Move to next field
  112.    Up arrow          Move to previous field
  113.    Return          De-activate string gadget
  114.    right Amiga-X      Erase all text in the gadget (as does Control-X)
  115.    right Amiga-Q      Restores the text that was present before you
  116.               changed it.
  117.    Shift-left arrow   Moves the cursor to the beginning of the field.
  118.    Shift-right arrow  Moves the cursor to the end of the field.
  119.    Shift-Del          Erases all characters from the cursor to the end of
  120.               the gadget.
  121.    Shift-Backspace    Erases all characters to the left of the cursor.
  122.  
  123. ============== MAIN WINDOW =================
  124.  
  125. ===== Form Display ======
  126.  
  127. The FORM DISPLAY shows a single record per screen in the format specified
  128. by the current view.
  129.  
  130. Field positions can be changed by dragging fields around the window with
  131. the mouse.
  132.  
  133. To add or delete fields, change field titles or displayed lengths, press
  134. the VIEW button;
  135.  
  136. ===== List Display ======
  137.  
  138. The LIST display shows as many records as will fit in the window with a
  139. single line per record.
  140.  
  141. To update a record double click on it with the left mouse button
  142.  
  143. Before using the Modify or Delete buttons, select a record using a single
  144. press of the left mouse button.
  145.  
  146. ===== Buttons =====
  147.  
  148. GoTo
  149.   GoTo finds a record by key value using the current index. This makes
  150.   access extremely fast, even on large files.
  151.  
  152.   You only need to enter enough of the key to identify the record you
  153.   want, but you must start at the first key field.
  154.  
  155. Modify
  156.   Allows you to modify the current record. The horizontal scroll gadget
  157.   can be used to scroll the display and access fields that do not fit in
  158.   the window.
  159.  
  160. Insert
  161.   Displays a blank form for you to enter values for a new record.
  162.  
  163.   The Copy button will copy the contents of the previous record. This is
  164.   useful if you are entering records with similar values in some fields of
  165.   each record. Warning - it replaces anything currently on screen.
  166.  
  167.   Press Cancel (or ESC) to return to Browse mode.  NB When Cancel is
  168.   pressed any values displayed on the screen will be lost.  Press Insert
  169.   to insert the record, then Cancel.
  170.  
  171. Delete
  172.  
  173.   Deletes the current record. A requester is displayed to confirm.
  174.   Once the record has been deleted you cannot get it back.
  175.  
  176. Form/List
  177.   Toggles the current view between FORM and LIST formats.
  178.  
  179. View
  180.   Pressing the VIEW button displays the Define View requester with the
  181.   current view.
  182.  
  183. ===== Scrolling =====
  184.  
  185.   Scrolling is controlled by two slider type gadgets.
  186.  
  187.   Vertical Slider
  188.     This controls movement through the file and works in the usual way.
  189.     Scrolling may also be done using the up and down arrow keys for a
  190.     single record, or the shifted keys for a full screen.
  191.  
  192.   Horizontal Slider
  193.    If there are more fields than will fit in the current window, this
  194.    can be used to display the next group of fields.
  195.  
  196. ===========PROJECT  MENU ===================
  197.  
  198. OPEN
  199. Opens a new file in a new window.
  200.  
  201. LOAD
  202. Opens a new file, replacing the file in the current window.
  203.  
  204. SAVE
  205. Writes all updated blocks and indexes to disk.
  206.  
  207. CLOSE
  208. Writes all updated records and indexes to disk and closes the file and
  209. window.  Closing the last window will exit the program.
  210.  
  211. SAVE AS
  212. Creates a new file from the current file. Indexes for the new file are not
  213. created - they will be built when you first open the new file.
  214.  
  215. NEW
  216. Opens a new window for you to define a new file.
  217.  
  218. ALTER
  219. Displays the file definition panel for you to alter the current file
  220. definition. Note that the data and any updated views are saved first.
  221.  
  222. EXPORT
  223. Writes all, or selected, records to an ASCII file for exchanging data with
  224. other applications such as word processors, other data bases etc. The
  225. order and length of the fields in the export file is determined by the
  226. current view. Before doing the export, you may need to create a new view
  227. to give the record layout you want. See export section for details.
  228.  
  229. IMPORT
  230. Loads records from an ASCII file into your data base. The sequence and
  231. length of fields in the input file are determined from the current view.
  232. You should create and select the view before selecting the import
  233. function. See Import section for details.
  234.  
  235. REORGANISE
  236. Reorganises a file by creating a new optimised version and then copying
  237. that version over the main file.
  238.  
  239. Reorganising is not essential, but if you have been doing many additions
  240. and deletions, it may reduce file size and will improve performance.
  241.  
  242. During reorganisation free space is adjusted to the value specified in
  243. the file definition and records are physically stored in the sequence of
  244. the active key. Select your most used key sequence before reorganising to
  245. optimise access with that key.
  246.  
  247. ========= VIEW MENU ==========
  248.  
  249. VIEWS
  250. Displays a requester showing a list of currently loaded views for you to
  251. choose from. If you have not created or loaded any views, you will have a
  252. single view called filename.VIEW.
  253.  
  254. Press the Close button to drop the selected view. You cannot close all
  255. views - you must have at least one loaded.
  256.  
  257. NEW
  258. Creates a new view called 'unnamed' and displays it in the define View
  259. requester.
  260.  
  261. LOAD
  262. Loads another view from disk which becomes the current view.
  263.  
  264. If fields in the view cannot be located in the file definition, they will
  265. be dropped, and a requester displayed to warn you. This will happen if you
  266. delete fields from the file or change field names in the file definition.
  267.  
  268. SAVE
  269. Saves changes made to an existing view. If the view has been newly created
  270. a file requester will be displayed to confirm the name.
  271.  
  272. SAVE AS
  273. Saves the current view under a new name. A view can have any name but the
  274. .view suffix should be used for easy identification.
  275.  
  276. RESET FORM
  277. Resets field positioning back to the default.
  278.  
  279. ========== ORDER MENU =========
  280.  
  281. INDEXES
  282. Displays a list of indexes. Choose an index fromt the list to change the
  283. display sequence. If you have performed a sort or selection, the list will
  284. include "Selected" and/or "Sorted".
  285.  
  286. Pressing the Close Button will remove a "Sort" or "Selection" from memory
  287. and free the space used. To remove any permanent index use the
  288. Project/Alter menu item to alter the file definition.
  289.  
  290. SORT
  291. Displays the sort requester to sort into a new sequence
  292.  
  293. SHOW SORTED
  294. Uses last sort for the display sequence.
  295.  
  296. REBUILD INDEX
  297. Rebuilds the current index from the data file.
  298.  
  299. This can be used if the index and data files are inconsistent for some
  300. reason (eg a system failure). The index is rebuilt from the data file.
  301.  
  302. Try using this if the program is failing with a 'Block not found message'
  303. or any messages to the effect that QuickFile could not find a record it
  304. looked for.
  305.  
  306. ======= SELECTION MENU ===========
  307.  
  308. SELECT
  309. Searches for records matching your selection criteria. See later for full
  310. details.
  311.  
  312. SHOW SELECTED
  313. Displays current selection
  314.  
  315. SHOW ALL
  316. Displays all records. The current selection is retained.
  317.  
  318. ======= PRINT MENU ===============
  319.  
  320. DISPLAYED RECORDS
  321. Prints the records currently displayed on the screen. This will be a
  322. single record for a form display.
  323.  
  324. ALL RECORDS IN CURRENT INDEX
  325. Prints all records in the current index (or Sort or Selection).
  326.  
  327. The fields printed and the style (form or list) of report is determined by
  328. the current view.
  329.  
  330. See Print Requester for full details
  331.  
  332. =============== OPTIONS MENU ====================
  333.  
  334. ABOUT
  335. Too obvious to explain
  336.  
  337. BUFFERS
  338. Displays number  of blocks in the file and the maximum and in-use number
  339. of RAM buffers. You can change the maximum number of ram buffers. To
  340. permanently change the maximum number of buffers, use the Project/Alter
  341. menu item to change the file definition.
  342.  
  343. ============ DEFINE VIEW REQUESTER =================
  344.  
  345. Name
  346.   Identifies the view. This can be changed for a new view, but is display
  347.   only for an existing view.
  348.  
  349. Available Fields List
  350.   Lists the fields in the current file. Clicking on a field will add it to
  351.   the current view.
  352.  
  353. View Fields List
  354.   Lists the fields in the current view. Clicking on a field in this list
  355.   will select it and display its title and length below the list box.
  356.   These can then be changed if required. The changes will only affect the
  357.   current view.
  358.  
  359.   New fields will be added before the current selected field. To add
  360.   fields to the end of the list, select the "== End ==" item.
  361.  
  362. Type Buttons
  363.   Choose type of view - FORM or LIST.
  364.  
  365. Headings Check Box
  366.   Field names are displayed if this is checked. This is normally only
  367.   turned off for printing labels.
  368.  
  369. Field Title String Gadget
  370.   This is the text gadget under the View Fields list. You can change the
  371.   field title for this view only. For example you may want a short title
  372.   for a short field on the list display but use the full name for the form
  373.   display. The title can be blank. This gadget is disabled unless one of
  374.   the View Fields is selected.
  375.  
  376. Length String Gadget
  377.   Use this to reduce or increase the field display length for this view
  378.   only.
  379.  
  380. IMPORTANT NOTE: You must press enter after changing either the field name
  381.   or length or your changes will be ignored.
  382.  
  383. Clear Button
  384.   Deletes all fields from the View Fields list.
  385.  
  386. Delete Button
  387.   Deletes the selected field from the View Fields list.
  388.  
  389. =================== SORT REQUESTER ==================
  390.  
  391. Sort creates a temporary index which is discarded when the file
  392. is closed. The sort sequence will be maintained as you add or delete
  393. records.
  394.  
  395. The sort technique used requires that all sort keys be resident in memory,
  396. so record buffers are freed to increase the memory available to the sort.
  397. If you are short of memory, it may help to sort using less than the full
  398. length of long fields.
  399.  
  400. Available Fields
  401.   Lists the fields defined in this file. Clicking on a field will add it
  402.   to the Sort Fields.
  403.  
  404. Index Fields
  405.   Lists the fields to be used for the sort. The order of the fields
  406.   in this box determines their priority in the sort. The first field is
  407.   the primary key, the second will only be used for records where the
  408.   first keys are equal and so on.
  409.  
  410.   Clicking on a field in this list will select it and display its name
  411.   and length below the list box.
  412.  
  413.   New fields are inserted before the currently selected field. To add a
  414.   field to the end of the list, select the "== End ==" entry.
  415.  
  416. Length
  417.   Changing this length allows you to sort over part of a long field, to
  418.   save memory and speed sorting
  419.  
  420.   IMPORTANT: YOU MUST PRESS ENTER OR RETURN AFTER CHANGING A LENGTH OR
  421.          YOUR CHANGES WILL BE IGNORED
  422.  
  423. Order
  424.   Select A..Z for ascending sequence or Z..A for descending. You can mix
  425.   these on different fields in the same index.
  426.  
  427. Clear Button
  428.   Deletes all fields from the Index Field List
  429.  
  430. Delete
  431.   Deletes the selected field from the Index Fields list.
  432.  
  433. ==================== SELECTION ====================
  434.  
  435. A selection is a sub-set of the data base that matches specified
  436. conditions. QuickFile searches through the whole data base looking for
  437. records with fields matching requested values, and creates an index
  438. containing these records. You can then browse, print, export or create a
  439. new database with the selected records.
  440.  
  441. The selection is updated automatically for deletions and changes but not
  442. additions.
  443.  
  444. When displaying a selection, the title bar will show the number of records
  445. in the selection.
  446.  
  447. The selected data will be in the same sequence as the current Index.  You
  448. can sort it into another sequence if required.    If the current index is
  449. the result of a previous selection, only the selected records are
  450. searched.
  451.  
  452. You can use any number of criteria for a search, but the more you have the
  453. slower the search will be.
  454.  
  455. ============== Search Panel =================
  456.  
  457. The Search Panel displays a list of search criteria with buttons for
  458. inserting, modifying and deleting them.
  459.  
  460. Two values can be specified for each item. The second value is primarily
  461. for the Between operator, but it can be used to specify an alternative
  462. value for the other operators.
  463.  
  464. Clicking on the Insert or Modify displays the Search Details requeste for
  465. you to insert or modify the details.
  466.  
  467. For insertions, the new item will be inserted before the selected item. To
  468. insert a new item at the end of the list, select the "== End ==" item.
  469.  
  470. Clicking on delete will bring up a requester for you to confirm the
  471. deletion of the selected item.
  472.  
  473. Search criteria linked with 'and' will select only records that match both
  474. criteria, while search criteria linked with 'or' will select records that
  475. match either criteria.
  476.  
  477. 'And' has higher precedence so criteria are formed into groups split by
  478. 'or'. All criteria in a group must be satisfied for a record to be
  479. selected, but a record will be selected if it matches any group. That is
  480. confusing and is probably best explained with an example:
  481.  
  482.       Occupation equal     programmer
  483.   and location     equal     sydney
  484.   or  Occupation equal     programmer
  485.   and location     equal     canberra
  486.  
  487. This will find all programmers who live in Sydney or Canberra. Note that
  488. Occupation had to be repeated. The following would give all programmers
  489. who live in Sydney and EVERBODY who lives in Canberra.
  490.  
  491.       Occupation equal     programmer
  492.   and location     equal     sydney
  493.   or  location     equal     canberra
  494.  
  495. You can also do things like
  496.  
  497.        Name     like     john
  498.   and  Name     notlike smith
  499.  
  500. which would find all persons named John, except those named John Smith.
  501.  
  502. ========= Search Details ======================
  503.  
  504. And, Or Buttons
  505.   Choose AND or OR to specify how this search item is combined with the
  506.   previous one. It has no effect for the first item.
  507.  
  508. Available Fields List
  509.   Lists all the fields in the file defintion. The current selection is
  510.   displayed under the list.
  511.  
  512. Comparison Operator (like, equal etc)
  513.   Choose the operator to be used for this search item. (see below)
  514.  
  515. Value 1
  516.   The primary search value. It is always used. If you want to search for
  517.   empty fields leave this empty.
  518.  
  519. Value 2
  520.   This is the secondary search value. Its primary use is with the between
  521.   operator but can be used to enter an second search value for the other
  522.   operators.
  523.  
  524.   Note that with Not Equal and Not Like, value 1 and value 2 are joined by
  525.   AND rather than OR. It will find all records except those that contain
  526.   value 1 or value 2. Using OR in this situation would select every
  527.   record.
  528.  
  529. ======= Search Operators ===============
  530.  
  531. Like
  532.   Matches fields that contain the search string anywhere within them. eg
  533.   "bit" would find "The Hobbit" and "Bitter Sweet".
  534.  
  535. Equal
  536.   Matches a field only if it exactly equals the search value. Case is not
  537.   significant so that dog will match Dog or even dOG.
  538.  
  539. Between
  540.   Matches a field with a value equal to or between the specified pair of
  541.   values. This can also be used to perform a less than or greater than
  542.   search. e.g. 'between 41 and 999' is the same as 'greater than  40'.
  543.  
  544. Sounds Like
  545.   Matches fields where the first word sounds like the search value. This
  546.   is really a bit of a gimmick as it is not very smart. NOTE it only looks
  547.   at the first word of the field.
  548.  
  549. Not Like
  550.   As for like but only matches records that do not contain the search
  551.   value.
  552.  
  553. Not Equal
  554.   As for equal but only matches records that do not match the search
  555.   value.
  556.  
  557. ====== EXPORT REQUESTER ======
  558.  
  559. A number of preset formats are provided or you can tailor your own record
  560. and field Separators by selecting the Custom format.
  561.  
  562. The headers button determines whether a header record containing the field
  563. names is to be included at the start of the file.
  564.  
  565. Pressing the OK Button displays a file requester for you to specify the
  566. name of the export file.
  567.  
  568. All records from the current index will be written. If you are displaying
  569. Selected records, only the selected records will be written.
  570.  
  571. ====== IMPORT REQUESTER ======
  572.  
  573. One preset format("...",) is provided or you can tailor your own by
  574. selecting Custom and choosing the Record and Field separators.
  575.  
  576. Both sequence and length can be different from that in the database. Also,
  577. not all database fields need to be present in the ASCII file. Any fields
  578. not present will be set to blank in your data base.
  579.  
  580. NB: It is vital that the sequence and number of fields you set in the
  581. selected fields box of the field selector correspond to the sequence of
  582. fields in the ASCII file you are importing.
  583.  
  584. Make you sure to backup your database before you import a file into an
  585. existing data base. If you get the format wrong, it is easier to restore
  586. than to fix or delete all of the incorrect records.
  587.  
  588. Also use plenty of buffers if you are going to import a large number of
  589. records.
  590.  
  591. ============ Preset Export/Import Formats =================
  592.  
  593. A number of preset formats are provided including the mailmerge formats for
  594. some wordprocessors:
  595.  
  596.  Custom
  597.    Allows you to define your own format using predefined Separator
  598.    characters.
  599.  
  600.  "...",
  601.    This is a quote and comma delimited text file such as used for data for
  602.    BASIC programs.
  603.  
  604. The following preset formats are available only for Export, not Import.
  605.  
  606.     Final Copy
  607.     Interword
  608.     KindWords 3
  609.     ProWrite
  610.     WordWorth
  611.  
  612. Only the KindWords 3 and Interword versions have been tested.
  613.  
  614. ====== Field and Record Separators ========
  615.  
  616. You can only select from the predefined delimiter codes.
  617.  
  618.   Field Start
  619.   The character that marks the start of a field.
  620.  
  621.   Field End
  622.   Marks the end of a field. It differs from the field separator in that a
  623.   separator does not appear after the last field in a record while a field
  624.   end character appears after every field.
  625.  
  626.   Field Separator
  627.   Separates fields in the record. It does not appear after the last field
  628.   in the record
  629.  
  630.   Record End
  631.   Marks the end of a record
  632.  
  633. If Field Start is used, a Field End must also be used. If neither Field End
  634. nor Field Separator is used, the records will be fixed length with each
  635. field padded to its maximum length with spaces.
  636.  
  637.  
  638. ============= PRINT REQUESTER =====================
  639.  
  640. Title
  641.   This is printed, centered, at the top of each page of your report.
  642.   Current date is printed at the left margin and the page number at the
  643.   right margin.
  644.  
  645.   The title line is only printed if you enter a Title. Note that even a
  646.   single space will print a blank title.
  647.  
  648. Left and Right Margins
  649.   Character position of left and right margin.
  650.  
  651. Lines/Page
  652.   This controls the number of lines QuickFile will use on each page. The
  653.   default is paper size minus 8 to provide a top and bottom margin.
  654.  
  655.   NB QuickFile issues a Form Feed when a new page is required. This
  656.   relies on your setting the page height on your printer correctly, and
  657.   may be a limitation with some printers. If you have a problem with this,
  658.   let me know and I will look at using the preferences paper size.
  659.  
  660.   A value of zero will suppress the report title and page breaks.
  661.  
  662. Print Pitch Cycle Gadget.
  663.   As for Workbench printer preferences
  664.  
  665. Lines Per Inch Cycle Gadget
  666.   This button toggles between 6 and 8 lines per inch.
  667.  
  668. Output To Cycle Gadget
  669.   Allows you to send the report to the printer or the window.
  670.  
  671. If you are printing a FORM view, a number of additional fields are
  672. displayed for multi-column printing such as address labels. See Labels for
  673. full details.
  674.  
  675. If you are printing a LIST view, a Group By list is displayed. This lists
  676. the report groups defined for this report. See Report Groups.
  677.  
  678. Press the OK button to start printing or the cancel button to cancel any
  679. changes you have entered.
  680.  
  681. Saving the view will save all of your report settings.
  682.  
  683. ========= Labels ============
  684.  
  685. Label printing is available for FORM type views only. You will normally
  686. define a special view and:
  687.  
  688.    Set Field Labels for the view to No
  689.  
  690.    Arrange the fields in the top left hand corner of the FORM screen to
  691.    match the desired label format
  692.  
  693.    Use the following fields in the print requester to control your label
  694.    format.
  695.  
  696. Labels Across
  697.   Number of labels to print across the page
  698.  
  699. Label Width
  700.   Width of each label. One additional space will be allowed
  701.   between labels. If you want to print labels further apart, increase this
  702.   value.
  703.  
  704. Labels Down
  705.   Number of labels to print down the page before starting a new column.
  706.   For example 3 across and 4 down will print in the following sequence:
  707.  
  708.       1      5      9
  709.       2      6     10
  710.       3      7     11
  711.       4      8     12
  712.  
  713. Label Height
  714.   Height of each label in lines. An additional blank line will be printed
  715.   between each label. The default is the number of lines in the form.
  716.  
  717. You will probably want to set Lines Per Page to zero to suppress page
  718. breaks as well.
  719.  
  720. If you are printing a single column of labels only, you can leave all of
  721. the above fields blank and let the number of lines in the form determine
  722. the label height.
  723.  
  724. ======== Report Groups ===================
  725.  
  726. You may know report groups as control breaks. A "group by" field is only
  727. printed when its value changes. You can also calculate summary values for
  728. each group. Each group can be based on several fields, although usually
  729. only one is used. Any number of fields may be summarised for a group.
  730.  
  731. Note that records must be sorted into the correct sequence for this to
  732. work correctly. They are not sorted automatically.
  733.  
  734. The types of groups available are
  735.  
  736. Report.  Gives a summary value for the whole report. If used, it must
  737.      be the first group in the list.
  738. Page.     Groups will start on a new page. Group fields will print
  739.      before column headings.
  740. Subtitle Prints the group fields on a separate line at the start of each
  741.      group. Reduces line length but best when each group contains
  742.      a good number of records.
  743. Normal     Field prints in the first line of the group only, but space
  744.      is used in each line.
  745.  
  746. You can have several levels of groups of the same type, but they must be
  747. listed from highest level to lowest.
  748.  
  749. ============= Report Group Example ============
  750.  
  751. The following example shows two groups with totals.
  752.  
  753.    Group 1 : City     Type: Normal   Group Fields: City
  754.                      Summaries:    Value (total)
  755.  
  756.    Group 2 : Salesman Type: Normal   Group Fields: Salesman
  757.                      Summaries:    Value (total)
  758.  
  759.    Resulting report:
  760.  
  761.     City    Salesman    Client             Value
  762.     ----------    -------------    --------------     ---------
  763.     Brisbane    Fred Smith    ABC Company       8000.00
  764.                 XYZ Limited       6400.00
  765.                 Zip Electronics   12000.00
  766.  
  767.     Salesman Tot                  26400.00
  768.  
  769.         John Brown    ZZZ Computers       5000.00
  770.                 GWZ Peripherals    7200.00
  771.  
  772.     Salesman Tot                  12200.00
  773.  
  774.     City Tot                      28600.00
  775.  
  776. Note: The file must be sorted over City and Salesman for this to print
  777. correctly.
  778.  
  779. ========== Report Group Requester ============
  780.  
  781. This defines the type, grouping fields, and summaries for a single report
  782. group.
  783.  
  784. Group string gadget
  785.   Names the group. This name is printed on summary lines.
  786.  
  787. Type
  788.   Type of group
  789.  
  790. View Fields list
  791.   Lists the fields available in the current view. The selected field in
  792.   this list can be added to either the Group Fields or Summaries lists.
  793.  
  794. Group Fields list
  795.   Lists the fields used for gouping. A new group starts when any of these
  796.   fields change. A group field is not required for a Report level group.
  797.  
  798. Summaries list
  799.   Lists the fields to be summarised for this group. Selecting an item from
  800.   this list will update the check boxes to show the summaries requested.
  801.   Use the INS button to add the selected view field to this list.
  802.  
  803. Tot, Cnt, Avg check boxes
  804.   Show the summaries required for the currently selected Summary field.
  805.   Any or all may be checked for one field.
  806.  
  807. OK and Cancel Buttons
  808.   Return to the Print Requester.
  809.  
  810. ============== DEFINING FILES  ===================
  811.  
  812. Use the Project/New menu item to define a new file.
  813.  
  814. Use the Project/Alter menu item to change the definition for the current
  815. file.
  816.  
  817. You can change just about everything in a file definition, except the
  818. block size, even after you have loaded data to the file. You can change
  819. field names, types and lengths. You can add or delete fields, and add or
  820. delete indexes. Caution should be used when changing the type for fields
  821. that contain data.
  822.  
  823. WARNING: Deleting a field makes its data inaccessible, even if you
  824.        re-add the same field. If you accidentally delete a field, reload
  825.        the definition without saving your changes and start your changes
  826.        again.
  827.  
  828. The fields defined for this file are listed in the box at the right of the
  829. window. Use the buttons beside the window to add, change or delete fields.
  830.  
  831. If a field is highlighted when you press add, the new field will be added
  832. before the selected field. To add a field to the end of the list, select
  833. the "== End ==" item.
  834.  
  835. The indexes (indices?) are listed in the box at the lower left. Use the
  836. buttons to add, change or delete indexes.
  837.  
  838. ================ File Details =================
  839.  
  840. The file details are shown at the top left of the QFDefine window
  841.  
  842. Block Size
  843.   QuickFile does not read and write single records at a time, but builds
  844.   them into blocks. This reduces the number of disk reads and writes
  845.   required. Around 2000 seems to give good results. The only way to change
  846.   block size is to export the whole file, define a new data base and use
  847.   import to recreate your file. Block size must be larger than the maximum
  848.   record size plus free space, plus some space for control fields (2 bytes
  849.   per field plus 2 bytes for the record length).
  850.  
  851. Free Space
  852.   The amount of free space to be left in each block to allow for records
  853.   to expand. As QuickFile only stores the actual data entered (not
  854.   trailing blanks), additional space is required if a change makes a field
  855.   longer. 100 seems to work OK. Records are moved to another block if
  856.   necessary, so this is not critical.
  857.  
  858. Buffers
  859.   Maximum number of buffers QuickFile will use for holding blocks of
  860.   records in memory. Unless you have very large files or are short of
  861.   memory, use a large figure such as 100.  QuickFile will never use more
  862.   buffers than are required for the whole file.
  863.  
  864.   The more of the file in memory, the faster QuickFile works. The memory
  865.   used is approximately (number of buffers * buffer size).
  866.  
  867. =========== Field Requester ===========
  868.  
  869. Name string gadget
  870.   Enter a name of up to 12 characters for the field.
  871.  
  872. Length
  873.   60 characters is a practical maximum length as no left and right
  874.   scrolling is provided and more characters cannot be displayed.
  875.   The maximum is 250. The minimum length of a date field is 11 characters.
  876.  
  877.   Space is used only for the number of characters entered in each record,
  878.   not for the maximum field length. In fact, if a field is empty it takes
  879.   up no space at all.
  880.  
  881. Decimals
  882.   Number of decimals stored and displayed for the field. Values entered in
  883.   the field will be rounded to this number of decimals.
  884.  
  885. Type Cycle Gadget
  886.   Choose type of field.
  887.  
  888. Mandatory Check Box
  889.   If checked, the field must have a value in all records. You will not be
  890.   able to add a new record without a value in this field.
  891.  
  892. Justify Right Check Box
  893.   If checked, the field is right justified. Integer, Float, and Caculated
  894.   fields default to right, character and date fields default to left.
  895.  
  896. Expression String Gadget
  897.   How to calculate the field value. The expression can contain field
  898.   names, constants, and the add (+), subtract (-), multiply (*) and divide
  899.   (/) operators. Field names that contain spaces must be enclosed in
  900.   double quotes ("). Normal precedence rules apply and brackets may be
  901.   used to control sequence. Fields must be defined before they can be
  902.   referenced.
  903.  
  904. =============== Field Types ===============
  905.  
  906. Character
  907.   This the usual character string.
  908.  
  909. Date
  910.   These have a minimum length of 11 characters and are always entered as
  911.   day/month/year.
  912.  
  913.   The separator can be any of /-. or a space.
  914.  
  915.   Month can be entered as a number or a three character name
  916.  
  917.   Year can be entered as two or four digits. If two digits are used, a
  918.   number greater than 50 is assumed to be this century, 50 or less, the
  919.   next century.
  920.  
  921.      eg. 3/6/94   is interpreted as 03-Jun-1994
  922.      1-aug-10 is interpreted as 01-Aug-2010
  923.  
  924.   Leading zeroes can be omitted.
  925.  
  926.   Dates are always displayed in the format 14-Apr-1993.
  927.  
  928.   The following are valid dates
  929.        03/08/93  3-8-93  3.aug.93  03 aug 1993
  930.  
  931. Integer
  932.   Whole number, no decimals.
  933.  
  934. Float.
  935.   Real numbers with decimals.
  936.  
  937. Calculated
  938.   The field value is calculated from other fields, which may themselves be
  939.   calculated fields.
  940.  
  941. ============== Indexes =============
  942.  
  943. You must define at least one index. If you are not sure pick any field
  944. that will give a useful sequence, such as surname, title etc. Each index
  945. can use a number of fields to give precise control of sequence.
  946.  
  947. You can have any number of indexes but you should limit yourself to those
  948. you are going to use regularly.
  949.  
  950. You can index on any field type including calculated fields. You can also
  951. define an index as unique to prevent duplicate records being created.
  952.  
  953. If you change an index on an existing file, it will be rebuilt when you
  954. return to the main display panel.
  955.  
  956. Select the index from the list and press the appropriate button. The Index
  957. Requester is used to define or alter an index definition.
  958.  
  959. Indexes are maintained automatically as you add, modify and delete records
  960. on your file so they reduce the need for sorting and resorting.
  961.  
  962. ============ Define Index Requester =================
  963.  
  964. Name
  965.   Identifies the index and is also used to form the index file name.
  966.  
  967. Unique CheckBox
  968.   If checked, duplicate index entries will not be allowed.
  969.  
  970. Available Fields
  971.   Lists fields defined in this file. Clicking on a field will add it to
  972.   the fields selected for this index.
  973.  
  974. Index Fields
  975.   Lists fields in the current index. The order of the fields in this box
  976.   determines their priority in the sort. The first field is the primary
  977.   key, the second will only be used for records where the first keys are
  978.   equal and so on.
  979.  
  980.   Clicking on a field in this list will select it and display its name
  981.   and length below the list box.
  982.  
  983.   If a field is highlighted, any new fields will be added before the
  984.   highlighted field, otherwise new fields will be added at the end. To
  985.   remove highlighting click in the blank part of the box.
  986.  
  987. Length
  988.   Changing this length allows you to index on part of a long field. This
  989.   reduces memory usage and may increase speed.
  990.  
  991.   IMPORTANT: YOU MUST PRESS ENTER OR RETURN AFTER CHANGING A LENGTH OR
  992.          YOUR CHANGES WILL BE IGNORED
  993.  
  994. Order Buttons
  995.   Select A..Z for ascending order or Z..A for descending order. You can
  996.   mix these on different fields in the same index.
  997.  
  998. Delete
  999.   Deletes the highlighted field from the Index Fields list.
  1000.  
  1001. ===== FILE NAMES =============
  1002.  
  1003.    QuickFile uses four types of file distinguished by extension. Changing
  1004.    these with an  editor will probably corrupt the file. YOU HAVE BEEN
  1005.    WARNED.
  1006.  
  1007.    The DEFINITION FILE has no extension. This is the name you enter when
  1008.    specifying a file name for QuickFile.
  1009.  
  1010.    The DATA FILE has an extension of .Data.
  1011.  
  1012.    VIEW files usually have an extension of .View
  1013.  
  1014.    INDEX FILES have an extension of .nameX where 'name' is the name of the
  1015.    index as specified in the file definition.
  1016.  
  1017. ========== POSSIBLE PROBLEMS =================
  1018.  
  1019. INDEX DOESN'T MATCH DATA FILE
  1020.  
  1021. It is possible for an index and data file to get out of synchronisation.
  1022. This can be caused by not closing a file properly, typically because of a
  1023. guru or power loss with a file open.
  1024.  
  1025. If you suspect an index has been corrupted in some way, you can delete the
  1026. index file (called filename.indnameX).  When you next open the file, the
  1027. index will be rebuilt.    This is indicated by a message such as "getblock:
  1028. Block not found" being displayed in the Console window.
  1029.  
  1030. You can also rebuild an index by selecting the Rebuild Index item from
  1031. the QuickFile tools menu.
  1032.  
  1033. ========== Program Limits ==============
  1034.  
  1035. Field Length
  1036.  
  1037.     While up to 250 characters are allowed per field, this is not very
  1038.     useful as each field is limited to one line.
  1039.  
  1040. Number of Records per File
  1041.  
  1042.     The theoretical limit is currently 65,535. In practice it is much
  1043.     lower because of the indexing technique which will run out of either
  1044.     memory or processor speed. Each index requires a contiguous area of
  1045.     RAM 4(n + 200) bytes in size, where n is the number of records in the
  1046.     file. The sort technique also limits the size of the file.    The sort
  1047.     loads all sort keys to ram and also requires 8 bytes per record in one
  1048.     contiguous area.
  1049.  
  1050.     A realistic maximum is probably in the order of 10,000 to 20,000.
  1051.  
  1052. Number of fields per record
  1053.  
  1054.   250. But I got bored at about 60, so you take your chances if you want
  1055.   to try more.
  1056.  
  1057. Number of indexes
  1058.  
  1059.   No limit.
  1060.  
  1061.