From: ryee@dsigroup.com (Roger L. Yee)
Subject: comp.databases.paradox FAQ Monthly Update
Date: 5 Aug 1994 00:54:22 GMT
Reply-To: @dsigroup.com (Paradox FAQ Maintainers)


Posted-By: auto-faq 2.4
Archive-name: paradox-faq

Followup-To: comp.databases.paradox
Reply-To: dev@dsigroup.com (FAQ comments etc)
Summary: This posting contains information pertinent to Borland
         Paradox database software for MS-DOS and MS-Windows.  
         It should be read by anyone who wishes to post to the 
         comp.databases.paradox news group. Commonly-asked 
         questions and pointers to other support sources are included.
Expires: 25 August, 1994 10:10:10 GMT

Archive-name: databases/paradox-faq
Posting-Frequency: monthly
Last-modified: 1994/07/10
Version: 2.1

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=--=-=-=-=-=

                         P  A  R  A  D  O  X

                                F A Q

         Frequently Asked Questions for comp.databases.paradox


                        version 2.1, 07/10/94          

                            Maintained by:
                  J. Allen Dove (adove@dsigroup.com)
                   Roger L. Yee (ryee@dsigroup.com)
               
        DISTIRBUTE FREELY. COMMERCIAL DISTRIBUTION PROHIBITED. 
         
     Comments, Suggestions, Additions, Updates to: dev@dsigroup.com 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=--=-=-=-=-=


CONTENTS
--------              * denotes NEW or UPDATED items

1.0 INTRODUCTION
     1.1 Comp.databases.paradox Netiquette
   * 1.2 Administrivia
   * 1.3 Maintainers' Note

2.0 PARADOX SUPPORT
     2.1 Borland Phone Services    
     2.2 Borland Online Services   
     2.3 Other Online Services
   * 2.4 Other FTP Archives
   * 2.5 FAQ Updates

3.0 Paradox-related publications

4.0 FREQUENTLY ASKED QUESTIONS
     4.0 Why isn't there a separate news group for DOS and
         Windows?
     4.1 How do I do a not-in query? [DOS, WIN]
     4.2 How do I make a generic query that can be used with
         several tables?[DOS, WIN]
     4.3 Where is the Paradox for Windows Runtime? [WIN]
     4.4 How does Paradox round numbers? [DOS]
     4.5 How can I delete an arbitrary file? [DOS]
     4.6 Why is Paradox for Windows so darn slow? [WIN]
     4.7 How do I query for the top/bottom 5 records? [DOS, WIN]
     4.8 How do I send reports to a text file? [WIN]
     4.9 How do I get Paradox/Win running on OS/2? [WIN]
     4.10 How do I access calculated fields? [WIN]
     4.11 How do I create calculated fields [DOS, WIN]
     4.12 How to I prevent Ctrl-Break? [DOS]
     4.13 Why didn't my variable query work? [DOS,WIN]
     4.14 How do I restrict input to upper-case only? [DOS,WIN]
     4.15 How do I auto-number a field for ID's?
     4.16 When should I use a filter (Order/Range) vs. Query?[WIN]
     4.17 Why can't I open the table? [DOS,WIN]
     4.18 What are these *&!# files doing here? [DOS]
     4.19 Where's the arrive trigger? [DOS]
     4.20 How do I get the disk drive letters? [DOS]
     4.21 Why can't I change data on a detail table? [WIN]
     4.22 Where did that table come from, and where did it go?
          [DOS,WIN]
   * 4.23 What is the current version of Paradox? [DOS,WIN]?

* 5.0 PARADOX 3rd PARTY PRODUCT DIRECTORY

-----------------------------------------------------------------

1.0 Introduction
Welcome to the comp.databases.paradox FAQ. This document attemptrs to 
answer frequently asked questions regarding the Paradox product and 
related topics. Your contributions are necessary for this document 
to be useful. Please send any information you think is 
needed for or useful to this document to the FAQ address at:
  dev@dsigroup.com
or post to the Usenet news group comp.databases.paradox.

1.1 Comp.databases.paradox Netiquette
When posting to comp.databases.paradox, please specify in your
article subject either [DOS] or [WIN], if your question is
specific to one version or the other.  Some subjects, such as
queries, data formatting, etc., etc. will obviously apply to
both.  If you are using a version other than the current versions
(4.5 for both DOS and Windows), specify that also, for instance
"[DOS35] Wait Processing".

If you are cross-posting this article to other groups, such as
comp.databases or comp.os.mswindows.developer, please specify
PARADOX or PDX in the subject, so they'll know what the heck
you're talking about.

If you include code examples in your message, please check to
make sure they work.  If it isn't tested exactly as written,
please at least say so *AHEAD* of the code.  If it is something
someone asked for, and you aren't sure your method works for him,
try e-mailing to him first, to hammer out the specs, then one of
the two of you can post the real answer.

1.2 Administrivia
Paradox is a registered trademark owned by Borland International,Inc.
MS-Windows is a registered trademark owned by Microsoft Corporation.
Other product and corporate names may be trademarks of other companies, 
and are used only for explanation and to the onwers' benefit, without 
intent to infringe.

This document is not an official document of or endorsed by Borland 
International, Inc.
---------------------------------------------------------------------
Copyright (c)1994 DSi group. This collection of information is a 
publication of the DSi group. Redistribution is hereby granted if 
document is unaltered or modified and all notices remain intact. 
Commerical distribution is prohibited.
---------------------------------------------------------------------

1.3 Maintainers' Note

We have just obtained news.answers approval and will now be posting 
this FAQ on the 10th of every month. You can find the current FAQ 
posted on the comp.databases.paradox newsgroup as well as on 
news.answers. Current versions of the FAQ will be archived by 
*.answers as well as being listed in the Listing of Periodic Postings.

Please keep your comments and contributions coming in! Our aim is to 
provide a comprehensive resource for Paradox beginners, experts 
and gurus alike.  

Future plans have a possible FTP site in store as well as an 
additional Developer's FAQ. Any volunteers?


This FAQ is currently still under construction.  The original keeper
has found himself without time to maintain it, so we are going to
take the initiative and post this interim release. In the meantime, 
we are awaiting approval for permission to post to news.answers 
and related groups. 

Once again, thank you for your input in compiling this FAQ. 
As always any and ALL response is welcomed!

Thanks in advance.

J. Allen Dove            Roger L. Yee
FAQ Co-Maintainer        FAQ Co-Maintainer
DSi group                DSi group
adove@dsigroup.com       ryee@dsigroup.com

*****************************************************************

Special Thanks to Joel Finkle, the original founder of the FAQ

Thanks is given to the following contributors:

Mean Green Dancing Machine (aahz@netcom.com)
Dean Bowes (bowesd@thomas.ge.com)
Nasir Ahmed Noor (ummalik@ccu.umanitoba.ca)
Reinoud van Leeuwen (Leeuwen@rullf2.LeidenUniv.nl)
Bill Chosiad (billc@world.std.com)
Stuart Tomares, M.D. (stomares@welchlink.welch.jhu.edu)
Carey Klenetsky (carey@limax.com)
Jeff Stevens (stevens@sirius.scubed.com)
Joseph Bentley (joe@slick.limax.com)
Ken Ostrin (ken@limax.com)
Krzysztof Zmudzinski (krystof@cs.washington.edu)
Donald R. Oddy (donald@grove.demon.co.uk)
Matthew McDermott (mcs@ucsco.ucsc.edu)
Joe Humphreys (joe.humphreys@ggcs.org)

Thanks to the DSi group for providing Internet network and related 
resources for this endeavor.

-----------------------------------------------------------------

2.0 Paradox Support

2.1 Borland Phone Services
Recently, Borland abandoned free human-moderated telephone
support, as did much of the computer industry.  They do provide a
number of means for support, though.

TechFAX        1-800-822-4269
This has touch-tone menus to send answers to common questions to
your FAX machine

Automated Support:  1-800-524-8420
This has touch-tone menus for recorded answers to common
questions

Advisor Line:       1-900-555-1000 Paradox DOS
                    1-900-555-1006 Paradox Windows
$2.00 per minute, first minute free

Credit Card Advisor 1-800-468-9990 Paradox DOS
                    1-800-452-1333 Paradox Windows
$2.00 per minute, first minute free, VISA, MasterCard, American Express

Other Borland Phone Numbers:
Product Registration     1-800-845-0147
Order Line               1-800-331-0877

2.2 Borland On-Line Support

FTP                      ftp.borland.com {NEW}
CompuServe               GO BORLAND
BIX                      JOIN BORLAND
GEnie                    BORLAND
Borland Download BBS     1-408-439-9096
Automated Support BBS    1-408-431-5250

2.3 Other On-Line Services
Usenet                   comp.databases.paradox
Digest of c.d.paradox    *is this still working?*
Paradox Informant BBS    1-916-686-4740

Paradox and PDOXWIN Mailing lists:

Send mail to LISTSERV@BRUFPB.BITNET
In the body of the message, with no header, type

SUB PARADOX (your full name)

or

SUB PDOXWIN (your full name)

To post to these lists, mail to PARADOX@BRUFPB.BITNET or
PDOXWIN.BRUFPB.BITNET.

PDOXWIN does not appear to be active.  PARADOX receives about
five messages per week.

2.4 Other FTP Archives
ftp.cica.indiana.edu at Indiana University maintains a Paradox
archive in /pub/pc/borland/pdx.  There are subdirectories labeled
dos, wind and ti, the latter containing Borland's Technical
Information notes, also found on the Borland Download BBS.

BrainLINK BBS/FTP System
This is a FTP/TELNET site that has a number of Paradox related files for 
both DOS and WINDOWS versions.
TELNET/FTP to:  199.184.242.4
Rajesh Goel is the owner - frostbit@dorsai.dorsai.org

2.5 FAQ Requests
To obtain the latest copy of the FAQ via mail-server, 
send e-mail message to:

  dev@dsigroup.com
  with Subject line containing: GET PDOX FAQ

The FAQ is updated and cross-posted monthly to the following newsgroups:
  comp.databases.paraodx
  comp.databases
  comp.answers
  news.answers

Anonymous FTP will be available in the near future.

-----------------------------------------------------------------

3.0 Paradox-related Publications

3.1 Paradox Developer's Journal
     Published monthly by the Cobb Group
     1-800-223-8720 or 502-491-1900

     Customer Relations
     9420 Bunsen Pkwy, Suite 300
     Louisville, KY 40220
     Internet: JEFF_DAVIS@MM.COBB.ZIFF.COM

     Subscriptions <as of 1/94> $79/yr or $99/yr outside of U.S.
     Resource Disks $49/yr, $29/6 mo., $9.95 per issue
Typically 16-20 pages, containing both Windows and DOS
information. Targeted at developers, contains PAL and ObjectPAL
code information.

3.2 Paradox User's Journal
     Published monthly by the Cobb Group
     1-800-223-8720 or 502-491-1900

     Customer Relations
     9420 Bunsen Pkwy, Suite 300
     Louisville, KY 40220
     Internet: JEFF_DAVIS@MM.COBB.ZIFF.COM

     Subscriptions <as of 1/94> $79/yr or $99/yr outside of U.S.
     Resource Disks $49/yr, $29/6 mo., $9.95 per issue
Typically 16-20 pages, containing DOS-only Paradox information. 
Mostly aimed at users of Paradox, including form and report
design, simple scripts, queries.

3.3 Paradox for Windows Journal
     Published monthly by the Cobb Group
     1-800-223-8720 or 502-491-1900

     Customer Relations
     9420 Bunsen Pkwy, Suite 300
     Louisville, KY 40220
     Internet: JEFF_DAVIS@MM.COBB.ZIFF.COM

     Subscriptions <as of 1/94> $79/yr or $99/yr outside of U.S.
     Resource Disks $49/yr, $29/6 mo., $9.95 per issue
Typically 16-20 pages, containing Windows-only Paradox
information.  Mostly aimed at users of Paradox, including form
and report design, simple scripts, queries.

3.4 Paradox Informant
     Published Monthly by Informant Communications Group
     916-686-6610

     10519 E. Stockton Blvd, Suite 142
     Elk Grove, CA 95624-9704
     CompuServe: Jerry Coffey 70304,3633, MCI mailbox JCOFFEY

     Subscriptions: <as of 1/94> $44.95, Canada $49.95, 
     Central/South America $75,All Others $115.

Typically 80-92 pages, containing everything from basic tutorials
to in-depth technical articles.  Excellent magazine.  Maintains
the Paradox Informant BBS (PIBB) listed above.

3.5 Data Based Advisor
     Published Monthly by Data Based Solutions, Inc
     800-336-6060 or 619-483-6400

     4010 Morena Blvd. Suite 200
     San Diego, CA 92117
     CompuServe 70007, 1614; MCI Mailbox DATABASED

     Subscriptions <as of 06/94> $35/yr, Canada $55, Others $75
     Index of articles available on disk for $17.49
Covers most of the personal-computer-based Database world.  Good
articles on Paradox are common.

3.6 Instant Scripts
     Published by LAPALS, the Southern California 
     Paradox Users Group
     310-541-3461

     4009 Montaigne Way
     Palos Verdes, CA 90247
     Annual Membership $45, International $120.  
     Make checks payable to Nancy Chalnick, LAPALS Membership Director.  
Sample issues available. High quality articles on Paradox.

-----------------------------------------------------------------

4.0 Frequently Asked Questions

Why isn't there a separate news group for DOS and Windows?

You need a large number of people to authorize a NEW news group.  
Besides, there's still a good number of messages that are useful for both 
DOS and Windows users (see below).  However, if there is enough response, 
there will be two FAQs: one covering general techniques and questions on 
DOS and Windows  and a developer's version targeting specifically Paradox
for Windows/ObjectPAL application development.

Sharing platforms is not uncommon in other newsgroups, for
instance, rec.games.video.sega discusses GameGear, Genesis, etc.

4.1 How do I do a not-in query? [DOS, WIN]
With two tables with a common key, (for instance, Customer ID),
how do I find which records in one table have no matches in the
other (for instance, customers with no orders)?

Create a Paradox Query (.SC for DOS or .QBE for Windows) that
looks like this:

     CUST | Customer ID  | Address | City    | State   |
          | Check _Cust! | Check   | Check   | Check   |

     ORDER     | Customer ID       | Order Num    |
               | _Cust, count = 0  |              |

     ORDER     | Order Date   | Total Cost   |
               |              |              |

This will find those customers who haven't placed an order.  To
expand this method, put "> 1/1/94" in the Order Date (without the
quotes), this will find those customers who haven't ordered this
year.

This works because queries execute their operations in the
following sequence:

* Search for actual values or ranges
* Join tables
* Execute aggregators

Because the COUNT gets done *after* the join, it removes records
from ANSWER that do not have a corresponding record in Customer
ID.

4.2 How do I have a generic query that can be used with several
tables? [DOS,WIN]

In Paradox for DOS, you don't.  Query expressions can not use
variables for table names.  In Paradox for Windows, you may use
something like:

     ~strTblName    | Patient ID   | Age     |
                    | Check        | > 65    |

The best you can do with Paradox for DOS is either:
a) Copy or Rename your table to the generic table name used in
your query, or 
b) Use 'scripting' commands to create the Query on the fly. 
Borland cautions that you must ensure proper naming of variables
and tables.  A good method is to begin by recording an instant
script (F3), and replacing table names with variables.

     MENU {ASK} SELECT TheTable 
     MOVETO [Patient ID] CHECK 
     MOVETO [Age] TYPEIN "> 65"

4.3 Where is the Paradox for Windows Runtime? [WIN]
Borland is finally selling this for version 4.5.  See the order
line phone number above.

4.4 How does Paradox round numbers? [DOS, WIN]
Paradox uses Banker's Rounding.  This has been found to be
extremely annoying to many people. Banker's Rounding rounds a 5
digit to the nearest even number.  So, ROUND(123.45,1) goes to
123.4, but ROUND(123.55,1) goes to 123.6! (Paradox for Windows
uses the expression variable.Round (digits) for rounding, and
does not seem to 'suffer' from banker's rounding).

Note that the FORMAT() function uses mathematical rounding:
     NUMVAL (FORMAT("W10.1",123.45)) returns 123.5.

4.5 How can I delete an arbitrary file? [DOS]
The most obvious method is to use
     RUN [NOREFRESH] "DELETE "+TheFile
If you have multiple files to delete, you may want to create a
.BAT file and execute that, as the RUN command is somewhat time
consuming.

Another method is to create a new file of the same name using the
Editor, and not save it.  This deletes the original file.  It
will not work properly for non-textual files such as .EXE, .COM
or .SC2.  But it's a neat trick, worth looking at, and faster
than RUN, by as much as 25 times.

(Requires version 4.5):

     EDITOR NEW TheFile                 ; Create a new file
     WINDOW HANDLE EDITOR TO AHandle    ; Get the window handle
     WINDOW SELECT AHandle              ; Select the window
                                        ; (twice in case
     WINDOW SELECT AHandle              ; of floating windows)
     WINDOW CLOSE                       ; Close without saving

Remember not to delete Paradox components using this method
(tables, indexes, forms, reports, etc. etc.) as Paradox may still
have them open, or expect them to be there later.

4.6 Why is Paradox for Windows so darn slow? [WIN]

Borland requires at least 4MB of memory, but recommends 6MB, on
your Windows system for adequate performance.  In truth, Paradox
runs "acceptably" with 4 meg on a fast 486, but that's still not
optimally.  For any moderately complex database, you will want at
least 8MB, especially on 386 processors.  Paradox for Windows is
just such a powerful beast that you more or less insult it by
offering up any less.

One difference between DOS and Windows Paradox is that the
Windows version does case-insensitive searching with the Locate
command.  This can be removed by checking the Case Sensitive
check box on the Locate command (Ctrl-Z).  This makes you have to
be more careful, but it's several times faster.  Also, if you
find you are doing frequent searches on a non-key field, create a
maintained secondary index on that field.  This should also help
locate speeds.

4.7 How do I query for the top/bottom 5 records? [DOS, WIN]

This looks rather strange, and can be time consuming, but will
select the records with the five highest values in a table:

     QUERY

     TEST | Order        | Total Invoice  |
     SET  |              | _a             |
     SET  |              | <max _a,_b     |
     SET  |              | <max _b,_c     |
     SET  |              | <max _c,_d     |
     SET  |              | <max _d,_e     |
          | Check        | Check >=max _e |

ENDQUERY

It works by asking on each line to find a set of records less
than the greatest value in the previous set.  When you get to _e,
you've defined a set missing the four highest Invoice records. 
The last line selects records greater than or equal to that set,
thus finding the five greatest records.

4.8 How do I send reports to a text file? [WIN]

Using the Windows Control Panel Printer icon, create a
Generic/Text printer, and use the Connect button to specify
FILE:.  You can then print your reports to this printer, and you
will be asked to specify a file.   Note that only
non-proportional fonts (such as Courier, System), and only text
will appear in the report.

4.9 How do I get Paradox/Win running on OS/2? [WIN]
Borland has a Technical Information Document called
"Configuration Issues of  Running P4W under OS/2 v2.1.  It is
available from the Borland Download BBS and ftp.cica.indiana.edu
as TI1674.ZIP, and from Borland Tech FAX as number 1674. 
See above for how to reach these sources.

4.10 How do I access calculated fields? [WIN]
For example, an ANSWER table created by a query has a field
called "Sum of Amount".  How do I access this in my methods?

If you had created a form object yourself, the default name for
this field would have been MyT.Sum_Of_Amount.  However, because
this is just a table field, you must use MyT."Sum of Amount". 
Looks strange, but it's the right way to do it.

4.11 How do I create calculated fields [DOS, WIN]
A table can't have an auto-calculated field, unfortunately.  What
can you do?

a) A form or report can have a field calculated from other
fields, and a limited number of functions.
b) Your WAIT procedure can look for a POSTRECORD trigger, and
calculate a field in  your table there (Windows folks need to
trap the correct Action).
c) A query can update a field with the CHANGETO command, or
create a new field with the CALC command.
d) Use a SCAN loop
     SCAN
        [That Darn Field] = [Another Field] * 10
     ENDSCAN

For Windows, use
     SCAN MyTCursor:
        MyTCursor.That_Darn_Field = MyTCursor.Anotherfield * 10
     ENDSCAN

4.12 How to I prevent Ctrl-Break? [DOS]
At first, it would appear that the "Disable Break" command in the
Custom Configuration Utility would be the solution.  However,
documentation indicates that this feature is solely to prevent
erroneous breaks that can be generated by some European
keyboards.

The solution to preventing breaks is to password-protect the
highest-level script that you wish to keep from 'break'-ing.  All
routines called by this routine will prevent breaks.

4.13 Why didn't my variable query work? [DOS,WIN]
Using Tilde Variables in Paradox Queries provides quite a bit of
power to have a query that is changeable at run-time.  However,
there are a few restrictions.

Example Query:

     Table| Customer     | Name    | State        |
          | Check        | Check   | ~strState    |

a) strState must be a *string* variable.  Even for numeric or
date fields, strState must be a string expression that is
inserted into that spot on the query table.
b) strState is the criteria, not the whole shebang that would go
in the field. In other words, it behaves as if it were typed in
enclosed in parentheses, so commas, underbars, ORs, etc. etc. are
not processed.

4.14 How do I restrict input to upper-case only? [DOS,WIN]

The Picture for a field or ACCEPT can be set to "*&" for
all-uppercase, letters-only, or "*!" for all-uppercase, any
characters.  In Windows, for more information see the on-line
help and search for "Picture String Characters".

4.15 How do I auto-number a field for ID's?
You will need to trap for new record insertion (TriggerType =
INSRECORD in DOS 4.5 WAIT procedures, eventInfo.Id () =
DataInsertRecord in Windows Action method).

You can then calculate the next available value as:

DOS: [RecordID] = CMAX(TABLE(),[RecordID])
WIN: RecordID = CMAX(TheTable.CMAX(RecordID))

***Remember, if you use column operators, the method will try to
place a WRITE lock on the table.  This is usually ineffective in
a multiuser environment as other will need more than just read
permissions and you may not get the lock.

An better method that can be used in multi-user environments is
to save the value in another table  and increment it.  This is
somewhat more complex, but prevents two users from creating the
same record ID at the same time.  It is very simple to write a
reusable method that would perform the action on any code table
that conforms to a set structure.  The following works in Paradox
for Windows:

     method NextKey (strTblName string,
               strParameterFldName string,
               strParameterValue string,
               strKeyFldName string,
               strKeyType string,
               anyKeyIncrement anytype,
               var anyKeyValue anytype) logical

        var
           tc       tcursor;
        endvar

        try
           tc.Open (strTblName);
           if not(tc.Locate (strParameterFldName,
           strParameterValue))
           then
              ;//could not find parameter value
              tc.Close ();
              Return (FALSE);
           endif
           tc.Edit ();
           while not(tc.LockRecord ())
              ;//insure that we can get exclusive rights to the
              ;//record temporarily
              Message ("One moment, locking key record...");
              Sleep (500);
              Message ("");
           endwhile
           switch
              case (strKeyType = "N"):
                 tc.FieldValue (strKeyFldName, anyKeyValue);
                 tc.SetFieldValue (strKeyFldName,
                    (Number (anyKeyValue) +
                    Number (anyKeyIncrement )));
              case (strKeyType = "S"):
                 tc.FieldValue (strKeyFldName, anyKeyValue);
                 tc.SetFieldValue (strKeyFldName, 
                    (SmallInt (anyKeyValue) +
                    SmallInt (anyKeyIncrement )));
              ...
              ;// do same for other types that can be incremented
              ...
              otherwise:
                 ;//invalid data type
                 tc.CancelEdit ();
                 tc.Close ();
                 Return (FALSE);
           endswitch
           tc.PostRecord ();
           tc.Close ();
           Return (TRUE);
        onfail
           if (tc.IsAssigned ())
           then
              if (tc.IsEdit ())
              then
                 tc.CancelEdit ();
              endif
              tc.Close ();
           endif
           Return (FALSE);
        endtry

     endmethod

Just remember to do a type conversion when using anyNewKey after
executing this method.  Obviously, you can add any other
functionality you need.  

A similar procedure can be written for Paradox DOS.

4.16 When should I use a filter (Order/Range) vs. Query? [WIN]
The Order/Range command and the SwitchIndex and SetFilter methods
let you select an index, then limit the values that can be
presented.  This is extremely fast, but is limited to the current
index order.  If you need to limit records based on values in
fields not in the index, from criteria on more than one table or
non-contiguous ranges, you should base your  form or report on a
query, rather than limiting the range on the table.  Note that if
you use DBase tables, you can use any DBase SELECT statement for
your range expression.  This could make using DBase-format files
worthwhile for some applications.

4.17 Why can't I open the table? [DOS,WIN]
Paradox for Windows and Paradox DOS apparently think that files
in the wrong format are merely password protected.  This beats
trying to mangle a file it can't use, but a "Wrong Version,
Stupid" error message would probably be preferable.

Typical situations that cause erroneous Password messages
include:

     a) A Paradox DOS table that has Set Protect Write-Protect on
it, that you try to open in   Windows.  There is no equivalent
function in Windows, you've got to clear the Write-Protect  in
DOS.

     b) A Paradox Windows table with Strict Referential Integrity
set on it that you try to open     in DOS.

     c) A Paradox 4.0 or 4.5-formatted table that you try to open
in Paradox 3.5. 
Note that all versions of Paradox let you set a "Compatible"
format when reformatting a table.

4.18 What are these *&!# files doing here? [DOS]
Paradox/DOS is somewhat sloppy about leaving PDOXUSRS.LCK and
$PALMEM$ files in directories that you use SETDIR to move to. 
PDOXUSERS.LCK is used to lock records, $PALMEM$ is a swap file
for memo fields.  They can get created, and not deleted, if you
use SETDIR to change directories during a Paradox session.  Using
SETPRIVDIR "C:\SOMEWHER" (a valid path) will ensure that these
files get put *only* there.

4.19 Where's the arrive trigger? [DOS]
Unlike Paradox/Win, ARRIVETABLE, ARRIVEROW and ARRIVEFIELD
triggers do not get sent to a Wait procedure if your procedure
'manually' moved to the new table, row or field.

The solution is to  call your Wait procedure recursively:

     PROC MyWait(TrigType,TheEvent,Cycle)
        SWITCH
        CASE TrigType = "DEPARTFIELD" AND FIELD()="Order Num"
           DOWNIMAGE
           MyWait("ARRIVETABLE",TheEvent,Cycle)
           MyWait("ARRIVEROW",TheEvent,Cycle)
           MyWait("ARRIVEFIELD",TheEvent,Cycle)
        ENDSWITCH
     ENDPROC

4.20 How do I get the disk drive letters? [DOS]
In Paradox/DOS 4.5, a new command is added for this:

     SYSINFO DRIVES TO DriveArray

DriveArray is a DYNARRAY containing one element for each drive,
in reverse alphabetical order ;^)  Each element contains "SHARED"
for network drives, else "LOCAL".  Note that they include the
colon ("D:").  You may want to use
DRIVESTATUS(SUBSTR(DriveArray[whichDrive],1) to test for an
actually available drive, as the floppies are always listed, as
is a not-ready CD-ROM drive, etc.

4.21 Why can't I change data on a detail table? [WIN]
By default, all 1-1 detail tables in your data model are set to
read-only except for the master (left-most) table.  In the data
model, right-click on each 1-1 linked table, and un-check the
read-only property.

4.22 Where did that table come from, and where did it go?
[DOS,WIN]
Paradox creates a number of temporary tables during processing. 
They are normally deleted upon exit from Paradox.  If you have
set a private directory, they will be in that directory,
otherwise, in the current directory.  Don't delete these files,
unless you have exited Paradox. See also question 4.18.


Table                    Version        Comments
------                   ----------     -------------
Answer                   Dos, Win       Query Result table
Changed                  Dos, Win       Records changed in a
                                        CHANGETO query
Chantemp                 Dos
Crosstab                 Dos, Win       Created with the Crosstab
                                        command
Deleted                  Dos, Win       Records deleted in a
                                        DELETE query
DelTemp                  Dos
Entry, Entry1, Entry2..  Dos            Created during DataEntry
                                        command
ErrChng                  Win
ErrDel                   Win
ErrIns                   Win
Export                   Win
Family                   Dos            Tools/Info/Family Command
Import                   Win            Family
Inserted                 Dos, Win       Records added with an
                                        INSERT query
Instemp                  Dos
KeyViol, KeyViol1...     Dos, Win       Key Violations
                                        (Add, Insert Query,
                                        Restructure)
Kvtemp                   Dos
List                     Dos            Item lists from Tools
                                        commands
Locks                    Win
Pal$src                  Win            Created during EXECUTE
                                        commands
Password                 Dos
Passtemp                 Dos
Problems,Problems1..     Dos, Win       Errors during
                                        restructures
Probtemp                 Dos
Resttemp                 Dos
Sortques                 Dos
Struct                   Win            Created during
                                        restructure or structure
                                        listing.

4.23 What is the current versions of Paradox? [DOS,WIN]
>> Paradox for Windows version 4.5
>> Paradox for DOS version 4.5

>> Version 5.0 for Windows is rumored for 4th quarter 94 release.

-----------------------------------------------------------------

5.0 Paradox 3rd-Party Product Directory
Please let us know of your Paradox products (both DOS and WIN),
and we will try to provide as complete a 3rd-party directory as
possible.

David Sherman <dsherman@freenet.columbus.oh.us> has submitted a fairly 
exhaustive list/Paradox db listing of 3rd party products and vendors. 
We are reviewing it and will attempt to include it in the next FAQ release.

## END PARADOX FAQ v2.1 ##
--
-----------------.------ Roger L. Yee ------.---------------------------.
|    [D] [S] i    |   Vice President for     |  * Publisher & Founder *  |
|    g r o u p    |  Corporate Development   | iMpulse, The Cutting Edge | 
`-----------------|   Programmer Analyst     |  Paradox FAQ, EATS Guide  |
