Copyright: Paradox User's Guide Copyright © 1985, 1995 Borland International.


What's new in Paradox 7

See also

In addition to the new Windows 95 look and feel [image] including support for long file names [image] this version of Paradox adds ease-of-use features, plus additional power for developers:

New and enhanced experts do your tasks for you.

Changing properties and preferences is easier with new tabbed dialog boxes.

New, customizable Toolbars add convenience [image] and you can dock them, or let them float.

Menu enhancements make it easier to find the commands you need. For example, the Properties menu has been replaced. Instead, use the Edit menu to set preferences and defaults. And, new right-click menus put essential commands at your fingertips.

File-handling enhancements use Windows common dialog boxes for convenience and suite compatibility.

New and improved tools add functionality and convenience.

Simplified MAPI mail transfer lets you send messages and files directly from Paradox and through ObjectPAL.

Online Help enhancements make it easier to find the information you need when you need it.

Four new types [image] OLEAuto, Toolbar, Mail, and DataTransfer [image] and the methods to support them, have been added to ObjectPAL. Plus, many new methods added to the Query type make it easy to build a query on-the-fly. For details, see the ObjectPAL Reference.

Significant developer environment enhancements, including the Object Explorer, simplify script writing and make it easier to reuse code.

SQL enhancements let you work with SQL tables directly through the Paradox user interface and make it easier to query SQL tables.


Expert enhancements

See also

New and enhanced experts do your tasks for you. For a list and descriptions, see About Paradox experts.


Property and preference enhancements

See also

Setting properties to customize the appearance and functionality of objects is easier with new tabbed dialog boxes. For more information, see To change an object's properties.

And, all preference settings that control system defaults and the development environment are available through two commands on the Edit menu. See About Paradox preferences for details.


Toolbar enhancements

See also

New, customizable Toolbars add convenience to the Paradox Desktop. You can move them, dock them at the sides and bottom of the window, or let them float. For more information, see About Toolbars.

Toolbar tips make it easier to see what a Toolbar button is for. Just point to a button and its description appears.


Menu enhancements

See also

Menus have been redesigned so commands are easier to find. These are some of the more significant changes:

Import and Export are now on the File menu.

Private directories are now defined by choosing Edit|Preferences and clicking the Database tab.

To define aliases in the Alias Manager, choose Tools|Alias Manager.

On the Edit menu,

Search Text is now Find and Replace.

Developer Preferences and Preferences are used to set properties that were formerly available through the Properties menu, which has been removed.

The View menu lets you specify which Toolbars to display and also sets Field View, Persistent Field View, and Memo View. Use the object-specific menu (Table, Form, and so on) to toggle in and out of Edit mode (or press F9).

The bottom of the object-specific menu (Table, Form, and so on) now contains object properties that were formerly on the Properties menu.

Changes and additions to the Tools menu make Paradox more convenient and easier to use.

The Windows menu offers vertical or horizontal tiling.


File-handling enhancements

See also

File-handling enhancements add functionality to the Windows common dialog boxes for convenience and suite compatibility.

For example, you can manage file operations (rename, copy, delete, and so on) in the common dialog boxes, such as File|Open. Just right-click a file name for a menu. You can also create directories from these dialog boxes, without having to return to the Windows Explorer. For more information, see About using common dialog boxes.


Tool enhancements

See also

Tools menu changes

Changes and additions to the Tools menu make Paradox more convenient and easier to use.

Experts and the Alias Manager are now available on the Tools menu.

Set Locks and Display Locks are now directly available on the Tools menu (they were under Tools|Multiuser).

Passwords has been moved to the top level of the Tools menu from Tools|Utilities; Import and Export are now available on the File menu instead of through Tools|Utilities.

The Paradox 5.0 Auto Refresh and Blank As Zero system settings are now available on the Database page displayed with Edit|Preferences. BDE (formerly IDAPI) and Drivers settings are now available on the BDE page (Edit|Preferences).

The SQL Tools command has been removed, since you can now work with SQL tables directly through Paradox.

New and improved tools

You can now append imported and exported data to existing files, instead of having to create new ones. You can import and export Paradox and dBASE tables, and generate Problems tables of data that doesn't fit its destination.

You can perform multi-table live queries.

A new notebook object is available for use in forms you design. In addition, you can use new OCX controls, like a slider bar and spin control, and add OCX buttons to a Toolbar.

A new Set Page Break button on the Report Design window Toolbar makes it easier to specify a page break in a report.

An expandable and collapsible object tree in the Object Explorer makes it easier to see how design objects are related in forms and reports.

You can set more preferences, allowing you to customize your use of Paradox to a greater degree.


MAPI mail support

See also

Simplified MAPI mail transfer lets you send messages and files directly from Paradox and through ObjectPAL.

The File|Send Mail command displays the standard message dialog box for your MAPI mail system. You can send and retrieve messages sent through Paradox as usual, without needing to set up and install another mail system.

For more information, see About sending mail.


Online Help enhancements

See also

Online Help enhancements make it easier to find the information you need.

The entire Paradox User's Guide contents are now included in Help.

Paradox Help files (including the online ObjectPAL Reference) are organized into a familiar book-like table of contents that's easier to use. An expanded index and full-text searching offer quick access to online assistance when you need it.

For details, see About the Help system.


Developer environment enhancements

See also

The following enhancements make it easier to write and reuse ObjectPAL code in Paradox:

A new, full-featured ObjectPAL Editor includes color highlighting, incremental search, multiple and group Undo, and many other features. It also supports BRIEF- and Epsilon-style editing.

The new Object Explorer lets you copy and paste methods from one object to another. The new feature combines the former Method Inspector with the object tree, and adds the ability to change properties.

The ObjectPAL Quick Lookup brings virtually all the elements of the language into a tabbed dialog box. It shows you the entire ObjectPAL language in appropriately matched pairs and inserts a language element into your code with the click of a button.

An enhanced Uses statement makes it significantly easier to reuse code.

For details, see the ObjectPAL Reference.


SQL enhancements

See also

The following enhancements to SQL support in Paradox make it easier to access and query tables on remote and local servers:

You can now work with SQL tables directly through the Paradox user interface, replacing SQL Tools.

The SQL Editor now has the same features as the new ObjectPAL Editor, described in Developer environment enhancements.

You can use an SQL query in the data model of a form or report.

You can now do the following in SQL queries:

Use underlying indexes in live queries

Constrain updates to satisfy query conditions

Create calculated fields in live queries

Paradox is ANSI-92 SQL-compatible for remote operations.


Introduction to Paradox

See also

Paradox is a full-featured relational database management system that you can use either as a standalone system on a single computer or as a multiuser system on a network. Paradox lets you control the expanding volumes of data you work with daily. It can manage your data at whatever level you need:

First-time database users want to be able to create a table quickly and easily, enter data in the table, retrieve data, and generate a report. These essential tasks never lose their importance, but as your needs expand, the power of your database system must expand with them.

Paradox's many Experts can help you automate lots of beginning and advanced database tasks.

It is important to be able to break data into small, easily managed tables. It is then important to be able to link tables easily so you can query data across several tables and create multi-table forms and reports. Paradox gives you the power to do this simply and quickly.

The more you work with a system, the more you will want to customize it. At first, you may just want to enhance a report's visual appeal, or create customized forms for ease of data entry. Later, you may want to perform some tasks automatically or tie several tasks together.

Paradox's rich set of design features can give you the exact look you want for your forms and reports. You can draw from the data in many tables, and add summary and calculated fields to make conclusions about the data. You can include charts and crosstabs of your data to inform with visual impact. Then you can add ObjectPAL code to objects on forms to create any function you need. You can even create buttons that you click to execute commands you define.

The ultimate power Paradox gives you is the ability to create your own database applications. You can use ObjectPAL to create a whole database application, define its menus, organize and structure the tables it uses, define the functions you want, and deliver the whole application. Once an application has been delivered, any ObjectPAL code is hidden from the user, so the customization of Paradox is complete.

For information on these and other tasks, click the Index or Contents button of this Help window and browse or search for the subject you are interested in. For more information on relational databases, see What is a relational database?


What is a relational database?

See also

A database is an organized collection of information or data. An address book is a simple example of a database. It organizes data about people into specific categories: names, phone numbers, and addresses.

In a relational database like Paradox, data is organized into tables. Tables contain categories of data, repeated for each item in the table. For example, if you structure an address book as a table, you might put names in one column, addresses in another, phone numbers in another, and so on. For each person in the address book (each item in the table), you enter the same categories of data (name, address, phone number).

Suppose you also have a birthday book that contains the birthdays of all your family and friends, along with their clothing sizes and favorite colors. You could store the information from this book in a table too. Just as you have two books, you'd have two tables.

Flat-file databases

Some database systems look at only one table at a time. These are called flat-file systems. When you use this kind of system, the terms table and database mean the same thing. Using the example of your address book and birthday book, you could see either your friends' names and addresses in one table, or your friends' names, birthdays and preferences in another. You would not be able to combine selected information from both tables.

Relational databases

In a relational database like Paradox, you can extract specific information from each table and assemble it in a meaningful way.

For example, suppose you want to see a list that includes just each friend's name, phone number, and birthday. Using Paradox, you can link the address and birthday tables by identifying a common field ("Name"). Then you are free to combine the kinds of information you want to see from both tables. Paradox keeps the tables separate, but understands there is a relationship between them. In a relational database like Paradox, the term database means all your tables and all their relationships.

For an illustration of a relational database, see Example: a relational database.

For more information on linking tables, see About links.


Example of a relational database

See also

This example shows two tables with a common field and how they can be linked into one table, using that common field as a primary index or key.

A birthday table and a telephone number table, with a common field, Name.

The two tables, shown here linked in the Data Model Designer:

A table created by linking the two tables, shown here in a Form Design window:


About links

See also

You link tables by defining a relationship between a field of one table and a field of another table. What you are really doing is telling Paradox that the values in a field of one table match values in an indexed field of another table. Because the values match, Paradox has a way to relate the data of one table to the data of the other.

One or more of the fields used to define the link must be indexed because Paradox must match values from the fields. Without an index, these values could be anywhere. When an index is used, Paradox has a maintained file that lists the locations of all the records in the table. Paradox can then find and link the records quickly and efficiently.

See Multi-value relationships for more information on creating different types of links.


About keys and indexes

See also

You link tables by defining a relationship from the field of one table to the field of another table. These fields must meet certain requirements. The most important requirement is that one or both of these fields have indexes. An index is a file that Paradox uses to keep track of the location of records in a table. This makes it easy for Paradox to

Maintain a sorted order of a table

Group like values together

Both Paradox and dBASE let you create indexes to specify the order in which records are accessed. However, the way indexes work is different for Paradox and dBASE tables.

In Paradox, primary indexes are sometimes called keys.

For more information, see About keys and indexes in tables.


Keys

See also

A Paradox table can have many indexes defined, but you usually identify one of them as the primary index. In Paradox, the primary index is called the key. A table that has a key defined is said to be a keyed table.

When you create a key, Paradox enforces rules about the data that can be contained in the keyed field(s).

Each value in the field must be unique. This ensures you do not have duplicate records in the table.

Note: You can leave only one record's key blank. Paradox considers all subsequent blanks to be duplicates and does not accept records containing them.

The key establishes the default sort order for the table. Paradox sorts the table's records based on the values in the field(s) you define as the table's key.

If you define a key on a table that already contains data, Paradox moves the records of the table into the correct sort order. The physical location of records is determined by sorting the values of the keyed field(s) in an ascending order (A to Z and 0 to 9). New records you add are moved to their correct position in the sorted table.

For example, if you create a key on the Last Name field of the sample Contacts table, you are telling Paradox to organize the table by the values in the Last Name field, as shown in the following figure.

If you prefer to organize the table by first names, you can make First Name the key. Paradox then displays the records according to the value in that field, as shown in the following figure.

If you use more than one field in a key, the index is called a composite key.

For more information, see About keys and indexes in tables.


Composite keys

See also

You can create a key on a single field or group of fields. When you specify a group of fields as a table's key, the group is called a composite key.

Paradox allows duplicate values in individual fields of a composite key, as long as values are not duplicated across all fields of the key. The fields of the key, taken as a whole, must identify each record as unique.

For example, the Contacts table may have several entries with the last name Lombardi. Likewise, it may have many entries with the first name Ron. Neither of these fields (Last Name or First Name) is enough to identify a record as unique. But the combination of them may be. (There may be only one Ron Lombardi.) So the key for the Contacts table could be a composite of Last Name and First Name.

Of course, even this may not be enough. It is entirely possible to have duplicate first and last names in the table (like several entries for John Smith). It may be a good idea to include another field of the table in the composite key. You must always include enough fields in a composite key to ensure the uniqueness of each record of the table. If you cannot reasonably expect a composite key to handle all cases of duplicate data, it is a good idea to define an identification field that identifies one and only one record of the table. Customer No in the sample Customer table is such an identification field.

When you create a composite key, Paradox creates a primary composite index, which organizes the records by the first field of the key (according to the table's structure), then the next field, and so on. The following figure shows the Contacts table with a composite key made up of the Last Name and First Name fields.

For more information, see About keys and indexes in tables.


Indexes

See also

When you create an index, Paradox creates one or more files that contain the indexed field's values and their locations. Paradox refers to the index file when locating and displaying the records in a able. This is true of both primary indexes (keys) and secondary indexes.

For details, see About keys and indexes in tables and About secondary indexes.


About the MAST company example

See also

By default, Paradox includes a set of sample files, stored in the SAMPLE directory, under the main Paradox directory. These files manage information for the fictitious Marine Adventures & Sunken Treasures (MAST) company. MAST sells diving equipment and arranges diving expeditions. Like most companies, MAST tracks information about customers, orders, inventory stock, and vendors. The company also tracks information about marine life.

MAST's customers are dive shops around the world. MAST sells supplies to these shops. This section of topics describes how MAST grew as a company and how Paradox filled MAST's information management needs at each stage of development. The purpose of this section is to give you an overview of the kinds of solutions Paradox can provide.

It describes six stages of the MAST company's growth:

Stage one: a single table

Stage two: the need for a key

Stage three: organizing smaller tables

Stage four: creating multi-table documents

Stage five: creating and saving queries

Stage six: creating a report from a query


Stage one: a single table

See also

Bill Budd founded MAST knowing that how he managed company information could mean the difference between success and failure. He needed a powerful database program for his personal computer, but did not want to invest a lot of time and money in learning a complex product. So, he bought Paradox, and found all the power he needed in an easy-to-learn Windows application.

The first table Bill created was all he thought he needed. He listed all the information he wanted to track, and created a table with a structure that looked like this:

Field name	Field type	Field size	Explanation

Customer	A	30	Name of dive shop

Address	A	50	Customer's address

Phone	A	15	Customer's phone number

Item	A	50	Item ordered

Qty	N	Quantity ordered

Price	$	Price of item

Date	D	Date of order

Delivery	D	Promised delivery date

Terms	A	6	Terms of payment

Part No	A	15	Vendor's part number

List Price	$	Vendor's price

Vendor	A	30	Vendor's company name

V Address	A	50	Vendor's address

V Phone	A	15	Vendor's phone number

Bill understood that different types of data should be defined as different field types, and he kept field sizes to a minimum to conserve disk space.

When a customer placed an order, Bill filled in the fields of the table, took the item from stock, shipped it, and ordered a replacement from the vendor. It all seemed to work pretty well.

At the end of each month, Bill performed a query on the table, and got an Answer table listing the orders placed during the month. He then created a report based on Answer to bill each customer.

But it soon became apparent that there were some problems with this system, and the MAST company moved to stage two.


Stage two: the need for a key

See also

Bill started getting phone calls from angry customers. A dive shop in Florida had received three separate bills for the three items they had placed on the same order. Another shop got a bill late because it had been sent to the wrong address. A customer in Hawaii got billed twice for the same order.

When Bill began to get regular complaints, he realized it was due to inefficient information management. So, he created a key for the table.

A key ensures that each record of the table is unique, so customers could never be billed twice for the same item. Since no one field of his table was unique, Bill created a composite key. A composite key combines the values in two or more fields for the key's identification.

Bill decided that no two records would ever have the same combination of Customer, Item, and Date values. The combination of these values (the composite key) would have to be unique for each record. This made sense. How many times would a customer ever place more than one order for the same thing on the same day?

Bill also created a smarter report. He created a group band that grouped the records according to Customer. Using this design, even if a customer placed more than one order during the month, they received only one bill, listing each item.

So two of the problems with MAST's information management system were solved [image] a customer would never receive two bills for the same order, or separate bills for individual items on the same order.

To solve the problem of an incorrect address, Bill needed a way to make sure the values he entered were accurate every time. It was time for MAST to move to stage three.


Stage three: organizing smaller tables

See also

Bill realized that each time he entered information in the table, he risked making a mistake. He was entering the same information over and over again. A customer who placed 20 orders had been entered in the table 20 times. That meant 20 chances for error in the customer's name, address, or phone number. After reading the Paradox User's Guide, he realized he could work with his data more easily and maintain its integrity if he divided the original table into several smaller ones. When necessary, he could link them together.

This time Bill did some planning before he structured his tables. As he planned his tables, he realized that

Each table should contain an obvious field to use as a key.

To link tables, he'd need to duplicate some fields (and data) between his tables, but he should duplicate only the fields (and data) needed to link the tables.

Fields that are duplicated between tables should use referential integrity to make sure their values match in all tables.

A table must have a key or secondary index defined on the linking field before it can be linked to another table.

When finished planning, Bill created six tables to manage the data of his original table. These tables are some of the sample files included with Paradox:

The Customer table

The Orders table

The Lineitem table

The Stock table

The Vendors table

The Contacts table

As Bill completed these tables, the MAST company continued to grow and moved into stage four.


The Customer table

See also

When planning the Customer table, Bill split the information about a customer's address into separate fields. This let him perform queries about specific states or countries. Bill learned that it is easier to work with small pieces of information separately than with large pieces of information. The Customer table looked like this:

Field name	Type	Size	Linking	Explanation

Customer No	N	K*	Unique customer number

Name	A	30	Name of dive shop

Street	A	30	Street address

City	A	15	Customer's city

State/Prov	A	20	State or province

Zip/Postal Code	A	10	Zip code or postal route

Country	A	20	Customer's country

Phone	A	15	Customer's phone number

First Contact	D	Date of first contact with customer

*	K = Key

Next, Bill completed the Orders table.


The Orders table

See also

When he created the Orders table, Bill knew he would need to link it to the Customer table. He had to associate an order with a customer somehow. So, he duplicated the key from Customer (Customer No) in Orders, then defined a secondary index on it. This meant the two tables could be sorted in the same order, and that would allow them to be linked.

When he did this, Bill realized that the value he entered as a Customer No in Orders had to match a record in Customer; otherwise, the new Orders record was meaningless [image] it would have no customer associated with it. So, he defined referential integrity on the Customer No field; this made Paradox check to find a valid customer before accepting a new order.

Bill also wanted to keep his order information separate from the item(s) being ordered. So, he included only information about the order itself in the Orders table. It looked like this:

Field name	Type	Size	Linking	Explanation

Order No	N	K*	Unique order number

Customer No	N	S**, R***	Secondary index and referential integrity to Customer No in Customer

Sale Date	D	Date of order

Ship Date	D	Date to be shipped

Ship VIA	A	7	Cargo carrier used

Total Invoice	$	Cost of total order

Amount Paid	$	Amount paid so far

Balance Due	$	Due after partial payment

Terms	A	6	Terms of payment

Payment Method	A	7	Cash, charge, etc.

Month	A	3	Month order was placed

*	K = Key

**	S = Secondary index

***	R = Referential integrity

Next, Bill completed the Lineitem Table.


The Lineitem table

See also

Bill wanted his customers to be able to order as many items at a time as they wanted. To do this, he created a separate table, called Lineitem, for the items being ordered.

The key of Lineitem is a composite of the Order No and Stock No fields; these fields also have secondary indexes, allowing Bill to sort the data by their values if he wanted to. This lets Lineitem link to Orders (using Order No) and to Stock (using Stock No). To protect the integrity of the Lineitem information, Bill defined referential integrity to the tables he planned to link to. Lineitem looked like this:

Field name	Type	Size	Linking	Explanation

Order No	N	C*, S**, R***	Unique order number

Stock No	N	C, S, R	Unique stock ID number

Selling Price	$	Price charged to customer

Qty	N	Number of items ordered

Total	$	Total of Selling Price * Qty

*	C = Composite key. In this case, the composite key is the combination of Order No. and Stock No.

**	S = Secondary index

***	R= Referential integrity

Next, Bill completed the Stock Table.


The Stock table

See also

Bill also wanted a clear understanding of his stock on hand, so he could order products more efficiently. To do this, he created Stock so it could be linked to Lineitem and Vendors.

Stock No is the key for this table. Because Stock No is a secondary index in Lineitem, the two tables can be linked. Vendor No is the primary key of Vendors, so it had to be a secondary index in Stock, and needed referential integrity to check against values in Vendor No in Vendors. The Stock table looked like this:

Field name	Type	Size	Linking	Explanation

Stock No	N	K*	Unique stock number

Vendor No	N	S**, R***	Secondary index and referential integrity to Vendor No in Vendors

Equipment Class	A	30	Category of stock

Model	A	20	Vendor's model name

Part No	A	15	Vendor's part number

Description	A	30	Quick description of item

Catalog Description	F	10	Full catalog description of item

Qty	N	Quantity in stock

List Price	$	Vendor's list price

*	K = Key

**	S = Secondary index

***	R = Referential integrity

Next, Bill completed the Vendors Table.


The Vendors table

See also

Next, Bill created a table for his vendors. Here, as in Customer, he remembered to divide addresses across fields. Vendors looked like this:

Field name	Type	Size	Linking	Explanation

Vendor No	N	K*	Unique vendor ID number

Vendor Name	A	30	Company name

Street	A	30	Street address

City	A	20	Vendor's city

State/Prov	A	20	State or province

Country	A	15	Vendor's country

Zip/Postal Rt	A	10	Zip code or postal route

Phone	A	15	Phone number

FAX	A	15	FAX number

Preferred	L	Indicate preferred status

*	K = Key

Using this system, Bill knew that a customer's information was entered only once, and then referred to by other tables. Likewise, order, item, stock, and vendor information was entered only once. The chance for errors was substantially reduced.

When all the tables were created, Bill used INSERT queries to move his existing data into the new structures. He knew he would probably never have to link all the tables, only a few at a time, but he wanted to see what his company's data model looked like with all the changes he had made. He quickly linked the tables, and saw the data model shown in the following figure.

Finally, Bill completed the Contacts Table.


The Contacts table

See also

Finally, Bill needed a way to keep track of who to reach at each customer site. So, he created a Contacts table and filled it with the name and telephone number of the person he talked to the most often at each site. Contacts looked like this:

Field name	Type	Size	Linking	Explanation

Last Name	A	10	Contact's last name

First Name	A	20	Contact's first name

Company	A	30	Contact's company name

Phone	A	15	Contact's direct phone

With Contacts, Bill was able to keep track of information that did not need to fit into his data model. He kept its information separate and was able to protect the privacy of his contacts and their direct phone numbers.

The MAST company continued to grow and moved into stage four.


Stage four: creating multi-table documents

See also

MAST was really taking off, and Paradox supported its growing information management needs. Bill needed some powerful data entry forms and reports to maximize his data model.

A data entry form

To enter new orders, Bill created a form linking Customer, Orders, and Lineitem. Paradox used the keys and secondary indexes to figure out how to link the tables. The form Bill created is shown in that following figure.

Bill let Paradox calculate the value of Total Invoice in Orders from the Selling Price and Qty fields of Lineitem. He right-clicked the Total Invoice field, defined it as a calculated field, and set up the calculation Lineitem.Selling Price * Lineitem.Qty. From then on, Paradox totaled the invoice for him.

A multi-table report

Besides being able to enter orders more efficiently, Bill found he could communicate more effectively with his customers. For example, he created a multi-table report to show his customers their buying practices. The report linked Customer to Orders and presented information from both tables in a standard letter format.

At this point, the MAST company moved into stage five.


Stage five: creating and saving queries

See also

As MAST grew and evolved, Bill needed to know more about the information in his tables. He found he was constantly using queries to ask questions about his data. For example,

When he considered opening a new branch, he asked questions like how many customers do we have in each state? Which state generates the most revenue for us? Where are our vendors most centrally located? Is there a correlation between vendor location and customer location?

When Bill considered changing his domestic long-distance telephone service, he asked questions like how many customers do we have in this state? How many in this time zone? How many in this country? What percentage of our phone calls are international?

Each month Bill performed the same queries, to see how sales compared to the previous month, the previous quarter, and the previous year. He could then calculate forecasts for the coming months. He learned early that he could save a query and reuse it month after month.

And, the MAST company moved into stage six.


Stage six: creating a report from a query

See also

Bill had always run a query and then created a report based on the Answer table to print his results. One day, he noticed he could create a report based on a saved query. This was interesting. He opened a new report, chose Queries from File Type drop-down list of the Data Model dialog box, chose the query he ran each month, designed the report, and then saved it. Each time Bill printed his new report, Paradox automatically ran the query and printed the results. Bill found he could print the latest information almost effortlessly; Paradox was now doing even more work for him.


About Paradox objects

See also

In Paradox, the database components that store, display, retrieve, and present data are called objects. The main objects you work with in Paradox are tables, forms, queries, and reports. You might also work with ObjectPAL scripts and libraries, data models, or SQL files.

Paradox uses objects to store, display, and present information.

Objects include

Files on a disk

Tables, forms, reports, queries, data models, ObjectPAL scripts and libraries, and SQL files.

Design objects are objects you create with Toolbar tools and place in forms and reports in a design window. Design objects include

Text objects

Boxes, lines, and ellipses

Fields and tables

Crosstabs and charts

Multi-record objects

Buttons

Graphics

OLE objects

Document pages

Paradox uses object icons to represent objects.

Each object has a different extension. For a list, see File extensions for Paradox objects.

Paradox objects and design objects have attributes or characteristics called properties. For information about changing property settings, see To change an object's properties.


Tables

See also

Paradox stores data in tables. Tables have rows and columns. Each row contains information about a particular item (like a person, place, or thing). This is called a record. Each column contains one category of the data that makes up a record. This is called a field.

The simple table below is named Phone.db. It has two fields [image] Name and Phone Number [image] and three records [image] Anne, Bob, and Joe.


Temporary tables

See also

Certain Paradox operations create temporary tables that last only until you change your private directory or end the Paradox session.

Paradox stores all temporary tables in your private directory (see About directories and aliases for more information). You can edit and query a temporary table as you would any other table. If you want to save one of these tables, you must rename it (see About renaming objects).

Caution:	You should not use any reserved temporary table name as the name of an object you create. If you do use a temporary table name, Paradox deletes your object when you change your private directory or end the Paradox session.

The following table lists the temporary tables Paradox creates when performing certain operations. Paradox places these tables in the private directory.

Name	Created during	Contains
Answer	Query	Results from a query
Changed	CHANGETO query or Add operation (update)	Unchanged copy of changed records
Crosstab	Running a crosstab object in a form	Results of a crosstab
Deleted	DELETE query	Deleted records
Errorchg	CHANGETO query	Records that could not be changed
Errordel	DELETE query	Records that could not be deleted
Errorins	INSERT query	Records that could not be inserted
Inserted	INSERT query	Inserted records
Keyviol*	Restructure or Add operations (append)	Records with duplicate key values and records that violate referential integrity rules
Locks	Tools|Display Locks	All active locks on a table
Pal$src	View|Document Source	List of source code, objects, and methods in your form
Problems*	Restructure or Import operations	Unconverted records
*	If you perform more than one operation that results in this temporary table within one session, Paradox creates additional temporary tables with the same name and numbers them. For example, Keyviol1, Keyviol2, and so on.


Forms

See also

Sometimes it's more convenient to work with the data from your tables one record at a time, rather than with an entire table full of data. Forms let you see as much (or as little) of your data as you want in the format you prefer. The following figure shows a form created by Paradox that displays only one record at a time.

When you view data in a form, you see the same data as in the table, but Paradox arranges it differently. If you edit data in the form, Paradox updates the data in the table.

You can use Paradox's design tools to create custom form layouts. You can design forms that display several records from a table or even records from several tables at the same time. For more information on forms, see About forms and reports.


Reports

See also

Many people need to see their data in printed reports. Paradox reports are flexible and powerful. You can sort and group records, calculate fields and totals, and arrange your data in an almost infinite variety of formats, including mailing labels.

Reports, like forms, take advantage of Paradox's design features and tools. Using these tools, you can customize your reports to look just the way you want. And because it's so easy to link tables together, you can combine data from several tables into one report that communicates exactly what you want.

For more information on reports, see About forms and reports.

To view the following sample report, choose File|Open|Report, then look in the SAMPLE directory under the main Paradox directory and choose Customer.rsl.


Queries

See also

A Paradox query is a question you ask about the data in your tables. You can use queries to

Find or select data from a table

Combine data from more than one table

Perform calculations on the data in a table

Paradox gives you a simple, yet powerful, way to ask questions about a table's data. In the Paradox Query window, you choose which tables you want to ask questions about. Then you enter an example of the data you want, and Paradox gives you an answer based on your example. This is called query by example (QBE).

Paradox provides powerful live query views that let you define and run a query that generates a live editable view of the data you described in the query. When you edit the live query view, you actually change the data in the table you queried. Live query views give you a simple way to limit your view of data to just what you need to work with.

For more information on queries, see About queries.


Scripts

See also

Scripts are pieces of ObjectPAL code that you can create to perform operations automatically. (ObjectPAL is the Paradox application language.) ObjectPAL code is usually attached to objects in forms, but you can also create standalone scripts that perform operations you specify independently of a form. For example, you can write a script to open a particular table and perform a calculation on one or more of its fields. Paradox runs this type of script directly from the Desktop, not from triggering an event on an object in a form. See your ObjectPAL documentation and Help for information on writing scripts.


Libraries

See also

A library is an object you can use to store commonly used ObjectPAL code. This lets you easily share code among forms, scripts, and other libraries. For more information, refer to your ObjectPAL documentation and Help.


SQL Files

See also

An SQL file is an object that contains code you write in SQL (Structured Query Language). For more information about using SQL with Paradox and about using Paradox to work with remote data, see About SQL.

You can use the SQL Editor to write SQL code to perform operations on remote data using Borland SQL Links. You can also write query scripts using SQL that you can run on local Paradox or dBASE data. For more information about using the SQL Editor, see About the SQL Editor.


File extensions for Paradox objects

See also

The following table lists the file extensions used by Paradox.

Extension	Type of object

.CFG 	Configuration file

.DB 	Paradox table

.DBF 	dBASE table

.DBT 	Memos for a dBASE table

.DM 	Saved data model

.FAM 	Paradox's listing of related files (like a table's .TV file)

.FDL 	Delivered form

.FP	Form or report printer style sheet

.FSL 	Saved form

.FT	Form or report screen style sheet

.FTL 	Temporary file created then deleted when you save a form

.INI 	Configuration file

.LCK	Lock file

.LDL 	Delivered library

.LSL 	Saved library

.LTL 	Temporary file created then deleted when you save a library

.MB 	Memos for a Paradox table

.MDX 	Maintained index of a dBASE table

.NDX 	Non-maintained index of a dBASE table

.PX 	Primary index of a Paradox table

.QBE 	Saved query

.RDL 	Delivered report

.RSL 	Saved report

.RTL 	Temporary file created then deleted when you save a report

.SDL 	Delivered script

.SQL	Saved SQL file

.SSL 	Saved script

.STL 	Temporary file created then deleted when you save a script

.TV 	Table view settings for a Paradox table

.TVF 	Table view settings for a dBASE table

.TVS	Table view setting for SQL data

.VAL 	Validity checks and referential integrity for a Paradox table

.Xnn 	Secondary single-field index for a Paradox table, numbered

.Ynn 	Secondary single-field index for a Paradox table, numbered

.XGn 	Composite secondary index for a Paradox table

.YGn 	Composite secondary index for a Paradox table


About the Paradox Desktop

See also

The Desktop is the first thing you see when you start Paradox. It is the primary Paradox workspace. From the Desktop, you can

Manage files

Define defaults and preferences

Control all Paradox objects

Set object properties

Many of the preferences you define remain in effect for a full Paradox session—the time from when you open Paradox to when you exit. Paradox lets you save other preferences permanently.

Each type of major object in Paradox (like tables, queries, or reports) appears in its own type of window. For example, forms always appear in a Form window, and queries always appear in a Query window. For a list of Paradox object windows, see Desktop and child windows.


Desktop and child windows

See also

The Desktop is the parent window in Paradox. All other windows in Paradox are child windows, meaning that they have some degree of independence, but cannot exist without the Desktop.

Each type of object in Paradox (like tables, queries, or reports) appears in its own type of window. For example, forms appear in a Form window, and queries appear in a Query window.

Each type of window has some specialized commands that apply only to that type. All commands and features of the Desktop remain available in child windows.

The following are the object windows available on the Paradox Desktop:

Form window

Form Design window

Library window

Query window

Report window

Report Design window

SQL Editor

Table window

Project Viewer


Object icons

See also

When windows are minimized, they appear on the Desktop as icons. These are the same icons that appear in the Project Viewer to represent objects such as tables, forms, reports, or queries, or references to objects.

Each type of object has its own icon. The name of the object represented by the icon appears below it.

The following table shows icons for each child window in Paradox. You can click an icon or window name in the table to view a related Help topic.

	Form window		Library window
	Query window		Report window
	Script window		Table window
	Project Viewer


About Toolbars

See also

Below the menu is a collection of buttons and tools called the Toolbar. The buttons available on the Toolbar depend on the Toolbar type and the kind of object active on the Desktop. For example, if a table is active, the Standard Toolbar buttons will be those that help you perform tasks with a table. Many Toolbar buttons provide quick equivalents to menu commands or keystrokes. Others provide handy ways for you to navigate through your data.

From within Paradox, to get quick help on what a tool or button does, point to it [image] Paradox displays a description of the button next to it and in the status bar.

Paradox Toolbars can be moved away from their standard position near the top of the Desktop window. You can dock them at either side or the bottom of the Desktop, or let them float undocked. For instructions, see To move a Toolbar.

You can display more than one Toolbar on the Desktop. For instructions, see To display additional Toolbars.

The Standard Toolbar

This is the default Toolbar which usually appears immediately below the menus. This Toolbar displays buttons and tools which are shortcuts to menu commands for the current active window. As you change the focus from one window to another, the Toolbar changes to provide buttons that match the window.

The Global Toolbar

This Toolbar displays buttons and tools which are shortcuts to commonly-used menu commands that are not window-specific such as saving a file, opening a file, and so on. Therefore, its buttons do not change when the active window changes. This means that some buttons on this Toolbar will not have any effect if the currently selected window does not support that action. For example, if you are viewing data in a Form window and you click the Data Model button from the Global Toolbar, the Data Model dialog box will not appear because you need to be in a Form Design window to edit or view the data model of your document.

This Toolbar does not appear by default. To display the Global Toolbar, see To display additional Toolbars.

The Text Formatting Toolbar

This Toolbar displays buttons and tools which are shortcuts to commonly-used menu commands which deal with text. Therefore, its buttons do not change when the active window changes. This means that some buttons on this Toolbar will not have any effect if the currently selected object does not support that action. For example, if you are designing a query and select some text, clicking the Bold tool will have no effect.

This Toolbar does not appear by default.

The Align Toolbar

This Toolbar is displayed only when in a Form or Report Design window and provides shortcuts to aligning multiple objects that are selected. This Toolbar does not appear by default.

The Object Toolbar

This Toolbar is displays buttons for various tools used when designing a form. It is displayed only when in a Form Design window and has multiple tabbed pages. The first page contains the Form tools such as the Table Frame tool, Box tool, and so on. The second page contains OLE Controls you have added to the Toolbar. (OLE controls are purchased separately from third-party vendors.) For instructions on how to add your OLE controls to the Object Toolbar, see To add a control to the Toolbar. The native Windows controls that come with Paradox also appear on this Toolbar. These include a List Box, Combo Box, Spin Box, Progress Bar and Track Bar controls. To find out more about native Windows controls, see About OLE and native Windows controls.

You may also see additional pages on this Toolbar if you have added a custom Toolbar. For instructions on how to do this, see To add a page to the Object Toolbar.

The Object Toolbar does not appear by default.


To move and dock Toolbars

See also

You can move a Toolbar from the top of the Desktop window and dock it at either side of the window or the bottom. If you prefer, you can let the Toolbar float, without docking it. You can then drag the top of the floating Toolbar to move it where you want it.

To move a Toolbar,

Click within it (but not on a button) and drag it to a new location.

To dock a Toolbar,

Drag it toward an edge of the Desktop window. Move it toward the edge until a dashed outline appears. Release the mouse button when the outline touches the edge.

Note:	You can display more than one Toolbar. For instructions, see To display additional Toolbars.


To display additional Toolbars

See also

You can choose to display more than one Toolbar, or to display another Toolbar instead of the one that appears by default.

To change the Toolbar display,

1.	Choose View|Toolbars to display the Toolbars dialog box page.

2.	Choose one or more Toolbars to display:

Standard: The default Toolbar for each child window in the Paradox Desktop.

Global: A Toolbar with buttons to display each Paradox object: tables, forms, reports, queries, SQL files, scripts, libraries, data models, the Object Explorer, and the Project Viewer.

Text Formatting: A Toolbar with tools to help align and format text in memo fields and text objects.

Object: A Toolbar with object tools and OLE controls. By default, its tools appear as a toggle on the right portion of the Standard Toolbar in the Form Design window.

Align: A Toolbar with object alignment tools for use in the Form Design and Report Design window.

When you close Paradox, these settings are saved for the next session.


About the Desktop status bar

See also

The Desktop status bar displays information about Paradox and actions you perform in Paradox. The following figure shows what different areas of the status bar typically display.


About the Project Viewer

See also

The Project Viewer provides a quick way for you to view and work with the contents of the working directory and specified files outside the working directory.

To open the Project Viewer, choose Tools|Project Viewer or click the Project Viewer Toolbar button:

When you open the Project Viewer, you see a list of files in the working directory.

From the Project Viewer, you can right-click file names to view associated menus, or double-click to perform the default action (the first item on the menu), which is usually View.

Other things you can do from the Project Viewer

Right-click an icon in the left panel to access the New and Open commands.

Change your working directory.

Specify additional objects or files you want to see listed [image] files that are not in your working or private directories. These are called references.

For more information about using the Project Viewer, see To use the Project Viewer.

If you want the Project Viewer to appear each time you open Paradox, you can change a setting in the Preferences dialog box. For details, see To set Project Viewer preferences.


To use the Project Viewer

See also

To open the Project Viewer, choose Tools|Project Viewer or click the Project Viewer Toolbar button:

The Project Viewer lists objects in your working and private directories. It gives you easy access to these objects.

1.	Click an icon on the left panel to choose the type of object you want to see.

You can right-click an icon to create or open an object of that type.

2.	Right-click an object name on the right to see its menu, and then choose a command. (Double-clicking an object executes the first command on the menu, usually View).

Note:	If you are viewing all files, you will see that some files do not have menus. This is because they are automatically created along with a Paradox object, and they can be modified only when you modify the object. (For example, .PX files, .TV files, and .MB files are associated with Paradox tables.)

You can change your working directory from the Project Viewer. See About directories and aliases for more information about working and private directories.

You can also specify additional objects or files you want to see listed [image] files that are not in your working or private directories. These are called references.


To set Project Viewer preferences

See also

You can choose whether to display the Project Viewer each time you start Paradox.

To set this Project Viewer preference,

1.	Choose Edit|Preferences.

2.	Click the General tab, the default.

3.	Choose Open Project Viewer On Startup in the Project Viewer Settings panel.


To display a menu for Project Viewer items

See also

You can work with an object from within the Project Viewer.

To display a menu of commands for Project Viewer items,

Right-click an object name on the right panel of the Project Viewer.

For example, if you right-click a table name you can choose to view, copy, restructure, sort, or perform a number of other operations on the table. (These are many of the same options you find in the Tools|Utilities menu.)

The top menu choice is the object's default action. You can double-click an object to perform its default action. For most objects, the default action is View. When you double-click one of these objects, Paradox opens it. This is true of a table object, for example: when you double-click a table name, Paradox opens the table in its Table window, because View is the table's top menu choice.


To change your working directory from the Project Viewer

See also

Your Paradox working directory is the default data directory Paradox uses to open and save files.

To change your working directory from the Project Viewer, either

In the Working Directory text box, type the path to another directory.

Click the arrow next to the text box to select from the last 10 directories you have used.

Click the folder icon to browse for a directory.

For other ways to change your working directory, see To change your working directory.


About adding and removing Project Viewer items

See also

When you open the Project Viewer for the first time, it displays the contents of the working directory. You can add items to the Project Viewer, but this does not move them into the working directory. Instead, Paradox creates a reference to the item. After the reference is added, you'll see the item (including its path or alias) in the Project Viewer. You can right-click references just as you can items from the working directory.

Note:	References show up in dialog boxes too. For example, if you choose File|Open|Table, any references you added appear in the list of files in the Open Table dialog box.

References you add to the Project Viewer apply only to the working directory, so you can have different references for each directory you use.

For how-to information, see To add references to the Project Viewer and To remove references from the Project Viewer.

Choose View|Show Only References if you want to display only those objects that are references in the Project Viewer.


To add references

See also

To add a reference to the Project Viewer,

1.	Choose Edit|Add Reference or click the Add Reference Toolbar button:

The Select File dialog box opens.

2.	Choose the file you want to add to the Project Viewer:

Tip:	You can add several references at once. In the Select File dialog box, Ctrl+click or Shift+click all the files you want. Paradox highlights the file names as you click them. Choose Open to add them all to the Project Viewer.

You can follow these steps to add non-Paradox items to the Project Viewer. If the item's file extension is associated with a program, you can double-click the non-Paradox object to launch it. Refer to your Windows documentation for information on associating file extensions with programs.


To remove references

See also

To remove a reference from the Project Viewer,

1.	Choose Edit|Remove Reference.

Paradox opens the Remove Item From Folder dialog box.

2.	Choose the reference(s) you want to remove from the Project Viewer.

Removing a reference from the Project Viewer does not delete it. The file still exists and will still appear in list boxes.


About Paradox preferences

See also

In Paradox, preferences are global settings that affect the overall performance of Paradox and the default settings or values that appear for many of its operations.

Use Edit|Preferences to change system and Desktop preferences.

Use Edit|Developer Preferences to customize the way you work in the ObjectPAL development environment (which includes the Editor, the Object Explorer, the ObjectPAL Quick Lookup, and the Form Design window).

In addition to these preference settings, Paradox offers many property settings to control the appearance of individual objects. For more information, see To change an object's properties.


To set Desktop and system preferences

See also

Use Edit|Preferences to view or change information about your system and environment.

The Preferences dialog box contains the following pages. For details on the contents of each, click its name:

General: Paradox title bar, backgroup bitmap, save and restore Desktop state, default system font, open Project Viewer on startup

Forms/Report: New forms and reports defaults, on-screen size, mode when opening, default style sheets

Designer: Selection, frame, flicker-free draw, move/resize, grid, ruler

Query: Table update handling, remote table queries, auxiliary table options, default checkmark, SQL answer constraints

Toolbars: Which Toolbars to show

Experts: Run experts when creating objects, always run Startup Expert

Advanced: Warning prompts, ANSI character entry, expandable directory branches, scroll bars in form windows

Database: Private directory; blank fields as zeros; network current user, refresh rate, retry period

BDE: Network control file directory, language and database drivers, buffer size, local share

SQL Editor preferences are set in the Editor page of the Developer Preferences dialog box.


To set ObjectPAL preferences

See also

Use Edit|Developer Preferences to customize the way you work in the ObjectPAL development environment (which includes the Editor, the Object Explorer, the ObjectPAL Quick Lookup, and the Form Design window).

The Developer Preferences dialog box contains the following pages:

General: ObjectPAL level, debug environment, Debugger settings, show developer menus

Explorer: Appearance, sorting, and colors of the Object Explorer

Editor: Default formatting, tabs, indents, and undo

Display: Keystroke mapping, prompts, cursor shape, sidebars, custom size, status bar hints, font

Colors: Default script elements in the Editor, default foreground and background colors, text attributes

If you check Show Developer Menus in the General page of the Developer Preferences dialog box, you'll see extra commands on some menus in the Form Design window. These are commands that otherwise appear only in the Integrated Development Environment (IDE). Having them available in the Form Design window can be handy for ObjectPAL developers.

You can set the ObjectPAL level that you're comfortable with in the General page. Choose Beginner to limit the range of ObjectPAL possibilities you view. This helps you understand more quickly how ObjectPAL works. When you're comfortable working in ObjectPAL, choose Advanced to see the full set of ObjectPAL features.

For more information about other options available in the Developer Preferences dialog box, see Help for each dialog box page listed above.


To exit Paradox

See also

You can exit from Paradox in a variety of ways:

Choose File|Exit

Choose Close from the window Control menu

Double-click the window Close box

Press Alt+F4


About directories and aliases

See also

Working directory

A Paradox working directory is the directory Paradox uses by default to open and save files. The working directory controls which files are displayed in dialog boxes during open and save operations.

When you install Paradox on a local drive (not a network drive), Paradox creates a directory named WORKING below the system directory. This is your default working directory. You can change it later, if you want. (See To change your working directory for details.)

You'll probably find it convenient to you use working directories to organize your files. Then, when you want to use the files in a specific directory, you can make it your working directory. For example, if you're working with tables, forms, reports, and queries in a directory named C:\DATAFILES\BUDGET, you could change your working directory to C:\DATAFILES\BUDGET.

Private directory

In a multiuser environment, you need a place to put your temporary objects. You need to store temporary tables, such as Answer or Inserted, in a nonshared directory, or other users could overwrite them. All Paradox users need their own private directory when they run Paradox.

Your default private directory is PRIVATE, created below the main Paradox directory on your hard drive, or on your network home directory if you have no hard drive. You can change to another private directory if you want. See To specifiy a private directory for details.

Aliases

An alias is a name you can assign as a shortcut to a directory. By default, your working directory has the alias :WORK: and your private directory has the alias :PRIV:.

There are two kinds of aliases:

public aliases

project aliases.

See About aliases for more information.

Note:	When you change any of these directory or alias settings, Paradox automatically saves the changes.


To change your working directory

See also

Your Paradox working directory is the default data directory Paradox uses to open and save files.

1.	Choose File|Working Directory. Paradox opens the Set Working Directory dialog box.

2.	Enter the location (full path) of the directory you want in the Working Directory text box, or choose Browse to open the Directory Browser. You can choose any directory, path, or alias from the Directory Browser. The directory you choose appears in the Working Directory text box. You can also choose an alias from the Aliases drop-down list.

3.	Choose OK.

Tip:	You can also change your working directory from the Project Viewer. For instructions, see To change your working directory from the Project Viewer.

Note:	Paradox assigns your working directory the temporary alias :WORK: (even if it already has another alias name).

If you create a project alias, Paradox creates a file called PDOXWORK.CFG and stores it in your working directory. This file contains all project aliases (public aliases are stored in IDAPI32.CFG).


To specify a private directory

See also

To specify your private directory,

1.	Choose Edit|Preferences, then click the Database page tab.

2.	Specify a private directory in the Private Directory text box. You can type it in or choose Browse to display the Directory Browser.

Paradox assigns the :PRIV: alias to your private directory.

If you do not specify a private directory, Paradox uses the PRIVATE directory, which is installed below your system directory when you install Paradox on a local (non-network) drive. If you have no local hard disk, the network home directory on the file server should be used as the private directory.

Note:	When you change private directories, Paradox releases any locks you have placed on any tables and deletes all your temporary tables. Make sure you do not need any of your temporary tables before you change private directories.


About aliases

See also

An alias is a name you can assign as a shortcut to a directory.

At any time, you can use the Alias Manager dialog box to:

Create a new alias

Modify an existing alias

Remove an alias

Example

Suppose you have a collection of tables, text files, scripts, forms, reports, and graphics all in one directory where you are working on an ObjectPAL application. This collection of files is located in a directory called C:\DATAFILES\PROJECTS\NEW\PLANNER. Using the Alias Manager dialog box, you can give that full path a name [image] an alias. For example, if you create an alias for this directory called :PLAN:, you can then simply use :PLAN: instead of the full directory path when you need files from C:\DATAFILES\PROJECTS\NEW\PLANNER.

Advantages

Aliases give you several advantages:

You avoid typing long path names.

File references within forms, reports, and similar Paradox objects can use alias names rather than full paths. This makes your applications portable. You can move the entire application without recoding all references (just change the alias definition). Used this way, an alias is a variable for a directory path.

Using the alias, you can connect to or disconnect from your remote database server.

You can change the definition of an alias at any time. All forms, reports, or other Paradox objects that refer to the alias automatically refer to the new definition of the alias. For example, you can design a complex multi-table form using files on your computer's hard disk, referencing tables with an alias to a directory on your disk. When you are ready to share the form on a network, you move the tables on which the form is based to a network directory and redefine the alias to point to that directory. The form then knows where to find the tables on the network.

Kinds of aliases

There are two kinds of aliases: public aliases and project aliases. See Public and project aliases for more information.


Public and project aliases

See also

In Paradox you can create aliases that are available from all directories or specific to a working directory:

Public aliases are stored in the BDE configuration file. They are available from any working directory and visible to any application that uses BDE (the Borland Database Engine).

Project aliases are stored in the PDOXWORK.CFG file in the working directory. They are available only when you are using Paradox and are in the working directory you created them in.

For example, if your working directory is C:\PROGRAM FILES\BORLAND\PARADOX\SAMPLE and you are creating an alias named CONNECT for a directory called C:\DATAFILES\CONNECT directory, you have two choices:

A public alias that is available from Paradox or any other application that uses BDE (for example, an application developed using ObjectPAL). If you create CONNECT as a public alias, you will see :CONNECT: in the Drive (Or Alias) list of all file selection dialog boxes.

A project alias that is available only when C:\PROGRAM FILES\BORLAND\PARADOX\SAMPLE is your working directory. If you change working directories or use other applications that use BDE, you will not see the :CONNECT: alias.

Whenever you change working directories, Paradox unloads all project aliases associated with the old working directory and loads those project aliases that are specific to the new working directory. Public aliases are available from any working directory.

If a project alias has the same name as a public alias, Paradox does not load the project alias.


To create a new alias

See also

You can create aliases for local or network directories, or for remote databases. See Alias Manager dialog box (SQL Link) for information specific to Borland SQL Links and creating an alias for a remote database.

Use the Alias Manager dialog box to create new aliases. To open this dialog box, choose Tools|Alias Manager from the Desktop.

To create a new alias,

1.	Choose New in the Alias Manager dialog box.

2.	Type the name (alias) you want to give the directory in the Database Alias text box.

3.	Choose the driver you want from the Driver Type drop-down list. The Driver Type drop-down list shows all the drivers you are connected to. To create a database of Paradox and dBASE tables, choose STANDARD.

4.	Enter the full path of the directory location, including the drive letter, in the Path text box. (You can choose Browse to open the Directory Browser and select the path from there.)

5.	Choose whether this alias will be public or project-specific. Check Public Alias if you want the alias to be available no matter which directory you are working in.

6.	Choose Keep New if you want to keep the alias but do not want to close the dialog box. The Keep New button becomes the New button. You can then create another alias. If you want the alias you just created to be temporary (exist only until you exit Paradox), choose OK and do not proceed to step 7.

7.	To save the alias you have created, choose Save As. Paradox opens the Save File As dialog box. By default, Paradox stores saved public aliases in IDAPI32.CFG and project aliases in PDOXWORK.CFG. You are prompted to overwrite the existing .CFG file. This is OK; when you overwrite, Paradox appends the new alias without changing any existing configuration settings. You can remove the alias from the .CFG file at any time (using the Alias Manager dialog box).

8.	Choose OK. The Alias Manager dialog box closes. If you choose OK before saving the alias you have created, Paradox prompts you to save the alias in the appropriate .CFG file.

Tip:	To create an alias similar to one you already have, select the appropriate alias from the drop-down list. Select New, then make your changes to the alias and choose Keep New to save.


To modify an alias

See also

You can change an alias definition using the Alias Manager dialog box.

To modify an alias,

1.	Choose Tools|Alias Manager to open the Alias Manager dialog box.

2.	In the Alias Manager dialog box, choose the alias whose path you want to change from the Database Alias list. Then type the new path in the Path text box.

3.	Choose Save to overwrite the existing alias, or Save As to create a new alias.


To remove an alias

See also

To remove an existing alias,

1.	Choose Tools|Alias Manager to open the Alias Manager dialog box.

2.	Select the alias you want to remove from the Database Alias drop-down list.

3.	Choose Remove.

4.	When you choose OK, Paradox prompts you to save the change in the appropriate .CFG file.


About manipulating objects

See also

You can work with Paradox objects and design objects in many ways. For example,

You can select windows, table columns, and design objects and use the mouse to move or resize them. See To manipulate objects directly with the mouse for details.

You can right-click most objects to set their properties and perform other operations, such as copying or renaming them. For details, see About copying objects and About renaming objects.

You can use choose commands from the menu bar to perform many of the same operations available with right-clicking, and more.


To manipulate objects directly with the mouse

See also

Although you can perform most functions in Paradox using the keyboard, you should take advantage of the speed and flexibility of the mouse. A mouse is not required for data entry; but it is required for many operations in designing documents. Virtually all mouse actions start with selecting an object. See To select objects with the mouse for instructions.

Left-click selects an object or activates a command. In forms and tables, you can move to a field by positioning the pointer on it and clicking the left mouse button.

Drag moves an object or changes its size, shape, or position:

To resize a table column, drag the column border to where you want it.

To move a table column, position the mouse at the top of the column and drag it to its new position.

To resize bands in reports, move the pointer over the band. The pointer changes to the shape of a two-headed arrow when you pass it over the part of the band that you drag to resize the band. You can drag up or down on either the top or bottom border of the band area.

Right-click displays a menu so you can work with an object or change its properties.

For information on resizing design objects on a form or report, see To change the size and shape of design objects.


To select objects with the mouse

See also

You can use the mouse to select fields, text, and design objects in tables, forms, reports, and other Paradox objects.

To select	Do this

A field	Point and click.

A group of fields	Click the field where you want to begin and drag to draw a box around all the fields you want. The pointer changes to a four-headed arrow.

Specific text	Point and click, then click to place the insertion point and drag to select the text.

For information on selecting design objects in a form or report, see To select a design object.

For information on selecting more than one item at a time in lists, see To select from lists.


To select from lists

See also

In some Paradox lists, you can select more than one item at a time.

To select	Do this

A single item	Click it.

A contiguous block	Click the first item, then Shift+click the last item.

Scattered items	Ctrl+click (hold down Ctrl while you click the items).


About using common dialog boxes

See also

Many dialog boxes in Paradox have common features. These include a file list, a Save In or Look In drop-down lists, a Files Of Type drop-down list and an Alias drop-down list. Dialog boxes that you use to open and save files are good examples of this kind of dialog box.

Choose any of the icons beside the Save In or Look In list to navigate, create a folder, or change the display of folders.

To view a common dialog box, choose File|Open, choose Table, and click the Help button that appears in the Open Table dialog box. The Open Document dialog box help topic describes how to use that dialog box. The same general techniques apply to the other common dialog boxes as well.


About the Directory Browser

See also

Dialog boxes that don't have a Save In or Look In drop-down list (such as the Alias Manager dialog box) have a Browse button. When you choose Browse, Paradox opens the Directory Browser:

If the directory you want isn't available in the Directories list, pull down the Drive (Or Alias) drop-down list to locate it. The Directory Browser Help topic contains more information.


About browsing files

See also

Some file selection dialog boxes have a Browse button that opens the Select File dialog box instead of the Directory Browser. The Select File dialog box is one of the common dialog boxes that lets you choose a directory and a file. If you have defined aliases for directories, you can use them to browse in the Select File dialog box.


About navigating and editing

See also

You can use keys and the mouse to navigate through Paradox tables, forms, and reports.

The navigation buttons in the Standard Toolbars help you move between records.

There are many keyboard shortcuts to simplify navigation and editing. These topics list many of them:

Data entry shortcuts

Navigation and Selection Keys

Keys Used in Edit Mode

For a complete list, see About keyboard commands.


About saving Paradox objects

See also

Different Paradox objects are saved in different ways.

Tables

You don't have to save table data; Paradox does this automatically. See To save table data and properties for more information.

Forms, reports, more

You can only save forms and reports in a design window. When you save a form or report (a design document), you are saving the design itself, not the data. Paradox saves data to the appropriate table when you leave each record. However, you can use File|Save or Save As to save queries, scripts, and SQL files. For instructions, see To save forms, reports, and other files.

Copying and renaming

You can use File|Save As to copy and rename many Paradox files, but for best results, use Copy or Rename instead. For more information, see About copying objects and About renaming objects.


To save table data and properties

See also

To save table data,

You don't use the File|Save or Save As commands; Paradox automatically saves the data you enter as soon as you leave each record.

To save table properties,

Choose Table|Table View Properties|Save from the Table window. (If you make changes to a table's properties and don't save them, Paradox prompts you to save them when you close the table.)


To save forms, reports, and other files

See also

To save a newly created form, report, script, query, or SQL file,

1.	Choose File|Save. (A form or report must be in a design window to use this command.)

The Save File As dialog box appears.

2.	Type the name of the file you're saving in the File Name text box. You don't need to type an extension; Paradox recognizes the type of file you're saving from the Save As Type specification. Paradox saves the file when you choose Save.

3.	Paradox saves the file in the working directory unless you specify otherwise by choosing a different directory in the Save In drop-down list or the Alias drop-down list.

Note:	When you save a form or report (a design document), you are saving the design itself, not the data. Paradox saves data to the appropriate table when you leave each record.

If you try to close a new form or report that is not in a design window, Paradox asks if you want to save it. Click Yes to display the Save File As dialog box and continue with steps 2 and 3 above.

To save existing Paradox files,

To save existing Paradox files,

Choose File|Save.

After you've named a file for the first time, choosing Save doesn't open a dialog box; it simply saves the active file.


To save a file under a different name

See also

To save a file under a different name,

Choose File|Save As to display the Save File As dialog box.

Use it as though you were saving the file for the first time.

Note:	For best results, use Copy or Rename instead of Save As to copy or rename Paradox objects. For more information, see About copying objects and About renaming objects.


About copying objects

See also

You can copy tables, forms, reports, queries, scripts, SQL files, libraries, data models, style sheets, and text files from within Paradox. For instructions, see To copy objects.

For best results, always use the Paradox Copy utility to copy Paradox or dBASE tables and other Paradox objects. Using the DOS COPY command or the Windows Explorer may not copy all related files that make up a table (for example, the files containing a table's primary index, secondary indexes, validity checks, or BLOB data). The Paradox Copy command, however, copies all files correctly.

When you copy a table, Paradox copies both its structure and the data contained in it. Paradox also copies the table's

Key (primary index)

Secondary index(es) (except .NDX files on dBASE tables)

Validity checks [image] see Copying referential integrity

Table properties (as you've set them in the Table window)

Note:	These elements are copied only when you copy the table to another table of the same type. That is, they are copied only when you copy a Paradox table to another Paradox table or a dBASE table to another dBASE table.


Copying on a network

See also

When you copy a table, Paradox must acquire a read lock on the original table and an exclusive lock on the copy. This means

No user can change the contents or the structure of the table you're copying during the Copy operation.

If you copy to an existing table, there can be no locks open on that table.

If there is a record lock, write lock, or exclusive lock on the table you're copying, you won't be able to make the copy until the lock is removed.

Note:	Windows lets you open several instances of the same table at the same time, so you could be considered another use of the table, preventing the records from being copied. Be sure to close the table window and any of its associated-document windows before using Copy.


Copying referential integrity

See also

When you define referential integrity,  you create a parent/child relationship between two tables.

If you copy the parent table, Paradox doesn't copy the referential integrity.

If you copy the child table, Paradox copies the referential integrity. This means the copied table must meet the requirements of the referential integrity. To delete the referential integrity, you must restructure the table.

Both tables in the referential integrity relationship must be in the same directory. When you copy the child table to a different directory you break the referential integrity link.

For more information on referential integrity, see About referential integrity.


Copying to a different table type

See also

You can copy a Paradox table to a dBASE table, or a dBASE table to a Paradox table, by typing the file extension you want (.DB for Paradox and .DBF for dBASE) for the copied table. For example, if you want to copy the Paradox Customer table to a dBASE Customer table, type CUSTOMER.DBF as the name of the copied table.

If the new dBASE table contains no production index (.MDX file), no float number field type, and no memo field type, Paradox creates a dBASE III+ table. If the dBASE table contains an OLE or binary field, Paradox creates a dBASE for Windows table. Otherwise, Paradox creates a dBASE IV table.

Paradox automatically changes field types when you change table types. For a list of field conversions and side effects, see:

Copying from Paradox to dBASE tables

Copying from dBASE to Paradox tables


Copying from Paradox to dBASE tables

See also

For general information on copying from a Paradox table to a dBASE table, see Copying to a different table type.

Paradox automatically changes field types when you change table types. The following table shows what to expect when you copy from a Paradox table to a dBASE table.

From Paradox type	To dBASE type	Side effects

Alpha	Character

Number	Number	Assigns size (20) and dec. (4)

Money	Number	Assigns size (20) and dec. (4)

Short 	Number	Assigns size (6) and dec. (0)

Long Integer	Number	Assigns size (11) and dec. (0)

BCD	Number	Assigns size (20) and dec. (4)

Date	Date

Time	Character	Assigns size (8)

Timestamp	Character	Assigns size (30)

Memo	Memo

Formatted memo	Memo	Formatting is lost

Graphic	Binary

OLE	OLE

Logical	Logical

Autoincrement	Number	Assigns size (11) and dec. (0)

Binary	Memo	Data cannot be displayed

Bytes	Memo	Data cannot be displayed

If the new dBASE table contains no production index (.MDX file), no float number field type, and no memo field type, Paradox creates a dBASE III+ table. If the dBASE table contains an OLE or binary field, Paradox creates a dBASE for Windows table. Otherwise, Paradox creates a dBASE IV table.

If in the BDE Configuration Utility, the Level parameter for the dBASE driver is set to 4 instead of 5, graphic and OLE Paradox fields fields convert to dBASE memo fields. Also, Bytes fields cannot be converted.


Copying from dBASE to Paradox tables

See also

For general information on copying from a dBASE table to a Paradox table, see Copying to a different table type.

Paradox automatically changes field types when you change table types. The following table shows what to expect when you copy from a dBASE table to a Paradox table.

From dBASE type	To Paradox type	Side effects

Character	Alpha

Float 	Number	Removes size

Number	Number	Removes size

Logical	Logical

Date	Date

Memo	Memo	Adds size (1)*

OLE	OLE

Binary	Graphic

*Paradox assumes the data in the dBASE memo is in text form. If the memo contains a different type of data, you should use the Add utility and add the memo to the appropriate Paradox BLOB field type.


To copy objects

See also

For best results, use the Paradox Copy command to copy Paradox objects, such as tables and forms, instead of using the DOS COPY command or Windows Explorer.

To copy an object,

1.	Do one of the following:

Choose Tools|Utilities|Copy, then choose the name of the file to copy in the Copy dialog box and choose Open, or

Right-click the name of the object to copy in the Project Viewer and choose Copy.

Paradox opens the Copy <file name> To dialog box.

All files of the chosen type in your working and private directories appear in the file list. You can use the Save In or Alias drop-down lists to access different directories.

2.	Choose a file from the list to copy to, or type the name of the file to create when you save the copy.

3.	Choose Save to save a copy of the selected source file.

For an example of copying, see Example of copying a form.


Example of copying a form

See also

Suppose you want to make a copy of a form from the Project Viewer,

1.	With your working directory set to SAMPLE, open the Project Viewer.

2.	Click the Forms icon to view forms.

3.	Right-click a form in the right-hand panel of the Project Viewer. Choose Copy. Paradox opens the Copy <file name> To dialog box.

4.	The name of the form you right-clicked appears in the File Name text box. Replace this with the name you want the new form to have.

5.	Choose Copy. Paradox creates a copy of the form.


About renaming objects

See also

You can rename tables, forms, reports, queries, scripts, SQL files, libraries, data models, and style sheets from within Paradox.

Always use the Paradox Rename command to rename tables from within Paradox. Using the DOS RENAME command or the Windows Explorer may not rename all related files that make up a table (for example, the files containing a table's primary index, secondary indexes, validity checks, or BLOB data). The Paradox Rename command renames all files correctly.

To rename an object, you can

Choose Table|Rename from an open Table window

Choose Tools|Utilities|Rename

Right-click an object in the Project Viewer and choose Rename

For instructions, see To rename objects.

Tip:	Be careful when renaming tables. Once renamed, a table cannot be found by associated documents. Forms, reports, or queries that refer to a table under one name will not be bound to the table under its new name. The next time you open an unbound object, Paradox asks you to supply the name of the table to which you'd like it to be bound.

You can avoid problems with forms and reports by having them open in their design windows while you rename the table. Paradox automatically modifies them with the new table name. (You must save the forms and reports to make the change permanent.)


Rules for renaming objects

See also

Follow these rules when renaming objects:

You cannot rename a table to change its type. A Paradox table must be renamed as a Paradox table, and a dBASE table must be renamed as a dBASE table.

You can copy a table to change its type. For more information, see Copying to a different table type.

You cannot rename a table that is identified as the parent table in a referential integrity relationship. You must first either delete the referential integrity (by restructuring the child table) or delete the child table.

When renaming an object, you can type a full path when you type the object's new name. This both renames the object and moves it to a new location.

Caution:	Be careful when renaming tables. Once renamed, a table can't be found by associated documents. Forms, reports, or queries that refer to a table under one name won't be bound to the table under its new name. The next time you open an unbound object, Paradox asks you to supply the name of the table to which you'd like it to be bound.


Renaming tables on a network

See also

When you use Rename, Paradox must acquire an exclusive lock on the table. This means

No user can access the table in any way.

If there is a lock of any type open on the table, you must wait until it's released before you can use the Rename utility.

If you rename an object with an existing object's name, Paradox deletes the existing object.


To rename objects

See also

To rename an open table,

1.	Choose Table|Rename.

Paradox shows the Rename dialog box for tables. This dialog box shows the table's existing name and provides a text box for you to enter a new name.

2.	Enter a new name and click OK.

Paradox renames the table and any open forms and reports associated with it.

To rename any type of object,

1.	Do one of the following:

Choose Tools|Utilities|Rename, then choose the name of the file to rename in the Rename dialog box for objects and choose OK, or

Right-click the name of the object to rename in the Project Viewer and choose Rename.

Paradox opens the Rename <file name> To dialog box.

All files of the chosen type in your working and private directories appear in the file list. You can use the Save In or Alias drop-down lists to access different directories.

2.	Type the new name in the File Name text box, or choose an existing file name from the list to replace that file with the renamed one.

3.	Choose Rename to rename the object.


About deleting objects

See also

You can delete tables, forms, reports, queries, scripts, SQL files, libraries, data models, and style sheets from within Paradox. For instructions see To delete an object.

Always use the Paradox Delete command to delete tables from within Paradox. Using the DOS DELETE command or the Windows Explorer may not delete all related files that make up a table (for example, the files containing a table's primary index, secondary indexes, validity checks, referential integrity, or BLOB data). The Paradox Delete command, however, deletes all files correctly.

You cannot delete a table that is identified as the parent in a referential integrity relationship. You must first either delete the referential integrity (from the child table), empty the child table, or delete the child table.

Caution:	Be careful when deleting objects. You can't undo a deletion. Be sure that a table isn't used in any forms, reports, or queries before you delete it. Forms, reports, or queries that depend on the table are not deleted when the table is deleted.


Deleting tables on a network

See also

When you use Delete to delete a table, Paradox must acquire an exclusive lock on the table. This means

No user can access the table in any way.

If there is a lock of any type open on the table, you must wait until it's released before you can use the Delete utility. This means you cannot delete a table that is open on your Desktop.

Windows lets you open several instances of the same table at the same time, so you could be considered another user of the table, preventing the records from being deleted. Be sure to close the table window and any of its associated-document windows before using Delete.


To delete an object

See also

1.	Do one of the following:

Choose Tools|Utilities|Delete, then choose the name of the file to delete in the Delete dialog box fand choose Delete, or

Right-click the name of the object to delete in the Project Viewer and choose Delete.

2.	Paradox opens a dialog box that asks you to confirm the deletion. Choose Yes to delete the object or No to cancel the operation.

You cannot delete a table that is identified as the parent in a referential integrity relationship. You must first either delete the referential integrity (from the child table), empty the child table, or delete the child table.

Caution:	Be careful when deleting objects. You can't undo a deletion. Be sure that a table isn't used in any forms, reports, or queries before you delete it. Forms, reports, or queries that depend on the table are not deleted when the table is deleted.


To change an object's properties

See also

Every Paradox object and design object has a collection of self-contained properties that determine its appearance (and sometimes its behavior). Properties are things like color, number format, or text style. Complex objects, such as tables, have many available properties. For example, a table has properties for each column, each heading, and the grid. You can change these properties in the Table window.

When you change an object's properties, you change only the selected object. Changing the color of one box, for example, does not change the color of all boxes. Each object is unique and has unique properties.

Mouse

The easiest way to change an object's properties is to right-click it. For most objects, a menu appears. Choose Properties in the menu, then click the page tab with the property settings you want to change. For some objects, you go directly to property settings without seeing a command menu.

Keyboard

If you prefer to use the keyboard, press Alt to activate the main menu. Many commands have shortcut keys, shown next to the command on drop-down menus.

In a Table window,

Choose Data Properties, Grid Properties, or Heading Properties from the Table menu to change properties of parts of a table. Or press F6 as a shortcut to choosing Table|Data Properties for the selected field, then choose Properties. Choose Table|Table View Properties|Save to save them.

Press Shift+F6 to change properties of all columns.

In a Form or Report design window. press Tab to select an object, then press F6 and choose Properties to see its properties.

You can change properties of a chart object as a whole. But to change properties of parts of a chart object, you must use a mouse.

What can I right-click?

You can right-click almost anything in Paradox: design objects; object icons; a tables grid; a chart's background, titles, series, legends, or axes; and tools on the Toolbar. You can right-click and change just about anything you see onscreen.

Changing the properties of multiple objects

Paradox makes it easy for you to select more than one object at a time. Suppose you have a box, an ellipse, and a text object. You can multi-select them and right-click them all at once. Paradox applies the property you choose to all selected objects which can accept it.

Tip:	To immediately modify any ObjectPAL code attached to an object in the Form Design window, press Ctrl+Spacebar to display the Object Explorer.

Some object properties are available only through ObjectPAL. Refer to your ObjectPAL documentation for details. For more information, see To change properties from the Object Explorer.

Penetrating properties

Penetrating properties are properties that Paradox can apply to any object in a selected group and to any objects contained by the selected object. For more information on these properties and how to change them, see:

To change penetrating properties

To change penetrating properties of all objects


About the Help system

See also

The Help menu is one way of using the Paradox Help system. You can also choose any Help button or press F1 at any time to open the Help system.

When you use the Help menu, you use its menu commands to choose the subject you want help on.

When you choose any Help button from a dialog box, you get help on using that dialog box.

When you press F1 with a menu command highlighted, Paradox assumes you want help with that command and selects a Help topic accordingly. This type of help is called context sensitive; the context in which you ask for help determines the help provided. In a chain of menu commands, you must highlight the last one to get help.

As with other versions of Windows, any time the pointer changes to a hand, you can click the left mouse button to view more information:

Click text with a dotted underline to view a related pop-up topic.

Click text with a solid underline to jump to a related topic. Use the Back button or click an open Help window to return to a previous topic.

Click See Also under the topic title to view a list of related topics.

In Windows 95, you can also

Highlight a "book" in the Help Contents and choose the Print button to print all topics in that sequence.

Choose Index to display the Help Index and search for a defined index entry.

Choose Contents or Index, then choose Find to search for any text you enter.

To learn more about the features of Help in Windows 95 and Windows NT, see the following instructions.

For details about using Help in Windows 95,

1.	Choose Start in the lower left corner of the Windows Desktop, then choose Help.

Windows Help appears.

2.	In the Help Contents, open the How To book, then open Use Help.

To choose a book in the Help Contents, double-click it or move to it with the arrow keys and press Enter.

For details about using Help in Windows NT,

In the Program Manager, choose Help|How To Use Help.


About Paradox experts

See also

Paradox experts provide easy-to-follow steps that help you quickly perform common Paradox tasks.

The experts let you use Paradox right away, with your own data, with virtually no learning required.

To use an expert, click the Experts [image] button or choose Tools|Experts. You will see a menu of available experts.

The Chart Expert helps you create a chart of your data.

The Database Expert lets you select a ready-made database and helps you customize it to meet your needs.

The Form Expert helps you create a form that displays data from one or two tables in a variety of predefined layouts and styles.

The Launcher Expert creates a small tabbed form you can use to open or launch selected forms, reports, queries, scripts, and executable files with the click of a button.

The Mailing Label Expert helps you create mailing labels in a variety of standard mailing label formats.

The Merge Expert helps you merge data from a table into a form letter using a variety of word processors.

The Report Expert helps you display and print data from one or two tables in a variety of predefined layouts and styles.

The Table Expert helps you create a new table from a list of table templates.

The Text Import Expert helps you import fixed length or delimited text into Paradox tables.

You can also display the appropriate expert each time you create a field, button, chart, or text object in the Form Design and Report Design windows. And, you can choose to display the Startup Expert each time you run Paradox. For details, see Experts page (Preferences dialog box).


Printing

See also

Use File|Print to print a table, form, report, or script. Or click the Print button on the Toolbar.

When you print a table, Paradox creates a default report in a tabular format, using the table name as a page header and including page numbers and the current date. This might not be a good choice if your table contains very long memo fields. In that case you will probably want to design a preferred report starting with a single-record style.

Choose File|Printer Setup to change printer options in the Windows Printer Setup dialog box.

For more information, choose Index and search for: printing


Paradox sample directory

See also

Your Paradox disks include sample files that you can choose to install with Paradox. The sample tables contain information used by the fictitious Marine Adventures and Sunken Treasure (MAST) company. This company sells diving equipment and supplies to dive shops around the world. For more information on the MAST company, the development of the MAST database, and the structures of the sample tables, see About the MAST company.

The sample files are used in examples in this Help system. These files are located in the SAMPLE directory (unless you specified otherwise when you installed them). If you installed Paradox in the default location, the full path of the sample files is C:\PROGRAM FILES\BORLAND\PARADOX\SAMPLE.

To use these sample files, you must change your working directory to the SAMPLE directory. For example, if you installed Paradox in C:\PROGRAM FILES\BORLAND\PARADOX, to change the working directory to the SAMPLE directory,

1.	Choose File|Working Directory.

2.	From the Set Working Directory dialog box, in the Working Directory Field, type C:\PROGRAM FILES\BORLAND\PARADOX\SAMPLE.

3.	Choose OK.


ObjectPAL scripting language

See also

ObjectPAL is an event-driven, object-oriented programming language, different from a traditional procedural language where you create a file of commands that execute one after another.

Using ObjectPAL, you place design objects (for example, buttons and fields) in a form and attach code modules, called methods, that execute when something happens to the object.

For more information about ObjectPAL, see ObjectPAL Reference and the printed Guide to ObjectPAL.


Product support information

See also

The Borland Assist program offers a range of technical support plans to fit the different needs of individuals, consultants, large corporations, and developers. To receive help with this product, send in the registration card and select the Borland Assist plan which best suits your needs. North American customers can register by phone 24 hours a day by calling 1-800-845-0147. For additional details on these and other Borland services, see the Borland Assist Support and Services Guide included with this product.


What comparison operators are allowed in expression indexes on dBASE tables?

See also

You can use the =, <=, and >= comparison operators in expression indexes; =< and => are not supported. See your dBASE documentation for syntax.


What functions are allowed in expression indexes on dBASE tables?

See also

The following dBASE IV functions are supported. See your dBASE documentation for syntax.

ABS	DTOR	LOG10	RTRIM

ACOS	DTOS	LOWER	SIGN

ASC	DTOS	LTRIM	SIN

ASIN	EXP	MAX	SPACE

AT	FIXED	MIN	SQRT

ATAN	FLOAT	MOD	STR

ATN2	FLOOR	MONTH	STUFF

CEILING	FV	PAYMENT	SUBSTR

CHR	IIF	PI	TAN

COS	INT	PV	TRANSFORM

CTOD	ISALPHA	RAT	TRIM

DAY	ISLOWER	RAND	UPPER

DIFFERENCE	ISUPPER	REPLICATE	VAL

DIV	LEFT	RIGHT	YEAR

DOW	LEN	ROUND

DTOC	LOG	RTOD


Can I use Paradox to create a maintained index for a dBASE table that is a dBASE III Plus level?

See also

Yes, however you will be warned when saving the table that the driver level will change to dBASE IV. Maintained indexes were introduced in dBASE IV and therefore, the table level must be changed in order to save the new index. However, this means that your dBASE table cannot be opened in dBASE III PLUS and will generate an error message saying "Corrupt table/index header" in all versions predating dBASE IV.


International issues

See also

The following topics provide an overview of international features of Paradox and how use them to adhere to different conventions, such as

Character set issues

Sorting conventions

Data formats

Note:	These issues are of particular interest to those working in international environments, but they apply to all users.


Preparation and assumptions

See also

Before installing Paradox in (or using tables from) an international setting, make sure of the following:

The International settings of Windows Control Panel correspond to your needs.

You understand the differences between (and implications of) the Windows (ANSI) character set and your DOS (OEM) code page.

You know how to use Alt and the numeric keypad to enter extended characters in Windows applications and files. (Make sure NumLock is on before attempting this.)

For more information about these issues and concepts, consult your Windows and DOS documentation.


Sorting conventions

See also

Paradox uses language drivers to sort tables according to different conventions. If you are using a workstation with non-U.S. settings or are working with tables created on non-U.S. workstations, make sure Paradox is using the language driver(s) closest to the conventions you are used to.

In most cases, you should not have to worry about a table's language drivers after setting the default drivers for your workstation. When sharing tables between workstations, make sure the workstations are using the same default language drivers.


Character set issues

See also

Because Paradox is a Windows application, it supports the ANSI character set for files that can be used only by other Windows applications. This includes forms, reports, scripts, and libraries. Paradox stores OEM characters in tables. This means Paradox translates ANSI characters to those in your OEM code page when saving table data.

For example, if you are using code page 437 (the default code page for U.S. workstations that support ASCII) and place an "Æ" (ANSI character 198) in a field, Paradox saves it as OEM character 146. You will see the same character when viewing the table, but it is not literally the same one you originally entered.

Most of the time, this is transparent; that is, there is no loss of data. However, if you enter a character that is not supported by your code page, Paradox converts it to one that is. For example, if you are using code page 437 and type an "Õ", Paradox converts it to an "O" because your code page does not support the original character. In this example, a mild form of data loss occurs; the tilde ( ~ ) is removed.

If you enter an ANSI character that cannot be converted to a similar character in your code page, Paradox replaces it with OEM character 254(�).

Character conversion occurs when you

Enter data into a table

Name a file

Export data to OEM files or applications

In all other operations, Paradox uses and saves characters from the ANSI character set.


Working with tables using different language drivers

See also

Although you can use different language drivers for different Paradox tables, we advise against linking tables using different language drivers. This includes (but is not limited to) operations like the following:

Joining tables using different language drivers in queries

Adding or subtracting two tables based on different language drivers

Creating multi-table documents based on tables with different language drivers

Defining referential integrity between tables based on different language drivers

Defining a lookup table using a table based on a language driver different than the master table.

Paradox is designed to handle such operations; however some language driver combinations may yield unexpected results. For best results, choose one language driver, then restructure your tables so they use that driver.

Note:	You can use Paradox language drivers only for Paradox tables and dBASE language drivers for dBASE tables.


Data formats

See also

In Paradox, the default symbols and formats used for your data are based on the International settings in the Windows Control Panel. For example, if you set your Windows Control Panel money symbol to "$", Paradox uses it when displaying money values. Similarly, Paradox formats date and time values according to the settings used by Windows.

To set Paradox's defaults permanently to different formats, begin by altering the settings in the Windows Control Panel. When you alter these settings it affects the default formats used in all Paradox operations, except some internal data conversion operations.


Internal data conversion

See also

Many operations require Paradox to convert a string of characters to a number, date, or time value. For example, when you enter a date into a table, Paradox converts the characters you type to a value representing a date. This process is automatic and generally uses format settings in Windows Control Panel to control the conversion. However, a few operations use BDE to convert character strings to number, date, or time values and to convert these data formats to character strings. These operations include

Queries that use selection criteria or perform pattern matching on number and date fields

Table restructures that change alpha fields to number or date fields (and the reverse)

Adding or subtracting records between tables that do not have the same structure

Because these operations use BDE for this internal data conversion, you must ensure the BDE configuration file uses the same data format conventions and settings as Windows Control Panel; otherwise, unexpected results might occur.

Note:	This does not affect the way data is formatted when you display it; Paradox uses the settings in Windows Control Panel to display data.

We recommend using standard data formats when possible.

In most cases, you will not have to worry about these settings, because BDE (when installed) is configured to the data format conventions of the country defined in Windows Control Panel. However, if you customize Windows Control Panel so it uses settings that are different from your country's data format conventions, you should also configure BDE to the same settings; otherwise, queries that match date and numeric values may yield unexpected results.

For example, the "forward-slash" (/) is commonly used in U.S. workstations as a date separator. If you change this to an ampersand ( & ) in Windows Control Panel, you should also configure BDE so it uses an ampersand for a date separator.

Caution:	Make a backup of the BDE configuration file before changing it with the BDE Configuration Utility.

To configure BDE to specialized date, time, or number formats,

1.	Start the BDE Configuration Utility.

2.	Choose either the Date, Time, or Number page, by clicking the respective tab. You will probably need to change the formats in all three sections.

3. Type in the parameters in the various format sections that match those of the new data format. For information on the specific sections of the format pages, see the BDE Configuration Utility's online Help.

4.	Choose File|Save to save your changes.

5. If don't want to save your changes, select File|Exit and choose No when prompted to save your changes.

You can also update BDE to the current settings in Windows Control Panel by reinstalling BDE.

Note:	If you customize BDE so it uses special number formats, you may not be able to share saved queries with other workstations unless those workstations have also been customized to the same settings.

Tip:	If you want a special format for a specific table or field, change the appropriate Format properties. For more information, see About data formats.


To prevent character conversion

See also

If you want to prevent Paradox from converting characters, use the Strict Translation command from the Table or Form menu while editing a table. If you turn Strict Translation on and try to save a record containing characters that are not supported by your code page, Paradox displays the message "Character(s) not supported by Table Language" and prevents you from saving the record until you

Remove (or replace) the unsupported characters

Turn Strict Translation off


To change the default language drivers

See also

To change the Paradox default language drivers, run the BDE Configuration Utility. On the Drivers page click the driver that you want to change in the Driver Name box. In the Parameters box there is a setting called LANGDRIVER: you can type in the new language driver that you want to use. Each language driver is appropriate only for a particular code page; for example, the Paradox International (Paradox 'intl') driver works with code page 437 only. Use language drivers appropriate for your code page. To see the language drivers appropriate for each code page, see the BDE Configuration Utility Online Help.


To change a table's language driver

See also

You can assign different language drivers to different tables. To change a table's language driver,

1.	Restructure it (by choosing Tools|Utilities|Restructure or Table|Restructure).

2.	Choose Table Language from the Table Properties panel.

3.	Choose Modify, then choose the driver you want.

4.	Choose OK to save your changes.

Use the Configuration Utility to change the default language driver for your Paradox tables.


About creating tables

See also

Many things you do in Paradox involve tables. This is true even if you do your data entry and editing in a form.

Paradox supports several Paradox, dBASE, and SQL file formats. When you create a table, you can:

Name the fields of the table (required)

Specify field types (required) and sizes (required for some field types)

Specify a table language to control sort order and available character set

Assign indexes to the table

Borrow the structure of an existing table

In addition, when you create a Paradox table you can:

Assign a key, or primary index, to the table

Assign secondary indexes to the table

Define validity checks for individual fields

Establish a table lookup to another table

Establish referential integrity with another table

Specify password security for the table or individual fields

Once you create a table, you can sort and filter its records or search for data with commands and queries.

If you need to add or delete fields or make other structural changes to an existing table, you can restructure the table. For more information, see About restructuring tables.


Guidelines for creating tables

See also

Planning is the first step in creating a table. You need to decide what you want the table to contain and how you want to lay it out. When you plan a table, keep these guidelines in mind:

Put as little information as possible in each field. This allows for more flexible data maintenance and more straightforward querying. For example, if you break an address into separate fields for street, city, and state, you can easily query on these specific field values. This is where designing a database table differs from designing a spreadsheet.

If you ever want to see your data in a spreadsheet-like format, you can create a crosstab of your table's data. See About charts and crosstabs for more information.

Be complete. Try to include fields for all the information you think you'll need, but don't clutter the table with information you don't need. If you discover later that you need another field, you can add it then.

Use small tables. If you have a great deal of information to organize, it's generally better to put it in several small, related tables rather than in one all-encompassing table.

Keep your tables familiar. It's often best to create tables that correspond to the kinds of objects [image] like forms and files [image] you already use.

Avoid redundancy. Beyond the common fields necessary for linking tables, don't duplicate information in different tables.

Consider what kind of table you need. Because you can easily create either Paradox tables or dBASE tables, weigh the advantages of each. For example, Paradox tables support passwords, validity checks, referential integrity, and a greater variety of field types. dBASE tables support soft deletions, can have more than 255 fields, and are fully compatible with existing dBASE applications. Determine what your needs are before you choose a table type.


To create a simple table

See also

The following instructions describe how to create a Paradox table. To create another type of table, choose a different table type in step 2. Slightly different dialog boxes appear in the other steps. You can choose Help when viewing them for a description.

To create a new Paradox table from the Desktop,

1.	Choose File|New|Table. Or right-click the Open Table Toolbar button, and choose New.

Paradox opens the Create Table dialog box.

2.	If you want a table type other than Paradox 7.0, click the arrow next to the list box and select one from the drop-down list.

3.	Choose OK.

Paradox opens the Create Table dialog box, where you can specify the structure of the new table.

You can borrow the structure of an existing table. For details, see About borrowing structures.

4.	Type the name of the first field in the Field Name column of the Field Roster. See Rules for Paradox field names for more information.

5.	Move to the Type column.

You can move among the columns of the Field Roster by pressing Tab, Shift+Tab, or Enter, or by using the arrow keys or the mouse. Paradox automatically skips over any columns that are not required.

6.	Press Spacebar or right-click the Type column to display a list of field types. Type the symbol for the field type you want. See Paradox field types and sizes for more information.

7.	Move to the Size column and type an appropriate field size (if a size is required). See Paradox field types and sizes for more information.

8.	Press the down arrow key. Repeat the above steps until you've specified as many fields as you want.

9.	If you want, define a key (Paradox tables only) and set table properties. When creating any table, you can:

Specify a table language

Assign indexes to the table

Furthermore, when creating a Paradox table you can

Define validity checks for individual fields

Assign secondary indexes to the table

Establish a table lookup to another table

Establish referential integrity with another table

Specify password security for the table or individual fields

When the table structure is defined, choose Save As to name and save the table. After you save the structure, you can enter data in your new table.

Once you save a new table, you must restructure it to add and delete fields or change any other part of its structure.


Rules for Paradox field names

See also

Follow these rules when specifying field names for Paradox tables:

The maximum length of a field name is 25 characters.

A field name cannot start with a blank space (unless it is enclosed in quotation marks), but it can contain blank spaces.

Each field name in a table must be unique. (You can not have two identical field names.) You cannot make a name unique by doing one of the following

Adding a blank space at the end of the name

Changing the capitalization of the name

A field name should not contain certain characters if you plan to use the table with ObjectPAL, because these characters have special significance. These characters are:

Square brackets [ ], curly braces { }, or parentheses ( )

The combination of a dash and a greater-than symbol –>

Periods (.), underscores (_), or pipes (|)

The # symbol by itself (you can combine # with other characters, as in the field name Phone #)

A field name should not contain certain characters if you plan to use the table in a query, because these characters have special significance. These characters are:

The comma (,), the pipes (|), and the exclamation point (!)

Avoid using SQL keywords, such as SELECT and COUNT.


Rules for dBASE field names

See also

Follow these rules when specifying field names for dBASE tables:

A field name cannot exceed 10 characters.

A field name cannot contain blank spaces.

Each field name in a table must be unique. You cannot have two identical field names. You cannot make a name unique by

Adding a blank space at the end of the name

Changing the case of the name


To create a field

See also

To create a field from the Desktop,

1.	Open the Create Table or the Restructure Table dialog box.

Choose File|New|Table and specify the table type to open the Create Table dialog box, or right-click a table in the Project Viewer and choose Restructure to open the Restructure Table dialog box.

2.	Use the arrow keys to move to a new row in the Field Roster, if necessary.

3.	Enter the name of the field in Field Name. See Rules for Paradox field names and Rules for dBASE field names for more information.

4.	Enter the type of field in Type. Right-click or press the Spacebar to choose from a list of field types. For more information on field types, see Paradox field types and sizes and dBASE field types and sizes.

5.	Enter the size of the field in Size, if it is necessary for your field type.

6.	If you are creating a Paradox table, specify whether the field is a key. Move to the Key column and follow the instructions on the screen. For more information on keys, see About primary indexes (key fields).

7.	If you are creating a dBASE table, specify the number of decimal places in Dec, if it is necessary for your field type.


Rules for Informix field names

See also

The maximum length of a field name is 18 characters.

A field name must begin with a letter (A-Z, a-z).

A field name can contain digits from 0 to 9, uppercase or lowercase letters, and underscore (_) characters.

Each field name in a table must be unique. (You cannot have two identical field names.)


Rules for InterBase field names

See also

The maximum length of a field name is 31 characters.

A field name must begin with a letter (A-Z, a-z).

A field name can contain letters (A-Z, a-z), digits, $, or underscore (_) characters.

You cannot use InterBase reserved words for table names. See the InterBase Programmer's Reference for a list of reserved words.

Each field name in a table must be unique. (You cannot have two identical field names.)


Rules for Oracle field names

See also

The maximum length of a field name is 30 characters.

A field name must begin with a letter (A-Z, a-z).

A field name can contain letters (A-Z, a-z), digits (0-9), or the _, $, or # characters.

You cannot use ORACLE reserved words for remote table names, quoted table names, or quoted index names. For a list of reserved words and other naming restrictions, see the ORACLE Programmer's Reference.

Each field name in a table must be unique. (You cannot have two identical field names.)


Rules for Sybase field names

See also

The maximum length of a field name is 30 characters.

A field name must begin with a letter (A-Z, a-z).

A field name can contain letters (A-Z, a-z), digits (0-9), or the _, $, or # characters.

You cannot use SQL Server reserved words for remote table and column names. See the SQL Server Programmer's Reference for a list of reserved words.

Field names may be case sensitive, depending on how SQL Server is installed.

Each field name in a table must be unique. (You cannot have two identical field names.)


Paradox field types and sizes

See also

The valid Paradox field types and sizes are

Symbol	Size	Type

A	1 - 255	Alpha

N	Number

$	Money

S	Short

I	Long Integer

#	0 - 32*	BCD

D	Date

T	Time

@	Timestamp

M	1 - 240**	Memo

F	0 - 240**	Formatted Memo

G	0 - 240***	Graphic

O	0 - 240***	OLE

L	Logical

+	Autoincrement

B	0 - 240***	Binary

Y	1 - 255	Bytes

* Number of digits after the decimal point

** Memo and formatted memo fields can be virtually any length. The value you specify in the Create Table dialog box refers to the amount of the memo Paradox stores in the table (1 to 240 characters for memos and 0 to 240 characters for formatted memos). The entire memo is stored outside the table. For example, if you assign a size value of 45 to the field, Paradox stores the first 45 characters in the table. It stores the whole memo field in another file (with the extension .MB) and retrieves it as you scroll through the records of the table.

*** Optional

Tip:	If all your memos are smaller than a given size (for example, 200 characters), you can save space and time by setting the memo field size equal to or larger than this size. Paradox stores the entire memo in the table if it is less than the given size.


Paradox alpha fields

See also

Paradox alpha fields contain strings consisting of

Letters

Numbers

Special symbols like %, &, #, or =

Other printable ASCII characters


Paradox number fields

See also

Paradox number fields must contain only numbers. Number fields can hold positive or negative values. The range of values possible for a number field is from -10307 to 10308 with 15 significant digits. Use number fields when you plan to perform calculations on the values in the fields.

Number fields are best used when you want to perform calculations on the values in the field.

Tip:	It is a good idea to use an alpha field rather than a number field for phone numbers or zip codes. In an alpha field, you can include parentheses and hyphens.

You can change the default display of a number field by right-clicking it, choosing Properties, then choosing the Format page.


Paradox money fields

See also

Paradox money fields, like number fields, can contain only numbers. They can hold positive or negative values. But by default, money fields are formatted to display decimal places and a money symbol. Regardless of the number of decimal places displayed, Paradox recognizes up to six decimal places when performing internal calculations on money fields.

Tip:	You can change the default display of a money field by right-clicking it, choosing Properties, then choosing the Format page.


Paradox short fields

See also

Paradox short fields are special number fields that can contain only whole numbers in the range -32,767 to 32,767. Short fields require less disk storage than ordinary number fields. They are available only in Paradox-type tables.

Because they do not allow the same formatting options as number fields, short fields should be used only by advanced Paradox users.


Paradox long integer fields

See also

Paradox long integer fields are 32-bit signed integers that contain whole numbers (nonfractional) with complete accuracy in the range -2147483648 to 2147483647 (plus or minus 2 to the 31st). Long integer fields require more space to store than short fields.


Paradox BCD fields

See also

Paradox BCD fields contain numeric data in a BCD (Binary Coded Decimal) format. Use BCD fields when you want to perform calculations with a higher level of precision than that available with the use of other numeric fields. Calculations on BCD fields are not performed as quickly as those on other numeric fields.

The BCD field type is provided primarily for compatibility with other applications that use BCD data. Paradox correctly interprets BCD data from other applications that use the BCD type. However, when Paradox performs calculations on BCD data, it converts the data to the numeric float type, then converts the result back to BCD.

Note:	Although BCD fields can handle larger numbers, you can only enter a number with 15 significant digits or less into a BCD field.


Paradox date fields

See also

Paradox date fields can contain any valid date from January 1, 9999 BC to December 31, 9999 AD. Paradox correctly handles leap years and leap centuries and checks all dates for validity. Paradox treats all BC years as leap years.

Paradox provides three date formats:

Windows Short uses the short date format you define from the Windows Control Panel International dialog box.

Windows Long uses the long date format you define from the Windows Control Panel International dialog box.

mm/dd/yy displays dates using two-digit numbers for the month, followed by the day, followed by the year, each separated by a slash mark (/).

You can also define your own custom format. For instructions, see To create a custom data format.

Paradox correctly handles leap years and leap centuries and checks all dates for validity.


Paradox time fields

See also

Paradox time fields contain times of day, stored in milliseconds since midnight, and are limited to 24 hours.

Paradox provides two formats for entering and displaying time variables.

Windows Time uses the time format you define from the Windows Control Panel International dialog box.

hh:mm:ss am Formats the time to display two digits of hours, minutes, and seconds, separated by colons and followed by AM or PM.

You can also define your own custom format. For information, see To create a custom data format.


Paradox timestamp fields

See also

Paradox timestamp fields contain both time and date values. To enter today's date and the current time, press Spacebar repeatedly until Paradox enters the data. Rules for this field type are the same as those for date fields and time fields.


Paradox memo fields

See also

Use memo fields for text strings that are too long to store in an alpha field.

Memo fields can be virtually any length. The size value you assign refers to the amount of the memo Paradox stores in the table. This can be from 1 to 240 characters. Paradox stores the whole memo outside the table (in the .MB file). Paradox retrieves the data from the .MB file as you scroll through the records of the table. The amount of data a memo field contains is limited only by the disk space available on your system.

Tip:	If all your memos are smaller than a given size (for example, 200 characters), you can save space and time by setting the memo field size to be equal to or larger than this given size. You will still have an .MB file, but Paradox will not have to access it to display the field's data.

Memo fields can contain letters, numbers, special symbols (such as %, &, #, and =), or any other printable ASCII character (except null). You can enter line breaks, tabs and other print control characters in memo fields.

Controlling the display of memo data

In viewing a table with memo fields, you can use the Complete Display setting of the Run Time property to control the display of memo data. First, display the Text properties: Press Shift+F2 to enter Memo View, then right-click, choose Properties, and choose the Run Time page tab. Then,

Check Complete Display if you want to see all the record values displayed all the time.

Uncheck Complete Display if you want to see only the value of the current field. Tip: This lets you move through the records of the table more quickly.


Paradox formatted memo fields

See also

Paradox formatted memo fields are like memo fields except you can format the text. Paradox recognizes text attributes (typeface, style, color and size) and stores them with the text.

To define a field as a formatted memo field, use the Create Paradox Table dialog box or the Restructure Paradox Table dialog box:

Uncheck Complete Display to see only the value of the selected field. Paradox shows you one record's value at a time as you move through the table.

Check Complete Display to see all the record values displayed all the time.

Note:	In viewing a table with formatted memo fields, you can move through the records faster if you right-click the field, choose Properties, then choose and uncheck Complete Display.


Paradox graphic fields

See also

Paradox graphic fields contain pictures. You can create graphics in a painting or drawing application, or scan in images.

You can select .BMP, .PCX, .TIF, .GIF, and .EPS file formats. When you paste a graphic into a graphic field, Paradox converts the graphic into the .BMP format.

Graphic fields do not require a size because they are not stored in the table, but in separate files.


Paradox OLE fields

See also

Use the OLE field to store different kinds of data, such as images, sound, documents, and so on. The OLE field provides you with a way to view and manipulate this data without leaving Paradox. See About OLE for more information.

You do not need to specify a size for OLE fields because they are not stored in the table, but in separate files.


Paradox logical fields

See also

Paradox logical fields contain values representing true or false (yes or no). By default, valid entries include "True" and "False" (case is not important).


Paradox autoincrement fields

See also

Paradox autoincrement fields contain long integer, read-only (non-editable) values. Paradox begins with the number 1 and adds one number for each record in the table.

Deleting a record does not change the field values of other records.

When creating a Paradox table, you can specify the starting number of an autoincrement field by specifying a minimum value for it. See About minimum and maximum values for more information.


Paradox binary fields

See also

Binary fields should be used only by Paradox application developers and advanced users who need to work with data that Paradox cannot interpret. Paradox cannot display or interpret binary fields, but ObjectPAL can access them. A common use of a binary field is to store sound.

Unlike bytes fields, binary fields do not require a size because they are stored in a separate file (the .MB file), not in the table.


Paradox bytes fields

See also

Bytes fields should be used only by Paradox application developers and advanced users who need to work with data that Paradox cannot interpret. Paradox cannot display or interpret bytes fields, but ObjectPAL can access them. A common use of a bytes field is to store bar codes or magnetic strips.

Unlike binary fields, bytes fields are stored in the Paradox table (rather than in the .MB file), allowing for faster access.


Paradox 4 field types

See also

The valid Paradox 4 field types and sizes are

Symbol	Size	Type

A	1 - 255	Alpha

N	Number

$	Money

D	Date

S	Short

M	1 - 240*	Memo

F	0 - 240*	Formatted Memo

B	0 - 240**	Binary

G	0 - 240**	Graphic

O	0 - 240**	OLE

* Memo and formatted memo fields can be virtually any length. The size value you specify in the Create Table dialog box refers to the amount of the memo Paradox stores in the table (1 to 240 characters for memos and 0 to 240 characters for formatted memos). The whole memo is stored outside the table. For example, if you assign a size value of 45 to the field, Paradox stores the first 45 characters in the table. It stores the whole memo field in another file (with the extension .MB) and retrieves it as you scroll through the records of the table.

** Optional

Tip:	If all your memos are smaller than a given size (for example, 200 characters), you can save space and time by setting the memo field size equal to or larger than this size. Paradox stores the entire memo in the table if it is less than the given size.


Paradox 3.5 field types

See also

The valid Paradox 3.5 field types and sizes are

Symbol	Size	Type

A	1 - 255	Alpha

N	Number

$	Money

D	Date

S	Short


dBASE field types and sizes

See also

The valid dBASE field types and sizes are

Symbol	Size	Decimal Point	Type

C	1 - 254	Character (alpha)

F*	1 - 20	0 - 18, and <=Size - 2	Float (numeric)

N	1 - 20**	0 - 18, and <= Size - 2	Number (BCD)

D	Date

L	Logical

M***	Memo

O****	OLE

B****	Binary

*Available only in dBASE IV and later versions.

** For dBASE III+ tables, the size can be from 1 - 19

***Memo field formats differ between dBASE III+ and later versions of dBASE.

****Available only in dBASE for Windows and later versions


dBASE character fields

See also

dBASE character fields can contain any printable character (including blank spaces). The maximum size of a dBASE character field is 254.


dBASE float fields

See also

dBASE provides two ways to store numeric data. The float number type contains numeric data in a binary floating-point format. Use the float number type on fields that will not require precise calculations to be performed on them; some degree of precision is rounded or truncated during calculation. Float number fields are best used to contain whole numbers, or numbers of up to two decimal places.

The size of a dBASE float number field can be from 1 to 20.

Setting decimal places

You set the number of decimal places in the Dec column of the Field Roster in the Create/Restructure dialog box.

In the Dec column, you specify how many decimal places to store. Enter a number at least 2 less than the field size. This is because Paradox counts the decimal point and sign (if any) as part of the field size.


dBASE number fields

See also

dBASE number fields contain numeric data in a Binary Coded Decimal (BCD) format. Use number fields when you will need to perform precise calculations on the field data. Calculations on number fields are performed more slowly, but with greater precision than on float number fields.

The size of a dBASE number field can be from 1 to 20 (except for dBASE III+ tables, which can be from 1 to 19).

Setting decimal places

Set the number of decimal places in the Dec column of the Field Roster in the Create/Restructure dialog box.

In the Dec column, you can specify how many decimal places to store. Enter a number at least 2 less than the field size. This is because Paradox counts the decimal point and sign (if any) as part of the field size.


dBASE date fields

See also

Date fields contain dates. The default date entry and display format is Windows Short (which uses the short date format you defined from the Windows Control Panel International dialog box), but you can format dBASE date fields the same way you format Paradox date fields: right-click the field in either the table or design document you are using, then choose Properties and choose the Format page. The size for a date field is always 8.


dBASE logical fields

See also

Logical fields contain a single character representing True or False (Yes or No) values. In dBASE logical fields, logical true can be entered as T, t, Y, or y. Logical false can be entered as F, f, N, or n. The size for a dBASE logical field is always 1.

dBASE logical fields have the Logical Format choice on their menu. Choose it to choose what values to accept in the logical field. You will see a menu of your most recent formats (such as True/False or Male/Female).


dBASE memo fields

See also

dBASE memo fields contain blocks of text that are too large to be stored in a character field. The contents of memo fields are stored externally to the table. You do not specify a field size for dBASE memo fields.


dBASE OLE fields

See also

Use the OLE field to store different kinds of data, such as images, sound, documents, and so on. The OLE field provides you with a way to view and manipulate this data without leaving Paradox. See About OLE for more information. You do not need to specify a size for OLE fields because they are not stored in the table, but in separate files.


dBASE binary fields

See also

Binary fields should be used only by application developers and advanced users who need to work with data that Paradox cannot interpret. Paradox cannot display or interpret binary fields, but ObjectPAL can access them. A common use of a binary field is to store sound. Binary fields do not require a size because they are stored in a separate file (the .DBT file), not in the table.


dBASE record lock fields

See also

In a multiuser environment, each user can place record locks on a shared table. For example, if user JSMITH is editing record number 12 of Stock, user MBROWN cannot access that record until it is unlocked. This prohibits one user from unintentionally overwriting another user's work.

The dBASE table type gives you the Record Lock option to show you information about a locked record. If you check Record Lock, Paradox adds a hidden field to the table. This field shows you when a record was locked and by whom.

Note:	Although Paradox adds the Record Lock field to the table, you will not see it when you view the table. You see a record's Record Lock field only if you are locked out of that record.

Use the Create dBASE Table dialog box to create the Record Lock field for a dBASE table. Record Lock is not available for dBASE III+ tables.

The information you see when you find a locked field depends on the Info Size you specify. The Record Lock field can be from 8 to 24 characters. The default is 16.

The first two characters tell whether a user has changed the record.

The next three characters tell the time a user placed the lock.

The next three characters tell the date a user placed the lock.

The remaining 16 characters are optional. They tell the name of the user that placed the lock.

The default size of 16 displays the changed status of the record, the time and date of the lock, and the first 8 characters of the user who placed the lock.


Informix field types and sizes

See also

The following table list valid Informix field types and sizes. For detailed information on field types and sizes, see your Informix documentation.

Name	Size	Dec	Description

CHAR	1-32,769	Fixed-length character data

SMALLINT	Whole number -32,767 to +32,767

INTEGER	Integer -2,147,483,647 to +2,147,483,647

SMALLFLOAT	Single-precision floating-point number with approximately 8 significant digits

FLOAT	Single-precision floating-point number with up to 16 significant digits

MONEY	0-32	0-32	Fixed-point number with up to 32 significant digits

DECIMAL	0-32	0-32	Decimal floating-point number with up to 32 significant digits

DATE	Calendar date Jan 1, 1900 to Dec 31, 9999

DATETIME	Calendar date Jan 1, 0001 to Dec 31, 9999 and 24-hour time of day

INTERVAL	Span of time (year-month or day-time)

SERIAL	Sequential number up to 2,147,483,647 assigned automatically by the database server when a row is inserted

BYTE	Any type of binary data

TEXT	Variable-length character data to 2,147,483,647 bytes

VARCHAR	1-255	Variable-length character data

Note:	In Paradox you can create all Informix field types, and you can view and edit data in all fields except BYTE, CHAR > 255, and TEXT.


InterBase field types and sizes

See also

The following table list valid InterBase field types and sizes. For detailed information on field types and sizes, see your InterBase documentation.

Name	Size	Dec	Description

SHORT	Integer -32,768 to +32,767

LONG	Integer -2,147,483,647 to +2,147,483,647

FLOAT	Floating-point number with up to 7 digits of precision

DOUBLE	Floating-point number with up to15 digits of precision

CHAR	0-32,767	Fixed-length character data

VARCHAR	0-32,767	Variable-length character data

DATE	Calendar date Jan 1, 0100 to Dec 11, 5941

BLOB	Any type of binary data

ARRAY	You cannot create an ARRAY field

Note:	In Paradox you can create all InterBase field types except ARRAY, and you can view and edit data in all fields except BLOB.


Oracle field types and sizes

See also

The following table list valid Oracle field types and sizes. For detailed information on field types and sizes, see your Oracle documentation.

Name	Size	Dec	Description

CHAR	1-255	Fixed-length character data

RAW	1-255	Binary data to 255 bytes

DATE	Calendar date Jan 1, 4712 BC to Dec 31, 4712 AD and 24-hour time of day

NUMBER	0-38	Floating-point number with up to 38 digits of precision

LONG	Variable-length character strings up to 2 gigabytes ((2**32)-1 bytes)

LONG RAW	Binary data up to 2 gigabytes

FLOAT	Floating-point number with up to 38 digits of precision

VARCHAR2	1-2000	Variable-length character data

VARCHAR	1-255	Variable-length character data

Note:	In Paradox you can create all Oracle field types, and you can view and edit data in all fields except LONG, LONG RAW, and RAW.


Sybase field types and sizes

See also

The following table list valid Sybase field types and sizes. For detailed information on field types and sizes, see your Sybase documentation.

Name	Size	Dec	Description

CHAR	1-255	Fixed-length character data

VARCHAR	1-255	Variable-length character data

INT	Integer -2,147,483,647 to +2,147,483,647

SMALLINT	Integer -32,768 to +32,767

TINYINT	Integer 0 to 255

FLOAT	8-byte floating-point number

MONEY	-922,337,203,685,477.5808 to +922,337,203,685,477.5808

TEXT	Variable-length character data up to 2,147,483,647 bytes

BINARY	1-255	Fixed-length binary data up to 255 bytes

VARBINARY	1-255	Variable-length binary data up to 255 bytes

IMAGE	Variable-length binary data 0 to 2,147,483,647 bytes

BIT	Either 0 or 1. Cannot be NULL. Integer values other than 0 or 1 are interpreted as 1

DATETIME	Calendar date Jan 1, 1753 to Dec 31, 9999 and 24-hour time of day

TIMESTAMP	Binary timestamp

REAL	4-byte floating-point number

SMALLMONEY	-214,748.3648 to +214,748.3647

SMALLDATETIME	Calendar date Jan 1, 1900 to Jun 6, 2079 and 24-hour time of day

Note:	In Paradox you can create all Sybase field types, and you can view and edit data in all fields except BINARY, IMAGE, TEXT, TIMESTAMP, and VARBINARY.


About keys and indexes in tables

See also

An index is a file that determines the order in which Paradox accesses the records in a table. Paradox, dBASE, and SQL tables use indexes to organize the records in a table, but their indexes work differently.

Indexes can be primary or secondary. In Paradox, the primary index is also called the key.

Paradox

Paradox organizes the records of a keyed table according to the values in the key field(s). This is its primary index. By default, all indexes organize and access data in ascending order (A to Z, or 0 to 9).

When a composite key is defined for a table, Paradox creates a primary composite index, which organizes the records by the first field of the key (according to the table's structure), then the next, and so on.

In Paradox tables, a secondary index defines an alternate view order to temporarily change the display order of the records. The physical location of the records in the table does not change.

Secondary indexes are also used for queries, to speed performance, and to establish links between tables. For more information on secondary indexes, see About secondary indexes.

dBASE

dBASE uses an index to organize the records in a table according to the values in one or more fields.

SQL

SQL tables use unique and non-unique indexes, but they do not use the primary keys that Paradox tables use. You can create multiple indexes for an SQL table; for each index, you specify whether it is unique or non-unique. SQL indexes, unlike Paradox and dBASE indexes, are always maintained.

You can use Paradox to create and modify indexes on SQL tables, but you cannot specify which index to use in Paradox.

When you use an SQL table in Paradox, the table should have a unique index. If it does not have a unique index and you edit the table's data, you may not be able to view the edits as you are making them.


About primary indexes (keys)
About primary indexes (key fields)

See also

A Paradox table's key establishes the primary index and sort order for the table.

Paradox organizes the records of a keyed table according to the values in the key of the table. These fields, which make up the table's key, are its primary index.

By default, all indexes organize and access data in ascending order (A to Z or 0 to 9). By creating a key field, you tell Paradox to organize the table by the values in that field. Changing the key changes where Paradox physically stores each record in the table.

A key requires each value in the field(s) that defines the key to be unique. For example, if the Customer No field is identified as the key of the Customer table, each value in the Customer No field must be unique. Likewise, if the Order No and Stock No fields are identified as the key of the Lineitem table, the field values (taken as an ordered group) must be unique. This guards against duplication of data within the table.

The key for a table must be the first field or group of fields in the Field Roster.

When you use an autoincrement field type as the table's key, Paradox automatically creates a unique value for each record in the table.

Keys are required for most types of table links and for using Paradox data integrity features.

Keys are also used to speed up queries, searches, and locates for Paradox tables. If a key is a composite key, Paradox only uses the first field of the key to speed up such operations.

A primary index from a composite key

If you identify more than one field as keyed, it is known as a composite key. These fields, taken as a group, must be unique for each record of the table. When you define a composite key, Paradox creates a primary composite index, which organizes the records by the first field of the key (according to the table structure), then the next, and so on. For more information about composite keys, see Composite key fields.


Rules for defining key fields

See also

Follow these rules when you define a key:

A table can have only one key. This key can be made up of one or more fields.

Keys cannot contain memo, formatted memo, graphic, OLE, binary, logical, or bytes fields.

If a key is defined as a single field, that field must be the first field in the Field Roster.

If you identify more than one field as keyed, you create a composite key. These fields, taken as a group, must be unique for each record of the table. The composite key must begin on the first field in the Field Roster.


The effect of restructuring tables on key fields

See also

You might rearrange fields so that the key fields are no longer the first consecutive fields. When you click OK, Paradox alerts you to correct any violation of key field rules in the Restructure Table dialog box.

If you add keys to a table that was previously unkeyed or had different keys, you can cause a key violation: Data already entered into the table violates a rule established by the new key. Paradox writes the key-violating records to a special temporary table called Keyviol.

Records that are key violations are deleted from your table. You can change the records in the Keyviol table so they comply with the key requirements, then add them back to your original table using Tools|Utilities|Add.


Composite key fields

See also

A Paradox type table can have more than one field defined as a key field. The fields are treated as a group or composite. Composite key fields must be the first fields of the table.

Use composite key fields when there is no single field in a table where every value is unique.

When a table has a composite key field, duplicate values are allowed in an individual key field, as long as values are not duplicated across all key fields. In other words, the key fields, taken as a group, must uniquely identify a record.

Paradox sorts tables that have composite key fields by starting with the first field, then sorting on following fields.


To create a key

See also

To define a Paradox field as a key field,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	Select the Key column.

3.	Press the Spacebar or double-click to toggle on the key field marker.

Paradox displays an asterisk (*) in the Key column for that field.


To remove a key

See also

To remove a key from a field or group of fields,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	Select the Key column.

3.	Press the Spacebar or double-click to toggle on the key field marker.

Paradox displays an asterisk (*) in the Key column for that field.

Removing one or more fields from a composite key might cause duplicate values in the remaining field(s) of the key. Paradox places duplicate records in the temporary Keyviol table as discussed in The effect of restructuring tables on key fields.

If you remove a key located above other keys, an error message appears when you try to save the table structure. Make sure all key fields are the first fields in your table structure.


About secondary indexes

See also

A secondary index is a field or group of fields that you define as

An alternate sort order for the table

A field you can link the table on

A way to speed up certain search and locate operations

A table can have more than one secondary index. In fact, you can identify each field of the table as a secondary index, so you can sort the table on any of its fields. You can also create composite secondary indexes by combining two or more fields, up to a total of 1 fields.

You cannot create a secondary index on a memo, formatted memo, binary, OLE, graphic, logical or bytes field.

When you use a secondary index, you change only the view order of the records. The physical location of the records in the table does not change.

Paradox tables have these options for secondary indexes: Composite, Unique, Case-sensitive, Maintained, and Ascending/Descending. For details, see Types of secondary indexes.

Alternate sort orders

When sorting a keyed table, you must use a secondary index. Only an explicitly defined secondary index can override the primary sort order established by a table's key definition.

For example, if you sometimes want to view the Contacts table by First Name values, but need to keep the table's key intact, you can define a secondary index on First Name and use it to temporarily change the view order of the records. See Filter Tables dialog box for more information.

Linking tables

Secondary indexes are also used in linking Paradox tables.

For example, you may want to link the sample Customer and Orders tables so you can see the orders that each customer has placed. The Orders table has a secondary index identified on its Customer No field. This means Paradox can quickly find all the records with a given Customer No value. When you link the tables, Paradox identifies each Customer No value in Customer, then finds and displays all matching Customer No values in Orders. Using this linked relationship, you can create a form that lists each customer's orders.

In this multi-table form, the Customer and Orders tables are linked by their Customer No fields. As you scroll through Customer records, Paradox displays each customer's orders.

Search and locate operations

Paradox uses a secondary index to speed up some search and locate operations on Paradox tables if the index is:

Single-field

Case-sensitive

Maintained


Types of secondary indexes

See also

Paradox tables provide many different options for secondary indexes.

Composite

Composite secondary indexes use more than one field in a table. You can define a secondary indexes on a group of up to 16 fields. Composite indexes organize the data by the first field of the index first, then by the next field, and so on.

Unique

Unique secondary indexes determine whether records can have duplicate values in the secondary index field or fields. If Unique is checked and two or more records have the same value in the secondary index field, the attempt to define the secondary index fails. You can eliminate duplicate values and define the secondary index again.

Case-sensitive

Case-sensitive indexes use capitalization, or case, as a criterion for sorting. In a case-sensitive index, uppercase letters sort before lowercase letters.

Maintained

When a secondary index is maintained, Paradox automatically updates the index whenever you update the table. A table must have a key before you can create a maintained secondary index.

A non-maintained index is not automatically updated when you update the table, but you can open a non-maintained index for use on a table if the index is synchronized with the table. To do this, you use the Filter Tables dialog box to specify the index you want to use while working with a table.

When you choose to view a table with a non-maintained index, it is temporarily locked and cannot be updated. This is also true if you use the ObjectPAL methods setIndex() or switchIndex().

Ascending/Descending

You can specify either ascending or descending sort orders for secondary indexes on Paradox tables. Ascending indexes sort in the following ways:

Alpha fields sort characters in the order a, b, c, and so on.

Number, money, short, and long integer fields sort in the order 1, 2, 3, and so on.

Date, time, and timestamp fields sort in the order 12/1/95, 12/2/95, 12/3/95, and so on.

Note:	Unique and Descending indexes cannot be applied to tables saved in Paradox file types earlier than version 7.


To create secondary indexes

See also

To define a field or group of fields as a secondary index,

1.	Display the structure of the table in the Create Table dialog box or the Restructure Table dialog box.

2.	Select Secondary Indexes from the Table Properties drop-down list. The Define button becomes available and any existing secondary indexes appear.

3.	Choose Define to open the Define Secondary Index dialog box. The Fields list displays the fields you can use as a secondary index. BLOB fields are dimmed.

4.	Select the field you want to create the secondary index on, then choose the Add arrow or press Alt+A to move it to the Indexed Fields list.

5.	Check the Index Options you want: Unique, Descending, Case Sensitive, and Maintained. For a description of each option, see Define Secondary Index dialog box. (Note: You can only check Maintained if the table has a key.)

6.	Choose OK. Paradox automatically names case-sensitive indexes you create on a single field with the field's name. If you created a composite secondary index (using more than one field), you have to give the index a name in the Save Index As dialog box.

To create another secondary index, choose Define again. As you create secondary indexes, they are listed in the box below the Define button in the Create Table (or Restructure Table) dialog box.

Composite secondary indexes

To create a composite secondary index, follow the same steps, except add more than one field to the Indexed Fields list in step 4. For details, see About composite secondary indexes and To create a composite secondary index.


To modify a secondary index

See also

To modify a secondary index,

1.	Display the structure of the table in the Create Table dialog box or the Restructure Table dialog box.

2.	Select Secondary Indexes from the Table Properties drop-down list.

3.	Select the index you want to modify in the list below the Define button.

4.	Choose Modify.

The Define Secondary Index dialog box opens with the selected index specification filled in. Change the specifications to what you want, then choose OK.


To delete a secondary index

See also

To delete a secondary index,

1.	Display the structure of the table in the Create Table dialog box or the Restructure Table dialog box.

2.	Select Secondary Indexes from the Table Properties drop-down list.

3.	Select the index you want to delete in the list below the Define button.

4.	Choose Erase.

The index is deleted.


About composite secondary indexes

See also

You can create a composite secondary index by adding more than one field to the Indexed Fields list in the Define Secondary Index dialog box.

Paradox creates the composite index in the order that the fields appear in the Indexed Fields list. When you use this index, Paradox sorts the table by the top field first, then by the next, and so on.


To create a composite secondary index

See also

To define a composite secondary index,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	Select Secondary Indexes from the Table Properties drop-down list. The Define button becomes available and any existing secondary indexes appear.

3.	Choose Define to open the Define Secondary Index dialog box. The Fields list displays the fields you can use as a secondary index. BLOB fields are dimmed.

4.	Select each field you want to include in the index, then choose the Add arrow or press Alt+A to move it to the Indexed Fields list.

Paradox creates the composite index in order of the Indexed Fields list. When you use the index, Paradox sorts the table by the top field first, then by the next, and so on.

5.	Check the Index Options you want: Unique, Descending, Case Sensitive, and Maintained. For a description of each option, see Define Secondary Index dialog box. (Note: You can only check Maintained if the table has a key.)

6.	Choose OK.

Paradox displays the Save Index As dialog box.

7.	Enter a name for the index and choose OK.


To add a field to a composite secondary index

See also

A composite secondary index can have up to 16 fields.

To add a field to a composite secondary index,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	Select Secondary Indexes from the Table Properties drop-down list.

3.	Select the index that you want to change, then click Modify to open the Define Secondary Index dialog box.

4.	Select the field you want to include in the Fields list, then choose the Add arrow or press Alt+A to move it to the Indexed Fields list.

Paradox adds the field below the selected field in the Indexed Fields list.


To remove a field from a composite secondary index

See also

To remove a field from a composite secondary index,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	Select Secondary Indexes from the Table Properties drop-down list.

3.	Select the index that you want to change, then click Modify to open the Define Secondary Index dialog box.

4.	Select the field you want to remove in the Indexed Fields list, then choose the Remove arrow or press Alt+R to move it to the Fields list.

To remove all fields from Indexed Fields, choose Clear All.


To rearrange fields in a composite secondary index

See also

To rearrange fields in a composite secondary index,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	Select Secondary Indexes from the Table Properties drop-down list.

3.	Select the index that you want to change, then click Modify to open the Define Secondary Index dialog box.

4.	Select the field you want to move in the Indexed Fields list, then use the Change Order arrows to move it up or down.


About dBASE indexes

See also

When working with dBASE tables, Paradox uses an index to organize the records in a table according to the values in one or more fields.

When you create an index on a dBASE table, Paradox creates a file that contains the indexed field's values and their corresponding record numbers. Paradox refers to the index file when locating and displaying the records in a table.

When you use an index on a dBASE table, the records appear in a different order. However, the records remain stored in the same physical location in which you originally entered them.

Although Paradox supports both .MDX files and .NDX files, it is recommended that you use a dBASE production index (the .MDX file which uses the table name as its file name) whenever possible. Although you can create non-production .MDX files as well as .NDX files, Paradox automatically maintains only the production index.


Maintained dBASE indexes

See also

You tell Paradox to automatically maintain a dBASE index in the Define Index dialog box.

When you check the Maintained option, Paradox updates the index every time the table changes. This speeds up certain operations like queries.

Paradox saves a maintained index as part of an .MDX file and gives the .MDX file the same name as the table. This is your production index. It is recommended that you use production indexes when working in Paradox.

When you save a maintained index, Paradox asks you for a tag name. The .MDX file can contain several maintained index specifications.

Maintained is unavailable for dBASE III+ tables.

Non-maintained indexes are assigned the .NDX file extension. You cannot have a production .NDX file.

You must use the Filter Tables dialog box to open a non-maintained index each time before you edit data in the table. Otherwise the non-maintained index will become unsynchronized with the table, and thus unusable.

You cannot restructure a non-maintained index.


Creating a dBASE expression index

See also

Expression indexes are useful for creating a multi-field (composite) index on a dBASE table.

You create an expression index on a value that you express using any formula that results in a value, using dBASE expression syntax. For example, you could create an expression index such as FIRST_NAME + LAST_NAME, where both FIRST_NAME and LAST_NAME are field names and of the same data type.

Some elements of dBASE expressions are not allowed; for example, memory variables, user-defined functions, macro substitution, and references to fields in other tables.

You create an expression index on a dBASE table from the Create Table dialog box or the Restructure Table dialog box.

Follow the instructions in To create an index on a dBASE table.

To use field names in an expression index, position the insertion point in the appropriate text box and click the field you want in the Field list.

For example, to create the expression index FIRST_NAME + LAST_NAME, click the Expression Index button to position the insertion point in the Expression Index text box, then click FIRST_NAME in the Field list. FIRST_NAME appears in the text box. Enter + and click LAST_NAME in the Field list.


Creating a subset condition expression

See also

A subset condition expression (also called a filter) is an expression that evaluates to true or false. Paradox creates for a dBASE table an index that points only to values that meet the filter's requirements. For example, if you create the subset condition expression State=CA, you tell Paradox to create an index on those values in the State field that match the value CA.

You create a subset condition expression on a dBASE table from the Create Table dialog box or the Restructure Table dialog box.

Follow the instructions in To create an index on a dBASE table.

To create a subset condition expression, enter the expression in the Subset Condition (filter) Expression text box.

To use field names in a subset condition, position the insertion point in the appropriate text box and click the field you want in the Fields list. For example, to create the expression index FIRST_NAME + LAST_NAME, position the insertion point in the Subset Condition (filter) Expression text box, then click FIRST_NAME in the Fields list. FIRST_NAME appears in the text box. Enter + and click LAST_NAME in the Fields list.


To create an index on a dBASE table

See also

To define a field or group of fields as an index,

1.	Display the structure of the table in the Create dBASE Table dialog box or the Restructure dBASE Table dialog box.

2.	Select Indexes from the Table Properties drop-down list.

3.	Choose Define to open the Define Index dialog box. The Fields list displays the fields you can use in the index.

4.	Select the field you want to create the index on from the Field list. Paradox adds it to the Indexed Field box.

5.	Check the options you want: Unique, Maintained, or Descending.

See the Define Index dialog box for a description of these options.

6.	If you want an expression index, click Expression Index and add an expression in the Expression Index box.

To use field names in an expression index, position the insertion point in the appropriate text box and click the field you want in the Fields list.

For example, to create the expression index FIRST_NAME + LAST_NAME, position the insertion point in the Expression Index text box, then click FIRST_NAME in the Fields list. FIRST_NAME appears in the text box. Enter + and click LAST_NAME in the Fields list.

See Creating a dBASE expression index for more information.

7.	Type in a Subset Condition (filter) Expression if you want one.

You can enter fields as described in step 6.

See Creating a subset condition expression for more information.

8.	Choose OK to open the Save Index As dialog box, where you can enter an Index File Name and Index Tag Name.


About borrowing structures

See also

Sometimes you might want to create a new table that is similar (or identical) in structure to an existing table. You can borrow the structure from the existing table and change it to meet your needs.

In addition to borrowing the structure of a table, you can also borrow its primary or secondary indexes, its validity check definitions, its referential integrity, its table lookup definitions, or any combination of these options. Use the Options settings in the Select Borrow Table dialog box to specify the definitions you want to borrow with the table.

If you borrow a table's key (the Primary Index option) you must make sure that the keyed field is the first field in the new table's Field Roster.


To borrow a table structure

See also

When creating a table, you can borrow the structure of another table. You must begin from a blank table structure to borrow another table's structure.

To borrow a table structure,

1.	In the Create Table dialog box, choose Borrow.

Paradox opens the Select Borrow Table dialog box, which shows you a list of tables in the current directory (by default, the working directory). The list includes only table types that match the type of table you are creating.

2.	Select the source table from the list.

To borrow from a table not in the current directory, you can choose another directory in the Look In list box. For an explanation of the icons next to the list box, see Select Borrow Table dialog box.

If the directory you want has an alias, you can choose it in the Alias drop-down list.

3.	In the Options area, specify any table properties you want to borrow.

4.	Choose Open.

Paradox puts a copy of the selected table's structure in the field specification area of the Create Table dialog box. You can now add data or change the borrowed structure.


About validity checks

See also

In Paradox tables, validity checks are rules imposed on a field to ensure that the data entered in the field meets certain requirements. The way you define a validity check determines what can be entered in a field. Paradox provides five kinds of validity checks:

Validity check	Meaning

Required field	Every record in the table must have a value in this field.

Minimum	The values entered in this field must be equal to or greater than the minimum you specify here.

Maximum	The values entered in this field must be less than or equal to the maximum you specify here.

Default	The value you specify here will be entered in this field automatically, if no other value is entered.

Picture	You specify a character string that acts as a template for the values that can be entered in this field.

When you save a table, Paradox saves validity checks in a file with the table's name and the .VAL file extension.


To create validity checks

See also

When you select a field in the Field Roster, Paradox shows its validity checks down the right side of the window. As you select fields, the validity checks change to reflect the constraints for the selected field.

To specify a validity check,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	In the Field Roster, select the field for which you want to define a validity check.

3.	Select Validity Checks from the Table Properties drop-down list.

4.	In the panel below, enter the information for any validity checks you want. For details on each type of validity check, see About validity checks.


To view validity checks

See also

To view validity checks for a field,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box,

or

Right-click the table in the Project Viewer and choose Info Structure.

2.	In the Field Roster, select the field whose validity checks you want to view.

3.	Select Validity Checks from the Table Properties drop-down list.

4.	Current validity check values appear in the panel below the Table Properties drop-down list. For details on each type of validity check, see About validity checks.


To remove a validity check

See also

To remove a validity check,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	In the Field Roster, select the field for which you want to remove a validity check.

3.	Select Validity Checks from the Table Properties drop-down list.

4.	In the panel below, remove any validity checks you want. For details on each type of validity check, see About validity checks.


Example of creating validity checks

See also

Suppose you want the default value of the State/Prov field in Customer.db to be CA. To specify this default value validity check,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	In the Field Roster, select the State/Prov field.

3.	Select Validity Checks from the Table Properties drop-down list.

4.	Type CA in the Default text box.

When you insert a new record in the table, Paradox automatically enters the value CA in the State/Prov field. You can move to the field and edit the value if you want.


About required fields

See also

You can define required fields for Paradox and SQL tables.

A required field must contain data before the record is inserted into the table. Paradox checks that the required field constraint has been met when the record is posted.

If you enter a record in a table that doesn't have a value in a required field, Paradox informs you that the validity check has failed. You can't move off the record or leave Edit mode until you've entered a value in the required field.

You can place a required field validity check on any field type.


To create required fields

See also

Paradox

To define a required field for a Paradox table,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	In the Field Roster, select the field you want to define as a required field.

3.	Select Validity Checks from the Table Properties drop-down list.

4.	Check the Required Field check box.

SQL

To define a required field for an SQL table, use the Create Table dialog box:

1.	In the Field Roster, select the field to be required.

2.	Click the Required Field check box.

Note:	To clear a required field definition in Paradox and SQL tables, click the Required Field check box to remove the check.


About minimum and maximum values

See also

Use a minimum-value validity check to define the minimum allowable value for a field. Use a maximum-value validity check to define the maximum allowable value for a field.

You can use minimum-value and maximum-value validity checks only for alpha, number, short, long integer, money, timestamp, time, and date field types. You can use only a minimum validity check on an autoincrement field. You cannot use minimum-value and maximum-value validity checks on BC dates; instead, you can define a picture validity check on BC dates.

You can specify an initial value for an autoincrement field using a minimum validity check. Enter the initial field value in the Minimum text box. You can do this only when creating a new table.


To create minimum and maximum values

See also

To specify a minimum or maximum value for a field,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	In the Field Roster, select the field.

3.	Select Validity Checks in the Table Properties drop-down list.

4.	Type the minimum or maximum value in the edit box. To define a range, enter both minimum and maximum values.

When you define a numeric minimum or maximum, you must use the number format currently selected in the Windows Control Panel. During data entry, however, you can use any format and the validity check still works.


About default values

See also

Paradox automatically enters the value you define as a field's default in each record of the table as soon as you insert the record. For example, if most of your customers are located in the United States, you can define USA as the default value for the Country field in Customers. When you insert a new record, it appears with the value USA already in the Country field.

You can override the default value by moving to the field and typing a different value. You can also delete the default value and leave the field blank, unless it also has a required-field validity check.

You can use default value validity checks for alpha, number, short, long integer, money, logical, and date field types (including date, time, and timestamp).


To create default values

See also

To specify a default value for a field,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	In the Field Roster, select the field.

3.	Select Validity Checks from the Table Properties drop-down list.

4.	Type the default value in the edit box.

When you enter numeric values as a default, you must use the number format currently selected in the Windows Control Panel.

You can use the TODAY operator to define today's date as the default value in a date field.


About pictures

See also

A picture acts as a template that formats the value you enter in a field.

For example, if you specify the picture (###)###-### (a common template for U.S. phone numbers) and enter the value (4085551234, Paradox formats the value into (408)555-1234. For other examples, see Examples of pictures.

You can choose a standard picture when creating a validity check, or create a custom picture. For instructions, see To use standard pictures and To create custom pictures.

See Picture string characters for a table of the characters you can use in a picture and their meanings. If you use any printable (visible) character in a picture string different from those listed in the table, Paradox treats it as a constant.

When you enter a value in a field that has a picture validity check, and you come to a point at which a constant is specified, Paradox automatically enters the constant. For example, if you create the picture (408)###-#### and then type (5551234 in the field, Paradox inserts (408)555-1234 in the table.

If you create a picture validity check when restructuring a table that contains data, Paradox does not reformat existing data to match the picture nor validate existing data to check that it matches.

Note:	You can also specify pictures on field objects in design documents. However, if you specify a picture for the field in the table, as described in this help topic, you cannot specify one for a field object bound to that field.


Picture string characters

See also

You can use these characters in a picture string:

Character	Stands for

#	Numeric digit

?	Any letter (uppercase or lowercase)

&	Any letter (convert to uppercase)

~	Any letter (convert to lowercase)

@	Any character

!	Any character (convert to uppercase)

;	(semicolon) Interpret the next character as a literal, not as a special picture-string character.

*	Any number of repeats of the following character

[abc]	Optional characters a, b, or c

{a,b,c}	Optional characters a, b, or c


Examples of pictures

See also

Following are some examples of valid pictures. For more examples, use the Assist button as described in To use standard pictures.

Picture	Description

#&#&#&	Canadian postal code; for example, 1A2B3C

#####[-####]	U.S. postal code; for example, 12345 or 12345-6789

*!	Any entry; all letters will be in uppercase

{Yes,No}	Either "Yes" or "No"


To use standard pictures

See also

To specify a standard picture string for a selected field,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	In the Field Roster, select the field.

3.	Select Validity Checks from the Table Properties drop-down list.

4.	Choose Assist.

The Picture Assistance dialog box appears.

5.	Choose a picture from the Sample Pictures list.

A description of the picture appears in the message area of the dialog box.

6.	Choose Use to place the sample in the Picture text box.

7.	Choose OK.


To create custom pictures

See also

To create a custom picture,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	In the Field Roster, select the field.

3.	Select Validity Checks from the Table Properties drop-down list.

4.	Choose Assist.

The Picture Assistance dialog box appears.

5.	Do either of the following:

Select a picture from the Sample Pictures list and choose Use to place the sample in the Picture text box.

You can modify this standard template. If you make a mistake, choose Restore Original to return to the standard template you copied to the Picture text box.

Type the picture string characters in the Picture text box.

6.	Choose Verify Syntax to check the syntax of the picture you created.

If the syntax is correct, a message appears in the Picture Assistance dialog box.

7.	If you want, enter a value in the Sample Value text box and choose Test Value to test the picture.

8.	To keep the picture for reuse in other tables, choose Add To List. In the Save Picture dialog box, type a description for the picture in the Description text box. Then, choose OK.

The picture in the Picture text box is added to the Sample Pictures list.

9.	Choose OK to use the picture and close the dialog box.


About table lookups

See also

The table lookup feature lets you

Refer to another table to look up acceptable values for a field

Automatically copy values from the lookup table to the table you are editing (automatic fill in)

Require that the values you enter into a field exist in the first field of another table

When you specify a lookup table for a field, you are saying the field can contain only values that exist in the first field of another table you specify, the lookup table. You also specify whether the person entering data in the field will be allowed to see the lookup table and copy values from it, or will be required to match the lookup table's values without being able to see them.

The major advantage of table lookup is its ability to automatically enter correct values in your table. For information on using table lookup, see Rules for table lookups and To use table lookup.

The difference between table lookup and referential integrity

Table Lookup is primarily a data entry tool. It is provided to help enter data that already exists in another table. To establish a more powerful tie between two tables, define a referential integrity relationship. While table lookup ensures that data is copied accurately from one table to another, referential integrity ensures that the ties between like data in separate tables cannot be broken. For more information on referential integrity, see About referential integrity.


Rules for table lookups

See also

Follow these rules when setting up a lookup table:

The lookup table contains data you want to copy to another table. That data must be in the lookup table's first field.

The field that you're defining as a table lookup must be the same field type and size as the first field of the lookup table.

For best performance, the lookup table should be keyed. See About primary indexes (key) for more information.

You can use a table lookup across different directories. When you define table lookup on a table from a different directory, Paradox stores the full path to the table. If you move your lookup table to a different directory, you must recreate the same path or redefine the table lookup.


To create table lookups

See also

To specify a lookup table for a field,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	Select Table Lookup from the Table Properties drop-down list.

3.	Choose Define. The Table Lookup dialog box appears.

4.	In the Fields list, select the lookup field. Click the Add Field arrow [image] or press Alt+A. The field name appears in the Field Name box.

5.	In the Lookup Table panel, specify the name of the table to use as the lookup table. Choose Drive (or Alias) to choose an alias or your private directory, or choose Browse to open the Select File dialog box.

You can specify a table from a different directory, but you'll need to recreate the lookup if you ever move the lookup table (for details, see Rules for table lookups).

6. Click the Add Field arrow [image]. The field name of the first field in the lookup table appears in the Lookup Field box.

7.	Select the option you want in Lookup Type.

See Table Lookup dialog box for more information.

8.	Select the option you want in Lookup Access.

See Table Lookup dialog box for more information.


About referential integrity

See also

Referential integrity means that a field or group of fields in one table (the "child" table) must refer to the key of another table (the "parent" table). Only values that exist in the parent table's key are valid values for the specified field(s) of the child table.

Using referential integrity, Paradox checks the validity of a value before accepting it in the referential integrity table. For example, if you establish referential integrity between Customer and Orders on their Customer No fields, then enter a value in the Customer No field of Orders, Paradox searches the Customer No field of Customer and

Accepts the value in Orders if it exists in Customer

Rejects the value in Orders if it doesn't exist in Customer

Paradox lets you establish referential integrity for any file type that supports it. You cannot establish referential integrity between .DBF files, Paradox 3.5 tables, or tables that do not have a key. You can use .DB files and also some SQL server tables if you need referential integrity. See your server documentation to determine if your table type supports referential integrity.


Referential integrity and indexes

See also

When you create or modify a referential integrity relationship, Paradox creates an index on the referential integrity fields if it does not already exist.

Paradox names the index with the name of the field (if it's a single-field definition) or the name you gave the referential integrity (if it's a multiple-field definition). The index appears in the list of secondary indexes when you choose Secondary Indexes from the Table Properties list in the Create Table or Restructure Table dialog box.

If you delete the referential integrity, Paradox does not automatically delete this index. You must delete it manually.


Self-referential integrity

See also

A referential integrity relationship between a field in a table and the same table's key field is called a self-referential integrity relationship.

For example, suppose you are using a table of employees keyed on the Employee ID field. If this table has a Supervisor field, you may want to create a self-referential integrity relationship between Supervisor and Employee ID, because the supervisors are also employees.

When you create a self-referential integrity relationship,

You must use the Prohibit update rule in the Referential Integrity dialog box.

You cannot create a circular reference. That is, you cannot create a relationship in which a field refers to itself.


Referential integrity guidelines

See also

Follow these guidelines when you establish referential integrity:

You can establish referential integrity only between like fields that contain matching values.

For example, you can establish referential integrity between the sample Customer.db and Orders.db tables on their Customer No fields. The field names do not matter as long as the field types and sizes are identical.

You can establish referential integrity only between tables in the same directory.

The referential integrity parent table must be keyed.

If you define referential integrity on a table that already contains data, some existing values may not match a value in the parent's key field. When this happens, Paradox places the existing records that do not match into the temporary KEYVIOL table in your private directory.


To create referential integrity

See also

To define a referential integrity relationship,

1.	Display the structure of the referential integrity child table in the Create Paradox Table or the Restructure Paradox Table dialog box.

2.	Select Referential Integrity from the Table Properties drop-down list.

3.	Choose Define to open the Referential Integrity dialog box.

4.	Select a referential integrity parent table from the Table list and click the Add Field arrow.

The table's key field appears in the Parent's Key box.

5.	Select the child table's field in the Fields list and click the Add Field arrow.

The field name appears in the Child Fields box.

If you choose a field that is not the same logical type as the parent's key field, Paradox displays a message and doesn't add the field. In most cases, this means the field types must be identical; however, autoincrement and long integer are of the same logical type.

If you make a mistake and add the wrong field, click the Remove Field arrow or press Alt+R.

If the parent table has a composite key, add fields to match all of the parent's key fields.

6.	Select the update rule you want.

7.	Specify whether you want to use strict referential integrity.

8.	Choose OK to display the Save Referential Integrity As dialog box.

9.	Complete the dialog box and choose OK.


To change referential integrity

See also

You can change the following attributes of a referential integrity relationship:

The update rule

The Strict Referential Integrity setting

Paradox must obtain locks on all tables involved in a referential integrity relationship when you modify it.

To change a referential integrity relationship,

1.	Choose Tools|Utilities|Restructure.

Paradox displays the Select File dialog box.

2.	Enter the name of the referential integrity child table in the File Name field, or use the dialog box to navigate to it, then choose OK.

Paradox displays the Restructure Table dialog box.

3.	Select Referential Integrity from the Table Properties drop-down list.

Paradox displays the referential integrity relationships in the list box on the right.

4.	Select the relationship you want to change, then choose Modify.

Paradox displays the Referential Integrity dialog box.

5.	Make the desired changes, then choose OK to close the Referential Integrity dialog box and return to the Restructure Table dialog box.

6.	Choose Save to save the new table structure and to close the Restructure Table dialog box.


To delete referential integrity

See also

To delete a referential integrity relationship,

1.	Choose Tools|Utilities|Restructure.

Paradox displays the Select File dialog box.

2.	Enter the name of the referential integrity child table in the File Name field, or use the dialog box to navigate to it, then choose OK.

Paradox displays the Restructure Table dialog box.

3.	Select Referential Integrity from the Table Properties drop-down list.

Paradox displays the referential integrity relationships in the list box on the right.

4.	Select the relationship you want to delete, then choose Erase.

Paradox deletes the referential integrity relationship.

5.	Choose Save to save the new table structure and to close the Restructure Table dialog box.


About password security

See also

You can ensure that the table you create is protected from access by unauthorized users. This is especially important in a multiuser environment. Not only can you establish a password for the table as a whole, you can assign specific rights to the table or individual fields.

Once you specify password security, only those users who know the password can access the table. This includes you, so do not forget your password! Whenever users try to access a password-protected table, Paradox prompts them to supply the password (if they haven't already done so).

Types of passwords

Paradox provides two types of passwords:

Master passwords control all access to an entire table. You must specify a master password before creating additional access restrictions.

Auxiliary passwords provide different levels of access privileges for different users in a group.

Typically, one person [image] such as a database administrator [image] has access to master passwords. A group of users who need to perform different tasks with the table have different auxiliary passwords that provide different levels of access.


Using passwords

See also

You can define passwords for your tables from the Create Paradox Table dialog box or the Restructure Paradox Table dialog box. When you try to open a password-protected table, Paradox prompts you for the password. You must enter the password to open the table.

Suppose you close the table, then attempt to open it again. If you have not exited Paradox, you will be allowed to open the table without giving the password another time. Paradox remembers that you accessed the table previously and opens the table again. Paradox releases all passwords when you exit the program.

Releasing passwords

To release a password without exiting Paradox, choose Tools|Utilities|Passwords. The Enter Password(s) dialog box opens.

Enter the password you want to release from Paradox's memory in the Password text box. Asterisks (*) represent the characters you type. Choose Remove to remove this password from Paradox's memory. You will be required to give the password the next time you open the table.

You can choose Remove All to remove all passwords from Paradox's memory. This means any table you have opened using a password, then closed, will again be protected. (Tables that are still open are not affected.)

Using one password for several tables

If you assigned the same password to several tables, you can use the Enter Password(s) dialog box to give Paradox the password once to access all applicable tables. Type the password and choose Add or OK (or press Enter).


To create a master password

See also

To create a master password,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	Select Password Security from the Table Properties drop-down list.

3.	Choose Define.

The Password Security dialog box appears.

4.	Type the password you want in the Master Password text box. You'll see asterisks (*) representing the characters you type. A password can be from 1 to 15 characters long and can contain spaces. Passwords are case-sensitive.

5.	Verify the password by typing it again in the Verify Master Password text box. Again, you'll see asterisks in place of the characters you type.

6.	Choose OK.

If the two passwords are identical, Paradox saves the password and closes the Password Security dialog box.

If the two passwords aren't identical (including capitalization), you'll see an error message prompting you to enter either one of them again.

If you want more specific security, you can choose Auxiliary Passwords from the Password Security dialog box.

You can assign the same password to several tables. For details, see Using passwords.


To change a master password

See also

To change a master password,

1.	Display the structure of the table in the Restructure Paradox Table dialog box.

2.	Select Password Security from the Table Properties drop-down list.

3.	Choose Modify.

The Password Security dialog box appears.

4.	Choose Change.

5.	Type the new password in the Master Password text box.

6.	Verify the password by typing it again in the Verify Master Password text box.

7.	Do either of the following:

Accept the new password by choosing OK.

Cancel the new password and restore the previous one by choosing Revert, then choose Cancel to close the Password Security dialog box.


To delete a master password

See also

To delete a master password,

1.	Display the structure of the table in the Restructure Paradox Table dialog box.

2.	Select Password Security from the Table Properties drop-down list.

3.	Choose Modify.

The Password Security dialog box appears.

4.	Choose Delete.

5.	Choose OK to close the Password Security dialog box.


About auxiliary passwords

See also

Auxiliary passwords use table rights and field rights to provide different levels of access privileges for different users in a group.

Table rights determine the overall level of access to a table.

Field rights determine the level of access to an individual field within the table.

The type of table rights you specify for a user determines the type of field rights you can specify for that user, as shown in the following table:

Table rights	Possible field rights

All	All

Insert & Delete	All

Data Entry	All, Read Only, or None

Update	All, Read Only, or None

Read Only	All, Read Only, or None


To create an auxiliary password

See also

To specify an auxiliary password,

1.	Choose Auxiliary Passwords in the Password Security dialog box.

2.	Type the auxiliary password you want to assign in the Current Password text box.

3.	Select the level of table rights for the password from the Table Rights panel.

4.	Select a field in the Field Rights panel, then click the Field Rights button to assign the field rights (All, Read Only, or None) for the password.

5.	Choose Add to place the password in the Passwords list.

If you want to clear the auxiliary password and start over, choose New.

6.	Repeat the process to specify as many auxiliary passwords as you need.

7.	Choose OK to save the auxiliary passwords and return to the Password Security dialog box.


To change an auxiliary password

See also

To change an auxiliary password,

1.	Choose Auxiliary Passwords in the Password Security dialog box.

2.	Select the password you want to change in the Passwords list.

3.	Choose Change.

The password moves into the Current Password box, and its definition appears.

4.	Make the modifications to the password.

5.	When you are done modifying the password, do either of the following:

Choose Accept to accept the changes and place the password back in the Passwords list.

Choose Revert to cancel the changes and place the password back in the Passwords list.

6.	Choose OK to save the auxiliary passwords and return to the Password Security dialog box.


To delete an auxiliary password

See also

To delete an auxiliary password,

1.	Choose Auxiliary Passwords in the Password Security dialog box.

2.	Select the password you want to delete in the Passwords list.

3.	Choose Delete.

The password is removed from the Passwords list.

4.	Choose OK to save the auxiliary passwords and return to the Password Security dialog box.


About table language drivers

See also

A table's language driver determines the table's sort order and available character set. You choose a default language driver for Paradox and dBASE tables from the BDE Configuration Utility. (Refer to the BDE Configuration Utility Help system for more information.)

Paradox uses table language drivers to:

Open any Paradox table with the correct language driver. This includes opening tables with different language drivers in the same Paradox session.

Open dBASE tables with the correct language driver.

Create tables generated by copy operations using the language driver of the copied table.

Create tables generated by import operations with the default language driver of the file format (Paradox or dBASE).

Determine the language driver of a query's Answer table using the language driver of the first (topmost) query image in the query.


To choose a table language driver

See also

A table's language driver determines the table's sort order and available character set.

Caution:	If you change a table language driver when restructuring a table, you risk losing special characters in the table.

To change the default table language driver,

1.	Display the structure of the table in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box.

2.	Select Table Language from the Table Properties drop-down list.

3.	Choose Modify.

The Table Language dialog box appears.

4.	Choose the language driver that you want to use from the Language drop-down list.

5.	Choose OK to close the Table Language dialog box.


About restructuring tables

See also

You can change the structure of a table with the Restructure Table dialog box, even if the table already has data in it.

The Restructure Table dialog box lets you:

Add fields

Delete fields

Rearrange field order

Change field types

Change field sizes

Change indexes

Borrow the structure of an existing table

In addition, when you restructure a Paradox table you can:

Change the key, lookup tables, validity checks, secondary indexes, and referential integrity (even if you do not change the basic table structure)

Establish table language drivers, and passwords

Before restructuring a table, make sure no forms or reports are running that use the table in their data model. If you or any other user (in a multiuser environment) have such a document open, you will not be able to restructure the table.

When fields are removed from a table, any corresponding field objects in forms or reports become undefined. When you return to the form or report, you can redefine them.

If you want to rename a table but not restructure it, use Tools|Utilities|Rename.


Restructuring on a network

See also

When you restructure a table on a network or with more than one session of Paradox open, Paradox automatically places a lock on the table. This means other users cannot access the table during the restructuring.

If another application has started an operation using the table you want to restructure, you cannot begin restructuring until that application finishes working with the table.


Restructure warnings

See also

When you restructure a table, you might make changes that could result in a loss of data. Changes such as shortening field sizes, creating validity checks, or changing field types can cause existing data to become invalid. Whenever this is the case, Paradox opens the Restructure Warning dialog box, upon leaving the Restructure Table dialog box.


Temporary tables created when restructuring

See also

Restructuring sometimes results in the creation of temporary tables, such as a Problems table, that Paradox uses to store records that are incompatible with the table as you've restructured it.

Paradox numbers these temporary tables consecutively (up to 99) and stores them in your private directory. For example, if you restructure twice, and both operations cause data loss, Paradox creates both a Problems and a Problem1 table.

Temporary tables are deleted at the end of a session. If you do not want a temporary table deleted at the end of a session, you must rename it. All temporary tables are stored in your private directory (:PRIV:).

Keyviol

If you add a primary key to a table that was previously unkeyed or had different keys, you might cause key violations. This means data already entered into the table violates the rules established by the new key. Paradox moves the key-violating records to a temporary table called Keyviol, located in your private directory.

Paradox deletes key-violating records from your table. You can change the records in Keyviol so they comply with the key requirements, and then add them back to your original table using Tools|Utilities|Add.

For more information see The effect of restructuring tables on key fields.


Rules for restructuring

See also

Follow these rules when restructuring a table:

You cannot change a table's type. For example, you cannot change a Paradox table into a dBASE table when you restructure. You can choose Tools|Utilities|Copy to copy a table of one type into a table of another type.)

If you restructure a table that was created in Paradox for DOS in such a way that Paradox must convert it to a Paradox for Windows table, the Restructure Warning dialog box warns you of the conversion and asks you to confirm it.

If you add a primary key to a table that was previously unkeyed or had different keys, you might cause key violations. This means data already entered into the table violates the rules established by the new key. Paradox moves the key-violating records to a temporary table called Keyviol, located in your private directory.

If there is already a Keyviol table, Paradox adds a number to the new temporary table, so it might appear as Keyviol1 or Keyviol2. Paradox can create up to 100 temporary tables of the same name (the first is not numbered and the last is number 99).

Paradox deletes key-violating records from your table. You can change the records in Keyviol so they comply with the key requirements, and then add them back to your original table using Tools|Utilities|Add.

For more information see The effect of restructuring tables on key fields.

If you change a field's type, and Paradox cannot convert some of the data in the field to the new type, Paradox prompts you to confirm the change. If you do, Paradox moves the records containing data that could not be converted into a special temporary table called Problems.

You can change the records in Problems so they comply with the new structure of the table, and then add them back into the table using Tools|Utilities|Add.

If you decrease a field's size, Paradox prompts you to trim existing data in the Restructure Warning dialog box. If you choose not to trim data, Paradox moves the records containing data that does not fit in the new field size to the Problems table.

If you add or change a validity check, you have the option of enforcing the new validity check on existing data (make this choice from the Restructure Warning dialog box). If you choose to enforce the new validity check on existing data, and any data that does not comply with it, Paradox places the non-compliant data in the Keyviol table. Paradox does not do this if the validity check is a picture. You can change the records in Keyviol and then add them back to the table using Tools|Utilities|Add.

If you add a new field that has a default validity check on it, and choose to enforce the validity check on existing data, Paradox creates the new field and places the default value in each record of the table. If you define a default validity check on an existing field that contains data, Paradox does not overwrite the existing data with the new default value.

If you change a table's language driver when restructuring a table, you risk losing any special characters that may exist in the table. Paradox converts table structure information such as field names and index names, but not the data in the table. To convert the data in a table:

You can create a new table by choosing Save As from the Restructure Table dialog box.

Choose Tools|Utilities|Add and add the records to the new table.


To restructure a table

See also

1.	Open the Restructure Table dialog box, using one of these techniques:

From the Project Viewer, click the Tables icon, select a table, then right-click and choose Restructure.

From the Table window, choose Table|Restructure.

From the Desktop, choose Tools|Utilities|Restructure, then specify the table name in the Select File dialog box and choose Open.

2.	Change any field and key information you want to change.

3.	Change any table properties you want to change.

Note: If you want, you can borrow a table structure from an existing table. Choose Borrow in the Restructure Table dialog box. For details, see About borrowing structures.

4.	When all restructuring changes are complete, choose Save to save the table.

You can choose Save As to save the restructured table with a different name.

Note:	For more information about the settings you can change when restructuring, see the dialog box topic for the type of table you are restructuring:

Restructure Paradox Table dialog box

Restructure dBASE Table dialog box

Restructure INTRBASE Table dialog box

Restructure INFORMIX Table dialog box

Restructure ORACLE Table dialog box

Restructure SYBASE Table dialog box

Restructure Table dialog box (other SQL)


Shortening fields

See also

When you shorten a field that already has data in it, you may lose some data. When this is the case, Paradox displays the Restructure Warning dialog box, which lets you choose whether to trim existing data, or to save records that contain data too long for the new field size in the Problems table.


Deleting fields

See also

Deleting fields from an existing table is different than deleting fields when you create a new table:

Deleting a field usually results in a loss of data (unless the field is empty). Paradox displays a dialog box warning you of the loss and asking you to confirm the deletion.

If a field you delete from a table appears as a field object in any form, report, or query, then the next time you open the form, report, or query, you must either redefine or delete the field object.

If you delete a key, you must also either delete any secondary indexes, or convert them to non-maintained.


Rearranging fields

See also

Rearrange field order in either the Create Table dialog box or the Restructure Table dialog box. In the Field Roster, click the number of the field you want to move and drag it to the position you want it to occupy.

You can place a field in the following locations:

Between the rows of existing fields

In the row above the first field

In the row below the last field

You cannot move fields in a way that violates the rules for key fields. See About primary indexes (key fields) for more information.


Converting a non-keyed field to a keyed field

See also

When you convert a field from non-keyed to keyed, remember that keyed fields must be consecutive and start with the first field in the Field Roster.

You can move a field if necessary. See Rearranging fields.

For more information on restructuring non-keyed and keyed fields, see Temporary tables created when restructuring and The effect of restructuring tables on key fields.


Packing a table

See also

Packing differs for Paradox and dBASE tables.

Paradox tables

Packing a Paradox table reclaims disk space used by deleted records.

dBASE tables

Packing a dBASE table removes records that are marked for deletion from the table. Paradox lets you permanently remove these records when you restructure the table.

To see if there are any records marked for deletion in a dBASE table, choose Table|Show Deleted in a Table window.


To add fields

See also

When you add fields to an existing table, Paradox does not automatically add those fields to any forms, reports, or queries associated with the table. If you want the new fields added to associated objects, you must explicitly add them.

To add a field to a table,

1.	Open the Restructure Table dialog box.

2.	Use the arrow keys to move to a new row in the Field Roster, or press Ins to insert a new field above the current field.

3.	Enter the name of the field under Field Name.

4.	Enter the type of field under Type. Press the Spacebar to choose from a list of field types.

5.	Enter the size of the field under Size, if it is necessary for your field type.

6.	If you are creating a Paradox table, specify whether the field is a key. Move to the Key column and follow the instructions on the screen.

7.	If you are creating a dBASE table, specify the number of decimal places in Dec, if it is necessary for your field type.


To delete fields

See also

When you delete a field from an existing table, Paradox unbinds the field from previously created forms and reports.

Since a deletion can cause loss of data, when you choose Save or Save As, a dialog box appears to let you confirm the deletion or cancel the operation.

To delete a field from a table,

1.	Open the Restructure Table dialog box.

2.	Select the row number of the field you want to delete, then press Ctrl+Del.

The field is removed from the table specification.


To rename fields

See also

If you edit a field name in an existing table, and that field name appears on any associated design documents, Paradox reconciles the change the next time you open a design document. If the field is a labeled field in the design document, Paradox does not update the label of the field to the new name.

If you have calculated fields in the design document that include the original field name, Paradox deletes the calculated field from the design document when you rename the field.

To rename a field in a table,

1.	Open the Restructure Table dialog box.

2.	Select the field you want to edit.

3.	Click the field again to place the insertion point in the field. Edit the field name as desired, using standard editing techniques.


To change validity checks

See also

For rules about changing validity checks, see Rules for restructuring.

To change validity checks,

1.	Open the Restructure Paradox Table dialog box.

2.	Select Validity Checks from the Table Properties drop-down list.

3.	Change any Validity Check settings you want to.

4.	When all restructuring changes are complete, choose Save to save the table.

You can choose Save As to save the restructured table with a different name.


To change table lookup

See also

To change table lookup,

1.	Open the Restructure Paradox Table dialog box.

2.	Select Table Lookup in the Table Properties drop-down list.

3.	You can define a new table lookup or modify an existing one.

To define a new lookup, choose Define. The Table Lookup dialog box appears. Create the new lookup, then choose OK to return to the Restructure Paradox Table dialog box.

To change an existing table lookup, select the lookup table to change. Then, choose Modify to open the Table Lookup dialog box. Change any settings you want to, then choose OK to return to the Restructure Paradox Table dialog box.

4.	When all restructuring changes are complete, choose Save to save the table.

You can choose Save As to save the restructured table with a different name.


To change secondary indexes

See also

To change secondary indexes,

1.	Open the Restructure Paradox Table dialog box.

2.	Select Secondary Indexes in the Table Properties drop-down list.

3.	You can define a new secondary index or modify or erase an existing definition.

To define a new secondary index, choose Define. The Define Secondary Index dialog box appears. Change the definition, then choose OK to return to the Restructure Paradox Table dialog box.

To change an existing secondary index, select the index you want to change in the list and choose Modify. Then, change the definition in the Define Secondary Index dialog box. Choose OK to return to the Restructure Paradox Table dialog box.

To delete an existing secondary index, select the index you want to change in the list and choose Erase. The index is removed from the list.

4.	When all restructuring changes are complete, choose Save to save the table.

You can choose Save As to save the restructured table with a different name.


To change password security

See also

To change password security,

1.	Open the Restructure Paradox Table dialog box.

2.	Select Password Security in the Table Properties drop-down list.

3.	Choose Define to add new passwords or choose Modify to change existing passwords.

The Password Security dialog box appears.

4.	Add or change passwords, then choose OK to return to the Restructure Paradox Table dialog box.

5.	When all restructuring changes are complete, choose Save to save the table.

You can choose Save As to save the restructured table with a different name.


To change table languages

See also

If you need to change the table language of an existing table that has data, you must first duplicate the table's structure with the language driver you want, then append the original table's data to the new table.

To change table languages,

1.	Choose File|New|Table and choose the table type you want.

2.	In the Create Table dialog box, choose Borrow to borrow the structure of the table that you want to change.

3.	In the Select Borrow Table dialog box, check all options you want to borrow (usually this is all options).

4.	Specify the new table's language driver by choosing Table Language from the Table Properties drop-down list. Choose Modify to open the Table Language dialog box. Choose the table language you want.

5.	Save the new table.

The new table uses the language driver you specified, and all its structure information (such as field names) is in the format of that language driver.

6.	Move the data from the original table to the new table using Tools|Utilities|Add. Choose to append the data. When the data is appended to the new table, it is transliterated to the format specified by the new language driver. See About adding records for more information about using the Add command.


To change field types

See also

To change field types,

1.	Open the Restructure Table dialog box.

2.	In the Field Roster, select the Type column of the field you want to change.

3.	Type the symbol for the field type or select from the drop-down list. You can get the list two ways:

Right-click the Type column.

Press Spacebar.

If the change causes data loss, Paradox prompts you to confirm it. If you confirm the change, Paradox writes the records containing data that could not be converted to a temporary table called Problems.

You can change the records in the Problems table so they comply with the new structure, then add them back into the table using Tools|Utilities|Add.


Compatible Paradox field types

See also

When converting a Paradox field from one type to another, use the following chart to determine field type compatibility.

	To	A	N	$	D	S	M	F	B	G	O	L	I	T	@	#	+	Y
From	A	Y	P	P	P	P	Y					P	P	P	P	P		Y
From	N	Y	Y	Y		P						Y	Y			Y	<
From	$	Y	Y	Y		Y						Y	Y			Y
From	D	Y			Y										Y
From	S	Y	Y	Y		Y						Y	Y			Y	<
From	M	Y					Y	Y	Y
From	F						Y	Y	Y
From	B								Y
From	G								Y	Y
From	O								Y		Y
From	L	Y	Y	Y		Y						Y	Y			Y	<
From	I	Y	Y	Y		Y						Y	Y			Y
From	T	Y												Y	Y
From	@	Y			Y									Y	Y
From	#	Y	Y	Y		Y						Y	Y			Y
From	+	Y	Y	Y		Y						Y	Y			Y	Y
From	Y	Y																Y
Y:	Paradox allows the conversion, but may trim data. If Paradox must trim data, you will see the Restructure Warning dialog box, which asks you to confirm the conversion.

Blank:	The field type conversion is not allowed.

P:	The conversion is allowed, but might generate the Problems table.

<:	Conversion to autoincrement is allowed only from a single-field key containing data that is <2147483647


Alpha field conversions

See also

The result of converting another field type to an alpha field varies. All formatting and other definitions associated with the other field type are lost.

When you convert a field of another type to an alpha field, you must specify a size for the field. If some data already in the field contains more characters than the newly specified length of the alpha field, you can trim the data or move records containing such data to the Problems table.

If you convert between an alpha field and a date, number, short, or money field, make sure the settings in your Windows Control Panel match the settings in IDAPI32.CFG.


Number, money, short, and long integer field conversions

See also

In a Paradox table, you can convert a money, long integer, BCD, autoincrement or short field to a number field. In fact, you can convert among all of these field types without loss of data, except when a value is too large for a short field or includes decimals. In that case, you can either trim the values, or have Paradox write records containing those values to the temporary Problems table.

You can convert an alpha field to a number field if it contains no data inconsistent with a number. If data in the field is inconsistent with a number field, you must do one of the following:

Have Paradox place the records in a Problems table

Delete the inconsistent data and then make the conversion

Insert a new field and delete the original field (losing all data)


Autoincrement field conversions

See also

In a Paradox table, you can convert existing number, short, and long integer fields to autoincrement fields without losing data only if the number, short, or long integer field is the table's single-field primary index (key). This ensures that the data to be converted to an autoincrement field meets the requirements of being unique and sorted in ascending order.


Date field conversions

See also

In a Paradox table, you can convert alpha and timestamp fields to date fields. Paradox saves any invalid data in a Problems table. If any record contains data in that field that cannot be interpreted as a date, Paradox removes the record and writes it to the temporary Problems table.

Here are examples of what kinds of alpha strings can and cannot be converted to dates:

Can be converted	Cannot be converted

7/04/1776	July 4, 1776

3/30/91	The 30th of March, 1991

25-Dec-1066	Christmas Day, 1066

11-Nov-18	Armistice Day

1.01.2000	New Year's Day, the year 2000

13.06.80	Herb's 29th birthday

If you customize your date format using the BDE Configuration Utility, date values are converted according to your customized settings.


Compatible dBASE field types

See also

You restructure a dBASE table the same way you do a Paradox table. Changing field types of dBASE fields has different consequences for each field type.

Number to character

Data in number fields or float number fields can be converted to text in a character field with no loss of data. However, you cannot perform calculations on numeric data stored in a character field.

Character to number or float number

You can convert a character field to a number or float number field with the following results:

  If the data in the character field is numeric (digits), Paradox converts it to a number or float number field with no data loss.

  If the data in the character field is a mixture of text and digits beginning with digits, Paradox converts the digits to a number or float number format and deletes all text.

  If the data in the character field is a mixture of text and digits beginning with text, Paradox assigns the value 0 to the number or float number field.

Logical to character

Logical values are converted to T or F text values.

Logical to number or float

True values are converted to 1 and False values are converted to 0.

Character to logical

The characters T, t, Y, and y are converted to logical true, and all other values are converted to logical false.

Date to character

You can convert a date value to a text value. The text value will be eight characters in the format MM/DD/YY.

Character to date

You can convert a text value to a date value only if it is an eight-character value in the format MM/DD/YY. Any other value sizes or formats are not recognized as dates and are not converted.

Memo to character

Values that are longer than the size of the character field are trimmed.


About restructuring and referential integrity

See also

When restructuring the parent table in a referential integrity relationship, you might be prohibited from performing certain restructure operations.

To see if the table you are restructuring is the parent in a referential integrity relationship, choose Dependent Tables from the Table Properties drop-down list in the Restructure Table dialog box. Paradox lists all child tables that depend on the table you are restructuring.

The basic rule to remember when restructuring a parent table is that you cannot perform any operation that causes records to be removed from the table. If you remove records from the parent table, you risk orphaning records in the child table. This is in violation of the rules of referential integrity. Each record in the child table must have a valid parent record.


Guidelines for restructuring tables in referential integrity relationships

See also

Follow these guidelines as you restructure tables that are linked by referential integrity:

If you resize any field in the parent table, you must choose to trim data that does not fit in the new field size, rather than save such data in the Problems table.

You cannot change the parent table's key definition or the child table's foreign key definition in such a way that will cause records to be saved in the Keyviol table.

You can change field names, but not types or sizes, of fields that are part of the referential integrity definition.

You can add a validity check to either table, but you must choose not to enforce it on existing data. (Use the Restructure Warning dialog box to make this choice.) The exception to this rule is the creation of a default validity check on a new field in the table.

To make a parent table the child of another table, that table and all its existing child tables must be empty. For example, if Orders is the parent table of Stock, you cannot make Orders the child of Customer unless both Orders and Stock are empty.

When working with tables that contain data, if you link more than two tables by referential integrity you must create the first link to the table that has no parent. For example, to define referential integrity among the Customer, Orders, Lineitem, and Stock tables, you must

1.	First create the link from Orders to Customer.

2.	Then create the link from Lineitem to Orders.

3.	Then create the link from Stock to Lineitem.

To create a cyclic referential integrity relationship (as in "Table A refers to Table B, which refers to Table C, which refers back to Table A") all the tables must be empty.


Windows on your data

See also

Paradox gives you several ways to view your data:

Use the Table window to view data in columns and rows. You can either use the default table format or change table properties to get exactly the view you want.

Use the Form window to display the records of a table. Forms give you tremendous flexibility. You can see all or some of the fields from a table, or link tables to choose fields from a combination of tables.

Use the Report window to preview a report onscreen, before you print it. You can scroll through an onscreen document the way you would browse through a stack of papers.

Because Paradox displays each view in its own window, you can have several views of the same data open at the same time. The combinations are limitless, giving you the ability to see exactly the data you want.


Opening a table

See also

To open a table, use the Project Viewer, the menu, or the Toolbar.

From the Desktop, choose File|Open|Table, choose a table, and click OK.

In the Project Viewer window, select the Tables icon, then double-click the table you want to open.

In the Project Viewer window, right-click a selected table and choose View.

Click the Open Table button on the Toolbar, choose a table, and click OK.

Paradox displays the default view of the table.

When you open a table, the menu and Toolbar change to show operations you can perform on the table.

Note:	Commands that involve data entry operations are dimmed until you enter Edit mode. See About Edit mode for information about working in the Table window in Edit mode.


Table and form navigation buttons

See also

Use the navigation buttons on the Toolbar to move quickly among a table's records in a Table window or Form window:

First record of the table

Previous set of records

Previous record of the table

Next record of the table

Next set of records

Last record of the table

A set of records is the number of records currently visible onscreen.

You can also use the Record menu for the above operations.


Table scroll bars

See also

Use the up and down scroll arrows on the vertical scroll bar to scroll through a table one record at a time. Use the left and right scroll arrows on the horizontal scroll bar to scroll through the columns of the table.

Dragging the vertical scroll bar

When you drag the box on the vertical scroll bar to scroll through the records of the table, the records themselves do not move. Instead, Paradox displays the range of record numbers as it would appear if you released the scroll box on the Desktop status bar. When you see the range you want to scroll to, release the scroll box. Paradox updates the view of the table.

In dBASE tables, the vertical scroll box is always centered vertically when Table|Show Deleted is not checked.

Note:	If the table is keyed, Paradox displays the range of values in the key field (or the first field of a composite key) on the status bar as you move the vertical scroll box.

Dragging the horizontal scroll bar

When you drag the box on the horizontal scroll bar to scroll through the fields of the table, the fields themselves do not move. Instead, Paradox displays the field name that would appear if you released the scroll box. When you see the field you want to scroll to, release the scroll box. Paradox updates the view of the table.


Scroll lock

See also

To lock one or more columns into place as you move horizontally through the table's columns, you can place a scroll lock to the right of the column(s) you want to remain onscreen. You can do this only when the horizontal scroll box is set all the way to the left.

The scroll lock looks like a triangle [image] in the lower left corner of the Table window. To place a lock, drag the triangle to the right side of the column to lock. The pointer changes to a double-headed arrow and the lock itself changes to two triangles. Position the scroll lock on the right grid line of the right-most column to lock. All columns to the left of the lock remain stationary as you move through the table's columns.


Keyboard actions in Table windows

See also

You can move to different fields and records using the keyboard as follows:

Key	Effect/Action

Left arrow	Selects the field to the left of the selected field. (If the selected field is the first field in the record, selects the last field of the previous record.)

Right arrow	Selects the field to the right of the selected field. (If the selected field is the last field in the record, selects the first field of the next record.)

Down arrow	Selects the same field in the record below the current one.

Up arrow	Selects the same field in the record above the current one.

Home	Selects the first field in the current record.

End	Selects the last field in the current record.

Ctrl+Home	Selects the first field of the first record in the table.

Ctrl+End	Selects the last field of the last record in the table.

PgDn	Displays the next set of records.

PgUp	Displays the previous set of records.

Ctrl+PgDn	Scrolls the window to the next set of fields.

Ctrl+PgUp	Scrolls the window to the previous set of fields.

For additional keys, see Table Operation Shortcuts


About quick objects

See also

You can use the Tools|Quick commands or Quick Toolbar buttons to view a table's data in a form, chart, crosstab, or report.

Paradox offers four types of quick objects:

Forms. Choose Tools|Quick Form to view your preferred (or default) form for the table. The Form window opens on top of the open Table window. From the Form window, you can use the Table View command or Toolbar button to return to the view of the table, or you can simply click somewhere in the Table window to activate it.

Reports. Choose Tools|Quick Report to preview your preferred report or a default report for the table.

Charts. Choose Tools|Quick Chart to view your preferred chart or a default chart of the table's data. If you have not yet defined a preferred chart, you'll see the Define Chart dialog box.

Crosstabs. Choose Tools|Quick Crosstab to view your preferred crosstab or a default crosstab of the table's data. If you have not yet defined a preferred crosstab, you'll see the Define Crosstab dialog box.

The document you see when you choose a Quick command depends on whether you've specified a preferred object. If you have specified a preferred object using Table|Preferred Document, the object you'll see is the one you've specified. If you haven't specified a preferred object, Paradox either creates a default design for the object type you selected or lets you define an object of that type. For information on defining preferred objects, see Preferred objects.

Note:	When you view your table's data in an alternate format (like a form or report) the property settings you've chosen in the Table window do not appear. You can customize the form or report individually to get the look you want for it.


Preferred objects

See also

You can specify which form, report, chart, or crosstab to use when you choose a quick command. This is referred to as a preferred object.

To specify a preferred object,

Do one of the following:

Choose Table|Preferred Document, then choose the type of document.

Right-click the Quick Form, Quick Report, Quick Chart, or Quick Crosstab Toolbar button.

Preferred forms, charts, and crosstabs

When you specify a preferred form, chart, or crosstab, you'll see a dialog box with the word Forms displayed in the Files Of Type list. (Charts and crosstabs are objects that can be placed on a form.) Choose the form you want. The form you choose must contain the table you're viewing in its data model.

If you don't have a preferred chart or crosstab for a table, but have more than one form, you can assign an additional form as the preferred chart or crosstab. Then you'll be able to view it from the Quick Chart or Quick Crosstab command or Toolbar button.

Preferred reports

When you specify a preferred report, you'll see the Choose Preferred Report dialog box with the word Reports in the Files Of Type list. Choose the report you want.

Note:	The report you choose as a table's preferred report can be a multi-table report. In this case, the table must be the master table in the report's data model.

Generating a default form or report

If you've defined a preferred form or report and then need to generate a default form or report, choose Tools|Default Form or Tools|Default Report. Paradox creates a new default form or report design for the table.


About table views

See also

The default view of a table is the way it initially looks when you open it in its Table window. The default view depends on a number of things: your Windows screen colors, the Desktop properties you defined with Edit|Preferences, and the structure of the table.

But you can change the way your table looks, and the way you view your data.

You can change these features by dragging with the mouse:

Order of the columns

Column width

Heading height

Spacing between records (row height)

Placement of a scroll lock on a column

You can change these features, and more, by setting table properties:

Alignment of text and data

Color of the data or the background

Typeface of the data and headings

Color and style of the table gridlines and record marker

Color and other properties for specified data ranges

A field's properties vary, depending on the type of data in the field. Alpha field properties are different from number field properties, which are different from date properties, and so on.

Changing a field's properties does not change the data or how it is stored.

Note:	When you view your table data in an alternate format (like a form or report) the property settings you chose in the Table window do not appear. You can customize the form or report individually to get the look you want for it.


About dragging with the mouse

See also

You can use the mouse to point, click, and drag directly on the object to change. You can directly manipulate the size, shape, or position of most onscreen objects.

The pointer changes shape as the mouse passes over places where you can click and drag to resize or move columns or change the heading or row height.

Pointer	Property	To manipulate

Heading height	Drag the table name up or down.

Row height	Drag the line under the first record number in the window up or down.

Horizontal scroll lock	Drag the triangle at the lower left edge of the Table window to the right.

Column width	Drag the top of the column's right grid line to the left or right.

Order of columns	Drag the column heading to the new location.


To move, resize, or rotate columns

See also

You can move, resize, or rotate columns in a Table window.

To move a column

1.	Click and hold the column's heading.

The pointer changes shape.

2.	Drag the column to its new position.

To resize a column

1.	Click its right grid line in either the heading area or the top row of data.

You'll know it's in the correct area when the pointer changes to the double-headed arrow.

2.	Drag the grid line to the right or left to increase or decrease the width of the column.

To rotate columns

Select the column to move, and press Ctrl+R.

Paradox moves the column to the last position on the right of the table and shifts all other columns one position to the left.


To resize rows

See also

You can resize the table's rows (increase or decrease the row height of all rows) by dragging the line under the first record number in the table.

Drag the line up to decrease the row height.

Drag the line down to increase the row height.

Paradox resizes all rows to match the row height you specify.


To view or change table properties

See also

You can change properties for many areas in a Table window. Some table properties can only be changed in a data model. For details, see To view or change table properties in a data model.

To change properties for a specific area

You can change properties of the individual fields (columns) of the table, the grid, the column headings, or the display of the data.

Right-click the area and choose Properties in the menu to display its property options. Click the tab for the property you want to change.

To change properties for all fields

Press Shift and right-click a field. Then, choose Properties in the menu and click the tab for the property you want to change.

To change properties for all column headings

Press Shift and right-click the heading. Then, choose Properties in the menu and click the tab for the property you want to change.

To change properties using the keyboard

Use the following keys to change properties using the keyboard:

Press	To change

F6 or Ctrl+M	Field properties for selected column

Shift+F6 or Shift+Ctrl+M	Field properties for all columns

Ctrl+G	Grid properties

Ctrl+H	Heading properties for selected column

Shift+Ctrl+H	Heading properties for all columns

Note:	If your table does not yet contain any data, you must enter Edit mode before you can change the properties of data columns. Press F9 or click the Edit Data Toolbar button to enter Edit mode. (See To edit data in a table window for details on Edit mode.)


To save table properties

See also

To save table properties,

Choose Table|Table View Properties|Save to save all the property changes you make in a Table window, including property changes to individual fields.

This saves the appearance of the table as you have changed it. Paradox saves data as it is entered, so File|Save and File|Save As are not necessary and are dimmed in the Table window.

Paradox saves the properties you define in the .TV file. (Properties for dBASE tables are saved in the .TVF file.) For example, the properties you define for the Customer table are saved in CUSTOMER.TV.


To restore table properties

See also

If you change table properties, then change your mind about them, you can restore previous settings.

To restore table properties,

Choose Table|Table View Properties|Restore.

Paradox restores all properties to the settings they had when you opened (or previously saved) the table properties.

If you try to close a Table window without saving property changes, Paradox asks if you want to save your changes.


To delete table properties

See also

When you delete a table's unique property file (.TV or .TVF), Paradox uses default property settings.

To delete table properties,

Choose Table|Table View Properties|Delete.


About creating default table properties

See also

Suppose you know that you will most often want number fields displayed in the General format, or date fields aligned left, or text displayed in blue. Paradox gives you the ability to establish default properties for each field type and store them in a default file, DEFAULT.TV (Paradox) or DEFAULT.TVF (dBASE).

You can create a default property file by creating a new table or copying an existing table that is customized with the settings you want to use as defaults.


To create default table properties in a new table
To create default properties in a new table

See also

To create default properties in a new table,

1.	Create a table in your private directory that includes one of each available field type.

2.	Name this table Default.

3.	Open DEFAULT.DB in a Table window.

4.	Press F9 to enter Edit mode and right-click each field to set the properties for that field type.

5.	Choose Table|Table View Properties|Save to save the property settings in the DEFAULT.TV file.

Whenever you work with a table that does not have its own .TV file, Paradox applies the settings from DEFAULT.TV to it. Table-specific .TV files override the settings in DEFAULT.TV.

For dBASE tables

Follow these same steps.

The only difference is that dBASE table properties are stored in a file with the .TVF extension. The default property file for dBASE tables is DEFAULT.TVF.


To create default table properties by copying
To create default properties by copying

See also

To create default properties by copying,

1.	Customize a table with the desired default property settings.

2.	Choose Table|Table View Properties|Save to save the default settings.

3.	Copy the table to DEFAULT.DB in your private directory.

Paradox copies the table's .TV file as well as the .DB file, and uses its .TV file for default property settings. Remember to use the Paradox Copy utility when copying tables.

Tip:	If you are short on disk space, you can use the Windows File Manager to delete DEFAULT.DB, and any other DEFAULT files (like .PX or .VAL files) that were copied along with the table. All you really need is DEFAULT.TV.

For dBASE tables

Follow these same steps.

The only difference is that dBASE table properties are stored in a file with the .TVF extension. The default property file for dBASE tables is DEFAULT.TVF.


About aligning heading text and data

See also

Alignment refers to the placement of the data in the field or the text in the heading. Text and data can be aligned horizontally (at the left, center, or right of the column) or vertically (at the top, center, or bottom of the row).

The following figure shows the Lineitem table with three fields using three different horizontal alignments.


To align text in a formatted memo field

See also

1.	Open a table.

2.	Press Shift+F2 to enter Memo View.

3.	Right-click the text in a formatted memo field.

4.	Choose Properties, then choose Text and set Alignment to center the text or align it on the right, left, or both sides.

You can align just a part of the memo: any paragraph you select can have its own alignment setting.


About colors

See also

When you right-click any part of the table and choose Properties, then General, you'll see the Color property. Depending on where you right-click and the property page you select, you can change the color of the table's background, grid lines, individual fields, column backgrounds and text, and heading backgrounds and text.

When you see the Color palette, you can apply any color on the palette to the table.

Tip:	You can change the background color of all the columns at the same time by pressing Shift+F6. You'll see the All menu. When you choose a color from this menu, Paradox applies it to all columns.

To set the background color for the table itself, right-click the table grid, choose Properties, then choose General and choose a color.


About fonts

See also

You can change the appearance of the text in your fields or headings by right-clicking the text, choosing Properties, then choosing Font to display the Font property settings:

The Font drop-down list displays available typefaces. The typefaces you'll see on the palette are determined by the fonts you've installed on your system. Standard typefaces include Arial, Times Roman, Courier, and System. You might have different, more, or fewer fonts.

Click the typeface to apply to the selected area of the table.

The Font Style drop-down list changes the text style.

Regular removes all style attributes from the text.

Bold displays the text in a heavier style.

Italic displays the text at a slanted angle.

Bold Italic displays the text in a heavier style at a slanted angle.

The Size drop-down list changes the type size of the text. Paradox displays all available sizes, in points. Click the size to change the selected text to.

The Effects panel settings draw lines through or under the text.

Check Strikeout to draw a horizontal line through the text.

Check Underline to draw a horizontal line beneath the text.

Color changes the color of the text you've selected. Click the color to use.

When you're done, click Apply to apply the new settings, then click OK.

Default system font

The default system font is the font Paradox uses by default for text in tables and design documents.

To change the default system font,

1.	Choose Edit|Preferences.

2.	Choose Change in the Default System Font panel of the General page of the Preferences dialog box.

3.	Choose a font, style, and size from the Font dialog box, and choose OK.

4.	Exit and restart Paradox.

How the default system font works in tables

Paradox always uses the default system font for text in a new table (such as a table you create by choosing File|New|Table).

Paradox uses the default system font for text in an existing table with the following exceptions:

The font of text in existing formatted memos is not affected.

In tables for which you have customized viewing properties, the text is not affected. For example, before you change the default system font, you change the color of a table grid to blue and then choose Table|Table View Properties|Save. When you change the default system font, Paradox does not change the font of the text in the table.

If you want Paradox to use the default system font for all text in an existing table, choose Table|Table View Properties|Delete.

Note:	Doing this also has the effect of removing any customized viewing properties you have set.

How the default system font works in design documents

The settings of a design document style sheet always override the default system font. However, if the style sheet does not specify a font for a given design object, Paradox uses the default system font for new ones you create. For example, you create a new field object, and the style sheet has no font specified for the edit region. Paradox uses the default system font for text in the edit region when you run the form or report.


About the grid

See also

The grid is the pattern of lines that appear between the columns (and, optionally, the rows) of the table. You can change the grid's color, style, and number of lines displayed, and set properties for a current record marker.

You can change these grid properties:

Color on the General page sets the color for the grid's background (the space behind the grid lines).

Color on the Grid Lines or Record Marker page sets the color for the lines of the grid or the record marker line.

Position (Grid Lines page) hides or displays heading, column, or row lines.

Spacing (Grid Lines page) specifies the type of grid lines: single, double, triple, 3-D, or none.

Query Look (Grid Lines page) moves the heading line from below heading text to behind heading text.

Line Style (Grid Lines and Record Marker pages)indicates the type of line to use for the grid or record marker.

You can also show or hide the record marker, the horizontal line that appears beneath the current record, and also specify line style and color.


To change the grid's background color

See also

The grid's background includes any space in the Table window that isn't taken up by the table itself.

To change the grid's background color,

1.	Right-click the grid, or choose Table|Grid Properties, or select any field and press Ctrl+G.

2.	Choose Properties, then choose General.

The Color palette appears on the General page.

3.	Click the color to use and click OK.

To define a custom color, click a whitespace in the right column of the palette, then choose Add Custom Color. The Custom Color dialog box appears. Use its controls to blend the color you want, then choose OK to return to the General background properties.


To change the grid lines

See also

You can change the color, line style, heading line placement, the number of lines that appear, and whether lines appear beneath headings, between columns, and between rows.

To change the grid lines,

1.	Right-click the grid, or choose Table|Grid Properties, or press Ctrl+G.

2.	Choose Properties, then choose Grid Lines.

3.	Check or uncheck the following Position settings to control what lines display:

Check Heading Lines to show or hide a line in the heading area.

Check Column Lines to show or hide the vertical lines of the grid.

Check Row Lines to show or hide the horizontal lines between the records of the table.

4.	Use the following settings to specify what the lines look like:

Use Spacing to choose the number of lines between each column or row. You can display single, double, triple, or 3D lines, or choose None to display no lines.

Use Line Style to choose from several styles of solid and dashed lines.

Use Color to change the color of the lines.

Use Query Look to move the heading line from below heading text to behind heading text.

5.	Choose Apply, then OK to apply the settings to the current table and close the property sheet.


To display a marker for the current record

See also

The current record marker is a horizontal line that appears beneath the current record.

To display a record marker,

1.	Right-click the grid, or choose Table|Grid, or press Ctrl+G.

2.	Choose Properties, then choose Record Marker.

3.	Check Show Record Marker to display the marker.

4.	Use the following settings to specify what the marker line looks like:

Use Color to change the color of the lines.

Use Line Style to choose from several styles of solid and dashed lines.

5.	Choose Apply, then OK to apply the settings to the current table and close the property sheet.


About properties based on data values

See also

You can change the properties of all data in a field that meets a certain requirement. For example, in the Qty field of the sample Lineitem table, suppose you want to display all quantities less than five on a white background. You can do this using the Data Dependent property.

Alpha, number, short, long integer, date, time, timestamp, logical, autoincrement, and money field types (as well as dBASE character, number, float number, date, and logical field types) all have the Data Dependent property. Use this to establish a range of values for which the field's display is visually different.

To specify a data-dependent range, right-click the field and choose Data Dependent from the menu. You'll see the Data Dependent Properties dialog box.

Any ranges you've already specified appear in the Ranges list box. See To define a range of values.


To define a range of values

See also	Example

You can define a range of values to appear in the Ranges list box of the Data Dependent Properties dialog box. You can specify as many ranges as you want.

To define a range of values,

1.	Right-click a field that supports data-dependent properties: alpha, number, short, long integer, date, time, timestamp, logical, autoincrement, and money field types (as well as dBASE character, number, float number, date, and logical field types).

2.	Choose Data Dependent in the menu.

3.	Choose New Range.

4.	In the Range Includes Values panel of the dialog box, enter the values that establish the range.

If a single value is to appear with the selected properties, choose the = button, then type the value.

To define a range, choose > or >= and type the beginning of the range. Then choose < or <= and type the end of the range.

5.	Right-click the Sample area and choose Properties in the menu, or click the Set Properties button to choose color and font properties for values in the range.

6.	Choose Apply Changes to accept the range and the display properties you chose. The range then appears in the Ranges list. You can establish as many data-dependent ranges as you need.

7.	If you change your mind, you can remove a range from the list. Select the range and choose Remove.

8.	When you are through defining ranges, choose OK to close the dialog box. Values in the field that fall within each range you specified in the Ranges list will be displayed in the table in the fonts and colors you assigned to that range.


Example of properties based on data values

See also

To specify properties for a range of values greater than or equal to 0 and less than or equal to 5 in the Qty field of the sample Lineitem table,

1.	Open the LineItem table and select a record in the Qty field. Right-click it and choose Data Dependent from the menu that appears. Paradox opens the Data Dependent Properties dialog box.

2.	Choose New Range.

3.	Enter the values that establish the range in the Range Includes Values panel of the dialog box:

Choose the >= button, then type 0 in the top text box. This sets the beginning of the range as greater than or equal to zero.

Then choose the <= button and type 5 in the bottom text box. This sets the end of the range as less than or equal to five.

The word And, in the Range Includes Values panel, helps you read the range as "greater than or equal to zero and less than or equal to five."

4.	Once you've specified the range, you must set the properties for all values that fall within the range. To do this, right-click the Sample area and choose Properties in the menu, or click the Set Properties button.

You'll see the Font Sample properties menu, from which you can set the background and text colors, as well as the text style, size, and typeface properties. Set the properties to black text on a white background.

Choose Apply Changes to accept the range specification and properties you've chosen. The range then appears in the Ranges list, using the properties you set.

5.	Choose OK to return to the Table window. Your table should now look like the following figure.

The range you specify in the Data Dependent Properties dialog box doesn't have to be numeric. You can set a range of dates or match text strings. For example, you could have one range that specified that all State field values in the Customer table that are equal to CA be displayed in yellow italic text, or that all dates in 1991 be displayed in blue underlined text.

To apply the properties you've chosen to the ranges you've specified, choose OK. Paradox closes the Data Dependent Properties dialog box, finds the values in the ranges and changes their properties.

Note:	The properties of a data-dependent range override those you may specify for a column. If, for example, you choose a blue background color for a column, any records that fall within a data-dependent range specification are not affected. These records continue to use the background color for the range, rather than for the column as a whole.


About data formats

See also

Number, money, date, time, timestamp, and logical fields all have format properties that you can specify to customize the display of the data in the fields. Specifying a data format does not change the data or how Paradox stores it.

You can define custom formats for number, money, date, time, timestamp, and logical fields.


To specify the format for numeric data

See also

To specify the format in which a number, money, date, time, timestamp, or logical field is displayed,

1.	Right-click the field in a Table window or in a design window.

2.	Choose Properties, then click the Format tab.

Paradox displays a list of predefined formats.

3.	You can either

Choose one of the formats to apply it to the selected field.

Choose Create New Format to open a dialog box where you can define a custom format.

You can change or delete only custom formats, not formats provided by Paradox.


Predefined number and money formats

See also

The format list for a number or money field shows the following predefined formats.

Format	Description

Windows $	Uses the currency symbol and format that you defined in the Windows Control Panel.

Windows #	The default format for Paradox number fields. Paradox uses the format you specify from the Windows Control Panel.

Fixed	Displays number values with two decimal places. Trailing zeros are displayed. Thousand separators are not used. Negative numbers are preceded by a minus sign (-).

Scientific	Displays number values in exponential notation (with four decimal places), as a decimal number from 1 to 10 multiplied by a power of 10. Negative numbers are preceded by a minus sign (-).

All number formats use scientific notation to display numbers that are too big to fit. The Scientific format always uses scientific notation.

General	Displays number values with up to two decimal places if the number includes a decimal value. Trailing zeros and thousand separators are not displayed. Negative numbers are preceded by a minus sign (-).

Comma	Displays number values with two decimal places. Trailing zeros are displayed. Thousand separators are used and displayed as a comma. Negative numbers are displayed in parentheses.

Percent	Displays numbers followed by the percent sign (%). For example, the value .5 is displayed as 50.0%. Thousand separators are not used. Negative numbers are preceded by a minus sign (-).

Integer	Displays whole numbers only. Decimal values are rounded when you convert to the Integer format. If you convert to a format that displays decimals, they are returned. Thousand separators are not used. Negative numbers are preceded by a minus sign (-).

DBNumeric	Uses the number format settings from your BDE configuration settings.

You can define your own number and money formats as described in To create a custom data format.


Predefined date formats

See also

The format list for a date field shows the following predefined formats.

Format	Description

DBDate	Uses the date format settings from your BDE configuration settings.

ISO Date	Displays dates using four-digit numbers for the year, followed by the month, followed by the day, each separated by a period (.).

mm/dd/yy	Displays dates using two-digit numbers for the month, followed by the day, followed by the year, each separated by a slash mark (/).

Windows Long	Uses the long date format you define in the Windows Control Panel Regional Settings Properties dialog box.

Windows Short	Uses the short date format you define in the Windows Control Panel Regional Settings Properties dialog box.

For each format, a two-digit yy value is assumed to be in the twentieth century. For dates earlier or later than the twentieth century, you must specify all digits of the year.

You can define your own date formats as described in To create a custom data format.


Predefined time formats

See also

The format list for a time field shows the following predefined formats.

Format	Description

Windows Time	Uses the time format you define from the Windows Control Panel Regional Settings Properties dialog box.

hh:mm:ss am	Displays two digits of hours, minutes, and seconds, separated by colons and followed by "AM" or "PM".

DBTime	Uses the time format settings from your BDE configuration settings.

You can define your own time formats as described in To create a custom data format.


Predefined timestamp formats

See also

The format list for a timestamp field shows the following predefined formats.

Format	Description

Win. DateStamp	Uses the date and time formats you define in the Windows Control Panel Regional Settings Properties dialog box.

hh:mm:ss am mm/dd/yy	Displays hours, minutes, and seconds (2 digits each), separated by colons and followed by "AM" or "PM" and the month, day, and year.

DBTimestamp	Uses the timestamp format settings from your BDE configuration settings.

You can define your own timestamp formats as described in To create a custom data format.


Predefined logical formats

See also

The format list for a logical field shows the following predefined formats. These formats let you choose what values to accept as true and false in the logical field.

Male/Female

True/False

Yes/No

You can define your own logical formats as described in To create a custom data format.


To create a custom data format

See also

You can create custom data formats for number, money, date, time, timestamp, and logical data. The procedure for all data types is similar to the following procedure.

To create a custom data format,

1.	Right-click a field (one of the types listed above) in an open table.

2.	Choose Properties, then Format.

3.	Choose Create New Format.

The Select Format dialog box appears.

4.	Choose Create.

The name of the dialog box changes to Create Format, and the Format panel displays available options for creating the format.

5.	In the Existing Formats panel, choose an existing format as the base for the new format.

6.	In the Name text box, enter a name for the format.

You must give each format a unique name, regardless of the data type it applies to. For example, you cannot give a number format and a date format the same name.

7.	In the Format panel, choose properties for the format. For details about each setting, choose Help.

If you want to use a Windows Control Panel default format for a particular option, right-click that format option's text box. You'll see a menu of defaults you can use.

8.	Choose Add Format to add the new format to the Existing Formats list.

9.	Choose OK to save the new format, and OK again to close the Properties sheet.

Note:	Set the Windows number and money formats from the Windows Control Panel.

For information on each data type, see the following topics:

Select/Create/Change Number Format dialog box

Select/Create/Change Date Format dialog box

Select/Create/Change Time Format dialog box

Select/Create/Change Timestamp Format dialog box

Select/Create/Change Logical Format dialog box


To change a custom data format

See also

You can change only custom formats, not Paradox-provided formats. The procedure for all data types is similar to the following procedure.

To change a custom format,

1.	Right-click a number, money, date, time, timestamp, or logical data field in an open table.

2.	Choose Properties, then Format.

3.	Choose Create New Format.

The Select Format dialog box appears.

4.	Select the format to change from the Existing Formats list.

5.	Choose Change.

The name of the dialog box changes to Change Format, and the Format panel displays current settings for the format.

6.	Make the changes. For details about each setting, choose Help.

If you want to use a Windows Control Panel default format for a particular option, right-click that format option's text box. You'll see a menu of defaults you can use.

7.	Choose Accept to save the changes.

8.	Choose OK to save the changed format, and OK again to close the Properties sheet.

For information on each data type, see the following topics:

Select/Create/Change Number Format dialog box

Select/Create/Change Date Format dialog box

Select/Create/Change Time Format dialog box

Select/Create/Change Timestamp Format dialog box

Select/Create/Change Logical Format dialog box


To delete a custom data format

See also

You can delete only custom formats, not Paradox-provided formats. The procedure for all data types is similar to the following procedure.

To delete a custom format,

1.	Right-click a number, money, date, time, timestamp, or logical data field in an open table.

2.	Choose Properties, then Format.

3.	Choose Create New Format.

The Select Format dialog box appears.

4.	Select the format to delete from the Existing Formats list.

5.	Choose Delete.

Paradox deletes the format and removes it from the Existing Formats list.

6.	Choose OK two times to close the Properties sheet.


About displaying memo and formatted memo fields

See also

Paradox stores memo and formatted memo fields in a separate file (with the .MB extension for Paradox tables or a .DBT extension for dBASE tables), not in the table itself. A Paradox table contains a portion of the field (you specify how much from the Create Table dialog box), plus a pointer to the .MB file. Paradox retrieves values from the .MB file when displaying memos and formatted memos.

Depending on the speed of your system and the size of your memo or formatted memo fields, you may find that displaying memos can sometimes be slow. This is because memo data is stored outside the table, in a separate file.

To increase performance, Paradox gives you a way to avoid displaying memo fields until you want to see them. Use the Complete Display property to control the display of memo data, as described in To display or hide BLOB data.

Double-click a memo field to see the full memo value, including the contents of the .MB or .DBT file.

Paradox vs dBASE tables

The display of memo fields differs for Paradox and dBASE tables:

When you uncheck Complete Display on a Paradox field, Paradox displays only the amount of data stored with the table (not the contents of the .MB file) until you move to that field of that record. When the field is selected, Paradox displays the full memo value.

When you uncheck Complete Display on a dBASE field in a form, Paradox displays a marker indicating the existence of data until you move to that field of that record. When the field is selected, Paradox displays the complete memo value.


To display or hide BLOB data in tables

See also

To display or hide BLOB data,

1.	Open the table in a Table window.

2.	Right-click the BLOB field, choose Properties, then choose Complete Display.

Check Complete Display to see all the record values displayed.

Uncheck Complete Display to see only the value of the current field. You can move through the table's records more quickly if you uncheck Complete Display.


To magnify the display of a graphic or OLE field

See also

By default, Paradox displays a graphic or OLE object at 100% of its original size.

To change the magnification of a graphic or OLE field,

1.	Open the table in a Table window or Form Design window.

2.	Right-click the graphic or OLE field. (In a Form Design window, select the Edit region of the field before right-clicking.)

3.	Choose Properties, then choose Magnification.

4.	Select a magnification setting:

25% or 50% to shrink the displayed object

100% to restore its original size

200% or 400% to expand the displayed object

Best Fit to shrink the object to fit in the field while retaining the proportions of the original object. When you choose Best Fit, changing the column width or row height changes the size of the object.

Tip:	For fastest performance, display graphic and OLE objects at 100%. Best Fit usually gives the slowest performance.


About sorting tables

See also

When you sort a table, Paradox rearranges the order of the records in the table and displays them in the order you specify.

To view the table in a different order without changing the actual location of records in the table, use Table|Filter. Filters are discussed in About filters.

To change the actual location of records in the table, you can sort the keyed table to a new table.

Paradox cannot sort on the following field types:

BLOB, BCD, logical, or bytes fields in Paradox tables

Memo, binary, OLE, or logical fields in dBASE tables

Fields of these types are displayed in the Fields list, but are dimmed and cannot be selected for placement in the Sort Order list.

Note:	You cannot sort SQL tables.


Sorting keyed tables

See also

If a table is keyed, Paradox keeps the records sorted according to the values in the key field (or fields).

You cannot override the sort order established by a table's key. What you can do, however, is use a maintained secondary index to change the view order of the keyed table. This gives you a sorted view of the records, but doesn't change the physical location of the records in the keyed table. Use the Filter Tables and Set Range for Index dialog box [image] not the Sort Table dialog box [image] to change the view of a keyed table.

If you want to change the actual location of the records in a keyed table, you can sort the keyed table to a new table. The new table created by the sort operation is unkeyed. The original table remains unchanged.


Sorting unkeyed tables

See also

If a table is not keyed, records appear in the table in the order in which you entered them. (See About indexes and keys for information on creating keys.)

When you sort an unkeyed table, you change the actual location of the records in the table. You tell Paradox the fields on which you want the table sorted. Paradox then rearranges the records based on field values. You can sort an unkeyed table to itself, or create a new sorted table, leaving the original intact.

For dBASE tables, the default order is chronological; for Paradox tables, it is positional.


Sorting on a network

See also

When you sort tables in a multiuser environment, Paradox automatically places a lock on the table you are sorting. This means other users cannot modify its contents or structure. If another user has a lock on the table, you will not be able to begin sorting until that user finishes working with it.

When you sort to a new table, Paradox automatically places a lock on that table as well as the original table for the duration of the sort.


To sort a table

See also

1.	Do one of the following:

Open a table in a Table window and choose Table|Sort.

Choose Tools|Utilities|Sort, then choose the table you want to sort from the Select File dialog box.

Right-click a table in the Project Viewer and choose Sort from its menu.

Paradox displays the Sort Table dialog box.

2.	Specify the order to sort the records of the table in by moving fields from the Fields list to the Sort Order list. See To add fields to the Sort Order list.

3.	Specify whether to sort the fields in ascending or descending order by selecting a field in the Sort Order list and choosing Sort Direction.

4.	If the table is keyed, enter a file name for the new table in the New Table text box.

5.	Specify whether you want to Sort Just Selected Fields.

6.	Specify whether you want to Display The Sorted Table.

7.	Choose OK.


To sort an Answer table

See also

You can sort Answer tables from queries.

1.	Make the Query window active.

2.	Choose Query|Properties, then choose the Sort tab.

Use the arrows to move Answer table fields from the Answer Fields list to the Sort Order list in the order you want them to sort.

3.	Choose OK.

Now, when you run the query, the Answer table is sorted in the order you specify.


To specify the sort order

See also

You can specify fields to sort on and the order to sort them in. You can also specify whether to sort in ascending (aa-zz) or descending (zz-aa) order.

To specify the sort order,

1.	Choose Tools|Utilities|Sort, then choose the table you want to sort in the Select File dialog box.

Paradox displays the Sort Table dialog box.

2.	Select the fields to sort by in the Fields list and add them to the Sort Order list as described in To add fields to the Sort Order list.

3.	Specify whether to sort the fields in ascending or descending order as described in To specify ascending or descending sort order.

4.	If the table is keyed, type a new table name in the New Table text box.

5.	Specify whether you want to Sort Just Selected Fields.

6.	Specify whether you want to Display The Sorted Table.

7.	Choose OK.

When Paradox performs the sort, it sorts records on the values in the first field in the Sort Order list, then on the values in the second field, and so on.

You do not have to put all the fields from the Fields list in the Sort Order list. Paradox adds any fields you do not explicitly put in the Sort Order list to the end of that list before performing the sort (unless you have checked Sort Just Selected Fields). In any case, Paradox includes all fields in the result (whether the result is the same or a new table).

Note:	If you do not add any fields to the Sort Order list, Paradox sorts the table in the order of the fields in the Fields list. If you check Sort Just Selected Fields, you must place at least one field in the Sort Order list.


To add fields to the Sort Order list

See also

To add fields to the Sort Order list,

1.	Choose Tools|Utilities|Sort, then choose the table you want to sort in the Select File dialog box.

Paradox displays the Sort Table dialog box.

2.	Select one or more fields in the Fields list. To select multiple fields from the Fields list, do one of the following:

Click a field at one end of the range and drag to the other end of the range.

Using the keyboard, move to the top field in the range, hold Shift and press the down arrow [image] key until all the fields you want are selected.

Hold Shift, then click the fields at the beginning and end of the range.

3.	Choose the Add Field arrow [image], press Alt+A, or double-click the field. The field appears in the Sort Order list. The field name remains in the Fields list, but it is dimmed to show that it is no longer available.

If you select a range of fields that extends over fields that cannot be sorted on, or over fields already added to the Sort Order list, Paradox ignores them.

Paradox cannot sort on BLOB, BCD, logical, or bytes fields in Paradox tables, or on memo, binary, OLE, or logical fields in dBASE tables. Paradox displays these types of fields in the Fields list, but they are dimmed and cannot be placed in the Sort Order list.


To add fields to the top of the Sort Order list

See also

To insert fields at the top of the Sort Order list,

1.	Choose Tools|Utilities|Sort, then choose the table you want to sort in the Select File dialog box.

Paradox displays the Sort Table dialog box.

2.	Select the top field in the Sort Order list.

3.	Select a field in the Fields list and add it to the Sort Order list. The new field appears selected below the top field.

4.	Use the Change Order up arrow to move the field to the top position.


To remove fields from the Sort Order list

See also

Removing selected fields

1.	Choose Tools|Utilities|Sort, then choose the table you want to sort in the Select File dialog box.

Paradox displays the Sort Table dialog box.

Suppose the table was sorted previously and you want to remove some of the sort fields listed in the Sort Order list.

2.	Select the fields to remove in the Sort Order list.

To remove a range of fields, select the range by dragging.

3.	Choose the Remove Field arrow [image] or press Alt+R. The field moves to the Fields list.

Removing all fields

To remove all fields from the Sort Order list, making those fields available again in the Fields list,

1.	Display the Sort Table dialog box as described in Step 1 above.

2.	Choose Clear All or press Alt+C.


To rearrange the sort order

See also

To rearrange fields in the Sort Order list,

1.	Choose Tools|Utilities|Sort, then choose the table you want to sort in the Select File dialog box.

Paradox displays the Sort Table dialog box.

2.	Select the fields to sort by in the Fields list and add them to the Sort Order list as described in To add fields to the Sort Order list.

3.	Select the field to reorder in the Sort Order list.

4.	Click the up or down Change Order arrow below the Sort Order list.

The Change Order arrows are available only when the Sort Order list contains two or more fields.


To specify ascending or descending sort order

See also

Each field in the Sort Order list is preceded by a sort order indicator that shows whether the sort order within the field is ascending (+) or descending (-). The default is ascending (aa-zz).

1.	Choose Tools|Utilities|Sort, then choose the table you want to sort in the Select File dialog box.

Paradox displays the Sort Table dialog box.

2.	Select the fields to sort by in the Fields list and add them to the Sort Order list as described in To add fields to the Sort Order list.

3.	To reverse the sort order for a field, double-click the sort order indicator or select the field and choose Sort Direction. The sort order indicator and Sort Direction are toggles that change from ascending to descending sort order and back again with each successive click.


About filters

See also

Sometimes you don't want to see all the data in a table. For example, you might want to view only customers who live within in a certain zip code. Paradox provides two ways to limit the view of data:

You can use filters to limit your view to those records whose field values meet the conditions you set.

You can use live query views from a query to generate an answer set that you can edit. Paradox writes the edits to the table you queried.

Filters let you view a subset of the records in a table. For example, in the Customer table, you might want to see only those customers in North Carolina and California. Or maybe, among those customers, you want to see only those who have placed orders totaling $1,000 or more.

Filters make it possible to view and edit records

Whose fields meet conditions specified by you

In a different order than that specified by the primary index in a keyed table.

Whose fields contain a range of values based on a primary or secondary index of your choice.

You can also use a filter to change the order in which records are displayed.

Filtering forms or reports with complex data models

You can set filters on forms or reports that have complex data models.

A filter can always be applied to the master table in a data model.

A filter can also be applied to detail tables if the tables are linked in a multi-value relationship.

Filters cannot be applied to detail tables if the tables are linked in a single-value relationship.


Filters and queries compared

See also

Filters are similar to queries. Most of the operators that work in a query can also be used in a filter. The differences in the kinds of expressions you can use are

The @ wildcard operator is not allowed in a filter.

The .. wildcard operator is not allowed in numeric or date fields in filters. Furthermore, this operator is allowed after the filter condition, but not before it. For example, you can type view.. to filter for all values that contain the letters "view" (either upper or lower case) followed by any other letters. This filter returns the values View, Viewing, viewed, viewable, and so on. Using the .. wildcard is the only way to define a case-insensitive filter.

Example elements are not used in filters. However, you can refer to one field from another. See Either/or conditions for more information.

Calculated fields are not used in filters. Furthermore, math operations can be performed only on SQL tables.

You cannot use BLOB fields in filters, or filters in BLOB fields.

Summary expressions (like COUNT>5) are not allowed in filters.

In filters, parentheses can be used to nest conditions.

The comma functions as the AND operator for top-level conditions such as >200, <300. However, in a filter, the AND operator must be used instead of a comma to express more complicated conditions such as (>100 AND <200) OR (>300 AND <500). The general rule is that you must use AND when the condition is within parentheses.

The LIKE, AS, and SET operators are not used in filters, but the TODAY and BLANK operators are allowed.

Any operators that change data do not function in filters.

Checks are not used in filters, and records are displayed as if a CheckPlus is set on every field.

Although filters cannot have multiple lines such as those used in queries, the equivalent to multiple lines is the OR keyword.

The % (equivalent to mod) operator is supported in filters but not in queries. This operator only works on SQL tables.

The operator precedence is slightly different than queries. See Operator precedence in filters for more information.

In all other respects, the types of expressions you can use in filters are the same as those used in queries. See About queries for more information on query expressions.

Live query views

You can use a query to return a data set that you can edit. The edits you make to this live query view are also made to the table you queried.

See About live query views for information on live query views.


Operator precedence in filters

See also

Paradox evaluates operators in filters in a certain order. (See Filters and queries compared for details on the operators supported in filters.)

In expressions containing more than one operator, the operators are evaluated in the order of precedence shown in the following table.

Precedence	Operator

1	( ) [ ] " "

2	* / %

3	+ -

4	= <> < <= > >=

5	NOT

6	AND

7	OR

8	,

Note:	In the above table, the operator for the eighth precedence ranking is a comma.

Any expression contained in parentheses is evaluated first, and inner levels of parentheses are evaluated before outer levels. When two or more operators of equal precedence are in a single expression, they are evaluated from left to right.


Either/or conditions

See also

You refer directly to a field by typing a value for it in the Filters on Fields panel of the Filter Tables dialog box.

For example, the Customer table includes the State/Prov field and the Country field. If you type FL in the State/Prov field in the Filter Tables dialog box, Paradox shows you only those customers in the state of Florida.

Suppose, however, you want to see customers that are either in Florida or the Bahamas. If you type Bahamas in the Country text box (with FL still in the State/Prov text box), you tell Paradox to show all customers that are in both the state of Florida and the Bahamas. (This is equivalent to an AND query.) Since no records could meet that condition, Paradox shows no records in the filtered view.

To tell Paradox you want to see customers that are located either in Florida or the Bahamas, you must specify OR conditions across fields. You can do this by referring to one field from the text box of another field. So, to see customers that are either in Florida or the Bahamas, you type FL or Country=Bahamas in the State/Prov text box.

Note:	When referring to a field name that contains a space or special characters (those listed in Operator precedence in filters), you must enclose the field name in brackets. For example, the condition City = Venice or [Customer No] = 1560 is valid, but the condition City = Venice or Customer No = 1560 is not. Furthermore, the condition [Sale%] < 20 is valid, but the condition Sale% < 20 is not.

It doesn't matter which text box you use to specify filter conditions. You could type Bahamas or [State/Prov] = FL in the Country field. You could even type [State/Prov] = FL or Country = Bahamas in the Name text box (or any other text box).


To filter a field

See also

Single-field filters are quick and easy to implement.

1.	Right-click the field you want to filter in a Table, Form, or Report Design window and choose Filter.

Paradox opens the Field Filter dialog box.

2.	Type the value to display in the Field Filter dialog box and choose OK.

Paradox limits the view of the records to those with the target value.


To filter a table

See also

To filter your view of data in a table,

1.	Choose Table|Filter.

(If you're using a form, you can choose Form|Filter. If you're using a report, you can choose Report|Filter in the Report Design window.)

Paradox opens the Filter Tables dialog box.

2.	The Table list shows the table you are filtering. If you are filtering from a form or report, this list shows all the tables in the data model that you can filter. Choose the table you want to filter.

3.	Check the Order By checkbox to order records according to the selected index. The table's primary index is preceded by an asterisk (*). Double-click an index to change the arrangement of the fields in the Filters On Fields panel.

4.	All the fields in your table that you can set a filter on are listed in the Filters On Fields panel. Type the conditions for the records you want to see. For a given record to appear, the conditions specified for each field must all be true for that record.

For example, suppose you want to work only with orders that were placed on or after January 1, 1990. You can create a filter on the sample Orders table by typing >=1/1/90 in the Sale Date text box in the Filters On Fields panel.

More sophisticated conditions can be specified using special keywords and symbols. In general, you can use the same keywords and symbols to specify filters that you can use in queries to specify selection conditions. See About queries for details. Filters and queries compared lists the differences between rules for query selection conditions and for filter conditions.

5.	Choose Range to specify a Range of values using the Set Range for Index dialog box. The Range button is available for keyed tables only.


To filter more than one field

See also

You can specify filter conditions for more than one field. For example, suppose in the sample Customer table you want to see only those customers in the U.S.A. with whom you made first contact after 1991.

1.	If you are filtering a report, put the report in design mode.

2.	Choose Filter from the Table, Form, or Report menu.

Paradox opens the Filter Tables dialog box.

3.	In the Country field in the Filters on Fields panel, type U.S.A.

4.	In the First Contact field, type >1/1/91.

5.	Choose OK.

Paradox shows only those customer records that have the value U.S.A. in the Country field and have a value greater than 1/1/91 in the First Contact field.


To remove a filter

See also

Single-field filter

To remove a filter on a field,

1.	Right-click the field and choose Filter from its menu.

Paradox opens the Field Filter dialog box.

2.	Delete the filter condition text.

When you choose OK, Paradox displays all records from the table.

Multi-field filter

To remove a multi-field filter,

1.	Choose Table|Filter (or Form|Filter, or Report|Filter).

Paradox opens the Filter Tables dialog box.

2.	Delete the filter condition text.

When you choose OK, Paradox displays all records from the table.


To view keyed Paradox tables in a different order

See also

To view a keyed Paradox table in a different order than that specified by the primary index, use a secondary index to change the view order.

1.	Choose Table|Filter (or Form|Filter, or Report|Filter).

Paradox opens the Filter Tables dialog box.

2.	Make sure Order By is checked.

3.	Choose an index from the list below the Order By checkbox.

4.	Choose OK.

Paradox creates a view of the table's data sorted by the values in the secondary index you chose.

Note:	To specify a case-insensitive as opposed to a case-sensitive view order, you must first define the index you use to the specifications you want.


To view indexed dBASE tables in a different order

See also

You can view an indexed dBASE table in different orders by using different indexes.

Using a production index

1.	Choose Table|Filter (or Form|Filter, or Report|Filter).

Paradox opens the Filter Tables dialog box.

2.	Check the Order By checkbox.

The drop-down list below the Order By checkbox shows all tags included in the table's production index (the .MDX file that shares the table name).

3.	Select an index from the list. If you want records to appear in natural order, choose NO INDEX.

4.	Choose OK.

Using an index other than the production index

You can use a different index (an .NDX file or a tag from a different .MDX file).

1.	Choose Table|Filter (or Form|Filter, or Report|Filter).

Paradox opens the Filter Tables dialog box.

2.	Type the name of the index (including its .MDX or .NDX extension) in the dBASE Index File field.

3.	Choose OK.

Effects of changing the view order

When you change the view order of a dBASE table, the record numbers (which show the true location of each record in the table) are shown out of order.

Note:	To specify a descending as opposed to an ascending view order, or a case-insensitive as opposed to a case-sensitive view order, you must first define the index you use to the specifications you want.


To view indexed SQL tables in a different order

See also

You can view an indexed SQL table in different orders by using different indexes.

To view an indexed SQL table in a different order,

1.	Choose Table|Filter (or Form|Filter, or Report|Filter).

Paradox opens the Filter Tables dialog box.

2.	Make sure Order By is checked.

3.	Choose an index from the list below the Order By checkbox.

4.	Choose OK.

Paradox creates a view of the table's data sorted by the values in the index you chose.

Note:	To specify a case-insensitive as opposed to a case-sensitive view order, you must first define the index you use to the specifications you want.


Ranges on a composite index

See also

When you choose a composite index from the list box under the Order By field in the Filter Tables dialog box that index determines the order of the fields shown the Set Range for Index dialog box after you choose Range.

Rules for setting ranges on a composite index

When setting ranges on a composite index, you must select a single contiguous set of records on the chosen index.

You do not have to specify a range for every field of the index, but you cannot skip over a field. For example, if you have a three-field index, you can

Set a range on the first field, but not the second or third.

Set a range on the first and second fields, but not the third.

But you cannot set a range on the first and third fields, skipping the second.

You can specify exact matches and range matches on the same composite index, but you can use a range match only on the last of the fields you define a match for. Using the example of the three-field index, you can

Set an exact match on the first and second fields, and a range match on the third.

Set an exact match on the first field, a range match on the second, and leave the third blank.

Set a range match on the first field, and no range on the second or third.

But you cannot set a range match on the first field and an exact match on the second or third.

Note:	You cannot use a composite index on a dBASE table to set a range. You can, however, use an expression index. You can set an exact match, inexact match, or partial range on an expression index.


Ranges or filters on a quick form

See also

Suppose you set a range or filter from the Table window, then click the Quick Form Toolbar button to open your preferred form. Even if you've set a different range or filter for use on the form, Paradox uses the table's setting in both windows because the table was opened first.

Likewise, if you open a form first, then click the Table View Toolbar button to open a Table window, the table will use the form's setting. Paradox uses the settings of the window you open first.

You can save a filter or range setting with a form or report. (You can't save a range setting with a table.)

1.	Specify the range setting you want.

2.	Save the form from the Form Design window.


To view a range of data

See also

You can restrict a table to show only those records whose fields contain a range of values based on a primary or secondary index of your choice.

1.	Choose Table|Filter (or Form|Filter) to display the Filter Tables dialog box.

2.	Make sure the Order By checkbox is checked.

3.	Select an index from the list below the Order By checkbox.

For a dBASE table, you can use an expression index. You can set an exact match, inexact match, or partial range on an expression index.

4.	Choose Range.

The Set Range for Index dialog box appears. The fields that appear and the order in which those fields appear are determined by the index you chose, which is shown in the Index field.

5.	Specify a range, to indicate which group(s) you want to see. The way you specify the range depends on the type of range you want to set. Choose one of the following topics:

To specify an exact match in a range

To matching partial strings in a range

Ranges on a composite index


To specify an exact match in a range

See also

An exact match on a range displays only those records whose value matches exactly the value you specify.

For example, if the Customer table has an index on the Country field, and you enter Canada as the value to match, Paradox displays only those records with Canada as their Country value.

1.	Choose Table|Filter (or Form|Filter, or Report|Filter) to display the Filter Tables dialog box.

2.	Make sure the Order By checkbox is checked.

3.	Select an index from the list below the Order By checkbox.

For a dBASE table, you can use an expression index. You can set an exact match, inexact match, or partial range on an expression index.

4.	Choose Range.

The Set Range for Index dialog box appears. The fields that appear and the order in which those fields appear are determined by the index you chose, which is shown in the Index field.

5.	To set a range on one of the fields in the index, place the insertion point in the text box for that field, and check Set Range.

When you check Set Range, another text box appears below the first text box in the Field Values panel.

6.	To define the range of values to display, enter the low value in the top text box and the high value in the bottom text box.

Paradox does not recognize blanks as part of a match or range specification. A blank matches all records in the field. Blanks are allowed only in the last field of a composite index.

Note:	If you check Set Range without first placing the insertion point in a text box, Paradox automatically chooses the last field for which you have specified a value.


To match partial strings in a range

See also

You can match partial values of range matches on alpha fields. Suppose you divided responsibility for contacting customers alphabetically among your employees. One employee is responsible for customers whose names begin with the letters A through J.

To view this range of customers,

1.	Choose Table|Filter (or Form|Filter, or Report|Filter) to display the Filter Tables dialog box.

2.	Choose an index on the Name field. (You must create the index if one does not exist.) This sorts the records of the Customer table alphabetically by name.

3.	Choose Range to open the Set Range for Index dialog box.

4.	Check Set Range.

5.	Type A in the top text box. This tells Paradox to begin the range with names that start with A.

6.	Type J in the bottom text box. This tells Paradox to end the range with the names that start with J.

7.	Check Match Partial Strings. (This is unavailable until you check Set Range with an alpha field in the Field Values panel.) This tells Paradox you do not care what the full field value is, as long as it starts with a letter that falls within the range. Choose OK to return to the Filter Tables dialog box.

8.	When you choose OK and view the table, Paradox displays all records for customers whose names start with A through J.


About table structure information

See also

You can use the Info Structure command and Structure Information dialog box to get information about a table. The Structure Information dialog box shows the structure of the table, as well as any key, validity check, index, table lookup, or referential integrity information.

You cannot make changes to the table structure from the Structure Information dialog box; you can only view the structure. You must choose Tools|Utilities|Restructure to restructure a table.

Paradox tables

The Table Properties drop-down list displays the following information about a Paradox table:

Validity Checks shows validity checks defined for each field. Move through the fields in the Field Roster to see validity checks for each one.

Table Lookup shows any tables that this table uses as a lookup table.

Secondary Indexes shows all secondary indexes for the table.

Referential Integrity shows whether this table refers to a parent table for valid data.

Table Language shows the language driver for the table.

Dependent Tables shows any table that this table recognizes as a child in a referential integrity relationship.

dBASE tables

The Table Properties drop-down list displays the following information about a dBASE table:

Indexes shows all indexes for the table.

You can select an index and choose Detail Info to see information about the index in the Index Info dialog box (dBASE tables) dialog box.

Table Language shows the language driver for the table.

SQL tables

The Required Field checkbox (in the panel on the right) specifies whether the selected field is required.

The panel on the right lists indexes for the table. You can select an index and choose Detail Info to see information about the index in the Index Info dialog box (SQL tables) dialog box.


To get table structure information

See also

To view the structure of a table,

1.	Do either of the following:

Right-click the table in the Project Viewer and choose Info Structure.

Choose Tools|Utilities|Info Structure from the Desktop, then choose the table in the Select File dialog box.

The Structure Information dialog box appears.

2.	Review the structure information. Use the Table Properties drop-down list to review information about properties such as validity checks, secondary indexes, and so on.

For dBASE and SQL tables, you can select an index from the list and choose Detail Info to see information about the index.Paradox opens the Index Info dialog box dialog box for dBASE or SQL tables.

3.	To save the structure information as a Paradox table, choose Save As.

The Save Structure Information As dialog box appears.

4.	Specify a name and path for the table and choose Save.

5.	Choose Done to close the Structure Information dialog box when you have finished viewing the table structure.


About adding records

See also

To quickly add many records to a table, you can merge the records from another table that has the same structure.

Use the Add command to add a copy of the records in one table to another table.

You can use the Options area in the Add dialog box to either add new records, update existing records, or both.

For details on source and destination table requirements, see Rules for adding records.

Adding records to a different table type

When you add records from one table type to another, consider whether the field types in the table you add records to are compatible with the field types in the table you add records from. The rules for adding records from one type to another are the same as those for restructuring from one table type to another.

For information about adding between Paradox and dBASE tables, see Adding compatible field types and Merging Paradox and dBASE tables.

For information about adding between local tables and SQL tables, see your SQL Links documentation.

Note:	Some field type conversions can result in invalid records being written to the temporary Problems table. If this happens, edit the records in the Problems table and then add them again. The Problems table is not generated for SQL tables; the invalid records are dropped.


Rules for adding records

See also

When performing an Add operation, keep these rules in mind:

You can add records from one table type to another only if the tables have a compatible structure. This means compatible field types in the same order. For more information, see Adding compatible field types. Some field type conversions can result in invalid records being written to the temporary Problems table. If this happens, edit the records in the Problems table and then add them again.

The table you add records to can have more fields than the source table, as long as the first fields of the table you add the records to are compatible with all fields of the source (compatible fields types in the same order). Paradox places null values in the extra fields.

The source table can have more fields than the table you add the records to, as long as the fields of the table you add the records to are compatible with the first fields of the source (compatible field types in the same order). Paradox ignores the extra fields.

If the table you add the records to is keyed, the added records must conform to the rules of the key. Paradox places records that do not conform in the temporary Keyviol table in your private directory. The source table is never changed during an Add operation; it does not matter if it is keyed or not.


Adding compatible field types

See also

The two tables you use in the Add operation must have compatible (though not necessarily identical) field types in the same order.

For fields to be compatible, Paradox must be able to change from the existing field type to the new field type in a Restructure operation. For example, Paradox number (N) and money ($) fields are compatible, but Paradox number (N) and graphic fields (G) are not.

For information about compatible Paradox and dBASE field types, see

Compatible Paradox Field Types

Compatible dBASE Field Types

Merging Paradox and dBASE tables

For information about compatible field types for SQL tables, see your SQL Links documentation.


Merging Paradox and dBASE tables

See also

In an Add operation, the rules for adding records from one type to another are the same as those for restructuring from one table type to another.

You can add records from one table type to another only if the tables have a compatible structure. This means compatible field types in the same order. The following table shows which Paradox and dBASE field types are compatible.

	dBASE C	dBASE F	dBASE N	dBASE D	dBASE L	dBASE M	dBASE O	dBASE B
Paradox
A	Yes	P	P	P	P	Yes	No	No
N	Yes	Yes	Yes	No	P	No	No	No
$	Yes	Yes	Yes	No	No	No	No	No
D	Yes	No	No	Yes	No	No	No	No
S	Yes	Yes	Yes	No	P	No	No	No
M	No	No	No	No	No	Yes	No	Yes
F	No	No	No	No	No	Yes	No	Yes
B	No	No	No	No	No	Yes	No	Yes
G	No	No	No	No	No	Yes	No	Yes
O	No	No	No	No	No	Yes*	Yes	Yes
I	Yes	Yes	Yes	No	Yes	No	No	No
#	Yes	Yes	Yes	No	Yes	No	No	No
T	Yes	No	No	Yes	No	No	No	No
@	Yes	No	No	Yes	No	No	No	No
L	Yes	Yes	Yes	No	Yes	No	No	No
+	Yes	Yes	Yes	No	Yes	No	No	No
Y	P	No	No	No	No	Yes	No	No
Yes	The field types are compatible.

No	The field types are not compatible.

P	The field types are somewhat compatible, but conversion can result in a Problems table.

*	You can add from a Paradox OLE field to a dBASE IV memo field, but not to a dBASE memo field.

When you add data from a Paradox formatted memo to a dBASE memo, Paradox removes all formatting and converts the data to straight text.

When you add data from a Paradox graphic, OLE, or binary field to a dBASE memo, the dBASE table can accept the data, but cannot display it.

The table you add the records to can have more fields than the source table, as long as the first fields of the table you add the records to are compatible with all fields of the source (compatible field types in the same order). Paradox places null values in the extra fields.


Merging tables on a network

See also

When you merge tables using Add, Paradox needs to acquire a read lock on the source table and a write lock on the table you add records to. This means that until the records are added, other users

Cannot change the contents or structure of either table

Cannot perform any operation that requires a write or exclusive lock on the target table

If another user has already placed a write or exclusive lock on either table, you must wait until the lock is removed before using Add.

Windows lets you open several instances of the same table at the same time, so you could be considered another user of the table, preventing the records from being added. You can add records to an open table only if you are viewing the table; you cannot add records to a table that is open in Edit mode.


To add records from another table

See also

To quickly add many records to a table, you can merge the records from another table that has the same structure. The two tables can be of different types, as long as their fields are compatible. To verify that the source and destination tables are suitable for this procedure, see Rules for adding records.

To add records from another table,

1.	Choose Tools|Utilities|Add. Paradox opens the Add dialog box.

All tables in the working and private directories are shown in the list below the Look In list box.

You can use the Look In or Alias drop-down lists to access files in different directories. You can perform an Add operation across directories. Choose an alias for an SQL server to display a list of tables for that server.

2.	Select the table you want to add records from, then choose Open.

Paradox opens the Add Records In <table> To dialog box.

3.	Choose the table you want to add records to.

4.	If you want to add new records or update existing records (or both), specify append and update options.

5.	Choose Open to add the records.


About moving records

See also

In certain situations, you may have a record in one table that corresponds to a record in another table. This can happen:

In a referential integrity relationship, where one record in a parent table is related to one or more records in a child table

In a multi-table form, where one record of the master table is related to one or more records in the detail table

In either of these kinds of relationships, you can use Move Help to move, or reassign, a dependent record from one master to a different master.

Example:

For example, suppose you've linked Customer and Orders in a one-to-many relationship in a form. If you select a value in Customer No in the Orders table, then choose Record|Move Help (or press Ctrl+Shift+Spacebar), you'll see the Customer table in a dialog box. When you choose a value from the Customer No field in this lookup table, Paradox changes the Customer No value for the selected record, assigning it to a different master.


To move dependent records with Move Help

See also

In certain situations, you may have a record in one table that corresponds to a record in another table. You can use Move Help to move, or reassign, a dependent record from one master to a different master.

To move dependent records,

1.	Open the dependent table.

2.	Press F9 to enter Edit mode.

3.	Select the record to move, or reassign, by clicking in the field of that record that corresponds to the first field of the master table in a referential integrity relationship. You can click in any field of a detail table.

4.	Choose Record|Move Help or press Shift+Ctrl+Spacebar to display the Move Help dialog box.

5.	Select the master record to receive the reassigned dependent record.

6.	Click OK to complete the move.


About subtracting records that exist in another table

See also

You can use the Subtract command to remove from one table those records that match records in another (called the subtraction table). For example, after a mass mailing, you might want to create a table of all customers who did not answer their letters. You could then subtract the records in this table from your Customer table.

You can subtract records only from a keyed table. Because dBASE and SQL tables do not support Paradox keys, you cannot subtract records from dBASE or SQL tables. Instead, use a DELETE query.

SQL: You cannot use an SQL table as the source of a subtract operation.

During a subtract operation, Paradox removes any record that contains a value in its key that exactly matches the corresponding field(s) of a record in the subtraction table.

Rules for subtracting tables

The two tables you use in the Subtract operation must have compatible structures. This means compatible fields in the same field order.

If the table you subtract from is the parent table in a referential integrity relationship, the Subtract operation is not allowed. You must first either delete the referential integrity (by restructuring the child table) or delete the child table.


To subtract records on a network
Subtracting records on a network

See also

When you use Subtract, Paradox needs to acquire a read lock on the table that contains the records you are subtracting and a write lock on the table you are subtracting records from. This means that until the records are subtracted, other users cannot

Change the contents or structure of either table

Perform any operation that requires a write or exclusive lock on either table

If another user has already placed a write or exclusive lock on either table, you must wait until the lock is removed before using Subtract.

Windows lets you open several instances of the same table at the same time, so you could be considered another user of the table, preventing the records from being subtracted. You can subtract records from an open table only if you are viewing the table; you cannot subtract records from a table that is open in Edit mode.


To subtract records that exist in another table

See also

The Subtract command lets you subtract records from one table that match records in another. To verify that the tables meet Subtract command requirements, check the rules listed in About subtracting records that exist in another table.

To subtract one table from another,

1.	Choose Tools|Utilities|Subtract. Paradox opens the Subtract dialog box.

All tables in the working and private directories are shown in the list below the Look In list box.

You can use the Look In or Alias drop-down lists to access files in different directories. You can perform an Add operation across directories. Choose an alias for an SQL server to display a list of tables for that server.

2.	Select the table with records you want to subtract, then choose Open.

Paradox opens the Subtract Records In <table> From dialog box.

3.	Choose the table you want to subtract records from.

4.	Choose Open to subtract the records.


About emptying tables

See also

You can use the Empty command to remove all records from a table, leaving the table's structure (including all keys, indexes, validity checks, and so on) intact.

You can use Empty on Paradox, dBASE, and SQL tables. When you empty a dBASE table, all records in the table are marked as deleted.

You cannot empty a table that is identified as the parent in a referential integrity relationship. You must first either delete the referential integrity (from the child table) or delete the child table.

Emptying tables on a network

When you use Empty, Paradox must acquire an exclusive lock on the table. This means

No user can access the table in any way.

If there is a lock of any type open on the table, you must wait until it is released before you can use the Empty utility.


To empty tables

See also

To empty a table, you can

Choose Tools|Utilities|Empty. Paradox opens the Table Empty dialog box.

All tables in your working directories are shown in the file list. You can use the Look In and Alias drop-down lists to locate files in different directories. Choose an alias for an SQL server to display a list of tables for that server.

Enter the name of the table you want to empty in the Look In drop-down list. When you choose OK, Paradox displays a message asking you to confirm the Empty operation. Choose Yes to remove all records from the table or No to cancel the operation.

Click the Tables icon in the Project Viewer, then select a table name, right-click it, and choose Empty from the menu. Paradox opens a dialog box that asks you to confirm the Empty operation. Choose Yes to remove all records from the table or No to cancel the operation.

Open the table in a Table window and choose Table|Empty. Paradox opens a dialog box that asks you to confirm the Empty operation. Choose Yes to remove all records from the table or No to cancel the operation.

Note:	You cannot empty a table that is identified as the parent in a referential integrity relationship. You must first either delete the referential integrity (from the child table) or delete the child table.


About locking tables

See also

There are several kinds of locks in a multiuser environment. For example, when you edit a value, you see the message Record is now locked in the Desktop's status bar. This prevents two users from editing the same record at the same time. This is an automatic lock; you cannot edit a value without placing it. As soon as you move off the field, Paradox automatically unlocks the record.

The locks controlled by Tools|Set Locks are different.

They lock the whole table.

They provide varying levels of strength, for levels of protection.

You must explicitly place and remove them.

To view the current locks on a table [image] locks that others have placed [image] use Tools|Display Locks.

For more information on table locks, see Effects of locking from the Desktop.


About displaying table locks

See also

When you choose Tools|Display Locks, you see the Select File dialog box, where you enter the name of the table you want to know about. Paradox opens a Table window showing what locks have been placed on the table and who placed them.

This column	Shows

Type	What type of lock is on the table.

Username	The name of the person who placed the lock.

Net Session	The session number of the person who placed the lock.

Our Session	1 means the lock is yours. 0 means another user placed the lock.

Record Number	Which record is locked (if the lock is a record lock, not a table lock).

Note:	The Locks table always includes a lock placed by you. Paradox automatically places this lock on the table when it checks its locks. Paradox removes this lock immediately after gathering lock information about the table. By the time you see this lock in the Locks table, it has been removed.


Effects of locking from the Desktop

See also

This table summarizes users' rights under different levels of locks placed from the Desktop using Tools|Set Locks. The lock levels are arranged in order of increasing strength.

Lock level	Your rights	Other users' rights	Locks other users can place
None	None	All	All*
Open	Read, (write if no other user has a read lock)	Read, Write	All except exclusive if no record lock in place. Otherwise only Open.
Read	Read, (write if no other user has a read lock)	Read	Open, Read
Write	Read, write	Read	Open
Exclusive	All	None	None
* No Lock means no Desktop-level locks are placed by you. If another type of lock is in place (a record lock or open lock), you cannot obtain an exclusive lock.

Paradox maintains a Desktop-level lock until you exit Paradox or remove the lock (choose No Lock).


To lock a table

See also

You can lock tables to prevent other users from opening or editing them.

To lock a table,

1.	Choose Tools|Set Locks.

The Table Locks dialog box appears.

2.	Select the table to lock. By default, the Table Name list shows tables in the Working directory. You can use the Directories and Driver (or Alias) lists to locate tables in other directories.

3.	Set the type of lock to use. For descriptions, see Effects of locking from the Desktop.

4.	When you're done, click OK.


To display table locks

See also

You can display a list of all locks currently placed on a Paradox table, and who has placed them.

To display table locks,

1.	Choose Tools|Display Locks.

The Select File dialog box appears.

2.	Select the table you want to know about. By default, the file list shows tables in the Working directory. You can use the Look In and Alias drop-down lists to locate tables in other directories.

3.	Click Open to display a list of locks for the selected table. For a description of the list, see About displaying table locks.

4.	When you're done, click the X in the upper right corner of the lock list table.


About entering and editing data

See also

You can enter data into tables and forms by typing in Edit mode. For details on Edit mode, see About Edit mode.

In addition to typing values in fields, you can cut or copy data from a field and paste into different fields. Or you can paste in data from other applications. Data you cut or copy to the Clipboard remains there until you change it, clear it, or exit Windows. The Clipboard provides temporary storage for data you want to move to a different location.

You can also insert, edit, and delete data records with INSERT, CHANGETO, and DELETE queries.

Edit commands

With a table or form open in Edit mode, you can use the following commands on the Edit menu to work with your data.

Choose:	To:

Undo	Undo all changes to the current record. This does not undo any changes you posted. You must choose Undo before leaving the record.

Cut	Delete a value from a selected field or fields in a table (or form) and place it on the Windows Clipboard.

Copy	Copy a value from a selected field or fields in a table (or form) and place it on the Windows Clipboard. In a Table window, you can copy more than one field at a time. When you make your selection, lines appear around the selected data.

Paste	Paste the contents of the Windows Clipboard into the selected field. Note: You can paste only a valid value into a field. For example, you cannot paste a graphic value into an alpha field.

Paste Special	Establish a link using Dynamic Data Exchange (DDE) from another Windows application to your table.

Copy To	Copy the current selection to an external file.

Paste From	Paste a value from an external file into the selected field.

Delete	Remove the value. Paradox does not place it on the Windows Clipboard.

Note: You can remove an entire record with Edit|Delete but not with Edit|Cut.

Select All	Select all fields in the table (the entire table). Paradox places a box around the table.


Guidelines for entering and editing data

See also

To enter or change data, follow these guidelines:

Open a table or form with File|New, File|Open, Open Table Toolbar button, or the Project Viewer, then follow the steps in these topics:

To enter or edit data in a Form window

To enter or edit data in a Table window

Make your edits in Edit mode and Field View or Persistent Field View. For details, see

About Edit mode

About Field View

Use Edit|Undo to undo changes that you make to data.

Paradox automatically saves the data you enter as soon as you leave a record. So, you do not use the Save or Save As commands to save table data.

You use Tools|Utilities|Rename to rename a table.

You save changes to table properties by choosing Table|Table View Properties|Save. (If you make changes to table properties and do not save them, Paradox prompts you to save them when you close the table.)


About Edit mode

See also

Before you can edit data in a table or a form, you must enter Edit mode. This tells Paradox that you don’t just want to look at the data, you want to change it.

The look of the table or form changes slightly when you enter Edit mode.

Once you’re in Edit mode, you can move the insertion point to any of the table’s fields and begin typing. (This replaces the existing contents of the field.) In most field types, you simply select the field you want and type a value in it.

If you need to position the insertion point at some particular point within the field (for example, to change a spelling or typing error), enter Field View. For details, see About Field View.

Entering Edit mode

Use any of these ways to enter Edit mode:

Choose Table (or Form)|Edit Data.

Click the Edit Data Toolbar button.

Press F9.

Entering data in memo, formatted memo, graphic, and OLE fields can be different. See About editing special data types for more information.

Exiting Edit mode

Use any of these ways to exit Edit mode:

Choose Table (or Form)|View Data.

Click the Edit Data Toolbar button.

Press F9.


About Field View

See also

In normal Edit mode, whatever you type in a field overwrites the data entered there. To change only part of a field, use Field View.

Entering Field View

To enter Field View, select the field, then either

Click the Field View Toolbar button

Choose View|Field View

Press F2

Click the selected field again

In Field View, you can use the Left and Right arrows, as well as Backspace and Del.

Exiting Field View

To exit Field View, either

Click the Field View Toolbar button again

Choose View|Field View

Press F2

Select a different field

Also, pressing Enter, Tab, or Alt with the arrow keys lets you exit Field View and move to a different field.

Tip:	If you want to move from field to field and remain in Field View, press Ctrl+F2 to enter Persistent Field View. Press Ctrl+F2 again to exit Persistent Field View. For more information, see About Persistent Field View.

When viewing a table, if you enter Field View on a memo, formatted memo, graphic, or OLE field, Paradox places the selected field's value on top of the table. This is called Memo View. For memos and formatted memos, you have greater use of the keyboard in Memo View. For more information, see About editing memos and formatted memos.


About Persistent Field View

See also

In Edit mode and Field View, you can edit part of a field without overwriting the rest of the data in the field. But, when you leave a field, you exit Field View.

You can use Ctrl+F2 to enter into Persistent Field View, where you can move from field to field without leaving Field View.

In Persistent Field View, press Tab, Enter, or Alt plus an arrow key to move from field to field. Press arrow keys to move character-by-character within a field.

Press Ctrl+F2 again to leave Persistent Field View.


Data entry shortcuts

See also

Use these keyboard shortcuts for faster data entry. You can also use the navigation buttons on the Toolbar. For details, see Table and form navigation buttons.

Press	To

Home	Move to the first field of the table, remaining on the selected record.

Ctrl+Home	Move to the first field of the first record of the table.

End	Move to the last field of the table, remaining on the selected record.

Ctrl+End	Move to the last field of the last record of the table.

Ctrl+Backspace	Delete the word to the left of the insertion point. Note: Ctrl+Backspace works only when you are in Field View and do not have text selected.

Ctrl+D	Duplicate the information from the record above the selected field to the selected field.

Esc	Undo a field edit (you must press Esc before you leave the field!).

Spacebar	Enter current date, time, or both in date, time, or timestamp fields. You must press the spacebar for each part of the field's format.

These topics give additional keyboard shortcuts for entering and editing data:

Navigation and Selection Keys

Keys Used in Edit Mode


Why can't I leave a field?

See also

The status line at the bottom of the Desktop tells you what the problem is. If you cannot see a status line, maximize the Paradox window.

Several things can prevent you from leaving a field:

The field requires that a value be entered, and you have not entered one (for example, maximum or minimum values have been specified, or a picture string has been specified). Type any character or number that satisfies any validity checks defined for that field to get out of this field.

The field requires specific values from a lookup table, and you have not provided an acceptable one. To get out of such a field:

Press Ctrl+Spacebar to see the lookup table and choose a value from that.

If the lookup table was defined with Help And Fill checked, it appears for you to choose from.

If no lookup table appears, press Esc to undo your entry. Find out what the acceptable values are before you continue.

The value you entered violates referential integrity requirements. Press Esc to undo your entry. Find out what the acceptable values are before you continue.

The value you entered violates the table's key. Choose Edit|Undo to remove the current record.


To enter or edit data in a Table window

See also

To enter or edit data in a Table window,

1.	View the table, then either

Click the Edit Data Toolbar button

Choose Table|Edit Data

Press F9

2.	Place the insertion point in the field you want to edit. Whatever you type replaces what is in the field.

You can edit just a portion of the field by using Field View.

In addition to the usual Edit menu commands, you can press Ctrl+D in any field to copy a field value from the record above it.

To insert today's date in a date field, press Spacebar three times. Paradox adds the three elements of a date separately.

In Edit mode, your data is saved automatically every time you move off a record.

To exit Edit mode, choose Table|View Data, press F9, or click the Edit Data Toolbar button.


To enter or edit data in a Form window

See also

Forms display the data from your tables in an alternate format. You can edit data in either a Form window or a Table window.

To open a form from the Table window,

you can

Click the Quick Form Toolbar button

Choose Tools|Quick Form

Press F7

Paradox displays the preferred form, if one exists. If there is no preferred form or if the preferred form cannot be used, Paradox creates a default form for you. The form displays the fields from the table.

To enter and edit data in a Form window,

1.	View the form, then either

Click the Edit Data Toolbar button

Choose Form|Edit Data

Press F9

2.	Place the insertion point in the field you want to edit. Whatever you type replaces what is in the field.

You can edit just a portion of the field by using Field View.

In addition to the usual Edit menu commands, you can press Ctrl+D in any field to copy a field value from the record above it.

To insert today's date in a date field, press Spacebar three times. Paradox adds the three elements of a date separately.

In Edit mode, your data is saved automatically every time you move off a record.

To exit Edit mode, choose Form|View Data, press F9, or click the Edit Data Toolbar button.

To toggle back to the Table window again,

either

Click the Table View Toolbar button

Choose View|Table View

Press F7

Click the Table window


About inserting, posting, and deleting records

See also

You can insert new blank records or delete existing records from either a table or a form.

Inserting and posting records

To insert a blank record above the selected record, follow the steps in To insert records. Paradox saves the new information as soon as you move off the record or choose Record|Post/Keep Locked.

Saving a record is often called posting or committing a record. When working in a multiuser environment, other users do not see changes you've made until you've posted them.

When you post a record in a keyed table, Paradox automatically moves it to its proper position in the table. If the record's proper position is off screen, the record may seem to disappear as it is posted. However, if you look at the record count on the status bar, you'll see that the record has been added. Your view of the table might not change when Paradox posts the record, but the insertion point remains where it was when you pressed Ins.

When you post a record in a non-keyed table, the record always stays where it is inserted.

If you insert a record into a filtered view of a table's data or a direct query view, and the record does not meet the criteria established by the filter or query, you won't see the record when it is posted.

When working in a single-record form, inserting a record seems like inserting a blank screen. When you press Ins or choose Record|Insert, the record values appear blank. This is because Paradox has both inserted and moved to the new blank record.

Deleting records

To delete records, follow the steps in To delete records.

When using a Paradox table, you cannot retrieve a deleted record. When using a dBASE table, deleting a record does not permanently remove it. You can choose to view deleted records with the Show Deleted command.


To insert records

See also

To insert records,

1.	Open a table or a form and click the Edit Data Toolbar button to enter Edit mode.

2.	Press Ins.

Paradox opens a new blank record above the insertion point position. You can also insert a new blank record by navigating past the last record in a table (if Auto-Append is checked for the table in the data model).

3.	Enter data into the fields of the new record.

Type the values you want in the new record's fields, then either move off the record or choose Record|Post/Keep Locked to save the new record in the table.

4.	Click the Edit Data Toolbar button again to exit Edit mode, or navigate to a different record.

If the table is keyed, Paradox automatically moves the record to its correct location in the table.

If the table is not keyed, the new record stays in the location where you added it.

Paradox saves the changes you make to a record when you exit Edit mode or move to a different record. This is called posting the record. For more information on posting records, see About inserting, posting, and deleting records.

To add records from another table, choose Tools|Utilities|Add from the Desktop. The tables must have compatible structures. For details, see About adding records.


To delete records

See also

To delete records,

1.	Open a table or form and click the Edit Data Toolbar button to enter Edit mode.

2.	Navigate to the record that you want to delete.

3.	Press Ctrl+Del to delete the selected record. Paradox deletes the record from the table.

4.	Click the Edit Data Toolbar button again to exit Edit mode.

When using a Paradox table, you cannot retrieve a deleted record. When using a dBASE table, deleting a record does not permanently remove it. You can view deleted dBASE records with the Show Deleted command.


About cutting, copying, and pasting data

See also

In addition to typing values in fields, you can cut or copy data from one field and paste it into a different field or a different application. Data you cut or copy remains on the Windows Clipboard until you change it, clear it, or exit Windows. The Clipboard provides temporary storage for data you want to move to a different location.

For information on entering and deleting data with the Clipboard, see About using the Clipboard.

You can also copy data to and from files. For details, see About copying to a file and About pasting from a file.

Paradox also has commands for copying entire files (tables, forms, reports, queries, scripts, and so on). For information on these commands, see Tools|Utilities|Copy.


About using the Clipboard

See also

You can use the Windows Clipboard to help you enter, copy, and move Paradox data:

Choose Edit|Cut to delete the selected field's value from the table (or form) and place it on the Clipboard.

Choose Edit|Copy to copy the selected field's value from the table (or form) to the Clipboard.

When using a table, you can copy the values of more than one field at a time. For instructions, see To copy data.

When you cut or copy an object using Edit|Cut or Edit|Copy, Paradox stores the object on the Clipboard. You can paste these stored objects from the Clipboard back into Paradox designs:

Choose Edit|Paste to paste the contents of the Clipboard into the selected field. (You can paste into only one field at a time.)

You can paste only a valid value into a field. For example, you can't paste a graphic value into an alphanumeric field.

The Clipboard stores only one image at a time. Each time you place an object on the Clipboard, Paradox discards the previous image.

You can delete objects without storing them on the Clipboard. For details, see To delete data.

Undoing Clipboard actions

Edit|Undo does not work for Clipboard actions, like cut, copy, and paste. To undo a paste, delete the pasted object. To undo a cut, paste the object back in. You cannot undo a copy.


To copy data

See also

To copy data to the Clipboard, select the data you want and choose Edit|Copy. You can paste data you have copied to the Clipboard into other fields or other Windows applications.

To copy from a field

Select a field, then choose Edit|Copy to copy the entire field value. To copy only a portion of a field's data, enter Field View and select the data you want. Then choose Edit|Copy. When using a Table window, you can copy more than one field at a time. When you make your selection, lines appear around the selected data. Paradox must be in Edit mode.

To copy from a column

Double-click the column heading to select the column, then choose Edit|Copy.

To copy from a row

Double-click an unselected record number. (if the record number is selected when you double-click, you enter Field View). Then, choose Edit|Copy.

To copy multiple field values

Either choose Edit|Select All followed by Edit|Copy (this copies all the values in the table to the Clipboard), or drag over the specific fields you want to select and choose Edit|Copy.

You can copy multiple field values only in a table, not in a form. You cannot paste multiple field values back into a table. You can, however, paste them into any other application which accepts them (for example, Quattro Pro for Windows).

Note:	You can copy data to and from files. For instructions, see About copying to a file and About pasting from a file.


To delete data

See also

To delete data and store it on the Clipboard,

Select the data to delete, then choose Edit|Cut or the Cut Toolbar button.

To delete data without storing it on the Clipboard,

Select the data to delete, then choose Edit|Delete or press Del.

In this case, the object is not saved and cannot be pasted from the Clipboard. To retrieve it, choose Edit|Undo immediately.


To paste data

See also

To paste data from the Clipboard,

In Edit mode, select the field, text, or object to paste into, then choose Edit|Paste or the Paste Toolbar button.

The contents of the Clipboard are not deleted when you paste, so you can paste as many times as you want.

You can use Edit|Paste From to paste data from external files. See About pasting from a file for details.

Use Edit|Paste Special to create DDE and OLE links.


About copying to a file

See also

You can use Edit|Copy To to copy field values to external files.

When using a table, you can copy values in graphic, binary, memo, and formatted memo fields to non-Paradox file formats without using the Export command. You must be in Field View or Memo View to copy selected text.

When using a form, you can copy values from any field type to a non-Paradox file format without using the Export command. In Field View or Memo View, you can copy selected text inside the field.

Paradox can copy graphic files only to the .BMP file format.

When you work with a binary field in a Table window, you can use Copy To to copy binary field values to a non-Paradox file format. You'll see the Copy To File dialog box, which looks like the Copy To Graphic File dialog box except the Type list shows <Files>, and the file extension you use is unrestricted.


About pasting from a file

See also

You can use Edit|Paste From to paste values from non-Paradox files into Paradox fields and objects. (Note: You can use Edit|Insert Object to paste files into OLE fields and objects.)

When you choose Edit|Paste From (you must be in Edit mode), you'll see a Paste From dialog box. You can also open a Paste From dialog box by right-clicking a memo or formatted memo field (you must be in Memo View), graphic field, or binary field (in Edit mode).

The exact Paste From dialog box you see depends on the type of field or object you selected:

If a memo or formatted memo field is selected, the Select File dialog box appears.

If a graphic field or object is selected, the Paste From Graphic File dialog box appears. For more information on pasting from graphic files, see To place a graphic using Paste From.

If a binary field is selected, the Paste From File dialog box appears.

If you've selected a memo or formatted memo field from a table, Paradox opens the Select File dialog box with the word Text in the Files Of Type list. You can paste text from .PXT, .TXT, and .RTF files into memo or formatted memo fields. (If you're using a form, you can paste text into all field types except graphic and OLE.)

When you select the file you want and choose Open, Paradox places the contents of the file in the selected field or object.


To copy to a file

See also

To copy a field's value to an external file,

1.	Select the field you want.

2.	Choose Edit|Copy To.

The dialog box that appears depends on the type of field you are copying from:

If you're copying from a memo or formatted memo field, Paradox opens the Save File As dialog box.

If you're copying from a graphic object or field, Copy to Graphic File dialog box

If you're copying from a binary field, Paradox opens the Copy To File dialog box.

3.	Enter the file name (including full path if necessary) and extension in the file name text box.

4.	Choose Save. Paradox creates a new file with the name you have specified and places the contents of the selected field in it.

Example

For example, to copy a graphic value to a .BMP file, select the field that contains the value, and choose Edit|Copy To. You'll see the Copy To Graphic File dialog box.

Either choose the file name of an existing graphic file (the contents of the field will overwrite the existing contents of the file), or enter the name you want to give the file in the File Name text box. Choose Save. Paradox places the value from the graphic field in the file you specified. The original value remains in your table or form.


To copy text to a file

See also

Copying memos to a file from the Table window

When you're using a Table window, you can copy only memo and formatted memo text to a text file. When you choose Edit|Copy To you must be in Memo View.

To copy a memo field's value to a text file, follow these steps:

1.	Select the field you want.

2.	Enter Memo View. (Click the Field View Toolbar button or press Shift+F2.) You can select the entire memo or any part of it and copy it to a file.

3.	Choose Edit|Copy To. You'll see the Save File As dialog box

4.	Do one of the following:

Choose the name of an existing file. (The contents of the field will overwrite the existing contents of the file.)

Create a new file by entering the name you want to give the file in the File Name text box.

By default, Paradox copies the value to a file in the working directory. To save the file in a different directory, either type the full path in the File Name text box or use the Save In drop-down list to choose a different directory.

5.	Choose Save.

Paradox creates a new file with the name you've specified and places the contents of the selected field in it. (If you choose an existing file name, Paradox overwrites the existing file's contents.)

Copying text to a file from the Form window

When you're using a form, you can choose Edit|Copy To to copy text strings (of any field type, including memos, numbers, or dates) to a file. Paradox can copy text data to the .TXT or .PXT file formats.


To paste from a file

See also

To paste a value from an external file in a Paradox field,

1.	Select the Paradox field you want to paste into. Enter Edit mode, then Memo View if you selected a memo or formatted memo field.

2.	Choose Edit|Paste From.

The dialog box you see depends on the type of field or object you selected to paste into:

If a memo or formatted memo field is selected, the Select File dialog box appears.

If a graphic field or object is selected, the Paste From Graphic File dialog box appears. For details on pasting from graphic files, see To place a graphic using Paste From.

If a binary field is selected, the Paste From File dialog box appears.

3.	Enter the file name (including full path if necessary) and extension in the File Name text box.

4.	Choose Open. Paradox places the contents of the file in the selected field.


About finding and replacing data

See also

Use the Locate commands on the Record menu to find records, fields, and values in a table or form.

Paradox provides two ways to quickly change existing field values in Edit mode or Memo View:

Use Record|Locate|And Replace to change a field's value.

Use Edit|Find and Replace to change a string within a memo field or text object.

You can use LIKE, NOT, EXACTLY, and other query operators to search for data using queries. You can also use a CHANGETO query to replace field values. For more information about queries, see Queries.

If you're working in the SQL Editor or IDE Editor, you can use Search|Find and Search|Replace to locate and replace text in SQL queries or ObjectPAL scripts.


To find and replace text in memo fields and text objects

See also

To find and replace text in a memo field, formatted memo field, or text object,

1.	Select the block of text you want Paradox to search.

In a Table window, make sure you are in Field View and Edit mode (click the Field View and Edit Data Toolbar buttons).

In a Form window, highlight the block of text you want to search in a field. Make sure you are in Edit mode.

2.	Choose Edit|Find And Replace. This opens the Search and Replace dialog box.

3.	Enter the text you want Paradox to search for in the Search For text box.

4.	Enter in the Replace With text box any replacement text you want.

5.	You can check Case-sensitive to search for the text exactly as you typed it, including capitalization.

6.	Check Advanced Pattern Match to use @ and .. plus other wildcard characters in the search. For a description of these, see Extended list of wildcards.

7.	Choose Find. Paradox finds and highlights the first occurrence of the value you entered in Search For.

You can move the Search and Replace dialog box out of the way, so you can see the highlighted text as it is found.

8.	Choose Replace for Paradox to both replace the text with the value you entered in Replace With and move to the next occurrence of the value you entered in Search For. You can continue to choose Replace each time Paradox finds a value you want to replace. If you do not want to replace the value, choose Find to leave it intact and move to the next occurrence.

Choose Replace All for Paradox to replace all occurrences of the Search For value with the value you entered in Replace With.

If you select a block of text and then do a find-and-replace operation, Paradox will find and replace only within the selected block of text. Choosing Replace All, however, will search the whole file and not just the selected block of text.

You can also use the Find and Replace dialog box on text objects in both the Form Design and Report Design windows.


Wildcards

See also

You can use two wildcards in any search string you specify using Search And Replace or Locate And Replace.

Wildcard	Represents

@	Any single character

..	Any value

To search for these characters as literals, you must precede them with a backslash ( \ ).

For examples, see Sample search strings with wildcards.


Extended list of wildcards

See also

You can use an extended set of wildcards in a search string when you check Advanced Pattern Match in the Find And Replace and Locate And Replace dialog boxes.

Wildcard	Represents

@	Any single character

..	Any value

^	Beginning of field

$	End of field

*	Match none or more of the expression before the *

+	Match one or more of the expression before the +

?	Match one or none of the expression before the ?

|	Match either the characters before or after the vertical bar

[abc]	Match any of the characters contained within the brackets

[^abc]	Match any characters not contained within the brackets

(abc)	A group (a series of literals)

\	Use the following wildcard operator as a regular character

\r	Carriage return

\n	Line feed

\t	Tab

\f	Form feed

For examples, see Sample search strings with wildcards.


Sample search strings with wildcards

See also

Here are some examples of wildcard characters in a search string and what they find when you choose Advanced Pattern Match in the Search And Replace dialog box.

Search string	Finds

co@l	cool and coal, but not col

s..ch	search, scorch, and such

^any	any only when it occurs at the start of a paragraph (when Case-sensitive is not checked)

able$	able only when it occurs at the end of a paragraph (and is not followed by a period)

(success)	success

[success]	Any s, u, c, or e

[^success]	Any character except s, u, c, or e

a|(an)	Either a or an ("an" is a group here)

hands?	hand and hands (hand with or without the s)

suc?es?	success or Sue (when Case Sensitive is not checked). The ? stands for one "c" or none and one "s" or none.

suc*es*	success or Sue (when Case Sensitive is not checked). The * stands for any number of c's or none at all, and any number of s's or none at all.

suc+es+	success only; the + stands for one or more c's and one or more s's

4\^2	4^2 (read "four squared"). Without the backslash, only paragraphs ending in 4 followed by a paragraph starting with 2 would be found.

apples\\pears	apples\pears

apples\\\\pears	apples\\pears

Note:	You can use ?, *, or + if you are not sure how to spell success.


About locating records or values

See also

Use the Locate commands on the Record menu in a table or run-time form window to find records and values in a table. You can include wildcards in a search. For information on wildcards, see Wildcards. and Extended list of wildcards.

To find a particular record or value in a form

Choose Record|Locate, then choose one of the following:

Command	Action

Field	Move to the field you specify. (This command is available only for tables.)

Record number	Move to the record number you specify.

Value	Move to a field value you specify.

And Replace	Replace the specified value with another value you specify.

To search for more occurrences of an item

Choose Record|Locate Next.


To locate a record number

See also

Use Record|Locate|Record Number to move to a particular record.

When you choose Record|Locate|Record Number, Paradox opens a dialog box where you can type the number of the record you want.

The record number of a Paradox table is assigned automatically by Paradox and cannot be edited. It shows the record's position in the table.


To locate a table field

See also

Choose Record|Locate|Field to move to a particular field of the table. (This command is available only for tables.)

When you choose Record|Locate|Field, Paradox opens a dialog box where you can select the field you want and choose OK.


To locate a value in a field

See also

Choose Record|Locate|Value to move to a particular value in a field you identify.

When you choose Record|Locate|Value, Paradox opens a dialog box where you can type the value you want to find.

Shortcut key: Ctrl+Z

You can also use the Locate Field Value button [image] on the Toolbar.

You get improved performance if the field you use for the Locate operation has an index. Performance is further improved if the Case Sensitive setting of the index and of the Locate operation match.


To locate and replace values in a field

See also

Be sure you are in Edit mode, then

1.	Choose Record|Locate|And Replace.

The Locate And Replace dialog box appears.

2.	In the dialog box, do the following:

From the Field drop-down list, select the field that contains the value you want to change.

In the Value text box, type the value you want to change. You can use wildcards: click @ and .. to use those wildcards in your search, or click Advanced Pattern Match if you want to use the extended list of Paradox wildcards.

In the Replace With text box, type a replacement value.

3.	Check Case-sensitive if you want to find text that matches in uppercase and lowercase just as you have typed it.

4.	Click Exact Match if you're not using wildcards.

5.	Choose OK.

Paradox stops at each field that contains the value you specified and asks if you want to skip it, replace it, or replace all occurrences.

If Paradox cannot find the value you entered, "Value not found" appears on the status line.

You get improved performance if the field you use for the Locate operation has an index. Performance is further improved if the case-sensitive settings of the index and of the Locate operation match.


To locate the next record with the defined value

See also

Choose Record|Locate Next to search for the next occurrence of the value you last searched for.

You can also use Ctrl+A or the Locate Next button [image] on the Toolbar.

Locate Next is unavailable until you choose Locate|Value and specify a value.


About editing special data types

See also

Some Paradox field types require special methods of data entry. For example, you must place an actual picture into a graphic field—you can't simply type a value. Likewise, certain rules and conventions control the way you can enter and edit data in OLE fields, memo fields, and formatted memo fields.

When viewing a form, Paradox does not display a special window to show you the contents of a memo, formatted memo, graphic, or OLE field. These fields always appear in the size and shape you specify from the Form Design window.


About editing memos and formatted memos

See also

Entering data in memo and formatted memo fields is similar to entering data in alphanumeric fields. However, in memo and formatted memo fields, Paradox places no limits on the amount of data you can enter.

When viewing a form, Paradox does not display a special window to show you the contents of a memo or formatted memo field. These fields always appear in the size and shape you specify from the Form Design window.

When you're editing a memo or formatted memo, you can use Memo View, which gives you some word-processing capabilities and gives your keyboard greater functionality than Field View. For more information about Memo View, see About Memo View.


About Memo View

See also

When you're editing a memo or formatted memo, you can use Memo View, which gives you some word-processing capabilities and gives your keyboard greater functionality than Field View. For example,

In Field View, Enter and Tab move you off the field.

In Memo View, Enter inserts a line break and Tab inserts a tab character.

For more information about using the keyboard in Memo View, see Keys Used in Memo View.

Entering Memo View

How you enter Memo View to edit memos and formatted memos depends on whether you're using a table or a form. For details, see

To enter Memo View from a table

To enter Memo View from a form

Entering data in Memo View

When entering data in a memo field using a table, the Field View window scrolls downward to fit all the text you type. Text automatically wraps at the right side of the window. Changing the size of the window changes the text wrapping. For more information about wrapping text, see To wrap memo field text in a Form window.

When entering data in a memo field using a form, you can't change the field size. To do that, you must click the Design Toolbar button to open the Form Design window. From the Form Design window, you can place horizontal or vertical scroll bars on the field. This way, you can keep the field small, but view all of its contents.

When you leave the field, the data at the beginning of the memo is displayed.


To enter Memo View from a table

See also

From a table, enter Memo View by pressing Shift+F2, or use any of the methods for entering Field View:

Move to the field and choose View|Field View.

Move to the field and click the Field View Toolbar button.

Move to the field and press F2.

Click twice in an unselected field.

When you enter Memo View from a table, Paradox fills the whole Table window with that field's value and displays only the contents of the selected field. Text scrolls upward if you reach the bottom of the window. Text automatically wraps at the right side of the window. Changing the size of the window changes the text wrapping.


To enter Memo View from a form

See also

From a form, you can enter either Field View or Memo View:

If you enter Field View (see About Field View), you can press Enter or Tab to move to a different field on the form. This method is handy if you just want to enter single paragraphs or make quick edits.

To enter Memo View form a form,

Press Shift+F2.

Then, you can insert line breaks using Enter and tabs using Tab. You must exit Memo View to once again use Enter and Tab to move between fields.

To exit Memo View,

Press Shift+F2 again.

When you leave the field, the data at the beginning of the memo is displayed.


To enter memo data

See also

To enter memo data,

1.	Select the memo field.

2.	Choose View|Field View or press F2 to enter Field View. If you want, you can press Shift+F2 to enter Memo View.

3.	Begin typing. Paradox places no limits on the amount of data you can enter.

In Memo View,

To insert a hard carriage return (line break), press Enter.

Tabs are set for every half inch. Press Tab to use them.

Press Backspace to delete text one character at a time to the left of the insertion point.

Press Ctrl+Backspace to delete the whole word to the left of the insertion point.

Press Del to delete text one character at a time to the right of the insertion point.

You can use Edit menu commands, as well as keystrokes, to work with selected blocks of text.

To select blocks of text using the mouse, drag across the text you want. Paradox highlights selected text.

To select blocks of text using the keyboard, hold Shift and use the arrow keys to highlight the text you want.

For a complete list of keys you can use in Memo View, see Keys Used in Memo View.

For more information on entering data in Memo View, see About Memo View.


To wrap memo field text in a Form window

See also

If you are entering data in a Form window, the text in a memo field should wrap automatically at the right side of the field object as you type. If the text does not wrap automatically, the Word Wrap property of the field object has been turned off.

To switch Word Wrap back on,

1.	Click the Form Design Toolbar button.

2.	Right-click the field in the Form Design window.

3.	Choose Properties, then Text, and check Word Wrap. Word Wrap is on by default.

4.	Choose OK to return to the Form Design window.

5.	Close the Form Design window and save the change to return to the Form window where you can enter data again. For more information, see To exit Memo View and end a memo field edit.

When you reach the bottom of the text object, the text automatically scrolls up so you can see what you are typing. When you leave the field, Paradox displays the beginning data.


To exit Memo View and end a memo field edit

See also

When you are finished editing a memo field, close the Field View window. You can

Click the Field View Toolbar button

Choose View|Field View

Double-click the Control menu of the Field View window (in a Table window)

Choose Close from the Control menu of the Field View window (in a Table window)

Paradox saves the data in the memo field when you leave Field View. The amount of the memo visible in the table depends on the column width and the field size of the memo field. You can change the column width by dragging the grid line in the table header area.


To enter formatted memo data

See also

Entering data

You enter data into formatted memo fields exactly the same as you do into memo fields. Simply enter Field View and type the data.

Formatting text

Select the text with the mouse (drag over the text to be formatted), right-click, and choose Properties. Then, choose Font or Text to change the font, color, alignment, and spacing of the text.

When Font and Text settings are as you want them, choose Apply to apply the settings, then choose OK to close the property sheet.

These settings are saved with other properties when you choose Table|Table View Properties|Save.


About entering graphic data

See also

Data in a graphic field can be any picture, or graphic, that is a scanned image, line art, or graphic file created in a paint or draw application.

Paradox gives you two ways to place a graphic in a field:

Using the Cut, Copy, and Paste commands

Using the Paste From command

You cannot edit a graphic in Paradox; you must edit it in its source application.

To paste a graphic into a graphic field, you enter Edit mode and paste the graphic from the Clipboard or a file.


To place a graphic using Cut and Paste

See also

To place a graphic in a graphic field, from a Windows application that supports the Clipboard,

1.	Open the graphic file in its source application.

2.	Select the graphic and cut or copy it to the Clipboard.

3.	Open the Paradox Table or Form window you want to place the graphic in.

4.	Enter Edit mode.

5.	Select the graphic field you want the graphic in.

6.	Choose Edit|Paste.

Paradox places the graphic from the Clipboard in the graphic field.

When you paste a graphic into a graphic field, Paradox converts the graphic into the .BMP file format.


To place a graphic using Paste From

See also

Paradox lets you place .BMP, .PCX, .TIF, .GIF, or .EPS graphic files directly into a graphic field without opening the graphic's source application. Simply use Paradox's Edit|Paste From command.

To place a graphic in a graphic field without using the Clipboard,

1.	Select the graphic field you want the graphic in.

2.	Enter Edit mode.

3.	Choose Edit|Paste From. The Paste From Graphic File dialog box opens.

4.	Choose the graphic file you want.

5.	Choose Open.

Paradox places the graphic in the graphic field.

When you paste a graphic into a graphic field, Paradox converts the graphic into the .BMP file format.


To view graphic data

See also

When you place a graphic in a table, you might not be able to see all of it. Adjust the column width and line spacing to see as much of the graphic as you want.

You can enter Field View to see the whole graphic. When you enter Field View on a graphic field, Paradox fills the whole Table window with the graphic, displaying only the graphic. For details on Field View, see About Field View.

To speed up scrolling

It takes a little longer to scroll through the records of a table with graphics, so you can right-click the field, choose Properties, and uncheck Complete Display in order to display the graphic field value of the selected record only. When Complete Display is checked, all graphics are shown at all times.

Size

If the graphic field on your form is the wrong size to display the graphic values of each record, you can change to the Form Design window to resize the field object or to right-click the field, choose Properties, and choose Magnification|Best Fit. You can also check or uncheck its Complete Display property.


About inserting and using OLE objects

See also

OLE stands for Object Linking and Embedding. You can use OLE fields to hold virtually any kind of data, from graphics to text to calculations. The advantage of using an OLE field is that once you place a linked OLE value, it maintains a link to its source application. You can always open the source application from the OLE object that you place in a Paradox table or form. Changes you make to the OLE object are then updated in your Paradox table or form.

For details on inserting and using OLE objects, see About OLE.


About editing fields with validity checks

See also

Validity checks impose restrictions on a field to ensure that the data entered in the field meets certain requirements. For example, you can define a maximum value validity check for a field so Paradox doesn't accept any value higher than the maximum.

When a validity check is defined, you can't post or leave a record until its requirements are met. If you enter invalid data, Paradox prevents you from moving off the record. Either correct the data or undo changes to the record before you move.

The following table describes how validity checks determine the kind of data you can enter into a field. For information on defining validity checks, see About validity checks.

Type of validity check	Description

Required field	You can't move from the record until you enter a value. This ensures that important fields always have data in them for each record.

Minimum value	Paradox won't accept any value less than the minimum value.

Maximum value	Paradox won't accept any value greater than the maximum value.

Default value	Paradox automatically enters the default value in the field when you insert a new record.

To enter a value different from the default, select the field and enter the value you want. To enter a blank value, select the field and press Backspace or Del.

Paradox inserts default values only in new records. Moving through an existing record will not cause a default value to be inserted

Picture	Pictures are patterns Paradox uses to validate and help you enter correctly the data you place in a field.

For example, a common picture is (###)###-####. This is the pattern of most U.S. telephone numbers. If you have defined this picture for a field, you can just enter numbers, without the parentheses or hyphen. Paradox enters the numbers correctly (according to the picture) and adds the parentheses and hyphen to the value.

Picture validity checks provide an editing aid (automatically checking your data for you) as well as enforce rules that ensure the data you enter meets with the requirements you established for valid data in the field when you created the table. See About pictures for information on the different types of pictures you can create.


About locking records

See also

Paradox automatically locks a record when you start editing it and removes the lock when you leave the record. A message appears in the status bar to inform you of these automatic locks.

You can also manually lock a record. Select the record, then choose Record|Lock (or press F5 or Ctrl+L). The status bar tells you that the record is locked.

Locking is important if you use Paradox in a multiuser environment. When you lock a record, other users can view it, but can't edit or delete it.

Locking a record prevents other users from placing a read or write lock on the table. It also prevents users from performing any operations that require a read or exclusive lock (such as restructuring the table).


To lock a record

See also

Choose Record|Lock or press F5 to place a lock on the selected record.

The Desktop status bar tells you when you have locked a record.

After you lock a record, the Lock command changes to Unlock. You must unlock the record before another user can change it.

On a network

Locking is important if you are using Paradox in a multiuser environment. When a record is locked, other users can view it, but cannot edit or delete it. If you try to change a record locked by another user, Paradox tells you the record is locked by another user. A record is automatically locked for you when you begin to edit it. A record is automatically unlocked when you move to another record.

On a single computer

Traditionally, the term multiuser has been equivalent to the term network. This is true in Paradox too, but you can also place yourself in a multiuser situation working on a standalone system.

For example, if you open a table, Paradox places a lock on it. This ensures you an accurate view of the table; it cannot be restructured or deleted while you are using it. This is true whether you open the table in a form, a report, a query, or any other type of object.

Sometimes these automatic locks prevent you from performing an operation on a table. For example, you are prevented from deleting an open table.

In these circumstances, your various windows of table data act as various users of the table.


To unlock a record

See also

Paradox automatically unlocks a record when you move off it or exit Edit mode.

After you've locked a record, the Lock command changes to the Unlock command. Choose Unlock if you want to release a record for other users' access without moving off it. (You must unlock records before other users can edit or delete them.)

If you try to edit a record and discover that it has been locked by another user, you can look at the status bar to see the name of the user who has locked the record.


To post a record without unlocking it

See also

Paradox automatically saves (posts) any changes you make when you leave the record, but if you want to save your edits before you leave the record,

Choose Record|Post/Keep Locked.

Sometimes Paradox moves a record to a different location when you post it. This happens if the table is keyed and the new record is not in its correct location in the table. Paradox moves the record to its correct location. When you choose Record|Post/Keep Locked, the moved record remains selected, and Paradox updates your view of the table if necessary.


Types of table lookup

See also

Paradox provides two types of table lookup:

Just Current Field: The value in the current field is the only value from the lookup table that Paradox checks or fills in for you.

All Corresponding Fields: Paradox checks the field on which the table lookup is defined and fills values in all fields that match fields in the lookup table. (Paradox determines if fields match by the field names.)

Whether you'll be able to view the lookup table from the table you're editing depends on the type of lookup access specified when the table lookup was defined:

Help And Fill: You can view the lookup table from the table you're editing; the default.

Fill No Help: You can't view the lookup table from the table you're editing.

When the lookup access is Fill No Help, you can't open the lookup table automatically. You can, however, view the lookup table by opening it in its own Table window.

For information on defining table lookup, see About table lookups.

For examples, see Examples of table lookup.


To use table lookup

See also

Table lookup lets you refer to another table to look up the acceptable values for a field and then automatically copy values in the lookup table to the table you are editing. Before table lookup can be used, you must define one using the Table Lookup dialog box. For information on defining table lookup, see About table lookups.

To use table lookup,

1.	Press Ctrl+Spacebar to view the lookup table. For this to work, you must have defined the lookup table with Help And Fill selected in the Table Lookup dialog box.

Select the value you want from the highlighted field.

2.	To make sure you have the right value, you can scroll to other fields; the scroll lock is on in a lookup table, so the lookup field stays onscreen while you scroll.

3.	Choose OK to close the lookup table and insert the selected value into your table. Some table lookups are designed to also fill in other fields with the same name and type as the fields in the lookup table.


Examples of table lookup

See also

The following figures illustrate table lookup. The tables shown are not the sample tables provided with Paradox.

Just Current Field with Fill No Help

Just Current Field with Help And Fill

All Corresponding Fields with Fill No Help

All Corresponding Fields with Help And Fill


Example of using Just Current Field with Fill No Help

See also

Suppose you are editing an Orders table in which the Customer No field has a table lookup defined as Just Current Field and Fill No Help to the Customer No field of a Customer table. This means any value entered in the Customer No field of the Orders table must be a value that already exists in the Customer No field of the Customer table. With Fill No Help, the data entry person must already know what these values are.

If you enter an invalid value, Paradox displays the message "Field value fails lookup validity check." You cannot move off the record until you enter a valid value.

To get out of a field that requires a value to be entered, type any character or number.

If the field is constrained by referential integrity requirements, choose Edit|Undo to undo your entry. Find out what the acceptable values are before you continue.


Example of using Just Current Field with Help And Fill

See also

Suppose you are editing an Orders table in which the Customer No field has a table lookup defined as Just Current Field and Help And Fill to the Customer No field of a Customer table. In Orders, when the Customer No field is selected, you will see the message "Press Ctrl+Space for lookup" in the Desktop status bar. You can either enter a valid value in the field or press Ctrl+Spacebar.

If you press Ctrl+Spacebar, the lookup table (Customer) appears in a dialog box on top of the table you are editing. A scroll lock is placed to the right of the lookup field (Customer No). If there is a valid value in the table you are editing, the current record marker indicates that value in the lookup table. For example, if you enter 1320 and then press Ctrl+Spacebar, the current record marker is on the value 1320 in the lookup table.

From the lookup table, select the value you want to enter. When you choose OK, the value is filled in and the dialog box containing the lookup table disappears.


Example of using All Corresponding Fields with Fill No Help

See also

Suppose you are editing an Orders table in which the Customer No field has a table lookup defined as All Corresponding Fields and Fill No Help to the Customer No field of a Customer table. This Orders table also has a Name field that contains the customer's name.

When you enter a valid value in the Customer No field of Orders, the correct value for the Name field is automatically filled in. This is because the Name field of Orders corresponds to the Name field of Customer.

If you enter an invalid value, Paradox displays an error message. You cannot move off the record until you enter a valid value.

To get out of a field that requires a value to be entered, type any character or number.

If the field is constrained by referential integrity requirements, choose Edit|Undo to undo your entry. Find out what the acceptable values are before you continue.


Example of using All Corresponding Fields with Help And Fill

See also

Suppose you are editing an Orders table in which the Customer No field has a table lookup defined as All Corresponding Fields and Help And Fill to the Customer No field of a Customer table. This Orders table also has a Name field that contains the customer's name.

You can enter data into the Customer No field by typing it in, or you can press Ctrl+Spacebar to display the lookup table (Customer) in a dialog box. When you choose a Customer No value, Paradox enters it and all corresponding field values (like Name) in the Orders table.


About exchanging data

See also

Paradox provides several ways to exchange data with other programs. You can use

Import or Export commands on the File menu to open and save data in a variety of database, spreadsheet, and text formats.

Dynamic Data Exchange (DDE) to send field values from a Paradox table to other applications, or to send data from other applications to a Paradox table or query.

Object Linking and Embedding (OLE) to insert files from an OLE server application into Paradox. When you place data into Paradox using OLE, you can then access the OLE source application directly from Paradox to make any changes you want. You can also use OLE to embed an entire Paradox table into another application's document.

File|Send to transfer messages and attached files through MAPI-compliant mail systems, such as Microsoft Exchange.

For more information, see the following overview topics:

About importing data

About exporting data

About OLE and DDE

About sending mail

You can also exchange information with client/server database applications using Structured Query Language (SQL). See About SQL for details.


About importing data

See also

You can use File|Import to transfer data from a different file format to a Paradox or dBASE table. You can import only data files, not applications or forms. You can use the Text Import Expert to assist with importing fixed length and delimited text files. If the Expert is installed, you'll have an opportunity to use it when you choose File|Import.

You can create a new table, replace data in an existing table, or add to data in an existing table. If you create a new table, Paradox defines its structure automatically. Then, you can use Table|Restructure to change it if you want.

Paradox imports files in the following formats:

Fixed length or delimited text (*.txt)

Quattro Pro for Windows (*.wb1, *.wb2, *.wb3)

Quattro Pro for DOS (*.wq1)

Quattro (*.wkq)

Lotus 1-2-3 (*.wks, *.wk1)

Excel 3.0, 4.0, or 5.0 (*.xls)

Database tables (*.db, *.dbf)


Importing spreadsheet data

See also

In Paradox, you can select a specific block in the spreadsheet to import. You can enter the range you want in the From Spreadsheet page of the Import Data dialog box, either the range reference or name (if created in the source spreadsheet).

To avoid conversion problems, edit the spreadsheet before importing it. For best results,

1.	Remove extraneous entries (such as hyphens, asterisks, and exclamation points).

2.	Make sure each column contains only one kind of data and uses only one formatting option.

3.	Place column titles in the top row of the selected range, because Paradox uses the first row that contains text to generate field names. (If there are no column titles on the spreadsheet, uncheck the Use First Row Of Data As Field Names check box in the Spreadsheet Import dialog box.)

If the table does not have the format you want after you import it, you can restructure it in Paradox.

For more information on importing spreadsheets, see Determining spreadsheet field types.


Importing delimited text

See also

You can import delimited text with the Text Import Expert, or File|Import. If the Text Import Expert is installed, you'll have an opportunity to choose it after you choose File|Import.

Note:	Each line of the text file you want to import must end with a carriage return/linefeed combination to mark the end of a record.

By default, Paradox expects the fields in the text file to be separated by commas, with quotation marks surrounding each text field. You can tell Paradox how to interpret the file by the settings you choose in the From Text page of the Import Data dialog box:

Use the Fields Separated By settings to identify the character that separates field values in the source file.

Use the Fields Delimited By settings to identify the characters that surround values in the source file.

Use the Delimited Fields settings to choose whether you want to delimit all possible fields from the source file or only text fields with quotation marks (or the character you specify in the Fields Delimited By panel). However, Paradox will scan your file to try and determine the actual layout.

You can check Use First Row Of Data As Field Names when the first line of the text file to import contains the field names you want to use in the table.

Use the Character Set settings to choose either the OEM or ANSI character set. Files created in DOS-based applications, like Edit, typically use the OEM character set. Files created in Windows applications, like Notepad, typically use the ANSI character set.

When you import a delimited text file, Paradox scans the file to determine the number of fields and the field types the file contains. Dates and numbers are formatted as specified in the BDE Configuration Utility program (available in the Paradox program group).

Paradox trims strings longer than 255 characters. It stores these as alpha fields.


Importing fixed length text

See also

You can import fixed length text with the Text Import Expert, or File|Import. If the Text Import Expert is installed, you'll have an opportunity to choose it after you choose File|Import.

Note:	Each line of the text file you want to import must end with a carriage return/linefeed combination to mark the end of a record.

When you import a fixed length text file, you can use the From Fields page of the Import Data dialog box to define the field names and types of the fields in the new table. For each field name, enter a Type, Start position (the column where you want the field value to begin), and a Length (the field size).

On the From Text page of the Import Data dialog box, you can choose either the OEM or ANSI character set. Files created in DOS-based applications, like Edit, typically use the OEM character set. Files created in Windows applications, like Notepad, typically use the ANSI character set.

Dates and numbers are formatted as specified in the BDE Configuration Utility program (available in the Paradox program group).

The settings in the Import Data dialog box are called the import specifications.

You can

Choose Save Spec to save the current import specifications in a table.

Choose Load Spec to load a previously saved import specification table.


Determining field names

See also

When Use First Row Of Data As Field Names is checked, Paradox generates field names from the first row of imported data that contains text. If Paradox cannot determine a field name from the imported file, it generates new field names beginning with the name FIELD001. Additional new field names are numbered FIELD002, FIELD003, and so on.

If more than one field seems to have the same name, Paradox numbers the duplicate fields (for example, Customer1 and Customer2).


Determining spreadsheet field types

See also

When you import data from a spreadsheet, Paradox automatically assigns field types to the data. The following table shows how Paradox determines a field's type.

Spreadsheet value	Paradox field type	dBASE field type
Labels	Alpha	Character
Integers	Short, Integer, or Number (depends on value)	Float number (6,0) or more (depends on value)
Decimal numbers	Numeric	Float number (20,4)
Money	Money	Float number (20,4)
Dates	Date	Date
Date/Time (Excel)	Timestamp	Character
Time (Excel)	Time	Character

The following rules determine which category a column falls into. The data type for a column is whatever data type can hold all values in the column.

A column containing	is converted to
Label (text) cell	Alpha field (or dBASE character field)
Dates and numbers	Alpha field (or dBASE character field)
Money only	Money field in a Paradox table
Money and numbers	Number field
Dates and times	Timestamp field (or dBASE character field)
As a result of these conversion rules, Paradox often imports numbers in unedited spreadsheets as alpha fields. For example, spreadsheet columns often have rows of hyphens separating sections of numbers. Since only an alpha field can contain both the numbers and hyphens, the column is converted to an alpha field even though it contains mostly numbers. Dates and numbers are formatted as specified in the BDE Configuration Utility program (available in the Paradox program group).


To import data

See also

To import data,

1.	Choose File|Import. If you have the Text Import Expert installed, the Import dialog box appears. Otherwise, you skip directly to step 3.

2.	In the Import dialog box, you can choose to import data manually or using an Expert:

Choose Import to import text manually, or import files in formats other than text.

Choose Text Import Expert to use the Text Import Expert.

Note: If you choose to use the Text Import Expert, follow the onscreen instructions it provides. The following instructions apply if you choose Import.

3.	The File Import dialog box appears.

4.	Use the File Of Type drop-down list to choose the file format from which you want to import the data. All files of that format in the working directory appear in the file list.

If the file you want to import is not located in the working directory, you can use the Look In and Alias drop-down lists to choose a different directory.

5.	Choose the source file you want and choose Open.

The Import Data dialog box appears.

6.	Available settings depend on the type of file you chose to import data from.

7.	Fill in all the From and To information and choose Import.

Note: You can click a page tab and press F1 for context-senstive Help on that page. Also, see the following topic for the type of file you are importing:

Importing spreadsheet data

Importing delimited text

Importing fixed length text

If you checked Display Table On Completion in the Import Data dialog box, the table with the imported data opens when the import operation is complete.

Note:	Any records which couldn't be imported will be noted in Problems.db or Keyviol.db if Display Auxiliary Tables On Completion was checked on the To Table page of the Import Data dialog box.


About exporting data

See also

You can use File|Export to export data from Paradox tables to the following different file formats:

Delimited text

Fixed length text

Quattro Pro for Windows 7 (.wb3)

Quattro Pro for Windows 6 (.wb2)

Quattro Pro for Windows 1, 5 (.wb1)

Quattro Pro for DOS (.wq1)

Quattro (.wkq)

Excel 5 (.xls)

Excel 3, 4 (.xls)

Lotus 1-2-3 v. 2 (.wk1)

Lotus 1-2-3 v. 1 (.wks)

dBASE 5

dBASE IV

dBASE III+

Paradox 7

Paradox 5

Paradox 4.x 'Standard'

Paradox 3.x 'Compatible'

You can export data only to new files, not to existing ones.


Exporting to a spreadsheet

See also

You can use File|Export to export table data to a variety of spreadsheet applications, listed in About exporting data.

When you export data to a spreadsheet, Paradox converts each record to a row and each field to a column. If a value is wider than the column display width, the full value is converted but partially hidden.

If a date in the original table is beyond the range of the allowable dates in the spreadsheet, the date is exported as the value ERROR.


Exporting to delimited text

See also

You can use File|Export to export a table to a text file in which the table's field values are separated and/or enclosed (delimited) by the characters you specify.

By default, field values in the exported file are separated by commas, and non-numeric values are enclosed in double quotation marks. Each record is separated by a carriage return and a linefeed character. Dates and numbers are formatted as specified in the BDE Configuration Utility program (available in the Paradox program group).

If you want the exported file to display field values differently, change these settings in To Text page of the Export Data dialog box:

Use the Fields Separated By settings to choose the character that separates field values in the exported file. You can choose commas, tabs, or choose Other, then enter the character you want to use in the Other text box.

Use the Fields Delimited By settings to choose the characters that surround values in the exported file. You can choose quotation marks, or choose Nothing if you do not want any characters to enclose the values. If you want to use a different character, choose Other, then enter the character you want in the Other text box.

Use the Delimited Fields settings to choose whether you want to surround data from all field types or only from text field types (alpha or character) with quotation marks (or the character you specify in the Fields Delimited By panel).

Use the Character Set panel to choose either the OEM or ANSI character set.

Note:	Paradox cannot export memo (Paradox or dBASE), formatted memo, graphic, OLE, or binary field types to delimited text. These types will not be included in the exported text file.


Exporting to fixed length text

See also

You can use File|Export to export a table to a text file in which each record is the same length.

When you export a fixed length text file, you can use the To Fields page of the Export Data dialog box to define the field names and types of the fields in the new table. For each field name, enter a Type, Start position (the column where you want the field value to begin), and a Length (the field size). Dates and numbers are formatted as specified in the BDE Configuration Utility program (available in the Paradox program group). These settings are called the export specifications.

You can

Choose Save Spec to save the current export specifications in a table.

Choose Load Spec to load a previously saved export specification table.


To export data

See also

To export data,

1.	Choose File|Export, or right-click a table's name in the Project Viewer. and choose Export from the menu.

If you choose File|Export, the Export Table dialog box opens. Otherwise, you go directly to step 3.

2.	Select a table to export.

The Export <table> As dialog box appears.

3.	Choose the file type for the exported table.

4.	Choose OK.

The Export Data dialog box appears.

5.	Available settings depend on the type of file you chose to export data to.

6.	Fill in all the From and To information and choose Export.

Note: You can click an available page tab and press F1 for context-sensitive Help on that page. Also, see the following topic for the type of file you are exporting:

Exporting to a spreadsheet

Exporting to delimited text

Exporting to fixed length text


About OLE and DDE

See also

You can use these two features to access data from Windows applications: Dynamic Data Exchange (DDE) and Object Linking and Embedding (OLE).

Use DDE to send field values from a Paradox table to other applications, or to send data from other applications to a Paradox table or query.

For more information about DDE, see About DDE.

Use OLE to insert files from an OLE server into Paradox. The OLE objects can be embedded{emdash.bmp}containing the actual data they display{emdash.bmp}or linked{emdash.bmp}containing pointers to the location where the data is stored on disk (by another application).

When you place data into Paradox using OLE, you can then access the OLE source application's commands and tools directly from Paradox to make any changes you want. You can also use OLE to embed an entire Paradox table into another application's document.

For more information about OLE, see About OLE.

The application that is the source of the data is called the server. The application that receives the data is the client (or, in OLE 2.0, the container). Paradox can be both a DDE server and a DDE client. Paradox is both an OLE 2.0 server and container.


About OLE

See also	Properties

Object Linking and Embedding (OLE) provides a way for a data file from one application (for example, a Paradox table) to contain data from another application (for example, a bitmap image). OLE makes it possible for you to view and edit this data in Paradox without ever leaving Paradox. In this scenario, Paradox acts as the OLE container and Paintbrush acts as the OLE server.

Paradox can act as both an OLE container and an OLE server.

Paradox as an OLE container

OLE containers can be added to tables, forms, and reports. For example, you could add an OLE field to a table you use to organize sound (.WAV) files, allowing you to actually store, play, and edit the .WAV files inside the Paradox table. Paradox provides OLE containers in two ways: as a field in a table and as a design object in a form or report.

You can insert two kinds of objects into an OLE container [image] embedded objects and linked objects.

For more about the difference between embedded and linked objects, see these topics:

About embedded OLE objects

About linked OLE objects

Paradox as an OLE server

Paradox acts as an OLE server by providing a way to insert a Paradox table in another application's file, such as a word processing document or a spreadsheet.

Depending on the type of OLE object, you can manipulate the object in various ways{emdash.bmp}open, edit, view, or play it. For details, see About manipulating OLE objects.


About embedded OLE objects

See also

An embedded object is one you create or copy from a file or the Clipboard. When you embed an object in an OLE container, the data is actually copied into the OLE container, and no relationship is maintained with the source of the data. For example, suppose you copy an image from Paintbrush to the Clipboard and paste it in an OLE design object in a Paradox form. You edit and format the object in the form using Paintbrush. The file from which you copied the image stays unchanged. Furthermore, if you copy the form to a disk, the image is copied along with the form.

Note:	If the OLE object is embedded in a table field instead of a design object, it is stored in the .MB file with other table data.

If the OLE object is embedded in a table field instead of a design object, it is stored in the .MB file with other table data.

Another type of OLE object is linked, not embedded. For details, see About linked OLE objects.

Note:	Paradox provides OLE containers in two ways: as a field in a table and as a design object. in a form or report.


About linked OLE objects

See also

A linked object is actually a pointer to data somewhere outside of the OLE container. When you insert a linked object in an OLE container, changes you make to the object are actually made to the source of the object. Furthermore, if you change the source of the object, the object changes in the OLE container. Using linked OLE objects is helpful when you need to display live data that is automatically updated whenever the original data changes in another application. OLE links can also produce smaller file sizes than when you embed large objects (such as graphics files), because the object itself stays in another file.

For example, suppose you insert a link to a word processing document in an OLE field in a Paradox table. Later, you modify the file using the word processor. The modifications also appear in the field in the table. Furthermore, if you copy the Paradox table to a disk, the word processing text is not copied along with the table.

You can make Paradox update the appearance of linked objects automatically. You can also choose to update their appearance manually.

Another type of OLE object is embedded, not linked. For details, see About embedded OLE objects.

Note:	Paradox provides OLE containers in two ways: as a field in a table and as a design object in a form or report.


To place an OLE object on a form or report

See also

1.	Click the OLE [image] tool.

2.	Click or drag in the design area to create a frame.

3.	Right-click the OLE object to define it.


To embed a new OLE object

See also

Paradox does not limit you to placing existing values in OLE fields. You can create a new value using an OLE server directly from Paradox.

To create a new object and embed it in an OLE field,

1.	If you are inserting the object in an OLE field in a table or in a form bound to that table, make sure the table or form is in Edit mode. If you are inserting the object in an OLE design object in a form or report, make sure the form or report is in Design mode.

2.	Select the OLE field or design object.

3.	Choose Edit|Insert Object.

4.	From the Insert Object dialog box, select Create New.

5.	From the Object Type list, select the kind of object you want to create.

If you want Paradox to display the value as the server's icon in the field, check Display As Icon.

6.	Choose OK. If the OLE object comes from an OLE 2.0 server application, Paradox places a blank OLE object in the field and creates an in-place editing environment. You can use the server application's standard commands and Toolbar buttons to create the new object. If the server uses OLE 1.0, the server application opens and you can edit the object within it.

When you are finished creating the object, close the OLE server by clicking somewhere outside of the OLE object. The object is embedded in the OLE field.

Note:	To create a new linked OLE object instead, see To insert an OLE object linked to a file.


To embed a copy of a file as an OLE object

See also

You can place a value in an OLE field in a Table or Form window. You can either cut and paste the value in, or use Edit|Insert Object. When you use Insert Object, you have the option of inserting an existing object or creating a new one.

To embed a copy of a file,

1.	If you are inserting the object in an OLE field in a table or in a form bound to that table, make sure the table or form is in Edit mode. If you are inserting the object in an OLE design object in a form or report, make sure the form or report is in Design mode.

2.	Select the OLE field or design object.

3.	Choose Edit|Insert Object. (If your table is in Field View, you can right-click the OLE field and choose Insert Object from the menu.)

4.	From the Insert Object dialog box, select Create From File.

5.	In the File text box, type the file name of the file you want to copy into the OLE field. Or, choose the Browse button to browse through the directory tree to find a file.

6.	Choose OK.

Note:	To create a linked OLE object instead, see To insert an OLE object linked to a file.


To embed part of a file as an OLE object

See also

To embed part of a file using Copy and Paste,

1.	Open the OLE server. Select the value (such as text, a graphic, a number) you want to place into Paradox and use Edit|Copy or the Copy button to copy it to the Clipboard.

2.	If you are inserting the object in an OLE field in a table or in a form bound to that table, make sure the table or form is in Edit mode. If you are inserting the object in an OLE design object in a form or report, make sure the form or report is in Design mode.

3.	Select the OLE field or design object.

4.	Choose Edit|Paste.

The OLE value appears in the field as an embedded OLE object. To create a linked OLE object, see To insert an OLE object linked to part of a file.


To insert an OLE object linked to a file

See also

To insert an OLE object linked to a file,

1.	If you are inserting the object in an OLE field in a table or in a form bound to that table, make sure the table or form is in Edit mode. If you are inserting the object in an OLE design object in a form or report, make sure the form or report is in Design mode.

2.	Select the OLE field or design object.

3.	Choose Edit|Insert Object. (If your table is in Field View, you can right-click the OLE field and choose Insert Object from the menu.)

4.	From the Insert Object dialog box, select Create From File.

5.	In the File field, type the file name of the file you want to copy into the OLE field. Or, choose the Browse button to browse through the directory tree to find a file.

6.	Check the Link checkbox.

7.	Choose OK.

Note:	To create an embedded OLE object instead, see To embed a copy of a file as an OLE object.


To insert an OLE object linked to part of a file

See also

To insert an object linked to part of a file using Copy and Paste Special,

1.	Open the OLE server. Select the value (such as text, a graphic, a number) you want to place into Paradox and use Edit|Copy or the Copy button to copy it to the Clipboard.

2.	If you are inserting the object in an OLE field in a table or in a form bound to that table, make sure the table or form is in Edit mode. If you are inserting the object in an OLE design object in a form or report, make sure the form or report is in Design mode.

3.	Select the OLE field or design object.

4.	Choose Edit|Paste Special.

The OLE value appears in the field as a linked OLE object. To create an embedded OLE object with the Clipboard, see To embed part of a file as an OLE object.


About updating linked OLE objects

See also

When you've placed a linked OLE value in an OLE field or object in a table, form, or report, you can select it and choose Edit|Links to open the Links dialog box.

Use the Links dialog box to manage links between OLE objects in Paradox and their source files.

Use the Update radio buttons to choose whether you want the selected link to be updated manually or automatically.

Choose Update Now to manually update the contents of the selected link.

Choose Open Source to open the server application and source file of the selected link.

Choose Change Source to change the source file of the selected link. Paradox opens the Change Source dialog box. Use this to choose a new source file for the link.

Choose Break Link to break the link. This causes the selected OLE value to become a static, embedded object. Now, the object can't be automatically updated when the source data changes.


To change the way Paradox updates linked objects

See also

To change the way Paradox updates the appearance of the linked objects,

1.	If you are working in an OLE field in a table or in a form bound to that table, make sure the table or form is in Edit mode and not in Field View mode. If you are working in an OLE design object in a form or report, make sure the form or report is in Design mode.

2.	Select the OLE field or design object.

3.	Choose Edit|Links.

4.	From the Links dialog box, select the link and choose one of the Update options:

Choose Automatic to make Paradox update the appearance of linked objects automatically.

Choose Manual to make Paradox update the appearance of linked objects only when you choose to do so.

5.	Change other settings if you want:

Choose Update Now to manually update the contents of the selected link.

Choose Open Source to open the source file of the selected link.

Choose Change Source to change the source file of the selected link. Paradox opens the Change Source dialog box. Use this to choose a new source file for the link.

Choose Break Link to break the link. This causes the selected OLE value to become a static object.

6.	Choose OK to accept the changes.


To manually update a linked object

See also

To immediately make the appearance of a linked object match that of its source,

1.	If you are updating a linked object in an OLE field in a table or in a form bound to that table, make sure the table or form is in Edit mode and Field View. If you are updating a linked object in an OLE design object in a form or report, make sure the form or report is in Design mode.

2.	Select the OLE field or design object.

3.	Choose Edit|Links|Update Now.


About manipulating OLE objects

See also

An OLE container can hold different kinds of data, such as images, sound, documents, and so on. Paradox provides OLE containers in two ways: as a field in a table and as a design object in a form or report. OLE fields and design objects can be used store, view, and manipulate this data without leaving Paradox.

The ways you can manipulate an object depend upon the kind of OLE server associated with the object. For example, a sound (.WAV) file might be associated with a sound editor that provides two commands: play and edit.

To see how you can manipulate the current OLE object, choose the Edit menu. The last command shows the OLE server-specific command. Choose this to view a submenu of available server-specific commands.

Another way to see what you can do with the OLE value is to right-click it in a table (you must be in Field View). You'll see a menu of available commands. If the value is linked, you'll see the Update Now command, which you can use to force an update whenever you want to.

The most common commands for OLE values are Edit and Open. If you choose Edit on an embedded OLE value, you can use in-place editing to change the value. If you choose Open on a linked or embedded OLE value, Paradox opens the server application with the OLE file active.

Most server applications use OLE 2.0, but a few might still use OLE 1.0, which doesn't support in-place editing. For more information on the difference between edits and updates in these versions of OLE, see About OLE 1.0 versus OLE 2.0.


About OLE 1.0 versus OLE 2.0

See also

Some objects behave differently from other objects when manipulated. Differences are sometimes due to the version of OLE supported by an OLE server. There are two kinds of OLE servers: OLE 1.0 and OLE 2.0.

OLE 1.0

When you manipulate an object from an OLE 1.0 server, Paradox launches the OLE server for you to work with the object. After you finish working with the object, close the OLE server to return to Paradox and save the changes to the object.

For example, suppose an OLE field contains a word processing document, and you choose the Edit command. Paradox opens the document in the word processor. You make some changes to the document and close the word processor. A dialog box appears, asking you if you want to save the changes to the object. You choose Yes and return to Paradox. The object in the OLE field is updated with the changes you made.

OLE 2.0

When you manipulate an object from an OLE 2.0 server, different commands may cause different actions. Typically, one command (Open) launches the OLE server. Another command (Edit) initiates in-place editing. With in-place editing all the tools and menus you need appear inside the Paradox desktop. In essence, the OLE server takes control of the Paradox desktop, including the Toolbar, the status line, and the menus. The area inside the OLE field becomes the working area for the OLE server. The only menus that Paradox still controls are File and Window. To end in-place editing and restore the standard Paradox environment, click on the table or form outside OLE field or design object.

For example, suppose an OLE field contains a video file, and you choose the Play command. Video controls appear at the bottom of the OLE field and some new menu commands appear on the Paradox desktop. The video plays inside the OLE field. You use the video controls to pause and jump to another frame in the video. You click another field in the table to close the video player.


To manipulate the contents of an OLE field

See also

An OLE field in a table can be edited or otherwise manipulated either through the table or through a form that is bound to that table.

To manipulate an object in an OLE field,

1.	Make sure the table or form is in Edit mode.

2.	Select the OLE field.

3.	Select the Edit menu. The last command on the Edit menu is the name of the OLE server associated with the object in the OLE field. Choose this command to display a secondary menu of commands. Choose one of these commands.

Shortcuts:

Double-clicking the OLE field executes the default command (the first command on the secondary menu), usually Edit.

If you are manipulating this object using a form, right-click the field. The commands available for this object appear on the menu. If you are manipulating this object using a table, press F2 to go into Field View and then right-click the field.

To close the object again,

Click in an area of the table or form outside of the OLE object.


To manipulate the contents of an OLE design object

See also

1.	Make sure the form or report is in Design mode.

2.	Select the OLE design object.

3.	Select the Edit menu. The last command on the Edit menu is the name of the OLE server associated with the object in the OLE field. Choose this command to display a secondary menu of commands. Choose one of these commands.

Shortcuts:

Double-clicking the OLE field executes the default command (the first command on the secondary menu), usually Edit.

Right-click the field to display the commands available for this object.

To close the object again,

Click in an area of the form outside of the OLE object.


About using Paradox as an OLE 2.0 server

See also

You can embed existing Paradox tables in OLE container applications such as word processors or spreadsheets. To do this, you can use Edit|Insert Object or the Windows Clipboard.

If the container application supports OLE 2.0, you can use in-place editing to edit the Paradox table. When you use in-place editing, certain functions are unavailable:

You cannot right-click the table to see its properties.

You cannot enter Memo View.

Certain prohibited menu commands are not visible.

The Paradox table you place in the container always maintains a relationship with the Paradox source table. This means if you delete the Paradox file from disk, it will no longer appear in the OLE container (even if it was embedded in the OLE container).


To embed a Paradox table using the Clipboard

See also

To place a Paradox table in a container application using the Clipboard, follow these steps:

1.	In Paradox, open the table.

2.	Choose Edit|Select All.

3.	Choose Edit|Copy

4.	In the OLE container application, choose the command that the application uses to embed OLE objects. Some commonly used commands are Edit|Paste, Edit|Paste Special or Edit|Paste Link. The Paradox table appears in the container. You can edit the table if you want at this point, by either opening Paradox from the OLE container or using in-place editing.


To embed a Paradox table using Insert Object

See also

To place an OLE value using Insert Object, follow these steps:

1.	In the OLE container, choose Edit|Insert Object or Insert|Object (depending on the commands available from the OLE container).

2.	In the Insert Object dialog box, select "Paradox Table" from the Object Type list. Choose OK.

3.	The OLE container starts Paradox (if it wasn't already running) and Paradox opens the Open Table dialog box. Choose the table you want to embed.

4.	Paradox opens the selected table. Close the Table window to return to the OLE container. The Paradox table appears in it.


About DDE

See also

Dynamic Data Exchange (DDE) lets you communicate with other applications that support DDE.

DDE links are shown as text, not icons or data. For an example, see To use Paradox as a DDE client (tables).


To use Paradox as a DDE server

See also

When you take the values from a Paradox field and place them in another application, you are using Paradox as a DDE server.

Using Paradox as a DDE server

Suppose you have a spreadsheet that performs a series of calculations on a value. The value you want to perform the calculations on is in a field of a Paradox table.

1.	In a Paradox Table window, select any value in the field, then choose Edit|Copy to copy the field to the Clipboard.

2.	In the DDE-client spreadsheet, use Paste Link (or Paste Special, in some applications) to place the field in the appropriate spreadsheet cell. Remember, you do not place an actual value in the spreadsheet. Instead, you use DDE to tell the spreadsheet where to look for the value.

As you move through the records of your Paradox table, the values in the spreadsheet change because the value in the field is different for different records. The spreadsheet displays the field value for the selected Paradox record.

Note:	You can use DDE to place Paradox fields in any type of application that is a DDE client. Spreadsheets, word processors, and a variety of other applications can accept Paradox field values through DDE.

To link an entire table through DDE, choose Edit|Select All, then Edit|Copy.


To use Paradox as a DDE client (tables)

See also

When you use Paradox as a DDE client, you place link information about a value from another application into an alpha field in a Paradox table.

A common use of Paradox as a DDE client is to use values from another application and perform queries on them in Paradox.

To use Paradox as a DDE client,

1.	Copy the value you want to use (your DDE server can be a spreadsheet, word processor, or any other DDE-capable application).

2.	In Paradox, select the alpha field where you want to place the DDE value, then choose Edit|Paste Special.

You see link information like @DDE:"QPW"!"C:\QPW\NOTEBK1.WB1"!"$A$D$2"!@. This is a string that tells Paradox where to look for the DDE value. This particular string tells Paradox to look for a Quattro Pro for Windows file located on C:\QPW in Notebook 1, page A, cell D2.

In Paradox, you view the link information rather than the DDE value. To view the value in the DDE server, select the field and press Shift+F2. Paradox displays a message telling you it is launching the DDE server, then opens the application and the correct file.


To use Paradox as a DDE client (queries)

See also

1.	Highlight the item in the server, then copy it to the Clipboard. Most servers use Edit|Copy to place a copy of the object on the Clipboard.

2.	Return to the client (Paradox) Query window.

3.	Select the QBE field to receive its value from the server.

4.	Choose Edit|Paste Link from the menu. The DDE link information appears in the query.

5.	Choose Query|Wait for DDE to tell Paradox to execute the query each time data is sent from the server.


To disconnect a DDE link

See also

After a DDE link is pasted into a DDE-client application, the Table|Notify On command is activated in Paradox. While this command is active, the link is live. For example, when you select another record in the linked table (in Paradox), the new value is delivered to the DDE client.

To disconnect the link,

Uncheck Table|Notify On in Paradox.

While this command is inactive, no changes are delivered to the DDE client.

To reconnect the link at any time, choose Table|Notify On.

If you create a DDE link to an entire table, Table|Notify On works similarly. When any record in the linked table changes, the entire table is refreshed in the DDE client. Changes are posted in the table whenever the person editing the table moves off the record.


Example of Paradox as a DDE server

See also

For example, suppose you want to place a Paradox field's value in a cell in a Quattro Pro for Windows spreadsheet. The following example shows how to do this using the sample Orders table.

1.	In Paradox, open the Orders table. Select the first record's Total Invoice value.

2.	Click the Copy to Clipboard Toolbar button. Paradox places the value on the Clipboard.

3.	Open Quattro Pro for Windows. Select a notebook cell and choose Edit|Paste Link.

4.	To see how DDE works, place your Paradox window and your Quattro Pro window together on the screen.

Select the Total Invoice field in Paradox and press the up and down arrows to move through invoice values. Notice how the value shown in the notebook cell in Quattro Pro changes to display the Total Invoice value in the currently selected Paradox record.

In Quattro Pro, you can create calculations that use the value from Paradox. As the DDE value is updated, the calculated result is updated along with it.


Example of Paradox as a DDE client and server (queries)

See also

When you use Paradox as both DDE client and server, all actions can be performed within Paradox.

For example, a linked field can run a query (the DDE client). When the field value changes in the source table (DDE server), an updated Answer table appears.

Using DDE to run a query

Suppose you want to run a separate query for each customer in the Customer table. Follow these steps:

1.	Open the Query window and add the Orders and Lineitem tables to it.

2.	Construct a query that looks like this:

3.	Open Customer in a Table window.

4.	In Customer, select Customer No 1221 and click the Copy button on the Toolbar.

5.	In the Query window, position the text insertion point in the Customer No field of the Orders table. Choose Edit|Paste Link. Link information from the Customer table appears in the field.

6.	Click the Run Query Toolbar button. Paradox creates an Answer table listing all of Customer No 1221's items.

Using DDE to run a query interactively

Create a DDE link, following steps 1 through 5 above. Then,

1.	Click the Query window's title bar to activate the window. Choose Query|Wait for DDE.

2.	Click the Customer table's title bar to activate the window. Select Customer No 1221. Press the Down arrow to move to Customer No 1231. When you select the new value, Paradox activates the DDE link and runs the query again, updating the Answer table with the new value's data.

You can uncheck Query|Wait for DDE if you want to scroll quickly through the Customer table without running a query on each record's value.


About sending mail

See also

If you are connected to Microsoft Exchange or another MAPI-compliant mail system, you can use File|Send Mail to transfer messages and attached files to others who are accessible through that system.

To send mail,

Choose File|Send Mail.

If your mail system is currently open, the standard message creation dialog box appears. If it isn't open, the MAPI Choose Profile dialog appears and asks for your mail provider. Enter it to see the message creation dialog box.

You can compose a message and attach files following the usual procedures.

When you send the message, it is delivered to the recipients' mail boxes as usual, and appears in the incoming mail list the next time they check their mail.

Note:	If you encounter problems, contact your email administrator to make sure you have a MAPI-compliant mail system, and to verify that it is properly configured.


About queries

See also

What is a query?

A query is a way to retrieve information from your tables. Queries are usually in the form of a question. For example, you can find out

Which customers have placed orders this month?

What is the total amount of all orders placed by each customer?

What orders have not been paid?

Uses of queries

By constructing queries that build on each other, you can play "what if?" with your data. For example, you can find out

How much would total sales increase if sales to Oregon residents increased by 8%?

How much would our travel costs increase if airline prices went up 10%?

You can also use a query to perform calculations on your data. And you can insert, delete, and change records using INSERT, DELETE, and CHANGETO queries.

QBE

The query method Paradox uses is called query by example (QBE). To perform a QBE query, you give Paradox an example of the result you want. You use selection conditions and example elements to define the query. Then, you can save the query definition to use again.

In a query, you can specify

Tables to ask questions about

Fields you want to see in the Answer table

Records you want to select

Calculations you want to perform

New fields you want to create

You can query one table or several tables to get just the information you need. Paradox finds the records that meet the conditions you specify and presents the results to you in an Answer table.

If a query does not quite obtain the results you want, you can easily refine it and perform the query again.

Query results

By default, Paradox prepares an Answer table for queries that yield a table of results. You can edit Answer tables, but your edits don't update the original table or the tables included in the query. If you want to update related tables by editing query results, you can create a live query view instead of an Answer table. For more information, see About query results.

Query properties and preferences

You can set properties for each query, such as the type and name of the results table, whether the results are sorted, and more. For more information, see About query properties.

You can also set default preferences for all queries, such as the type of checkmark to use. For more information, see To set system preferences.


To open a query

See also

To open a query from the Desktop,

1.	Do one of the following:

Click the Open Query [image] button.

Choose File|Open|Query.

The Open Query dialog box appears.

2.	Choose a query from the list. Paradox opens a Query window displaying the selected query.

To open a query from the Project Viewer,

1.	Click the Queries icon in the left pane.

2.	Right-click the name of the query to open.

3.	Choose Open Query. Paradox opens a Query window displaying the selected query.


To run a query

See also

To run a query from the Query window, do one of the following:

Click the Run Query [image] button.

Choose Query|Run Query

Press F8.

To run a query from the Project Viewer,

Double-click the name of the query you want to run.

or

1.	Right-click the name of the query to access its menu.

2.	Choose Run Query.

If the query contains no errors, Paradox displays a window to tell you the status of the query. After Paradox completes the query, depending on the kind of query it is, Paradox either displays an Answer table or changes data in a table. See About query results for more information.


To save a query

See also

You can save a query for later use.

Choose File|Save or File|Save As.

If you close the Query window without saving, Paradox prompts you to save the query.

When you save a query, it becomes an object like any other Paradox object. You can open it, minimize it and display it. You can even build forms and reports directly from queries, rather than from the Answer tables they generate.


Guidelines for creating queries

See also

The types of queries you can create with Paradox and QBE are almost limitless. You can use query operators and calculation statements to extract just the information you need. No matter what kind of query you're creating, the technique you use to create it has very little variation.

When you create a query, you

Choose the table or tables you want to ask about.

Link the tables you've selected (if you're creating a multi-table query). See Using example elements to link tables.

Select the fields you want displayed in the Answer table.

Specify selection conditions for choosing specific records (optional).

Specify calculations to perform on the data (optional).

Set query properties, such as table type and sort order (optional).

Run the query.

Save the query (optional).

Additionally, you can customize the Answer table and to save it under a different name. Or, you can choose to view a live query instead of an Answer table by changing a query property setting. For more information, see About query results.


To create a query from a table

See also	Example

1.	Do one of the following:

Right-click the Open Query [image] button and choose New.

Choose File|New|Query.

2.	The Select File dialog box appears. Type the name of the table you want to query or select one or more tables from the list of files. (To select multiple tables, see To select from lists.)

3.	Choose Open.

Paradox places an image of each table chosen in the Query window.

4.	Enter selection conditions and/or example elements and specify fields to display in the Answer table. For an overview, see Working with the query image.

Note:	If your query contains more than one table, you must link the tables with example elements before you run the query. See Using example elements to link tables.


To create a query based on a data model

See also

You can create a query based on the existing data model of a form or report, or you can create a data model and run a query on it immediately afterward.

To create a query based on an existing data model,

1.	Do one of the following:

Right-click the Open Query [image] button and choose New.

Choose File|New|Query.

The Select File dialog box appears.

2.	Choose Forms or Reports in the Files Of Type drop-down list. Or, choose Data Models in the Files Of Type drop-down list to select an existing data model directly.

3.	Type the name of the form or report whose data model you want to use or select a form or report from the list of files.

If you chose Data Models in the Files Of Type list, choose the data model you want to use as the basis for a query.

4.	Choose Open.

Paradox places in the Query window an image of each table used in the data model of the chosen file (or the chosen data model). It also places example elements (and inclusion operators, if necessary) to join the tables according to the document's data model. Multiple tables in a query must be joined in this way.

5.	You can now enter selection conditions and/or additional example elements and specify fields to display in the Answer table. For an overview, see Working with the query image.

To create a data model and query in the same operation,

1.	Do one of the following:

Right-click the Open Query [image] button and choose New.

Choose File|New|Query.

The Select File dialog box appears.

2.	Choose Data Model (click the Data Model button).

The Data Model dialog box appears.

3.	Create a data model following the usual steps. Choose Help in the Data Model dialog box for instructions.

4.	When the data model is complete, choose OK.

A Query window appears with all tables included in the new data model.  It also places example elements (and inclusion operators, if necessary) to join the tables according to the document's data model.

5.	You can now enter selection conditions and/or additional example elements and specify fields to display in the Answer table. For an overview, see Working with the query image.


To create a query based on another query

See also

1.	Do one of the following:

Right-click the Open Query [image] button and choose New.

Choose File|New|Query.

The Select File dialog box appears.

2.	Choose Queries in the Files Of Type drop-down list.

3.	Type the name of the query you want to use as a base for the new query or select a query from the list of files.

4.	Choose Open.

Paradox places in the Query window an image of each table used in the chosen query. Any existing selection conditions, example elements, (and inclusion operators, if necessary) are included in the query images.


Example of creating a simple query

See also

This topic provides an example of creating a query. For generic instructions, see To create a query from a table.

To create a simple query that results in a list of customer names and phone numbers, follow these steps. (This example uses the Customer table located in your SAMPLE directory.)

1.	Make sure your working directory is set to SAMPLE under the directory with your Paradox program files. To change it, see To change your working directory.

2.	Choose File|New|Query (or right-click the Open Query [image] button and choose New). You will see the Select File dialog box.

3.	From the Select File dialog box, select CUSTOMER.DB and choose Open (or double-click CUSTOMER.DB). Paradox places an image of the Customer table in the Query window.

4.	Click the check box in the Name field. Paradox places a checkmark in the check box. The default checkmark type is Check, which shows only unique records (the first record that has each value) for that field.

5.	Use the scroll bar at the bottom of the table's query image to move to the right of the image until you see the Phone field.

6.	Click the check box in the Phone field. Paradox places a checkmark in the check box.

7.	Choose Query|Run Query (or click the Run Query button, or press F8). Paradox displays a status window to track the progress of the query.

When Paradox finishes gathering the data you want, it displays the data in an Answer table on the Desktop on top of the Query window.


Using the Query window

See also

The Query window appears when you open a query or create a new query.

The Query window contains query images of each table in the query. For information on query images, see Working with query images.

Query table scroll bars

Each table represented in the query has its own horizontal scroll bar. This lets you scroll to any columns that are not visible.

The master vertical scroll bar on the right side of the Query window lets you scroll the whole query. This lets you view any table query images that are not visible.

Tiling or cascading query images

Paradox provides two ways for you to display multiple query images in a Query window.

Choose View|Tile Tables to view multiple query images tiled vertically in the Query window. (This is the default setting.)

Choose View|Cascade Tables to view multiple query images cascaded in the Query window.


To add tables to a query

See also

You can open a query with one or more tables and add tables to it.

To add tables to a query,

1.	Do one of the following:

Click the Add Table [image] button.

Chose Edit|Add Table.

The Select File dialog box appears.

2.	Type the name of the table or select one or more tables from the list of tables. (To select multiple tables, see To select from lists.)

When you choose Open, Paradox places an image of each table chosen in the Query window.

Queries that contain more than one table must be linked with example elements. See Querying more than one table for more information.


To remove tables from a query

See also

You can open a query with one or more tables and remove tables from it.

1.	Do one of the following:

Click the Remove Table [image] button.

Chose Edit|Remove Table.

The Remove Table dialog box appears.

2.	Select one or more tables from the list of tables. (To select multiple tables, see To select from lists.)

When you choose OK, Paradox removes the images of the selected tables from the Query window.


Working with query images

See also

The Query window contains query images of each table in the query. The query image has the same fields, in the same order, as the table it represents, but no data. If you have changed the table's properties (for example, changed the column order or the way heading text is displayed), the query image does not reflect them. However, you can change the column order of the query image.

Working with a query image

Type selection conditions and/or example elements into the fields of the query image. (See About selection conditions and About example elements for details.)

You type data into and navigate through the fields of a query image the same way you would in a table in Edit mode. For example:

To...	Do this...

Add a row	Press the Insert key (this only works if you have made some change to the current row).

Delete a row	Press Ctrl+Del.

Enter Field View	Press F2.

Moving among fields

To move among fields within a query image using the keyboard, press Tab or Shift+Tab. To do this in multi-table queries, press Super Tab (F4) or Super Back Tab (F3).

Selecting fields to display in the Answer table

Use the query image in the Query window to tell Paradox what fields of the table to include in the Answer table. For details, see About selecting fields to display.


Query image check boxes

See also

Each field of a query image has a check box. The column on the far left under the table name also has a check box. Click a field's check box to include that field in the Answer table for the query. When you right-click a field's check box, you see the different types of checks you can use. Each has its own meaning.

 Use Check to show all unique values for the checked field. The values are displayed in ascending order (A to Z or 0 to 9). When used with a summary operator, a checkmark specifies that the records be divided into groups based on the values in the checked field.

 Use CheckPlus to show all values in a field, including duplicates, without sorting. When you use CheckPlus, the values from the checked field appear in the Answer table in the same order they appear in the queried table.

When you use CheckPlus in any field of the query image, it overrides any Checks or CheckDescendings you have placed in any other field. This is because Paradox cannot sort and exclude duplicates [image] which is what the Check and CheckDescending tell it to do [image] and not sort and include duplicates [image] which the CheckPlus tells it to do.

Note: Although you can place Checks and CheckDescendings in BLOB fields, Paradox treats them as CheckPluses in these fields. This is because Paradox cannot sort or distinguish unique from duplicate values in these field types.

 Use CheckDescending to show unique values sorted in descending order (Z to A or 9 to 0).

 Use GroupBy to specify a group of records to use in a set query. (A field with the GroupBy checkmark does not appear in the Answer table.) For more information, see About querying sets of records.

 Use this to remove a check.


Query image fields

See also

The fields of a query image hold the selection conditions for your query. You define query selection conditions by typing them directly into the query image fields.

You can use the Edit menu to perform cut, copy, and paste operations on any selection condition or portion of a selection condition in a field of a query image. Use standard Windows procedures to select material to be cut or copied. Then use the Edit menu to perform the cut, copy, and paste operations.


To place a checkmark in a query image

See also

To place the default checkmark,

Usually a Check, do one of the following:

Click the field's check box.

Select the field and press F6.

To place another type of checkmark,

Usually CheckPlus, CheckDescending, or GroupBy, do one of the following:

Right-click the field's check box to display the check menu, then choose the type of check you want from the menu.

Select the field and press Shift+F6 repeatedly until the type of check you want is displayed.

Shortcut: To include all fields in the Answer table, click the check box in the left-most column (under the table name).

Note:	For a description of the different types of checkmarks, see Query image check boxes.


To rotate columns in a query image

See also

Do one of the following:

Use the mouse to drag a column heading to a new location.

Select the column you want to move and press Ctrl+R. The selected column becomes the last column in the table.

To change the order of columns in a query Answer table, first fill out the query image. Then, before running the query, choose Query|Properties and click the Structure page. You can use the arrows to change the order of the fields.


About selecting fields to display

See also

In a query image, you need to specify what fields you want to see in the Answer table.

 If you place a Check in one field of a query image, Paradox displays only unique values from that field in the Answer table.

 If you want to see all values, including duplicates, select CheckPlus instead of the Check from the check box menu.

When you use CheckPlus, the values are not sorted.

For more information on the effects of these and other checkmarks, see Query image check boxes.

Including a field

To include a field in the Answer table, place a checkmark in the field's check box. For instructions, see To place a checkmark in a query image.

Selecting all fields

To select all fields, check the box under the table name in the leftmost column.

Unchecking a field

To uncheck a field, click the check box again, or press F6.


To specify field names in the Answer table

See also

Paradox displays a field in the Answer table with the same name it has in the original table, or, in some cases, with a name Paradox assigns. If you want a field in the Answer table to have a different name, use the AS operator.

To specify a different name,

1.	Type your selection condition, if any, in the field, then type AS, followed by a space.

2.	Type the name you want the field to be called in Answer.

In the Answer table, Paradox displays the values under the field name you specified.

See To rename Answer table fields.


About selection conditions

See also

In most queries, you want to see only records that meet certain conditions. You specify the conditions you want records to meet by typing the conditions in the fields of a query image.

You use the query operators to define selection conditions.

You can define selection conditions that test for these types of matches:

Exact matches

Matching a range of values: comparison operators

Inexact matches: the LIKE operator

Non-matches: the NOT operator

Blank values: the BLANK operator

Today's date: the TODAY operator

Using wildcards to match a pattern

You can also use AND and OR to indicate whether a record must match all the defined selection conditions or just one of them.

You can type a selection condition in a field without checking that field. You do not have to include a field in the Answer table to use its values to select records. For example, you can query a table containing names and addresses for a list of people living in a particular state without including the state field in the Answer table.

You must follow certain rules when entering selection conditions and calculation statements in query images. For details, see

Entering numbers in queries

Using reserved words or symbols in selection conditions


Query operators

See also

Paradox query operators are grouped into seven types:

Category	Operator	Meaning

Reserved symbols	Check	Display unique field values in Answer

CheckPlus	Display field values including duplicates in Answer

CheckDescending	Display field with values sorted in descending order

GroupBy check	Specify a group for set operators

Reserved words	CALC	Calculate a new field

INSERT	Insert records with specified values

DELETE	Remove records with specified values

CHANGETO	Change specified values in fields

SET	Define specific records as a set for comparisons

Arithmetic operators	+	Addition or alphanumeric string concatenation

-	Subtraction

*	Multiplication

/	Division

( )	Group arithmetic operations

Comparison operators	=	Equal to (optional)

>	Greater than

<	Less than

>=	Greater than or equal to

<=	Less than or equal to

Wildcard operators	..	Any series of characters

@	Any single character

Special operators	LIKE	Similar to

NOT	Does not match

BLANK	No value

TODAY	Today's date

OR	Specify OR conditions in a field

, (comma)	Specify AND conditions in a field

AS	Specify the name of a field in Answer

! (exclamation mark)	Display all values in a field, regardless of matches

Summary	AVERAGE	Averages the values in a group

COUNT	Counts the number of values in a group

MAX	Finds the maximum value of a group

MIN	Finds the minimum value of a group

SUM	Totals the values in a group

ALL	Calculate summary based on all values in a group, including duplicates

UNIQUE	Calculate summary based on unique values in a group

Set comparison operators	ONLY	Display records that match only members of the defined set

NO	Display records that match no members of the defined set

EVERY	Display records that match every member of the defined set

EXACTLY	Display records that match all members of the defined set and no others


Operator precedence in queries

See also

Paradox evaluates operators in queries in a certain order.

In expressions containing more than one operator, the operators are evaluated in the order of precedence shown in the following table.

Precedence	Operator

1	()

2	* /

3	+ -

4	= <> < <= > >=

5	NOT

6	OR

7	, (comma)

Any expression contained in parentheses is evaluated first, and inner levels of parentheses are evaluated before outer levels. When two or more operators of equal precedence are in a single expression, they are evaluated from left to right.


Using arithmetic operators

See also

You can use arithmetic expressions in number, date, time, and money fields of a query image.

Operator	Meaning

+	Addition or string concatenation

-	Subtraction

*	Multiplication

/	Division

( )	Used to group expressions

Use parentheses ( ) to combine and group operations and to indicate which calculations should be performed first. In expressions without parentheses, multiplication and division are performed before addition and subtraction. Operations with equal precedence are calculated from left to right. For more information on operator precedence, see Operator precedence in queries.

Arithmetic operators are especially useful with the TODAY operator, the CALC operator, and with example elements.

You can use arithmetic expressions with date values and the TODAY operator to

Add a number of days to a date

Subtract a number of days from a date

Subtract a date from a date resulting in a number of days

Use arithmetic operators to create arithmetic expressions with field values. You can use any of the arithmetic operators in the numeric fields [image] Paradox number, short, long integer, BCD, and money and dBASE number and floating number fields.

For a list of Paradox and dBASE field types you can use, see:

Paradox field types allowing arithmetic operators

dBASE field types allowing arithmetic operators

You can use the addition (+) operator in alpha fields to combine or concatenate alpha values.

For general information on all the query operators, see Query operators.


Paradox field types allowing arithmetic operators

See also

This table shows which arithmetic operators can be used in each Paradox field type.

Operator	A	N	$	S	I	#	D	T	@	M	F	G	O	L	+	B	Y
+	Y	Y	Y	Y	Y	Y	Y	Y	Y
-		Y	Y	Y	Y	Y	Y	Y	Y
*		Y	Y	Y	Y	Y		Y	Y
/		Y	Y	Y	Y	Y		Y	Y
( )	Y	Y	Y	Y	Y	Y	Y	Y	Y


dBASE field types allowing arithmetic operators

See also

This table shows which arithmetic operators can be used in each dBASE field type.

Operator	C	F	N	D	L	M	O	B
+	Y	Y	Y	Y
-		Y	Y	Y
*		Y	Y
/		Y	Y
( )		Y	Y	Y


Entering numbers in queries

See also

When you type a number into a numeric field (Paradox number, short, long integer, or money field and dBASE number or floating number fields) of a query image,

Do not type dollar signs.

Do not type parentheses to signify a negative value.

Do not type thousand separators (a comma in U.S. convention and a period in international convention) when specifying a pattern match with the .. or @ wildcard operators. See Using wildcards to match a pattern.

On the other hand,

Do type decimal separators (a period in U.S. convention and a comma in international convention).

Do type the minus symbol to signify a negative value.

Optionally, do type thousand separators when specifying an exact match numeric selection condition.

Paradox determines when a comma or a period is a whole-number or a decimal separator, first based on whether you have U.S. or international number convention set, and second, based on the symbol's position and context. Ambiguity arises when a comma could be Paradox's AND operator, which is a comma, and when a period could be part of Paradox's .. wildcard operator, which is two periods in a row.

If a comma's or period's meaning is not clear, then you must help Paradox understand the symbol's meaning with double quotation marks or spaces. A comma's or period's meaning will not be clear as a thousand separator if you are specifying a pattern match with the .. or @ wildcard operators; thus, do not type thousand separators when specifying a numeric pattern with .. or @.

If you have the U.S. number format set,

Paradox interprets a single period in a numeric field as a decimal separator.

Paradox interprets the first two periods in a row as the .. wildcard operator.

In a numeric field, if Paradox encounters three periods in a row, it interprets them as the .. wildcard operator followed by the decimal separator. To make Paradox interpret the first period as the decimal separator, enclose it in double quotation marks.

Paradox interprets a comma in a numeric field as a thousand separator if you are specifying an exact match and if the comma is in the proper position to be a thousand separator. To make Paradox interpret a comma as the AND operator where this meaning might not be clear, type a space or any other non-numeric character except @ or a period after the AND comma. For example, you could type a comparison operator.

If you are using the international number format,

Paradox interprets the first comma in a numeric field within a number as the decimal separator.

Paradox interprets a comma followed by a space or any other non-numeric character except @ or a period as the AND operator in a numeric field.

Paradox interprets a single period in a numeric field as a thousand separator if you are specifying an exact match and if the period is in the proper position within a numeric selection condition to be one.


Using reserved words or symbols in selection conditions

See also

In a query image, to specify an alphanumeric value that contains a period or comma or a Paradox reserved word, enclose the value in double quotation marks. Paradox then recognizes the quoted characters as a value and does not act on their special meaning.

If the value itself contains a double quotation mark, precede the quotation mark with a backslash (\):

Thomas E. \"Ned\" Lawrence

If the value contains a backslash, precede that backslash with another backslash (\\).

You do not need quotation marks to enclose blank spaces in a value. You do need them, however, for all other symbols and operators that have special meanings in Paradox, like commas, periods, and asterisks.


Exact matches

See also

If you want a query to retrieve only records that have a specific value in a field, type the value you are looking in the appropriate field of the query image.

Paradox includes in the Answer table only records with that value in that field.

Exact matches are case-sensitive. You can specify exact matches for as many different fields as you like. Type all of the values you want to see [image] exactly as they appear in the table [image] in the appropriate fields of the query image.

Remember to check the field if you want it displayed.

Note:	You cannot specify exact matches for BLOB fields. You must use the .. wildcard operator to specify selection conditions in memo and formatted memo fields. See Using wildcards to match a pattern.

Exact matches of logical fields include uppercase or lowercase T and F and any combination of uppercase and lowercase letters of the entire words True and False.

Example


Matching a range of values: comparison operators

See also

If you want a query to retrieve records that match a range of values, use comparison operators, also known as range operators. Comparison operators let you specify a range of values in a single field. For example, you might want to see any quantity greater than 10, any price less than $500, any date before June 13, 1992, or any name that comes before Smith in alphabetical order.

To use a comparison operator, type it in front of the value you are using to define the range.

You can use comparison operators with alphanumeric values and all number, date, and logical values. You cannot use them with BLOB or dBASE memo values; you can only use the equal to (=) operator with these types.

Operator	Meaning	Examples	Match

=	Equal to*	= 3/17/81	Only March 17,1981

= Ralph	Only Ralph

= False	Only False

>	Greater than	> 3/17/81	Dates later than March 17, 1981

> "Ralph"	"Rat", "Rudolph", etc.

> "False"	True, T, Yes, 1

<	Less than	< 3/17/81	Dates before March 17, 1981

< "Ralph"	"Charles", etc.

< "True"	False (by convention, False < True)

>=	Greater than	>= 3/17/81	March 17,1981 and later dates

or equal to	>= "Ralph"	"Ralph", "Raphael", "Randolph", etc.

<=	Less than	<= 3/17/81	March 17, 1981 and earlier dates

or equal to	<= "Ralph"	"Ralph", "Manny", "Charles", etc.

*The = operator is optional in these cases, because it is assumed when no other comparison operator is used.

To use a comparison operator, type it before the value you are interested in. If you are typing an alphanumeric value, you can use any combination of uppercase and lowercase letters to produce the same results. The example of all stock that costs more than $1000 is shown in the figure below.

You can specify ranges for any number of fields in a query image.

Combining operators

You can combine comparison operators to construct a limited range of values. Separate all the comparison conditions with a comma. For example, the following query requests records with a List Price greater than $1,000 and less than $1,800.


Inexact matches: the LIKE operator

See also

Use the LIKE operator in a query image to match inexact alphanumeric values. This is particularly useful for finding values that contain typographical errors or alternate spellings.

If the Answer table to a query does not include some records you expected to see, try using LIKE with one or more alpha fields; the records you are looking for might contain typographical errors, misspellings, or alternate spellings.

To use the LIKE operator, type LIKE in front of the value you think will match the records you want.

Example

Two general rules for obtaining a match with the LIKE operator are

The first character of the pattern you specify with the LIKE operator must match exactly (though case does not matter). "LIKE California" does not match Kalifornia.

A pattern matches if at least half to two-thirds of the characters match.

Field types

You cannot use LIKE on BLOB fields or dBASE memo fields.

While you can use LIKE in numeric and date fields, you will get better results using the wildcard operators .. and @ to specify a numeric or date pattern.


Non-matches: the NOT operator

See also

In a query image, use the NOT operator to select records that do not have a specified value in a particular field.

To use the NOT operator, type NOT before the example of the value you do not want to see.

NOT can precede exact values, ranges, wildcard patterns, or other selection conditions. In fact, you can precede any valid Paradox selection condition with NOT.

If the selection condition you specify after NOT is an exact match condition, you must type the condition exactly as the matching value appears in the table, with respect to capitalization and spelling. (Values in logical fields are an exception to this rule.) As with all of Paradox's operators, the case of the NOT operator does not matter.

Example


Blank values: the BLANK operator

See also

In a query image, use the BLANK operator to find records with no value in a specified field.

In some cases, the absence of a value is in itself a useful piece of information. Or you might want to find records with a blank field so you can fill in information unavailable when the record was entered.

To use the BLANK operator, type BLANK in the appropriate field.

You can combine NOT with BLANK to find all records that have any value in the specified field.

Note:	Searching for blank field values is entirely different from leaving a field blank in a query image. Using the BLANK operator tells Paradox you want to see only those records that have no value in the specified field. When you leave the field of a query image blank, on the other hand, Paradox does not consider the field at all when selecting records.

When you use comparison operators or sort by a field that has blank values, blank fields are considered to be less than any nonblank value.


Today's date: the TODAY operator

See also

In date fields of a query image, the TODAY operator always stands for today's date. Make sure your computer's calendar is set properly.

TODAY is especially useful for aging payables and receivables when used with Paradox's arithmetic operators.

For example:

Expression	Meaning

< TODAY	Finds dates earlier than today's date

< TODAY - 90	Finds dates earlier than 90 days ago

TODAY + 30	Finds dates 30 days ahead of today's date

Example

Suppose you want to query the sample Orders table to see what orders were placed today. This is how you would set up the query:

You could save this query and run it at the end of each day to see what orders were placed each day.


Using wildcards to match a pattern

See also

Paradox provides two wildcard operators to match patterns of characters in queries:

The .. operator, which matches any series of alphabetical or numeric characters

The @ operator, which matches any single alphabetical or numeric character

Although the LIKE operator is useful for finding inexact matches in alpha fields, wildcard operators give you more flexibility.

You can use these operators in any field except in binary, graphic, OLE, or logical fields. You can type any combination of uppercase and lowercase letters, and your query will produce the same results.

Note:	To retrieve values from a memo or formatted memo field, you must use the .. wildcard operator to specify a pattern selection condition. (Typing an exact match in these field types means typing the entire memo value; to prevent this unnecessary effort, Paradox does not allow it.) You can also use the @ wildcard operator to specify a pattern match in these field types, but you must use it in combination with the .. wildcard operator.

Special guidelines apply when you use wildcard operators with dates and numbers. See

Using wildcards with dates

Using wildcards with numbers

For an example of using wildcard operators with comparison operators, see

AND conditions in the same field


The .. wildcard operator

See also

The .. wildcard operator matches any series of any number of characters, including blank spaces. The .. wildcard operator is case-insensitive.

Pattern	Matches

G..	Giant, gigantic, Georgia

g..t	Giant, gross weight

..D	Grand, Elm Road

..e..s	Phillip Edward Wilson, roses

7..5	7485, 70,005

6/../96	6/01/96, 6/25/96

Note:	To retrieve values from a memo or formatted memo field, you must use the .. wildcard operator to specify a pattern selection condition. (Typing an exact match in these field types means typing the entire memo value; to prevent this unnecessary effort, Paradox does not allow it.) You can also use the @ wildcard operator to specify a pattern match in these field types, but you must use it in combination with the .. wildcard operator.

Suppose you want to find shops in the Customer table with the word Dive in their names. If you used the LIKE operator and typed LIKE dive in the Name field of the Customer table, you would only get dive shops whose names started with the word Dive and for whom Dive represented at least half of the letters of the entire name value. If, instead, you type ..dive.. in the Name field, Paradox generates an Answer table that shows customers with the word Dive anywhere in their name.


The @ operator

See also

The @ wildcard operator matches any single character (letter or number). You can use any number of @ characters to specify a pattern.

When you know how many characters are in the pattern you're looking for, you can use that number of @ wildcard operators instead of using the .. wildcard operator. For example, if you don't know if a person spells her name Kathy or Cathy, you can type @athy to match the value.

Pattern	Matches

m@@e	Mike, more, made

wom@n	Woman, women

s@@@@	Smith, Smyth, scent

19@2	1922, 1972, 1992

The @ wildcard operator is case-insensitive.

Note:	You cannot use the @ wildcard operator by itself to specify a pattern in a memo or formatted memo field. You can use it to represent single characters in a memo or formatted memo field, but you must also use the .. wildcard operator to retrieve memo field values.


Using wildcards with numbers

See also

If a comma's or period's meaning is not clear, then you must help Paradox understand the symbol's meaning with double quotation marks or spaces. A comma's or period's meaning will not be clear as a thousand separator if you are specifying a pattern match with the .. or @ wildcard operators; thus, do not type thousand separators when specifying a numeric pattern with .. or @.

If there is a chance that a decimal or thousand separator will be confused with the .. or @ wildcard operator, use quotation marks. For details, see Entering numbers in queries.

For example, here is a query to find all stock having a list price of $18 and any number of cents.

Paradox considers only significant digits in Paradox number fields when you use wildcard operators. For example, @@@.@ matches 400.70, because the last 0 isn't significant. By contrast, @@@.@@ doesn't match 400.70 for the same reason.

dBASE numbers

A dBASE number field has trailing zeros to the right of the decimal place, so add the .. operator to the end of a numeric pattern, even if you are trying to match the last digits. For example, ...95.. will match all numeric values ending in .95, but ...95 will not match.


Using wildcards with dates

See also

In a query image, when entering date values for exact matches, you can use any date format that Paradox supports, including custom formats.

However, when you use a wildcard to find a date, the pattern you define with the wildcard operator must reflect the date format you have set in both the BDE Configuration Utility and the Windows Control Panel Regional settings. (The BDE and Control Panel date settings must match.)

Example

If the date format set in both BDE and Control Panel is mm/dd/yy, you can find orders placed in May of 1995 like this:

If you have another date format set, use that in the wildcard query.


Example of using wildcards to match a pattern

See also

The following example shows the use of the .. operator to find the name of all customer shops with Dive in their name.

This example retrieves from the sample Stock table all records that have the word "nylon" in the Catalog Description field, which is a memo field.

The next example shows the use of the @ operator to find all stock with Model name beginning with PUL plus 3 and only 3 characters. Notice that @ retrieves the blank space character as well as letters and numbers. If you used the .. operator in this case (Pul..) the Answer table could give you anything from Pulse to Pullman.


About AND conditions

See also

When you enter selection conditions in separate fields on the same line of a query image, all conditions on that line must be met by a record in the table for the query to retrieve that record. This type of operation is called a logical AND, and means that all conditions must be met.

You can also express a logical AND in a single field [image] that is, enter more than one condition in a field and require that they all be met [image] by separating the conditions with commas.

The comma acts as an AND operator, telling Paradox that both (or all) conditions must be met for a match to occur.

Note:	If you want to enter a comma into a query without Paradox interpreting it as the AND operator, enclose it in quotation marks.

You can use the AND operator in all field types including BLOBs. Whenever you query a memo or formatted memo field, you must use the .. wildcard operator in addition to any other selection conditions or operators you use.


AND conditions in the same field

See also

Use a comma ( , ) to separate AND conditions in a single field of a query image. Type the entire AND expression on the same line of the field. The comma acts as an AND operator, telling Paradox that both (or all) conditions must be met for a match to occur. Because a value in a single field cannot be two or more values at the same time, the AND conditions you will be specifying in a single field will be any kind except exact match conditions [image] for example, two or more types of patterns, or two range conditions.

Example

The following figure shows a query that asks to see list prices from the Stock table that are less than or equal to $50.00 and that end with the number 5.

If you have the U.S. number format set, spaces are not necessary between the conditions and the AND ( , ) operator. If you have the international number format set, a space is necessary on one side of the comma.


AND conditions in different fields

See also

To specify AND conditions in different fields [image] that is, conditions that must all be met for a match to occur [image] type the conditions on the same line of the query image, each condition in its respective field.

You can specify exact matches on more than one field in a single query. Type all of the values you want to see [image] exactly as they appear in the table [image] in the appropriate fields of the query image. The following figure shows such a query.


AND conditions with linked tables

See also

To specify AND conditions with linked tables, type all selection conditions that you want to be met on the same line of each linked query image. As usual, specify AND conditions within a single field by separating all conditions that you want to be met with a comma ( , ), which is the AND operator.


About OR conditions

See also

You can set logical OR operations in a query. That is, you can retrieve records that meet either of two (or any of several) conditions.

To express an OR condition in a single field, use the OR operator. See OR conditions in the same field for details.

To express an OR condition between different fields, use separate lines of the query image, not the OR operator. See OR conditions in different fields for details.

You can create a query that specifies OR conditions in two or more tables. For details, see OR conditions with linked tables (multi-table queries).

Note:	You can use the OR operator in all field types, including BLOBs. Whenever you query a memo or formatted memo field, you must use the .. wildcard operator in addition to any other selection conditions or operators you use.


OR conditions in the same field

See also

Specify conditions in a single field on the same line of a query image to tell Paradox you want records that meet any of two or more conditions in that field. Type the operator OR between conditions.

Example

This query retrieves a list of all dive shops from the sample Customer table that are in either California or Hawaii.


OR conditions in different fields

See also

You can specify OR conditions for different fields of the table you are querying. You perform this kind of OR operation by putting selection conditions on different lines of the query image.

To add additional lines to the query, follow the editing instructions in Working with query images.

To display fields in the Answer table with this kind of query, you must check the check boxes in the same field on each line. For example, if you check the Name field in the first line, you must also check the Name field in all other lines of the query. Otherwise, Paradox displays error messages stating that the query appears to ask two unrelated questions or that one or more query rows do not contribute to the Answer.

Note:	 You do not use the OR operator for this kind of query. You use the OR operator for OR conditions in the same field.

Example

The following figure shows a query that asks to see records from the Customer table that are in either the city of San Jose, California (this condition is on the first line), or in the state of Hawaii (this condition is on the second line). The same fields are checked in both lines of the query.


OR conditions with linked tables (multi-table queries)

See also

To specify OR conditions with linked tables, type all selection conditions for different fields of a single table, any of which a given record can meet, on separate lines of the table's query image. All query images of linked tables must have the same number of lines and be linked with different example elements for each line of the common field. Specify OR conditions within a single field by separating all conditions, any of which you want to be met, with the OR operator.

Note:	You can't use the OR operator on example elements. The condition Qty or Price, where Qty and Price are example elements, returns an error message. This is because an example element stands for all the values in the field. You can't tell Paradox that either Qty or Price can represent all the values in the field.

Example

This query uses the sample Customer and Contacts tables to find the names of the contacts for customers located either in the city of Nassau or in the province of Jamaica. The same example elements are used on corresponding lines of the query images (join1 on the top lines and join2 on the bottom lines).


Combining AND and OR conditions

See also

You can combine AND and OR conditions in a single query.

Example

The following example uses the STOCK table to find out if you have 15 or fewer Direct Sighting Compasses and 15 or fewer Navigation Compasses in stock. You also want to see which vendors supply these items.


Combining two conditions in one field

See also

You can enter two or more selection conditions in the same field of a query image, separating the conditions with commas. The comma acts as an AND operator, telling Paradox that both (or all) of the selection conditions must be met for a match to occur.

Example

Suppose that in the sample Stock table, a list price ending in 5 indicates an item is on sale. You want to see all items that are on sale and cost $50 or less. Here is how you would set up the query:

If you have the U.S. number format set, spaces are not necessary between the conditions and the AND ( ,) operator. If you have the international number format set, a space is necessary on one side of the comma.

You can also combine AND and OR conditions in a single query.

Notes

To match a value that includes a comma (like Acme, Inc.) you must enclose the value in quotation marks, or Paradox interprets the comma as an AND operator. For example, you would type "Acme, Inc".

Sometimes you use the OR query when you are asking an "and" question. For example, if you want all records in CA and HI, you have to query for CA OR HI because no single record has both values.


About example elements

See also

An example element represents values in the field it is placed in. Example elements are used in two ways in Paradox:

In single-table queries, you can use example elements with query operators to perform calculations with the values in a particular field. An example element represents each value in turn from that field in the selection condition.

In multi-table queries, you use example elements to link tables by common fields. The example elements tell Paradox that two fields contain common data even though their field names might differ. Each example element acts as a place marker and means "If a record selected from Table A has a value in this field, link it with all the records from Table B that have the same value in the corresponding field."

You can use example elements in all fields except BLOB fields.

For information on creating example elements, see Creating example elements.


Creating example elements

See also

You can create your own example elements by pressing F5 and typing them. Or you can let Paradox do it for you by clicking the Join Tables [image] button. For details, see

To create an example element by typing

To place example elements with the Toolbar

When you create your own example elements, you can use nonsense syllables or names that are meaningful to you. Example elements can contain any alphabetic characters (A-Z, a-z), digits (0-9), or both. They must not contain spaces.


Using an example element in a selection condition

See also

When you use example elements to link tables, you can add as many selection conditions as you want. You can place conditions in any query image. The only requirement of a multi-table query is that all tables in the Query window be linked to each other.

In the following example, you want to know which dive shops outside of California have placed orders for items from $500 to $1,500 in selling price and have had these items shipped via Federal Express or Emery.

Note:	You cannot use the OR operator with example elements. The statement Qty OR Price, where Qty and Price are example elements, is not a logical question and returns an error message. This is because an example element represents all the values in the field. You cannot tell Paradox that either Qty or Price can represent all the values in the field.


Using an example element to represent a value

See also

You can use an example element in a selection condition when the value you want to use is stored in a table. The example element stands for whatever value Paradox retrieves.

For example, suppose you want to know what dive shops in the Customer table are located in the same city as the VIP Divers Club. Rather than ask what city that is, then ask what cities match it (a two-query process), you can find the value and all matching values in one query, following these steps:

1.	Open a Query window and select the Customer table.

2.	In the Name field, type VIP Divers Club.

3.	In the City field, press F5 and type city as the example element to represent the city where VIP Divers Club is located.

4.	Press the down arrow to create a second line in the query image.

5.	On the second line of the query image, check the Customer No, Name, and City fields.

6.	In the City field on the second line, press F5 and type city again to retrieve all records whose City values are the same as the City value for VIP Divers Club.

7.	Run the query.


Using an example element in a range

See also

You can use example elements in queries to retrieve records that match a range of values. For example, suppose you want to list all the stock items whose cost is greater than the cost of item number 1320. You would construct a query like the one below.

The first line of this query retrieves the record that contains Stock No 1320 from the sample Stock table. The cost of item 1320 is represented by the example element cost. The same example element is used in the second line to retrieve all records with a cost greater than that of item 1320. The cost of 1320 is $171.00.


Using an example element in a date condition

See also

You can use an example element in a date expression. For example, suppose you want to list all orders that were shipped less than 30 days after order number 1010 (this includes orders that were shipped before order number 1010). Order 1010 shipped on 5/14/91.

You would construct a query like the one below.

This query uses

An example element to represent the shipping date of order number 1010.

An arithmetic expression to calculate the date 30 days after.

The < (less than) operator to select the records with shipping dates earlier than the date 30 days after the shipping date of Order No 1010.


Using LIKE or NOT with an example element

See also

You can use example elements with the LIKE and NOT operators.

Suppose you want to find contacts who have been entered more than once in the Contacts table with slightly different last name spellings. You could use LIKE to look for alternative-spelling duplicates of each name, one at a time, or you could use LIKE and NOT with example elements to find all alternative-spelling duplicates at once.

The statement "like name, not name" specifies last names that are like one another and at the same time not exactly one another [image] just names that have in common at least half to two-thirds of the same letters. (The space after the comma is not necessary but makes the expression easier to read.)


To create an example element by typing

See also

1.	In the Query window, click the field where you want to add an example element.

2.	Press F5.

3.	Type the example element in the field.

Paradox displays example elements in a different color (usually red), except on monochrome monitors.

You can use any characters that make sense to you. Example elements can contain any letters and numbers.

The following characters cannot be part of an example element:

*    (    )    -    +    /    .

You cannot put a space in an example element.

When you do one of these things, Paradox assumes you have completed the example element:

Move to another field, line, or query image.

Press Spacebar.

Type one of the characters that can't be part of an example element.

Subsequent characters you type appear in normal text.

If you prefer, you can use the Join Tables button to link two or more tables. This method is usually more efficient than typing. For instructions, see To place example elements with the Toolbar.


To place example elements with the Toolbar

See also

Although you can use the manual method of placing example elements to link two or more tables, the most efficient way to place example elements for this purpose is with the Join Tables [image] button.

When you click the Join Tables button, the word join appears to the lower right of the pointer and Paradox displays the message Performing Join on the status bar. This indicates that you're in join mode. Paradox ends join mode automatically when you place two example elements (by clicking in two fields). You can click the Join Tables button again to leave join mode at any time.

The first pair of example elements Paradox creates is join1, the next is join2, and so on.

The fields you link must be compatible field types (not necessarily the exact same field type [image] numeric and money fields are interchangeable) and must contain corresponding data for the link to work.

Example

Suppose you want to see the names of dive shops that have placed orders. The Orders table shows only the Customer No [image] not the dive shop's name. The Customer table contains dive shop names. To get the information you want, you must link Customer and Orders on their common Customer No fields.

1.	Open a Query window and select the Customer and Orders tables.

2.	Check Customer No and Name in the Customer query image, and Order No in the Orders query image.

3.	Click the Join Tables button. The join indicator appears to the lower right of the pointer.

4.	Click the Customer No field in the Customer query image. Paradox places join1 in that field.

5.	Click the Customer No field in the Orders query image. Paradox places join1 in that field too.

6.	Run the query.


Calculating values with queries: the CALC operator

See also

Uses

The CALC operator performs calculations on the information in your tables. Use CALC to

Construct and evaluate mathematical expressions

Combine values from two or more fields

Combine field values with constants

Create a new field with a constant value

Capabilities

You can

Specify selection conditions to define the records to perform calculations on

Type the CALC expression itself in any field of the query image

Use CALC with alphanumeric values and with summary operators

Use values from several tables in a calculation.

Use example elements in the CALC expression to refer both to values in the same table and to values in other tables.

Rules

When you use CALC in a query, the Answer table generated by that query contains an additional field for the calculated result. This means that

When you create tables, there is no need to include fields for any data that can be calculated from the values in other fields.

It does not matter what field of the query image you type the CALC expression in.

You don't need to check the field in which you enter the CALC expression, because the CALC operator always causes Paradox to create a new field in the Answer table.

Note: If you do check the field in which you enter the CALC operator, this changes the grouping and alters the results.

Paradox gives the new field a name based on the calculation. You can use the AS operator to give the calculated field another name. For instructions, see To rename Answer table fields.


Using CALC with arithmetic operators

See also

You can use CALC in any field of a query image. Following the CALC reserved word, type the expression for the calculation you want to perform.

Expressions can contain

Constants like 154 or 12/24/91

Example elements like QTY

Arithmetic operators like  +   -   *   /   ( )

Summary operators like SUM or MAX

Comparison operators like  =   <   >   <=   >=

Example

Suppose you want to multiply the values of the Quantity (Qty) field of Stock.db by the values in the List Price field to obtain total costs of the stock you have on hand.

1.	Choose File|New|Query and select Stock.db.

2.	Check the Stock No, Part No, Description, Qty, and List Price fields in the query image.

3.	Place an example element in the Qty field (press F5 and type something like Qty).

4.	Place an example element in the List Price field (press F5 and type something like Lp).

After you've defined the field values you want to work with by placing example elements in the List Price and Qty fields, you can type the CALC expression using these example elements in any field of the query image.

5.	In any field, type CALC , then place the example element you're using for the Qty field, then type * , then place the example element you're using for the List Price field. Your query statement should look something like this: CALC qty * Lp. (You can choose to type spaces or not; Paradox disregards them.)

6.	Run the query.


Using CALC with alphanumeric values

See also

You can combine (concatenate) alphanumeric values and constants by using CALC and the + operator. For example,

You can add "Ms. " in front of a list of last names when the value in the Sex field is F.

You can use CALC to combine values from the City, State, and ZIP fields into a single Address field.

Example

Suppose you want to combine the City, State/Prov, and Zip/Postal Code fields of the sample Customer table into one field in an Answer table. Here is how you would set up the query:

To include the country name for dive shops outside the U.S., you can add the Country field to this concatenation.


Creating a new answer field with a constant value

See also

You can create a new Answer table field that contains a constant value (numeric, date, or alphanumeric) rather than the result of a calculation. When creating a numeric or date constant, type the reserved word CALC, a space, and the constant numeric or date value in any field of the query image. When creating an alphanumeric constant, type CALC, a space, double quotation marks, the alphanumeric constant (with respect for case) and end with double quotation marks.

Paradox names the new field in the Answer table the same name as the constant value. (To name the new field something else, use the AS operator, as described in To rename Answer table fields.) If the new field is alpha, it has as many character spaces as necessary to hold the constant value.

You can create a new blank field by typing CALC BLANK. In this case, you must type the CALC expression in a field of the type that you want the resulting new Answer field to be [image] number, short, long integer, money, date, or alpha.

Example

Suppose you need to call all of the dive shop customer contacts in the sample Contacts table to conduct a survey of customer satisfaction. You want a way to keep track of the contacts you have yet to call so that you do not call anyone twice by mistake.

You can create a new table from the Contacts table called Calls. You want to combine the Last Name and First Name fields of Contacts in the Calls table, and you want to create a new field in Calls with the alphanumeric constant "Not called yet." Here is how you would set up the query:

1.	Start by giving the Answer table the name Calls. Choose Query|Properties, click the Answer page, then type Calls in the Table Name text box and choose OK.

2.	Then, set up the following query and run it.

Note:	You must type the CALC expression and AS operator condition in the same field. If you type them in either the Last Name or First Name fields, which already have example elements in them, you must separate the example element from the CALC expression and AS operator condition with a comma.


Calculating with numeric values from different tables

See also

You can link tables and perform calculations that call on values from different tables in a single query. For examples, see Examples of calculating values with queries, Example 2.


Examples of calculating values with queries

See also

Example 1

Suppose in the sample Stock table you want to multiply the values of the Quantity (Qty) field by the values in the List Price field to obtain total costs of the stock you have on hand. Here is how you would set up the query:

The first occurrence of each example element defines the example. The example elements say, "This variable represents the values in this field."

The second occurrence of each example element uses the values the example elements represent. It says, "Do this with each value in this field."

Example 2

Suppose you want to calculate a total dollar amount of all currently on-order items based on List Price (in STOCK.DB) rather than on Selling Price (in LINEITEM.DB).

To find this information, you need to multiply the list price of all items by the quantity of that item ordered. For steps, see Calculating with numeric values from different tables. The following figure shows the results:

Create the following example elements by pressing F5 and then typing:

Qty in the Qty field of the Lineitem query image

Price in the List Price field of the Stock query image

Then type a comma, and type the expression CALC Qty * Price (entering Qty and Price as example elements).

Use the Join Tables [image] button to place example elements in the Stock No fields of both query images.


Querying more than one table

See also

Two or more tables usually contain different information about the same person, place, or thing. To combine this information, you can query more than one table at the same time.

Multi-table queries are similar to single-table queries, except that

You fill out a separate query image for each table.

You use example elements to identify common fields among the tables. For details, see Using example elements to link tables.


Using example elements to link tables

See also

When you query more than one table, you must use example elements to link the tables by a common field. These linking fields are fields in each table that contain the same kind of information. For example, Customer and Orders both have a field containing customer identification numbers called Customer No. Because the information in both fields is compatible, you can link these two tables on that field.

Linking fields

The linking fields

Do not need to have the same field name.

Must be of compatible types. You cannot, for example, link a number field in one table to an alpha field in another.

Cannot be memo, formatted memo, graphic, OLE, or binary fields.

You can link up to 24 tables in a single query. For more information, see To add tables to a query and Linking more than two tables.

Example elements

To enter an example element, do one of the following:

Click the Join Tables [image] button. Then click in the appropriate field of each query image. Paradox places example elements that join the tables.

Select the field, then press F5 and type the example characters in the field.

When you use an example element to link tables, you need to check the field in only one of the tables to display the field.

Data models

You can link tables automatically using a data model. You can create a new data model for a query when you open the Query window. If you prefer, you can use the data model of an existing form, report, or query. For more information, see:

To create a query based on a data model

To create a query based on another query

Using a multi-table design to link tables


Linking more than two tables

See also

Sometimes, three or more tables you are querying have the same field in common. In that case, you use the same example element to link all the tables.

The more usual case occurs when three or more tables have different fields in common: For example, Table 1 and Table 2 have one field in common, Table 2 and Table 3 have a different field in common, and Table 1 and Table 3 have no fields in common.

Use a unique example element for each link. In the case above, you could use the example element abc to link Tables 1 and 2 and use xyz to link Tables 2 and 3.

Note:	You can query as many as 24 tables in a single query.

For an overview of linking tables with example elements, see Using example elements to link tables. Or, you can use a multi-table design; see Using a multi-table design to link tables.


Using a multi-table design to link tables

See also

Paradox gives you a way to automatically link tables in a query using a linked multi-table design document you have already created.

If you have already set up table relationships for the purpose of a multi-table design document, you can use that object as the basis of your query. Or you can open another multi-table query and modify it.

The Query window must be new or empty to start with other multi-table documents.

To use a form, report, or multi-table query to set up your query, follow the steps in one of these topics:

To create a query based on a data model

To create a query based on another query

Paradox adds the tables used in the document to the Query window, and places example elements to join the tables according to the document's data model.


Example of multi-table queries

See also

Example 1

Suppose you want to use the sample tables to see which dive shops have placed orders. The Orders table, however, only shows the Customer ID number and not the dive shop names. The Customer table contains the dive shop names. Therefore, you want to use example elements to link Customer and Orders on their common Customer No fields to retrieve

Orders information from Orders

The names of the dive shops that have placed orders from Customer

Example 2

Suppose you want to know which dive shops outside of California have placed orders for items from $500 to $1,500 in selling price and have had these items shipped via Federal Express or Emery.

The following figure shows the use of two example elements to link three tables.


About query results

See also

When run, most queries display an Answer table, which is placed in your private directory. However, if your query uses the INSERT, DELETE, or CHANGETO reserved words, Paradox does not display an Answer table. Instead, it changes the data in one of the tables represented in the query and creates an Inserted, Deleted, or Changed table. See About queries that change data.

Note:	If you choose the Query|Properties and check the Fast Queries setting on the QBE page, Paradox will not create the Inserted, Deleted, and Changed tables.

Live query views

You can edit the Answer table, but any changes you make are not reflected in the original table or tables that you queried. If you want to create an Answer table that does update the original table when you change it, create a live query view instead of an Answer table. See About live query views for more information.


About the Answer table

See also

A Paradox query that retrieves data or performs calculations gives you an Answer table. The Answer table is a temporary table that Paradox stores in your private directory and replaces each time you perform a query. Paradox deletes the Answer table when you exit Paradox. If you want to save the Answer table, you must rename it, or save it to a different directory.

To specify a different name for the Answer table or otherwise change it before or after you run the query, see Modifying and renaming the Answer table.

Live query views

You can make a query produce a live query view instead of an Answer table. See About live query views for more information.


Modifying and renaming the Answer table

See also

By default, Paradox names the result of a query ANSWER.DB and places it in your private directory. The structure of the Answer table closely reflects the structure of the query example: the leftmost field checked in the first image becomes the leftmost field of the Answer table, and so on.

Modifying the Answer table before running a query

You can change the properties of the Answer table before you run the query. To change the way Paradox displays the Answer table, do one of the following:

Click the Answer Table Properties [image] Toolbar button

Choose Query|Properties

When the Properties dialog box opens, click the Answer tab, and follow the instructions in the Help for the Answer page (Query properties dialog box).

You can use this dialog box to

Give the Answer table a different name

Save Answer to a directory other than your private directory

Create the Answer table as a Paradox or dBASE table

Produce a live query view instead of an Answer table

When you finish setting the properties for the table, choose OK to return to the Query window.

Note:	For a complete description of available query properties, see About query properties.

Renaming the Answer table after running a query

The Answer table is a temporary table. Every time you run a query, Paradox overwrites the Answer table with the new Answer table. To save an Answer table, you must rename it before you run another query. To rename the Answer table, choose Table|Rename or Tools|Utilities|Rename. For information, see About renaming objects.

Caution:	If you give Answer the same name as an existing table in the directory to which you save it, Paradox overwrites the existing table with no warning. If you save Answer to a directory location that already contains an Answer table, Paradox overwrites the existing table with no warning.

When you give Answer a new name, Paradox does not treat it as a temporary table, and does not delete it when you change working directories or exit the program.

Changing the Answer table structure and field names

Unless you change it, the structure of the Answer table closely reflects that of the query example: the leftmost field checked in the first query image becomes the leftmost field of the Answer table, the next leftmost field checked in the first query image becomes the second field of the Answer table, and so on through the checked fields of all the query images. You can change the order of fields in the query image or the final table by dragging columns to the desired position or pressing Ctrl+R. Or, choose Query|Properties and rearrange the field order on the Structure page.

If the Answer table contains fields with duplicate field names from two or more tables, Paradox names the first field by its exact field name and numbers the duplicates, calling them Name_1, Name_2, and so on.

Paradox places new calculated fields at the end of the Answer table and names them according to the calculation. You can rename Answer table fields, including calculated fields. For instructions, see To rename Answer table fields.


To rename Answer table fields

See also

When you check a field in a query image, it is displayed in the Answer table with the same name it had in the original table. To change the field name in the Answer table, use the AS operator:

Type the selection condition, if any, in the field, then type AS, followed by a space, then type the new field name you want.

The AS operator changes field names only in the Answer table. It doesn't change field names in the table(s) you query.

Note:	When you use the CALC operator, Paradox creates a new field in the Answer table that contains the results of a calculation. Paradox automatically places the new calculated field at the end of the Answer table and gives it the name of the calculation. To specify a different name for a calculated field, follow the CALC expression with the AS operator and the new name. For an example, see Creating a new answer field with a constant value.

Example

This example shows how to make the Qty field of the Stock table appear as Compasses on Hand in the Answer table.


To sort the Answer table

See also

You can sort the Answer table before you run the query. To do this,

1.	In the Query window, choose Query|Properties.

2.	Click the Sort tab to display the Sort page (Query properties dialog box).

3.	Use the Add Field arrow [image] to move the fields from the Answer Fields list to the Sort Order list. Add the fields in the order you want the Answer table sorted.

To remove a field from the Sort Order list, select it and choose the Remove Field arrow:

To change the order of the fields in the Sort Order list, select a field and use the Change Order arrows [image] [image] to move it up or down in the list.

Choose OK. Paradox will sort the Answer table according to the Sort Order list.


To sort Answer table values in descending order

See also

By default, Paradox sorts records in the Answer table in ascending order, based on the values in fields you check, from left to right. That is, it sorts on the leftmost field first, then the next field, and so on.

Here is how sort order applies to the different Paradox field types:

Field type	Examples of sorted values
from low	to high

Number	0	10

Alpha	A, a 	Z, z

Date	1/1/91	12/31/91

Money	$1.99	$99.99

Memo	Not sorted

Graphic	Not applicable

Time	00:00:01	23:59:59

Logical	False	True

F	T

No	Yes

0	1

Numbers and other nonalphabetic characters are sorted according to the sort order you installed. Alphanumeric "10" sorts before "2" even though it is numerically larger.

To specify that values be sorted in descending order,

Select CheckDescending [image] from the check box menu for the field you want sorted in descending order.

(To display the check box menu, right-click the check box where you want to enter a checkmark.)

Note:	In BLOB fields and in dBASE memo fields, Paradox treats [image] and [image] as if they were [image]. You cannot use [image] in BLOB fields or dBASE memo fields.


About live query views

See also

When you create a Paradox query that generates an Answer, the Answer table generated by the query does not maintain a relationship with the original table you queried. Edits you make to Answer are not reflected in the original table.

If you prefer, you can create a live query view. When you create a live query view, Paradox generates an Answer set that is a limited, direct view into the table you queried. The view is limited by the selection conditions you specify in the query. When you edit the Answer table, you are really editing the table you queried, and using this limited, direct view to see only the data you want from that table.

When Paradox creates a live query view, live-field [image] indicators appear next to each live field. Changes you make to data in a live field are also made to the source table.

Multi-table QBE queries can't return live query views. SQL queries on up to three tables can return live query views.

To create a live query view, follow the instructions in To create a live query view.

Tip:	You will get better performance on single-table queries if you use a live query view. You can set your query options to default to creating live query views and using the CheckPlus [image]. See Modifying and renaming the Answer table.

Note:	Even though you request a live query view on the Answer page of the Query Properties dialog box, Paradox might not actually produce a live query view. Here are some common reasons why a live query view might not appear:

 The query didn't use CheckPlus; Check and CheckDescending cause sorting instead.

 You performed an INSERT, DELETE, or CHANGETO query.

 You performed a CALC query.

If a query view can't be live, you still get a query view, not an Answer table, but all the fields are read-only. You'll still see updates other users make to the table (if it's a Paradox table and the Refresh Rate is not 0).


Rules for live query views

See also

Not all queries can return live query views. A live query view must meet the following conditions.

You can create a live query view only on single-table queries.

You must use the CheckPlus [image] operator. The live query view cannot be sorted, so Check, CheckDescending, and GroupBy checks are not allowed.

You cannot use the the Sort Answer Table [image] button or the Sort settings of Query|Properties on a live query view.

You cannot use calculated fields in a live query view.

Multi-line OR queries are not allowed.

The selection conditions you specify in the query must be capable of being expressed as a filter. This means the following query structures are not allowed:

References to one field in the selection condition of another field

References to aggregates in the selection condition

Use of the @ wildcard operator

Use of the .. wildcard operator before selection conditions. (Use of the .. wildcard operator after a selection condition is allowed, as in the example Canada.., and produces a case-insensitive answer set.)

See Filters and queries compared for more information.


To create a live query view

See also

1.	Choose File|New|Query and select a table to query.

2.	In the query image, place CheckPlus [image] marks in the fields you want to include in the live query view.

3.	Choose Query|Properties, click the Answer tab, then choose Live Query View.

4.	Run the query.


To edit a live query view

See also

When Paradox creates a live query view, you'll see the words Query View and the name of the .QBE file that generated the live query view (if the .QBE file has been saved) in the title bar of the live query view.

To edit the live query view,

Work with it as if it were any other table you work with in Paradox. You must enter Edit mode to make changes. All changes to data in fields from the queried table immediately appear in the original table.

Note:	You can use Ctrl+Del to delete a record from the live query view, and this also deletes the record from the table you queried. This deletion (like all Paradox deletions) cannot be undone.


To save a live query view

See also

You can save the live query as a .QBE file. From the Query window, choose File|Save or File|Save As and save the live query view as you would any other query. Each time you open and run the query, Paradox generates a new live query view of the table's data.

The live query view is a temporary view of the table you queried. You can save this query view as a new table. Choose File|Save to convert the live query view to a standard Answer table and place it in your private directory. Edits you make after saving the live query view are no longer reflected in the table you queried.

If you prefer, you can choose File|Save As to save the live query view as a table you name in a location you specify. This converts the live query view to a standard, permanent table like any other. It no longer maintains a relationship with the table you queried.


About query properties

See also

In the Query window, you can use Query|Properties to specify how you prefer Paradox to run your queries and how to display the results.

When you choose Query|Properties, the Properties dialog box appears. It contains the following pages:

Answer	Whether the results appear as an Answer table or live query view, whether the table type is Paradox or dBASE, plus the name and directory of the Answer table.

QBE	Whether queries are to be run locally, remotely, or either; and whether to create auxiliary tables for queries that change data (INSERT, DELETE, CHANGETO queries)

Sort	What Answer table fields are to be included in a sort and in what order

Structure	The order of fields in the Answer table

Query properties are saved with the query.

Query defaults, or preferences

You can set global defaults for some of these properties and more, such as the Default QBE Check Type. These defaults are called preferences and are set with Edit|Preferences on the Query page of the Preferences dialog box. Some are discussed here, if they also appear as properties, but all preference types are accessible through the topic To set system preferences.

Note:	Table Update Handling settings appear on the Query page of the Preferences dialog box. However, if you want to change these settings temporarily, for a single work session, you choose commands on the Query menu instead of choosing Query|Properties. For details, see Handling table updates.


Handling table updates

See also

Default Table Update Handling settings appear on the Query page of the Preferences dialog box. However, if you want to change these settings temporarily, for a single work session, you choose commands on the Query menu instead of choosing Query|Properties. Because these settings are similar to properties, but aren't saved with a query, they are discussed in this section of help with the query properties.

When using Paradox on a network, multiple users can make changes concurrently to a shared table in a shared data directory. You can choose whether you want your Answer table to reflect changes made to the source table(s) of your query while the query is running.

To change the default table update handling settings,

Choose Edit|Preferences. Then, choose the setting you want on the Query page.

To change table update handling for the current work session,

Open the Query menu, then choose the setting you want:

Choose Restart On Changes to make Paradox restart the query when it detects a change to the source table(s).

Choose Lock Tables to lock all tables in your query, preventing any changes to them while Paradox runs the query. Paradox releases the locks when it finishes running the query. (If someone else is already using the table(s) you want to lock and query, Paradox can't place your locks. You'll see a message informing you that a table is locked.)

Choose Ignore Changes to allow other users to make changes to the source table(s) while Paradox runs your query and to prevent Paradox from restarting the query if they do. (This is the default selection.)


Setting Answer table properties

See also

The Answer table properties let you specify the results of a query that can produce an Answer table.

To change Answer table properties for the current query,

1.	Choose Query|Properties.

2.	Choose the Answer page of the query properties dialog box, then choose the settings you want:

Choose Answer Table to generate a temporary Answer table; choose Live Query View to generate a live query view [image] which you can edit to update the original tables queried [image] instead of an Answer table.

Choose a type for the Answer table: Paradox or dBASE.

If you want, choose a different name and/or directory for the Answer table so it won't be overwritten the next time you run a query.

Settings made with Query|Properties are saved with the query.


Setting auxiliary table properties

See also

The INSERT, DELETE, and CHANGETO queries generate more than the Answer table. For example, CHANGETO queries create the Changed table and INSERT queries create the Inserted table. Creating these extra tables takes a certain amount of time, and you might not be interested in them.

The auxiliary table preferences and properties let you specify whether to create these tables for queries that change data.

To change the default auxiliary table options,

Choose Edit|Preferences. Then, choose the setting you want on the Query page.

Choose Fast Queries to keep Paradox from generating auxiliary tables when running queries that change data. When you generate only Answer tables, your queries will run more quickly.

Choose Generate Auxiliary Tables to produce these tables when running queries that change data.

To change auxiliary table options for the current query,

1.	Choose Query|Properties.

2.	Choose the QBE page of the query properties dialog box, then choose the setting you want. These settings are the same as those listed for Edit|Preferences, above.

Settings made with Query|Properties are saved with the query.

INSERT, DELETE, and CHANGETO queries are discussed in the following topics:

About INSERT queries

About DELETE queries

About CHANGETO queries


Setting remote query properties

See also

When creating a query that uses data from a remote database server, you can choose whether you want Paradox to process the query locally (on your hard drive) or remotely (on the server). Or, you can let Paradox decide how the query can be run most efficiently.

To change the default remote query settings,

Choose Edit|Preferences. Then, choose the setting you want on the Query page.

Choose Query May Be Local Or Remote to make Paradox attempt to run the query remotely (on the server). If this fails, Paradox runs the query locally (on your hard drive).

Choose Run Query Remotely to make Paradox request that the server run the query and send back only the answer data.

Choose Run Query Locally to make Paradox run the query locally. This means that Paradox requests all data in queried tables from the server and runs the query on your Desktop system.

To change remote query settings for the current query,

1.	Choose Query|Properties.

2.	Choose the QBE page of the query properties dialog box, then choose the setting you want. These settings are the same as those listed for Edit|Preferences, above.

Settings made with Query|Properties are saved with the query.

Whether you create a query on local (Paradox or dBASE) or remote (SQL) data, Paradox can translate your QBE statement into valid SQL syntax. This is done automatically when you query remote data. You can view this SQL syntax by choosing Query|Show SQL or clicking the Show SQL [image] button. Paradox opens the SQL Editor with the translated SQL syntax in it.

If you prefer writing SQL syntax to creating QBE statements, you can use the SQL Editor to write SQL statements to be run against local (Paradox or dBASE) or remote (SQL) tables. The only restriction is that QBE must be able to interpret the SQL syntax correctly.


Setting query sort properties

See also

You can use Query|Properties to determine how an Answer table will sort before you run a query. For details see To sort the Answer table.

Because Sort is a query property, sort information is saved with the query.


Setting query structure properties

See also

You can use Query|Properties to determine the field order of an Answer table before you run a query.

To change field order for the Answer table of the current query,

1.	Choose Query|Properties.

2.	Choose the Structure page of the query properties dialog box, then use the Change Order arrows [image] [image] to arrange the Answer Fields list in the order you want.

You can use Undo to restore the previous order at any time.

Because Structure is a query property, field order information is saved with the query.


To save query settings

See also

Settings made with Query|Properties are saved with the query when you choose File|Save or Save As.

You can set certain query options to affect all queries you run, and to last between Paradox sessions. These are the query preferences, set on the Query page of the Preferences dialog box.


About advanced queries

See also

Paradox can perform a variety of advanced queries on groups and sets of records. You can

Work with groups of records using summary operators and other analysis tools.

Define and compare sets of records to show records that are and aren't part of a set.

Create and use inclusive links to retrieve all the records in a table, whether they match a selection condition or not.

All the examples in this section of Help come from the sample tables included with Paradox.


About querying groups of records

See also

You can use Paradox to answer questions about groups of records taken together. You can

Select records based on characteristics of a group, such as items that appear in two or more orders

Calculate statistics on groups of records, such as the average invoice total of orders placed in each state

Compare characteristics of a group with other records, such as which customers have placed more orders than any Hawaii customer

These questions all consider more than one record at a time. No individual record can answer them [image] you have to look at the group of records together.

You can use the summary operators to answer these and other questions about groups of records.


About summary operators

See also	Examples

A summary operator performs an operation on a group of records that you define by checking a field or fields. You specify which records to group with selection conditions. Paradox has five summary operators:

AVERAGE	Averages the values in a group

COUNT	Counts the number of values in a group

MAX	Finds the maximum value of a group

MIN	Finds the minimum value of a group

SUM	Totals the values in a group

As with Paradox's other reserved word operators, the case (uppercase or lowercase) in which you type any of the summary operators or summary operator modifiers does not matter.

Fields

You cannot use summary operators in Paradox BLOB fields or dBASE memo fields. In addition, AVERAGE and SUM cannot be used in alpha, date, time, or timestamp fields. See these topics for information on field types that allow summary operators:

Paradox field types allowing summary operators

dBASE field types allowing summary operators

Summary modifiers

Summary modifiers let you specify whether to use all values in a group or only unique values. For details, see:

Using summary operator modifiers

Defining groups

You can use summary operators and checkmarks to define groups of data. For more information, see:

Selecting records based on group definitions


Paradox field types allowing summary operators

See also

Operator	A	N	$	S	I	#	D	T	@	M	F	G	O	L	+	B	Y
AVERAGE		Y	Y	Y	Y	Y	Y	Y	Y						Y
COUNT	Y	Y	Y	Y	Y	Y	Y	Y	Y					Y	Y		Y
MAX	Y	Y	Y	Y	Y	Y	Y	Y	Y					Y	Y		Y
MIN	Y	Y	Y	Y	Y	Y	Y	Y	Y					Y	Y		Y
SUM		Y	Y	Y	Y	Y									Y
ALL*	Y	Y	Y	Y	Y	Y	Y	Y	Y					Y	Y		Y
UNIQUE*	Y	Y	Y	Y	Y	Y	Y	Y	Y					Y	Y		Y
* By default, SUM and AVERAGE operate on all values in a field, while COUNT, MAX, and MIN operate only on unique values. You can override these default groupings by adding the word ALL or UNIQUE to a CALC statement.


dBASE field types allowing summary operators

See also

Operator	C	F	N	D	L	M	O	B
AVERAGE		Y	Y
COUNT	Y	Y	Y	Y	Y
MAX	Y	Y	Y	Y	Y
MIN	Y	Y	Y	Y	Y
SUM		Y	Y
ALL*	Y	Y	Y	Y	Y
UNIQUE*	Y	Y	Y	Y	Y
* By default, SUM and AVERAGE operate on all values in a field, while COUNT, MAX, and MIN operate only on unique values. You can override these default groupings by adding the word ALL or UNIQUE to a CALC statement.


Using summary operator modifiers

See also

All of the summary operators except COUNT perform their operation on all of the values in a group by default. COUNT counts only unique values in a group by default. To change the default behavior, apply one of the summary operator modifiers:

ALL	Considers all values in a group, including duplicates. You must use ALL with COUNT, in the format COUNT ALL, to make COUNT count all values in a group, including duplicates.

UNIQUE	Considers only unique values in a group. You must use UNIQUE with all summary operators except COUNT to make them perform their operation on unique values in a group instead of on all values.


Selecting records based on group definitions

See also

Use summary operators and checkmarks to define groups of data. Checkmarks (Check, CheckPlus, and CheckDescending) that appear on the same line as a summary operator serve two functions:

They divide the records into groups based on the values in the checked field.

They include the checked field in the Answer table (their usual function).

The following examples show how to use summary operators and checkmarks to define groups of data:

Example of using COUNT: selecting records based on a group count

Example of using SUM: selecting records based on a group sum

Example of using AVERAGE: selecting records based on a group average

Example of using MAX and MIN: selecting records based on a group maximum or minimum


Example of using COUNT: selecting records based on a group count

See also

Use the COUNT summary operator to count unique values in each group.

For example, suppose you want to know which countries have three or more dive shop customers.

In a Query window with a blank CUSTOMER.DB query image,

1.	Check the Country field.

The checkmark in the Country field groups the records by country and includes the Country field in the Answer table.

2.	Type count >=3 in the Customer No field.

The expression count >=3 tells Paradox to count all the different customer numbers for each group (country) and to select groups for which the count is three or more.

3.	Run the query.

Customer is a keyed table, and Customer No is the keyed field, so you know that all customer numbers are unique. The COUNT operator counts unique values by default. If you want to count all values, including duplicates, use COUNT ALL. See Example of counting unique values and Example of counting all values.


Example of using SUM: selecting records based on a group sum

See also

Use the SUM summary operator to sum values within each group in a query.

For example, suppose you want to know which customers have placed orders for which they owe $5,000 or more.

In an open Query window with blank CUSTOMER.DB and ORDERS.DB query images,

1.	Use the Join Tables [image] button to place corresponding example elements in the Customer No fields of both query images.

2.	Check the Customer No and Name fields of the CUSTOMER.DB query image.

The Check in Customer No groups the records by customer and includes this field in the Answer table. The Check in Name also groups records by customer and includes this field in the Answer table.

The Check in Name does not form a different group from the Check in Customer No, because there's a one-to-one correspondence between Customer No and Name; both checks form the same group. See Example of grouping by more than one field.

3.	Type sum >5000 in the Balance Due field of the ORDERS.DB query image.

The expression sum >5000 sums the balance due for each group (customer) and selects those with balances greater than $5,000.

4.	Run the query.


Example of using AVERAGE: selecting records based on a group average

See also

Use the AVERAGE summary operator to average the values in each group in a query.

For example, suppose you want to know the states in which the average invoice total is less than $50,000. In an open Query window with blank CUSTOMER.DB and ORDERS.DB query images,

1.	Use the Join Tables [image] button to place example elements in the Customer No fields of both query images.

2.	Check in the State/Prov field of the CUSTOMER.DB query image to group the table's records by State/Prov values and include this field in the Answer table.

3.	Type average <50000 in the Total Invoice field of the ORDERS.DB query image.

The expression average <50000 averages the invoices for each group (state/province) and selects those groups with less than $50,000.

4.	Run the query.


Example of using MAX and MIN: selecting records based on a group maximum or minimum

See also

Use the MAX summary operator to find the maximum value in a group. Use the MIN summary operator to find the minimum value in a group.

The following example shows a query using the MAX summary operator. You could do the same query with the MIN summary operator to retrieve the minimum value from the same group.

Suppose you want to know the countries in which the highest total invoice is $200,000 or less. In an open Query window with blank CUSTOMER.DB and ORDERS.DB query images,

1.	Use the Join Tables [image] button to place example elements in the Customer No fields of both query images.

2.	Check the Country field of the CUSTOMER.DB query image to group the table's records by Country values and include this field in the Answer table.

3.	Type max <=200000 in the Total Invoice field of the ORDERS.DB query image.

The expression max <=200000 finds the total invoice for each group (country) and selects those with $200,000 or less.

4.	Run the query.


About calculations on groups

See also	Examples

In a query, in addition to calculating new fields for each record, you can also calculate statistics (like total and average) for groups of records. For example, you can ask

How many of each stock item have been ordered?

What is the total amount of sales for each customer?

How many customers live in each country or state?

What are the highest and lowest priced stock items?

Use summary operators with the CALC operator to count, summarize, average, and find the minimum or maximum values in the fields of your tables. To do this, type CALC and the appropriate summary operator in the field you want calculated.

Like all CALC queries, those using groups also create a new field in the Answer table. Paradox automatically names the new Answer table field according to the group calculation. You can use the AS operator to rename the new field. For instructions, see To rename Answer table fields.

For examples of calculations on groups, see these topics:

Basic example of a calculation on a group

Example of grouping by more than one field

Example of performing a group calculation on the entire table

Example of displaying summary values without grouping by them

Example of counting unique values

Example of counting all values


Example of a basic calculation on a group

See also

Suppose you want to know how many of each class of items you have in stock.

In an open Query window with a blank STOCK.DB query image,

1.	Check the Equipment Class field to group the table's records by equipment classification and include this field in the Answer table.

2.	Type calc sum in the Qty field to calculate the sum of the values in this field.

3.	Run the query.


Example of grouping by more than one field

See also

You can group by more than one field in a query. To do this, place checkmarks in all the fields you want to group the table's records by.

Suppose you are interested in a relationship between a payment method and a preferred shipment method. You can group by both the Payment Method and Ship VIA fields of the Orders table:

In an open Query window with a blank ORDERS.DB query image,

1.	Check the Payment Method and Ship VIA fields to group the table's records by the values in both fields and include these fields in the Answer table.

2.	Type calc sum as Group Total in the Total Invoice field to calculate the sum of the values in this field for each group and rename the new calculated field of the Answer table Group Total instead of Sum of Total Invoice. See To rename Answer table fields for instructions.

3.	Run the query.

In this example, the group of customer numbers and the group of names turned out to be the same group.

SUM operator

Example of using SUM: selecting records based on a group sum demonstrates a query grouping by more than one field. However, in that circumstance, a one-to-one correlation exists between the two fields (Customer No and Name) by which the query is grouping. Thus, the two separate groups (the group of customer numbers and the group of names) are actually the same group.


Example of performing a group calculation on the entire table

See also

If you do not check any fields in a query, Paradox performs the summary operation or summary calculation on all the records in the table [image] the whole table is the group.

Suppose you want to know the total number of items ordered, regardless of who ordered them or what they are or cost. In an open Query window with a blank LINEITEM.DB query image,

1.	Type calc sum in the Qty field to calculate the total number of items ordered.

2.	Run the query.

No field is checked, so the group is the whole Lineitem table, and the only field in the Answer table is the Sum of Qty field (the result of the CALC SUM operation).


Example of displaying summary values without grouping by them

See also

In a query, to display values from a field for which you specify a summary operation without grouping by that field, use the CALC operator in that field with the summary operator you used to specify the operation. The CALC operator causes Paradox to create a new calculated field in the Answer table, and this new field will contain the values meeting the summary condition.

Suppose you want to know which items were sold for the first time after January 1, 1989, and you want to display the dates on which these items were ordered.

In an open Query window with blank LINEITEM.DB and ORDERS.DB query images,

1.	Use the Join Tables [image] button to place example elements in the Order No fields of both query images.

2.	Check the Stock No field of the LINEITEM.DB query image to group the table's records by Stock No values and include this field in the Answer table.

3.	Type min >1/1/92, calc min in the Sale Date field of the ORDERS.DB query image.

Because placing a checkmark in the Sale Date field would cause Paradox to attempt to group records by that field, as well as by the LINEITEM.DB Stock No field, you cannot use a checkmark to display the sale dates. Instead, CALC MIN causes Paradox to create a new calculated field, Min Of Sale Date, which contains sale dates meeting the summary condition MIN >1/1/92, while preserving the correct grouping.

4.	Run the query.


Example of counting unique values

See also

The CALC COUNT query operator counts only unique values. You cannot use COUNT in Paradox BLOB fields and dBASE memo fields. In these field types, CALC COUNT counts all values, even if you specify the UNIQUE operator.

Suppose you want to know how many customers have placed orders with your firm.

In an open Query window with a blank ORDERS.DB query image,

1.	Type calc count in the Customer No field.

2.	Run the query.

No field is checked, so the whole Orders table is the group, and the only field in the Answer table is the Count Of Customer No field (the result of the CALC COUNT operation).


Example of counting all values

See also

To include duplicates in a query COUNT operation, type ALL after the CALC COUNT operator. Paradox then counts all values, regardless of duplication.

One way of finding out how many orders have been placed is to use CALC COUNT ALL in the Customer No field of the Orders table. Instead of learning how many unique customers have placed orders, you learn the total number of orders placed.

In an open Query window with blank ORDERS.DB query image,

1.	Type calc count all in the Customer No field.

2.	Run the query.

No field is checked, so the whole Orders table is the group, and the only field in the Answer table is the Count Of Customer No field (the result of the CALC COUNT ALL operation).


Example of using ONLY: selecting records containing only one value

See also

The ONLY operator works the same way as summary operators in that it selects groups whose records all contain the same value and no others. However, ONLY is not a query summary operator since you cannot perform calculations with it.

You can use ONLY in all field types except Paradox BLOB fields and dBASE memo fields.

For example, suppose you want to find customers who have ordered only small instruments. In an open Query window with blank ORDERS.DB, LINEITEM.DB, and STOCK.DB query images,

1.	Use the Join Tables [image] button to place example elements in the Order No fields of the ORDERS.DB and LINEITEM.DB query images.

2.	Use the Join Tables button to place example elements in the Stock No fields of the LINEITEM.DB and STOCK.DB query images.

3.	Check the Customer No field of the ORDERS.DB query image to group the table's records by customer number and include this field in the Answer table.

4.	Type only Small Instruments in the Equipment Class field of the STOCK.DB query image to select all customers who have ordered small instruments and nothing else.

5.	Run the query.


About querying sets of records (SET queries)

See also

In general, a set is a collection of objects. In Paradox, a set is a specific group of records that you intend to query.

You can use a SET query to answer a question that might otherwise take two or more queries. Use a SET query when you need to ask questions about the characteristics of a group rather than about individual records.

Components of SET queries

Every SET query consists of the following components:

One or more lines that define a set

One or more lines, all of which define other records that meet certain comparisons to the set

Optionally, one or more lines that display related information

SET queries are particularly useful for revealing trends and patterns in data.

Guidelines for querying sets

To query a set, follow these general steps. For examples based on the Stock and Orders tables, click the underlined text.

Step 1: Define the set

Step 2: Define groups to compare to the set

Step 3: Select special groups with set comparisons

Use these set comparison operators to compare the set to other records or groups of records:

ONLY

NO

EVERY

EXACTLY

For more about these steps, see

Defining a set

Performing set comparisons

Using the GroupBy check

Sometimes you might want to group records in a query by the values in a specified field without including those values in the Answer table. To do so, choose the GroupBy check [image] from the menu of checks for the field. You can use the GroupBy check only with SET queries. You cannot use it in BLOB fields. For an example of a query that uses the GroupBy check, see Example of the ONLY set comparison operator.


SET queries, Step 1: Define the set

Each box represents a stock item.

The dotted line surrounds all the stock items that are small instruments, forming a set of all small instrument stock items.


SET queries, Step 2: Define groups to compare to the set

Each box represents a stock item.

The dotted line surrounds all the stock items that are small instruments, forming a set of all small instrument stock items.

Each group in solid-line borders represents an order. The order at the upper right has four line items; none of them is a small instrument. The order at the bottom has four line items; two of them are small instruments.


SET queries, Step 3: Select special groups, ONLY

Each box represents a stock item.

The dotted line surrounds all the stock items that are small instruments, forming a set of all small instrument stock items.

Each group in solid-line borders represents an order. This order's line items are only for small instruments, not any other type, but they don't include all small instruments.


SET queries, Step 3: Select special groups, NO

Each box represents a stock item.

The dotted line surrounds all the stock items that are small instruments, forming a set of all small instrument stock items.

Each group in solid-line borders represents an order. This order has no line items for small instruments.


SET queries, Step 3: Select special groups, EVERY

Each box represents a stock item.

The dotted line surrounds all the stock items that are small instruments, forming a set of all small instrument stock items.

Each group in solid-line borders represents an order. This order's line items include every small instrument plus other stock items.


SET queries, Step 3: Select special groups, EXACTLY

Each box represents a stock item.

The dotted line surrounds all the stock items that are small instruments, forming a set of all small instrument stock items.

Each group in solid-line borders represents an order. This order is for exactly the items in the small instrument set, no more and no less.


Defining a set

See also

Defining a set of records in a query is very much like selecting the records to be included in the Answer table. A set definition is a query within a query.

1.	In the query image(s), enter selection conditions that define the records to be included in the set. If the records are in more than one table, use example elements to link the tables.

2.	Choose Set from the menu of query operations in the leftmost field of all query lines that define the set. (To display that menu, right-click in a blank area of the leftmost field.)

3.	Where you would ordinarily put checkmarks to define fields, use example elements instead.

This is necessary because lines that are part of the set definition cannot contain checkmarks or summary operators.

When you go on to compare and retrieve records, you will use these same example elements to link the comparison lines to the set definition.

For an example, see Example of defining a set.


Example of defining a set

See also

This example uses the sample Stock table. The single line of this query defines the set of stock items that are Small Instruments, but it is not a complete query. You still need to compare the set to another factor. (See Example of performing a set comparison for an example of a complete SET query.)


Performing set comparisons

See also	Examples

After you have defined a set in a query (see Defining a set), you can compare it to other records. One way of doing this is to compare groups of records to the set.

You can make set comparisons of two different kinds:

You can compare other groups of records to the set.

You can use the summary operators to compute the SUM, COUNT, AVERAGE, MIN, and MAX of a set's values, and then compare the results to values in other records.

Paradox provides four special set comparison operators to define different sets of records.

Operator	Field types	Description

ONLY	All*	Displays only records that match members of the set

NO	All*	Displays records that match no members of the set

EVERY	All*	Displays records that match all members of the set

EXACTLY	All*	Displays records that match all members of the set and no others

* You can use set comparison operators in all field types except Paradox BLOB fields and dBASE memo fields.

For example, the records of the Orders table make up the set of all orders placed by customers. From this table, you can formulate subsets of orders for different classes of equipment, such as tools, vehicles, and so on. You can use the four set comparison operators to define sets of orders that

Are for only small instruments

Have no items over $50 in price

Are for every vehicle

Are for exactly all vehicles and no other equipment class item

To form groups of records to compare to the defined set, you use checkmarks. The method is the same as for summary operators.

For an example, see Example of performing a set comparison.


Example of performing a set comparison

See also

The Stock query image of this query (created in Example of defining a set) defines the set of stock items that are Small Instruments, but it is not a complete query. To complete the query, you can add the Lineitem table and check the Order No field to display the group of order numbers containing records that meet the conditions of the set. Then type the set comparison operator ONLY, followed by the example element item, in the Stock No field of Lineitem. The query looks like this:

The query does several things:

Defines the set of stock items that are of the equipment class Small Instruments

Groups the records in the Lineitem table by order number

Displays the Order No field of Lineitem in the Answer table

Compares the group of line items of each order number to the set of stock items that are small instruments, selecting those orders whose line items are only small instrument stock items

The Answer table shows those order numbers whose line items are only of the equipment class Small Instruments.

You can use the NO, EVERY, and EXACTLY set comparison operators the same way you use ONLY.


Example of the ONLY set comparison operator

See also

When you use the ONLY set comparison operator in a query, you ask Paradox to display only the members of the set you specify.

The following example demonstrates another SET query almost like the one in Example of performing a set comparison, except it includes the Orders table. Both queries produce the same Answer table. The difference between the two is where you define the group of order numbers.

Orders is a parent table to Lineitem, and the two tables are linked by their Order No fields, so Lineitem shouldn't have any order numbers that don't exist in Orders. If records with order numbers that don't exist in Orders were present in Lineitem, those records would be orphans [image] you'd have line items for nonexistent orders. If those orphan records were in Lineitem, their order numbers would have appeared in the query of Example of performing a set comparison, but not in the query of the following example.

Suppose you want to query the sample tables to see orders placed for the Small Instruments equipment class and no other class of equipment. In an open Query window with blank LINEITEM.DB, ORDERS.DB, and STOCK.DB query images,

1.	Use the Join Tables [image] button to place example elements in the Order No fields of the LINEITEM.DB and ORDERS.DB query images.

2.	Use the Join Tables button to place example elements in the Stock No fields of the LINEITEM.DB and STOCK.DB query images.

3.	In the leftmost column of the STOCK.DB query image, type s, or choose Set from the menu of query operations.

4.	In the Equipment Class field of the STOCK.DB query image, type Small Instruments to define the set of stock items that are small instruments.

5.	Check the Order No field of the ORDERS.DB query image to group by the values of this field and display the field in the Answer table.

6.	Place a GroupBy Check in the Order No field of the LINEITEM.DB query image to group by the values of this field but not display this field in the Answer table.

7.	Type only before the example element in the Stock No field of the LINEITEM.DB query image to cause Paradox to select orders placed for only Small Instrument stock numbers.

(If you were to do this query without the ONLY set operator and without SET in the leftmost column of STOCK.DB, you would get orders placed for Small Instruments in combination with any other equipment class items.)

8.	Run the query.


Example of the NO set comparison operator

See also

When you use the NO set comparison operator in a query, you ask Paradox to display the groups in which no record matches any record of the set you specify.

For example, suppose you want to find which orders are for no items over $50 in price. The NO SET query asks to see all records outside the set you specify.

1.	Duplicate the query shown in Example of the ONLY set comparison operator.

2.	Remove the Small Instruments selection condition in the Equipment Class field of the STOCK.DB query image.

3.	In the List Price field of the STOCK.DB query image, type >50 to define the set of stock items over $50 in price.

4.	Replace the only in front of the example element in the Stock No field of the LINEITEM.DB query image with no to retrieve orders placed for items not greater than $50.

5.	Run the query.


Example of the EVERY set comparison operator

See also

When you use the EVERY set comparison operator in a query, you create a set and ask to see groups containing records that match every item in the set.

For example, suppose you want to see all orders placed for every item in the Vehicle equipment class.

1.	Duplicate the query shown in Example of the NO set comparison operator.

2.	Remove the >50 selection condition in the List Price field of the STOCK.DB query image.

3.	In the Equipment Class field of the STOCK.DB query image, type Vehicle to define the set of stock items that are vehicles.

4.	Replace the no in front of the example element in the Stock No field of the LINEITEM.DB query image with every to cause Paradox to select orders placed for all Vehicles.

5.	Run the query.


Example of the EXACTLY set comparison operator

See also

When you use the EXACTLY set comparison operator in a query, you create a set and ask to see groups containing records that match every item of the set and only items of the set.

For example, suppose the Sight Diver dive shop calls you and wants to change an order they just placed, order number 1363. This order is for one of the vehicles and an air regulator. Instead of the air regulator, the Sight Diver shop wants the other vehicle. You change this order in the Lineitem table. After you do, you decide to query for other orders that might have been placed for every vehicle and only vehicles:

First, edit the Lineitem table, changing the record for the air regulator, Stock No 1390, in order number 1363 to the following:

Field	Old value	New value
Stock No	1390	912
Selling Price	170.00	1680.00
Qty	8	1
Total	1360.00	1680.00
Then query for other orders that might have been placed for every vehicle and only vehicles. In the Query window containing the linked query images of Example of the EVERY set comparison operator,

1.	Replace the every in front of the example element in the Stock No field of the LINEITEM.DB query image with exactly to cause Paradox to select orders placed for all stock items that are vehicles and no other stock items.

2.	Run the query.

Suppose that when you finished running the query, the Sight Diver shop called you back with another change of mind. They want eight air regulators after all and not the other vehicle.

1.	Edit the Lineitem table again to change the record for the 912 vehicle of order number 1363 back to the original 1390 air regulator values; use the Old value column of the table in this example.

This returns the sample data to its original state.


Example of a SET query involving more than one set

See also

SET queries can retrieve records based on comparisons involving more than one set. The comparison in the following example involves two sets.

In an open Query window with blank CUSTOMER.DB, ORDERS.DB, LINEITEM.DB, and STOCK.DB query images, in that order,

1.	Use the Join Tables [image] button to place example elements in the Customer No fields of CUSTOMER.DB and ORDERS.DB, in the Order No fields of ORDERS.DB and LINEITEM.DB, and in the Stock No fields of LINEITEM.DB and STOCK.DB.

2.	Define the set of Small Instruments stock items in the Stock table by choosing Set from the menu of query operations in the leftmost field of STOCK.DB and by typing Small Instruments in the Equipment Class field.

3.	Retrieve the records from Lineitem that meet the stock item set conditions and only those set conditions by typing only in front of the example element in the Stock No field of LINEITEM.DB and by placing a GroupBy Check in the Order No field of LINEITEM.DB.

4.	Define the line items that meet the "only Small Instruments" set as a set itself by choosing Set from the menu of query operations in the leftmost field of LINEITEM.DB.

5.	Retrieve the records from Orders that meet the line item set conditions and only those set conditions by typing only in front of the example element in the Order No field of ORDERS.DB and by placing a GroupBy Check in the Customer No field of ORDERS.DB.

6.	Retrieve the customers from Customer who have placed the orders that meet the set conditions and only those set conditions by placing a checkmark in the Name field of CUSTOMER.DB.

7.	Run the query.


Example of summary operators in a SET query

See also

You can compare groups of records to a defined set.

You can also compare groups of records to summary values derived from a set. To do this, you define the set as usual. In the line of the query that selects the records to compare to the set, however, use a summary operator instead of a set comparison operator. You can place the summary operator in an arithmetic expression.

For example, suppose you want to know which dive shops' total invoice averages are more than the total invoice average for a particular dive shop, specifically the Adventure Undersea dive shop. In an open Query window with blank CUSTOMER.DB and ORDERS.DB query images,

1.	Use the Join Tables [image] button to place example elements in the Customer No fields of both query images.

2.	Choose Set from the menu of query operations in the leftmost fields of both query images.

3.	In the CUSTOMER.DB query image, type Adventure Undersea in the Name field to define the set of dive shops that consists of just Adventure Undersea.

4.	In the CUSTOMER.DB query image, add a second line. Then, in the second line of the Customer No field, press F5 and type customer as an example element representing each customer number value.

5.	In the second line of CUSTOMER.DB, check the Name field.

6.	In the Total Invoice field of the ORDERS.DB query image, press F5 and type total as an example element representing the set of the single invoice total for the Adventure Undersea dive shop.

7.	In the ORDERS.DB query image, add a second line. Then, in the second line of the Customer No field, press F5 and type customer as an example element representing each customer number value.

8.	In the second line of the Total Invoice field in the ORDERS.DB query image, type average > average  and then press F5 and type total to select only those dive shops whose total invoice averages are greater than the total invoice average for Adventure Undersea.

9.	Run the query.


About inclusive links (! operator)

See also	Examples

Queries that use example elements to link tables together usually retrieve all the records in one table that match records in another table. This type of query represents an exclusive link and is sometimes called an inner join.

To produce an Answer table that includes those records that do not match records in the table to which they are linked, use the Paradox inclusion operator (!). This type of query represents an inclusive link and is sometimes called an outer join.

Add the ! operator to an example element in a query to retrieve all of the records in that table, whether they match records in another table or not. You can also add selection conditions to define the set of master records included in the answer. You can

Use multiple inclusion (!) operators to retrieve all the records from more than one table

Use ! in a query containing an arithmetic expression

Use both inclusive and exclusive links in the same query


Linking to all records in a table

See also

Sometimes you want all records from one table in a query to appear in the Answer table even if they are not matched in the joined table. This is called an inclusive link and it uses ! (the inclusion operator).

When you use the inclusion operator in one of two tables, that table is the master table. The other table is the lookup table.

Paradox first retrieves all records from the master table. It then looks for and retrieves any matching records in the lookup table. The resulting Answer table contains all records from the master table but only matched records from the lookup table.

You can also use the inclusion operator on both sides of the link. For example, you might want to know which students did not sign up for any courses and which courses have no students.

Note:	It is important which table you put the inclusion operator in. That table is the master table and is always processed first. Thus, two queries that are identical, except for the placement of the inclusion operator, can produce significantly different results.


Rules for linking tables

See also

You cannot use an inclusive and an exclusive link in two linked lines.

For any two linked lines in a query, you can use either an inclusive link (!) or an exclusive link to associate them, but you cannot use both. This is because an inclusive link includes all the records from the master table, while an exclusive link includes only records whose values in the linked fields match each other. If you use both kinds, Paradox has no way to decide which link to process first. The resulting Answer table would be different depending on the sequence.

You will not violate this rule if you remember that you can use ! with any given example element only once per line and twice per query. In other words, you can use only one type of link to associate any two lines in a query.

You can use an inclusive and an exclusive link in the same query.

You can use both exclusive and inclusive links in the same query as long as they do not both involve the same pair of lines. When you have both types of link in one query, they are processed in order from least to most inclusive:

1.	Exclusive links, which do not retrieve records that are not matched by records in another table, are processed first.

2.	Asymmetrical inclusive links (with both master and lookup tables), which retrieve all of the records from the master table but only the matched records from the lookup table(s), are processed next.

3.	Symmetrical inclusive links (with only master tables), which include all records from both tables, are processed last.

By processing exclusive links before inclusive links, Paradox guarantees consistent results to its queries. If you want Paradox to process the links in some other order, you must break your question into separate queries.


Selection conditions with inclusive links

See also

You can specify selection conditions for inclusive links just as you can in other queries. This lets you fine-tune either the set of master records or the lookup records to be matched with them.

If you set selection conditions for the master table, the resulting Answer table contains only those records that match the specified selection condition. But it still contains all of those matching records, whether or not they are matched in the lookup table.


Example of linking to all records in a table

See also

Suppose you want to find out if the Customer table contains customers who have never placed an order. If you link Customer and Orders by placing an example element in both Customer No fields, then check the fields you want to see in the Answer table, you will see only those customer records that match one or more records in Orders.

If, however, you add the inclusion (!) operator after the example element in the Customer No field of Customer, you will see all customer records, including those of customers who have never placed an order.

In an open Query window with blank CUSTOMER.DB and ORDERS.DB query images,

1.	Open the Customer table (by choosing File|Open|Table) and add a new record to the end of it (by scrolling to the end and pressing F9 to edit and pressing the down arrow to append a blank record). Add a record for a new dive shop customer, using the following data:

Field Name	Data

Customer No	9999

Name	The Human Gill Dive Shop

Street	1225 E. River St.

City	Savannah

State/Prov	GA

Zip/Postal Code	30541

Country	U.S.A.

Phone	404-555-1451

First Contact	5/31/92

2.	After adding the new record for The Human Gill Dive Shop to the Customer table, press F9 again to end Edit mode and close the table.

3.	Use the Join Tables [image] button to place example elements in the Customer No fields of both the CUSTOMER.DB and ORDERS.DB query images.

4.	Type ! after the example element in the Customer No field of the CUSTOMER.DB query image to include all customers from the Customer table in the Answer table, even if they don't have a matching record in the Orders table.

5.	Check the Customer No and Name fields of the CUSTOMER.DB query image.

6.	Check the Order No field of the ORDERS.DB query image.

7.	Run the query and scroll to the end of the Answer table. Customers without an Order No entry appear there.

Note:	For a more direct way to accomplish this same task, see Example of retrieving records from one table that are not in another table.


Example of using the Inclusion operator in a query that performs a calculation

See also

You can use inclusion operators in a query that performs a calculation.

For example, suppose you're concerned about orders you can't fill with your current inventory. More specifically, you want a list of all orders, highlighting those for quantities that exceed one quarter of the quantities in stock.

In an open Query window with blank ORDERS.DB, LINEITEM.DB, and STOCK.DB query images, in that order,

1.	Use the Join Tables [image] button to place example elements in the Order No fields of the ORDERS.DB and LINEITEM.DB query images.

2.	Use the Join Tables button to place example elements in the Stock No fields of the LINEITEM.DB and STOCK.DB query images.

3.	Type ! after the example element in the Order No field of the ORDERS.DB query image to see all order numbers. Check the Order No field in the ORDERS.DB query image.

4.	Check the Stock No and Qty fields of the LINEITEM.DB query image.

5.	In the Qty field of the LINEITEM.DB query image, press F5 and type qty as the example element representing all the values, in turn, of the Lineitem table's Qty field.

6.	Still in the Qty field of the LINEITEM.DB query image, type , as Order Qty after the qty example element.

7.	Check the Qty field of the STOCK.DB query image.

8.	In the Qty field of the STOCK.DB query image, type < (, then press F5 and type qty and a space. Then type * 4), as Stock Qty.

9.	Run the query.

The ! operator in Orders ensures that the Answer table contains all orders. The qty example element is used in the expression qty * 4 to multiply each stock item quantity value in the Qty field of the Lineitem table (representing the order quantity of each stock item) by four. The < comparison operator then looks for actual stock quantities less than this amount, thus retrieving records of orders that exceed one quarter of the inventory. Records in Answer that contain only an order number are those that do not meet the selection conditions, but are included because the inclusion operator was used.


Example of retrieving records from one table that are not in another table

See also

You can use an inclusive link with the COUNT summary operator and CheckPlus to retrieve records from one table that are not in another table.

For example, suppose you want to know which vendors you have in the Vendors table from whom you have yet to buy any stock. That means you want to know which vendors are in the Vendors table that are not in the Stock table.

In an open Query window with blank STOCK.DB and VENDORS.DB query images,

1.	Use the Join Tables [image] button to place example elements in the Vendor No fields of both query images.

2.	Type ! after the example element in the Vendor No field of VENDORS.DB.

3.	Place CheckPluses in the Vendor No and Vendor Name fields of VENDORS.DB to retrieve all records, including duplicates.

4.	After the example element in the Vendor No field of STOCK.DB, type a comma and a space and then count = 0.

5.	Run the query.


Example of using both inclusive and exclusive links in a query

See also

The following example uses the sample tables to demonstrate a complicated query containing both inclusive and exclusive links.

Suppose you have recently agreed with your vendors not to sell items to customer dive shops in the same state as the vendor. You can determine how current orders would be affected by these new agreements by summing their total dollar values.

In an open Query window with blank VENDORS.DB, STOCK.DB, LINEITEM.DB, ORDERS.DB, and CUSTOMER.DB query images, in that order,

1.	Use the Join Tables [image] button to place example elements in the Vendor No fields of VENDORS.DB and STOCK.DB, in the Stock No fields of STOCK.DB and LINEITEM.DB, in the Order No fields of LINEITEM.DB and ORDERS.DB, and in the Customer No fields of ORDERS.DB and CUSTOMER.DB.

2.	Type ! after the example element in the Vendor No field of VENDORS.DB and check it to see all vendor numbers, whether you've ordered stock from them or not.

3.	Check the State/Prov field of VENDORS.DB, then press F5 and type state as the example element representing each State/Prov value in the Vendors table.

4.	Still in the State/Prov field, type ! after the state example element to see all vendor states and then type , as Vendor State to rename the field in the Answer table.

5.	Check the Stock No and Description fields of STOCK.DB to see these fields in the Answer table.

6.	In the Total field of LINEITEM.DB, type calc sum as Dollars at Stake to generate a new calculated field in the Answer table. This new field contains summary values of the total order cost for each stock item ordered by each customer located in the same state as a vendor selling that stock item.

7.	In the State/Prov field of the CUSTOMER.DB query image, press F5 and type state as the example element representing each customer's state.

8.	Run the query.

The Answer table contains

All vendors, whether or not you have ordered stock from them

The states that those vendors are located in, and that are, by extension, the same states dive shop customers are located in who have ordered stock from you, which you, in turn, could have purchased from a vendor in the same state (Vendor State, inclusively linked with State/Prov in CUSTOMER.DB)

All stock items that have been ordered (Stock No and Description [image] if blank, you have not ordered stock from that vendor)

The sum of total orders for each stock number for which a customer could have purchased the same stock item from a vendor selling it in the same state (Dollars at Stake)


About queries that change data

See also

Use INSERT, DELETE, and CHANGETO queries to change the data in a table.

INSERT	Inserts new records from one table into another.

DELETE	Deletes records that match conditions you specify.

CHANGETO	Changes existing values to a new value you specify.

The table you change with these queries does not have to be open in a window.

INSERT, DELETE, and CHANGETO queries produce temporary tables, which appear in a separate window. The temporary table holds data that was inserted, deleted, or changed so you can restore the table to what it was before the query if you need to.

You choose INSERT and DELETE from a menu in the leftmost field of a query image. You place CHANGETO in the field containing the value you want to change.

You can combine several operations in a single query. If you do, Paradox performs all DELETEs first, then all CHANGETOs, then all INSERTs.


Operation order in a query involving multiple operations

See also

You can perform multiple table-changing operations in a single query. If you have more than one query image in a Query window, the only basic requirement for the query to work is that all tables be linked with example elements.

You can, for example, perform a single query that deletes records from one table, inserts records into another table, and changes values in yet another table. You can also do a query that does an INSERT, DELETE, and CHANGETO operation in a single table.

In such multi-operation queries, these rules describe the order in which Paradox performs operations:

1.	Paradox first retrieves records based on all selection conditions.

2.	It next performs any INSERTs specified in the order Paradox finds them [image] that is, Paradox looks in the first query image first, then the second, and so on.

3.	Next, Paradox performs any CHANGETOs specified in the order it finds them.

4.	Next, it performs any DELETEs specified in the order it finds them.

5.	Finally, Paradox displays the temporary tables that result, including an Answer table, if you checked any fields.

Because Paradox performs all DELETEs after it performs all INSERTs, be careful not to design a query that undoes itself, first inserting records and then deleting them from the same table.

You can design intricate queries that save you from having to perform multiple, sequential queries. The more operations you design into a single query, however, the harder it becomes for you to undo the query.


About INSERT queries

See also	Examples

Use an INSERT query to insert records from one or more sources into a single target table. INSERT queries let you map which values from your source(s) to insert into fields of your target table.

With INSERT you can insert records from one table type to another, for example, from dBASE to Paradox or Paradox to dBASE tables. For example, you can put

Any numeric data into any numeric field type, Paradox or dBASE

Alphanumeric or character data into any alpha or character field

Dates into date fields

Fields you leave blank (with no example element) in the target table receive no values from the source table(s). You cannot put example elements in Paradox BLOB or bytes fields or in dBASE memo fields, so you cannot insert these types of values into these types of fields.

Instead of producing an Answer table, an INSERT query produces a temporary table called Inserted, which includes only the records inserted.


INSERT query temporary tables

See also

Paradox generates one or two temporary tables during an INSERT query.

Inserted

An INSERT query produces a temporary table called Inserted. As with an Answer table, Paradox saves Inserted to your private directory, overwrites it each time you run an INSERT query, and deletes it when you exit the program. You can use Tools|Utilities|Rename to save Inserted under a different name.

Note:	If you choose Query|Properties, then check Fast Queries on the QBE page of the Query Properties dialog box, Paradox does not create the Inserted table.

You can produce an Answer table in addition to the Inserted table if you check fields on a separate line of the target query image. If you also supply selection conditions on that line, the records in the Answer table will reflect those conditions. However, such an Answer table does not contain any information that has to do with the INSERT operation. See Operation order in a query involving multiple operations for more information.

You can use the Inserted table along with DELETE to undo an insertion.

Errorins

If you try to insert records that violate the referential integrity of the target table or that violate validity checks established for that table (except picture validity checks), Paradox places the new records into a temporary table called Errorins. Those records that do not violate referential integrity or validity checks are placed in Inserted.


To perform an INSERT query

See also

1.	Add the source and target tables to the Query window. (If the target table is new, you must create it before you create the query.)

2.	Link all tables using example elements.

3.	For each source table, specify any selection conditions.

4.	In the target table, place the word Insert in the leftmost column (under the table name) by doing any of the following in that column:

Type the letter i.

Right-click and choose Insert from the menu of query operations.

Press Spacebar, then choose Insert from the menu of query operations that appears.

Do not check any of the fields on the same line as the INSERT operator, or you will get an error.

5.	Run the query.

Paradox inserts the records from the source into the target table for every field you specified. The source table is not affected by the INSERT query.


Example of inserting a record with an INSERT query

See also

Suppose you want to insert a record of literal values into the Contacts table using an INSERT query. In a Query window that has the CONTACTS.DB query image,

1.	Choose Insert from the menu of query operations in the leftmost column of CONTACTS.DB.

2.	In the Last Name field, type Salviola.

3.	In the First Name field, type Dolores.

4.	In the Company field, type Keith's Dive Shop.

5.	In the Phone field, type 404-555-4251.

6.	Run the query. Paradox opens the Inserted table.

7.	Choose File|Open|Table and, from the Open Table dialog box, select the Contacts table. Move to the end of Contacts to see the record you inserted.


Example of inserting new values with an INSERT query

See also

Suppose you find out you can get a cheaper phone rate for international calls if you switch to a different long distance service. Before you switch long distance companies, however, you want to see just how many customers are located outside the U.S.

This example uses demonstrates an INSERT query that places all international customers in a new Phoncall table. You must define the structure of the Phoncall table before you can use INSERT to add data to it. Create the Phoncall table by borrowing its structure from the Customer table, deleting all fields except Name and Phone, renaming Name as ClientName, and renaming Phone as PhoneNumber.

In a Query window that has the CUSTOMER.DB and PHONCALL.DB query images,

1.	In the Name field of CUSTOMER.DB, press F5 and type name for the example element.

2.	In the Country field of CUSTOMER.DB, type not U.S.A. This inserts into Phoncall only those dive shops not in the U.S.

3.	In the Phone field of CUSTOMER.DB, press F5 and type phone for the example element.

4.	In PHONCALL.DB, right-click under the table name and choose Insert from the menu of query operations.

5.	In the Client Name field of PHONCALL.DB, press F5 and type name for the example element.

6.	In the Phone Number field of PHONCALL.DB, press F5 and type phone for the example element.

7.	Run the query. Paradox opens the Inserted table on the Desktop.

8.	Choose File|Open|Table and, from the Open Table dialog box, select PHONCALL.DB. Because Phoncall was empty before this operation, its records should exactly match the records in the Inserted table.

You can get the results of this particular INSERT query much faster by doing a CheckPlus query, placing a CheckPlus in the Name and Phone fields of CUSTOMER.DB, and saving the Answer table as Phoncall. A CheckPlus query is not always a more efficient alternative to an INSERT query, however, so this example provides the framework for more complex ones.


About DELETE queries

See also	Examples

Use DELETE queries to remove selected records from a table. DELETE queries are effective when the records to be deleted have something in common that you can specify in one or more selection conditions.

DELETE removes only records, not specific field values within records. Use CHANGETO to change or remove specific field values.

Instead of producing an Answer table, a DELETE query produces a temporary table in the Private directory called Deleted, which includes only the records deleted.


DELETE query temporary tables

See also

Paradox generates one or two temporary tables during a DELETE query.

Deleted

A DELETE query produces a temporary table called Deleted, which contains only the deleted records. Paradox saves Deleted to your private directory, overwrites it each time you run a DELETE query, and deletes it when you exit the program. You can use Tools|Utilities|Rename to save Deleted under a different name.

Note:	If you choose Query|Properties, then check Fast Queries on the QBE page of the Query Properties dialog box, Paradox does not create the Deleted table.

You can produce an Answer table in addition to the Deleted table if you check fields on a separate line of the query image. If you also supply selection conditions on that line, the records in the Answer table will reflect those conditions, as you might expect. However, such an Answer table is not particularly valuable, since it does not contain any information that has to do with the DELETE operation.

You can use Deleted, along with INSERT, to undo a deletion. Use Deleted as the source table and insert Deleted's records back into the table from which they were deleted. If you are reinserting records you deleted from an unkeyed table, the records are inserted at the end of the table and thus will not necessarily be in their original order.

You can also reinsert the deleted records in Deleted into the original table with Tools|Utilities|Add. Apart from these two methods, you have no other way of recovering records deleted from a Paradox table. (With a dBASE table, you can view the table, enter Edit mode, and choose Table|Show Deleted, then undelete each deleted record one at a time using Record|Undelete.)

Errordel

If you try to delete records that violate the referential integrity of the target table or that violate validity checks established for that table (except picture validity checks), Paradox places the new records into a temporary table called Errordel. Those records that do not violate referential integrity or validity checks are placed in Deleted.


To perform a DELETE query

See also

1.	Add to the Query window the table from which you want to delete records and the table(s), if any, you want to join to the target table and use to define selection conditions.

2.	Place the word Delete in the leftmost column (under the table name) of the table whose records you want to delete by doing any of the following in that column:

Type the letter d.

Right-click and choose Delete from the menu of query operations that appears.

Press Spacebar, then choose Delete from the menu of query operations that appears.

Do not check any of the fields on the same line of the query image as the DELETE operator, or you will get an error.

3.	Enter any selection condition to select the records to be deleted. You can enter selection conditions in several fields of the same query image or in fields of tables linked by example elements.

Caution: If you do not enter any selection conditions, Paradox deletes all the records from the table.

4.	Run the query.

Paradox deletes from the table all records that meet the selection conditions.

Instead of producing an Answer table, a DELETE query produces a temporary table called Deleted, which includes only the records deleted.


Example of removing a record with a DELETE query

See also

Suppose Larry's Diving School has gone out of business and you want to remove this dive shop from the Contacts table.

In a Query window with the Contacts table query image,

1.	In the leftmost column, right-click and choose Delete from the menu of query operations.

2.	In the Company field, type:

Larry's Diving School

3.	Run the query.

Paradox opens the Deleted table. To undo this query, follow the steps in Example of undoing a DELETE query.


Example of undoing a DELETE query

See also

You can undo a DELETE query with an INSERT query. For example, suppose Larry's Diving School has gone out of business and you want to remove this dive shop from the Contacts table. Here is how you could do that (see Example of removing a record with a DELETE query):

Suppose you change your mind and decide after you have deleted the contact for Larry's Diving School that you want to keep George Ahern as a contact for potential dive shop customers.

The easiest way to undo the deletion in this case would be to use Tools|Utilities|Add, adding the deleted record in Deleted back into Contacts. This example shows you another way to undo. The method you use will depend on the complexity of the deletion you are trying to undo. With any method, you should make copies of the tables at each stage in case you make a mistake in the recovery process and have to undo it.

Using the Query window from the previous example,

1.	Clear the existing selection conditions in the CONTACTS.DB query image by pressing Ctrl+Del in any field of the image.

2.	Add the DELETED.DB query image to the Query window. (Follow the instructions in To add tables to a query; choose PRIV: in the Alias drop-down list.)

3.	Use the Join Tables [image] button to place corresponding example elements in each pair of matching fields in CONTACTS.DB and DELETED.DB.

4.	In the leftmost column of CONTACTS.DB, choose Insert from the menu of query operations.

5.	Run the query.

6.	Choose File|Open|Table and, from the Open Table dialog box, select the Contacts table. George Ahern's record is back in Contacts, at the very end.


About CHANGETO queries

See also	Examples

Use CHANGETO queries to change specific field values in a table based on conditions you specify in a query. CHANGETO provides you with a kind of global search-and-replace capability. It is particularly useful when you want to change many values that have something in common in a similar way.

Instead of producing an Answer table, a CHANGETO query produces a temporary table called Changed, which contains a copy of the records you changed as they existed before you changed them.


CHANGETO query temporary tables

See also

Paradox generates one or two temporary tables during a CHANGETO query.

Changed

CHANGETO produces a temporary table called Changed, which contains a copy of the records you changed as they existed before you changed them. Paradox saves Changed to your private directory, overwrites it each time you run a CHANGETO query, and deletes it when you exit the program. You can use Tools|Utilities|Rename to save Changed under a different name.

Note:	If you choose Query|Properties, then check Fast Queries on the QBE page of the Query Properties dialog box, Paradox does not create the Changed table.

You can produce an Answer table in addition to the Changed table if you check fields on a separate line of the query image. If you also supply selection conditions on that line, the records in the Answer table will reflect those conditions, as you might expect. However, such an Answer table is not particularly valuable since it does not contain any information that has to do with the CHANGETO operation.

You can use the Changed table to back out changes made with CHANGETO. See To undo changes using the Changed table.

Errorchg

If you try to change records in a way that violates the referential integrity of the table or that violate validity checks established for that table (except picture validity checks), Paradox places the new records into a temporary table called Errorchg. Only those records that do not violate referential integrity or validity checks are placed in Changed.


To perform a CHANGETO query

See also

1.	Type the value you want to change in the field of the query image.

2.	After the value you want to change, type a comma.

3.	After the comma, type CHANGETO and a space. (As with all of Paradox's operators, you can type it in uppercase or lowercase.)

4.	After CHANGETO and the space, type the new value you want to change the current value to. You can also type selection conditions in other fields to specify further which records to change.

The CHANGETO operator must be on the same line in the query image as any selection conditions. Do not check any of the fields on this line of the query image, or you will get an error.

5.	Run the query.

Paradox changes all records that meet the selection conditions.

Instead of producing an Answer table, a CHANGETO query produces a temporary table called Changed, which contains a copy of the records you changed as they existed before you changed them.


To undo changes using the Changed table

See also

Use the Changed table to verify that the correct records have been changed. If you changed records you did not mean to change, you can delete the changed records from the queried table and reinsert the original records back into the table from Changed.

1.	Run a DELETE query on the table whose records you accidentally changed, using the new field value(s) [image] the ones you changed to [image] as a selection condition(s).

This removes the incorrect records.

2.	Insert Changed's records back into the original table, using Changed as the source table and the original table as the target table, in an INSERT query. (For instructions, see To perform an INSERT query.)

This restores the queried table back to its original state. (If you are reinserting records into an unkeyed table, Paradox inserts them at the end of the table. Thus, they will not necessarily be in the same order they were originally in before you deleted them.)


To perform a multi-table CHANGETO query

See also

You can create a CHANGETO query to change the records in one table to match the records in another table that is linked to it through referential integrity:

1.	Place query images of both the parent and child tables in a Query window.

2.	Use the Join Tables [image] button to place example elements in each corresponding field of both query images.

3.	In the query image of the parent table, type changeto and a space before the example element in each field that you want to change.

4.	Run the query.

Paradox changes the values of the appropriate fields of the parent table to match those of the child table.


Example of changing data with a CHANGETO query

See also

Suppose you learn that George Ahern, the previous contact for the now out-of-business Larry's Diving School, has gotten a job at The Human Gill Dive Shop in Savannah, Georgia. You want to contact George so you can perhaps gain his new employer as one of your customers. You also need to change the company and phone number information about George in the Contacts table. Here is how you would set up the query:

In a Query window that has the CONTACTS.DB query image,

1.	In the Last Name field, type Ahern.

2.	In the First Name field, type George.

3.	In the Company field, type company for the example element, then type a comma and type changeto, then type a space and type The Human Gill Dive Shop.

4.	In the Phone field, type phone for the example element, then type a comma and type changeto, then type a space and 404-555-1451.

5.	Run the query.

Paradox opens the Changed table.


Example of using CHANGETO with example elements

See also

You can use a CHANGETO query with example elements to perform a calculation on values in a field and change the original values to the new calculated values in the same field. (If you were to perform calculations using the CALC operator, Paradox would create a new field to hold the results in an Answer table and would leave the original values unchanged.)

This query increases the list price of all stock items in the Stock table by 15%. In the query image, ListPrice is an example element that represents the value in the List Price field.


About forms and reports

See also

Forms and reports [image] also called design documents [image] can present your data in a variety of formats. For example, you can create forms and reports that

Display one record at a time

Display multiple records at a time

Display only certain fields of a table

Contain design features, such as lines, boxes, graphics, shading, or special colors

Perform onscreen calculations

Forms and reports can also link tables together, so information stored in separate tables appears together.

The primary difference between forms and reports is

Forms are editing tools. They let you display and edit the data in your tables. For example, you can create forms that add data to several tables at once. Any change you make in the form is reflected in the table.

Reports are printing tools. They let you format and print your data. For example, you can use reports to create form letters, mailing labels, invoices, presentations, and so on.


About creating forms and reports

See also

To create a simple form or report (design document), follow these basic steps. Click a step in the following list to get information on it.

Step 1: Create the design document.

Step 2: Create a data model.

Step 3: Create a layout.

Step 4: Place design objects on the document.

Step 5: Save the design.

You can also use Paradox's experts, as described in To create a form or report using the experts.


Step 1: Create the design document
To create a simple form or report -- Step 1: Create the design document

See also

1.	Choose File|New.

2.	Choose the type of document you want: Form or Report.

Paradox opens the New Form dialog box or the New Report dialog box.

3.	Click the Data Model/Design Layout button.

Paradox opens the Data Model dialog box.

4.	Create a data model as described in Step 2: Create a data model.

 Next

To create a blank form or report

To bypass the Data Model and Design Layout dialog boxes and create a blank form or report, choose Blank when Paradox displays the New Form or New Report dialog box. You'll go directly to the design window.


Step 2: Create a data model
To create a simple form or report -- Step 2: Create a data model

See also

A data model shows the tables to use and how they're related to each other.

1.	Open the Data Model dialog box as described in Step 1: Create the design document.

Use this dialog box to choose the tables for your form or report and specify their relationship.

The list on the left shows the tables in your working directory.

The panel on the right shows a diagram of your data model as you build it. This is where you place the tables you want and link them to each other.

2.	To add a table to your data model, choose it from the File Name list on the left.

When you select a table, its name appears in a recessed area in the data model panel on the right.

If you plan to create a data model with more than one table, see To add tables to the data model panel.

3.	Choose OK to use the selected table in your design document.

Paradox opens the Design Layout dialog box.

4.	Create a layout as described in Step 3: Create a layout.

 Previous    [image] Next


Step 3: Create a layout
To create a simple form or report -- Step 3: Create a layout

See also

When you create a layout, you specify the way major data objects appear on the document. Later, in the design window, you can move the objects around, resize them, and change their properties.

1.	Open the Design Layout dialog box as described in Step 2: Create a data model.

Use this dialog box to create a starting point for your design.

2.	Choose Show Layout to specify the basic layout. (This is the default view.)

Paradox displays a sample layout in the panel on the right, and displays options on the left.

3.	Experiment with the options on the left to determine which layout to use. As you choose each option, Paradox adjusts the sample layout on the right to show how the options affect the layout.

4.	Choose Show Fields to specify which fields to include in the form or report. All the fields in the master table are displayed on the left.

5.	Use the options on the left to specify which fields to use and which order they will appear. As you change each option, Paradox adjusts the sample layout on the right to show how the options affect the layout.

6.	Choose OK.

Paradox opens the design window where you can complete the design.

7.	Add design objects to your form or report as described in Step 4: Place design objects on the document.

 Previous    [image] Next


Step 4: Place design objects on the document
To create a simple form or report -- Step 4: Place design objects on the document

See also

You can place design objects on your document and change their properties. To place design objects, use the design tools on the Toolbar.

To use a design tool,

1.	Click the tool you want. Each design window has its own Toolbar:

Form Design Toolbar

Report Design Toolbar

2.	Do one of the following:

Click in the design to place the object using its default size.

Click in the design and drag to place the object and specify its size.

Shift+click in the design and drag to constrain the object:

Any object except an ellipse or line is created as a square.

An ellipse is forced to be a circle.

A line is forced to be horizontal, vertical, or a 45 degree angle.

The pointer reverts to the Selection Arrow after you place an object.

To create more than one object of the same type, hold Shift down while you click the tool you want. The tool remains active until you click the selection arrow or another tool.

To change a design object's properties,

Right-click the design object and choose Properties. Change the properties on the tabbed properties pages.

Note:	Keyboard equivalents for the Toolbar's design tools are not available.

 Previous    [image] Next


Step 5: Save the design
To create a simple form or report -- Step 5: Save the design

See also

1.	Make sure you are in the design window.

2.	Choose File|Save.

3.	Name the file.

When you save a design document, you are saving the design itself, not the data. Paradox saves data to the appropriate table when you leave each record.

 Previous


To create a form or report using the experts

See also

You can use the Paradox experts to create forms, reports, or mailing labels. To use an expert when you first create a form,

1.	Choose File|New.

2.	Choose the type of document you want: Form or Report. (To create mailing labels, choose Report.)

Paradox opens the New Form dialog box or the New Report dialog box.

3.	Click the Expert [image] button.

Paradox opens the expert.

4.	Follow the step-by-step instructions provided by the expert.

Note:	Paradox always displays the New Form dialog box if you have Edit|Preferences set to No Default on the Form/Reports property page. You can choose to have the expert always run by selecting the preference Always Use Expert.

To run an expert at any time, choose Tools|Experts, or click the Expert [image] button.


About data models

See also

A data model is the graphical representation of the relationships between tables. It provides a simple way of telling Paradox which tables' data to display and work with, and how these tables are linked.

Data models exist in two ways:

As part of a design document. Using this type of data model, you can bind tables to documents and specify how they are linked to each other.

As a separate file. This type of data model, known as a reference data model, can be used to modify the data model of a design document. Data model reference files have a file extension of .DM.

You can work with data models in two ways:

The Data Model dialog box

The Data Model Designer

Note:	Before you can link tables to create a data model, you have to structure them correctly using keys and indexes. See About indexes for information on keys and indexes.

A data model can be based on a single table, or on multiple tables. Some forms, reports, or queries require information from only a single table. For these you create a single-table data model. A data model based on a single table is the most simple type, as it does not involve establishing a relationship with other tables in the database.

To use information on a form, report, or query from more than one table, you must create a multi-table data model. You then define relationships between the tables to link them together.

You can create a data model independently of any form, report, or query, and then have it handy to design a document or run a query that uses the data model. For example, if you frequently analyze information based on a one-to-many relationship between two tables, you can create a data model representing that relationship, save it, then use it whenever you want to create a new form, report, or query on that information.


Multi-table data models

See also	Examples

A data model based on a more than one table is a multi-table data model. When you place more than one table on a data model, one table is defined as the master table, and is linked to one or more detail tables. You define the relationship between the tables in the Data Model dialog box by drawing a line between them with the mouse, or by selecting the fields to link in the Define Link dialog box.

If you have referential integrity between the two tables you are linking, Paradox automatically creates the link when you draw the line between the two tables.

If you do not have referential integrity between the tables you are linking, you create the link in the Define Link dialog box.

Drawing a line from the first table to the second table makes the first table the master table and the second table the detail table. However, if you draw a line from the second table to the first table, this makes the second table the master table and the first table the detail table. The arrow shows the direction of the link [image] always originating from the master table to the detail table.

The type of relationship created between two tables depends on the matching of the detail table's indexes to the master table's file structure:

A double-headed arrow indicates a multi-value relationship (one-to-many).

If you see a single-headed arrow, this indicates a single-value relationship (one-to-one or many-to-one).

Complex Data Models

Complex data models can include a combination of single-value relationships and multi-value relationships. You can keep linking tables in the existing data model until you have the data model you want. As long as you have identified indexes properly, you can build data models that are as complex as you need them to be. See About indexes and keys. One of the example topics on this page shows a complex data model for some of the sample tables provided with Paradox.

You might prefer to link the tables as you add them to the data model, rather than adding them all and then linking. This way, you can avoid scrolling the data model panel to view all the tables. See To create a link.

Tip:	Most databases handle one-to-many relationships better than many-to-many relationships. To simplify your database, you can convert a many-to-many relationship into two one-to-many relationships by creating an additional table. For example, the Orders table and Stock table have a many-to-many relationship. Inserting a Lineitem table would change the relationship to two one-to-many relationships (Lineitem [image] Orders and Lineitem [image] Stock).

Returning to the Data Model dialog box

You can always return to the Data Model dialog box from the design window (by clicking the Data Model button or choosing Form|Data Model or Report|Data Model). You can add or remove tables and change links at any point in designing a document. You can also change the data model of a document using the Data Model Designer.


Data models for reports with groups

See also	Example

When creating data models for reports with group bands, you might want to consider linking the tables backward, from detail table to master table, rather than in the conventional way of master table to detail table. This gives you more choices of fields to group by when adding a group band to the report.

Say, for example, you create a report based on a data model using the tables Customer, Orders, and Lineitem. If you connect these tables in the usual way, Customer [image] Orders [image] Lineitem (creating a multi-value relationship), when you add a group band to the report, the Define Group dialog box only makes available only the fields from the Customer table as choices for the Group By Field Value.

For an example of this linking technique, see Example of a data model for reports with groups.


Example of a single-value relationship data model

See also

Drawing a line from the detail table to the master table, or from a detail table to another detail table, creates a single-value relationship (one-to-one or many-to-one). This is represented by stacked tables, with a single-headed arrow joining them from their sides.

This is a one-to-one, or many-to-one relationship (single-headed arrow {bmc arrow_rt.bmp). Each line item of an order matches one item of stock in the shop.

By default, in this type of relationship, the table that the master table is linking to (the one being pointed to) is read-only. To change it from read-only, right click the table in the data model, and uncheck Read Only.


Example of a multi-value relationship data model

See also

Drawing a line from the master table to a detail table creates a multi-value relationship (one-to-many). In this type of relationship, the tables are displayed side by side in the data model panel connected by a double-headed arrow.

This is a one-to-many relationship, represented by a double-headed arrow ({arrowdbl.bmp}). Each customer can have placed many orders. The direction of the arrow shows the direction of the link, master -to-detail (Customer-to-Orders). The tip of the double-headed arrow is on the many side of the relationship.


Example of data models for grouped reports
Example of a data model for reports with groups

See also

When creating data models for reports with group bands, you might want to consider linking the tables backward, from detail table to master table, rather than in the conventional way of master table to detail table. This provides you with more choices of fields to group by when adding a group band to the report.

Say, for example, you create a report based on a data model using the three tables, Customer, Orders, and Lineitem. If you connect these tables in the usual way, Customer>Orders>Lineitem (creating a multi-value relationship), when you add a group band to the report, the Define Group dialog box only makes available the fields from customer.db as choices for the Group By Field Value. (See below)

Multi-value relationship (one-to-many-to-many, or 1 [image] M [image] M):

This data model results in the following choices:

However, if you reverse the linking process, and connect the tables from Lineitem-to-Orders-to-Customer, you create single-value relationship between the tables, and the fields from all the tables are available as choices for the Group By Field Value. (See below.)

Single-value relationships many-to-many, or (M [image] M):

This data model results in the following choices:


To open the Data Model dialog box

See also

To create a data model, open the Data Model dialog box in one of the following ways:

Choose File|New|Form or File|New|Report and click Data Model/Design Layout from the New Form or New Report dialog box.

From a design window, choose the Data Model [image] button, or choose Form|Data Model or Report|Data Model. The data model for the active design document is shown.

From any of the Define dialog boxes (Define Field, Define Table, Define Chart, and so on), choose the Data Model button.

After opening the Data Model dialog box, choose a table as described in To add tables to the data model.

Preference settings

If you've specified a preference in the Forms/Reports Preferences dialog box, you might not see the New Form or New Report dialog box. Depending on the preference setting, you might see the Data Model dialog box automatically, or you might open an expert or a blank document.


To add tables to the data model panel

See also

All tables you want available for use in a document must be placed in the data model panel of the Data Model dialog box. When you place a table in the data model, Paradox uses the table's fields in the design document.

1.	Open the Data Model dialog box. (See To open the Data Model.) dialog box.

2.	Select the table and click the Add Table arrow [image], or press Alt+A.. You can also double-click the table name.

The selected table name appears in a recessed area in the data model panel on the right.

By default, the tables in the File Name list box are those in the working directory. If you do not see the table you want, choose another path from the Drive (Or Alias) list box. You can also choose Browse to open the Browser, which gives you access to all tables.

3.	Repeat the process until all the tables you want are in the data model panel, then click OK.

If your design contains many tables, you might prefer to link the tables as you add them, rather than adding them all and then linking. This way, you can avoid scrolling the data model panel to view all the tables. See To create a link.


To choose a query for a data model

See also

When you place a query in the data model panel of the Data Model dialog box, Paradox creates the design document based on the query. Instead of running a query and building a design from the resulting Answer table, you create the design based on the query itself. When you run a form or report based on a query, Paradox runs the query, then displays or prints the document.

To create a design document based on a query,

1.	Open the Data Model dialog box as described in To open the Data Model dialog box.

2.	Click the Type drop-down arrow and choose <Queries>.

3.	Choose the queries to use.

4.	Continue the process for creating a design document.

A query must be the master table in a multi-table design.


To choose an existing data model for a data model

See also

To build a design document from an existing data model,

1.	Open the Data Model dialog box as described in To open the Data Model dialog box.

2.	Click the Type drop-down arrow and choose <Data Models>.

3.	Choose the data model to use. It appears in the dialog box.

4.	Continue the process for creating a design document.


To remove tables from the data model panel

See also

To remove unlinked tables from the data model,

1.	Open the Data Model dialog box as described in To open the Data Model dialog box.

2.	Select the table in the data model panel and click the Remove Table arrow  [image]  or press Del or Alt+D.

You cannot remove a linked table from the diagram area. You must first select the detail table and choose Unlink.


To view or change table properties in a data model

See also

Once a table is in the data model panel, you can change certain properties affecting its behavior in forms and reports.

To view or change the properties of a table shown in the data model panel of the Data Model dialog box,

Right-click the table or press F6.

If you are designing a report, you see a menu of the table's name, and its field names, types, and sizes.

If you are designing a form, you see these properties:

Name of the table

The text above the separator line is the name of the table. Click this name to assign a table alias.

Fields

Shows a list of the table's field names, types, and sizes.

Filter

Opens the Filter Tables dialog box, where you can set a filter for the table to view only the data that meets your specifications.

Read-Only

Protects the table from being edited in this form. You can still edit the table in other documents or in its Table window. This property is checked by default on the detail table when you create a data model with a single-value relationship.

Strict Translation

This property restricts the characters that you can input into a table to those which are actually in the character set of the table's language driver. This is checked by default.

Auto-Append

Automatically creates a new, blank record whenever you move beyond the last record in the table. This is checked by default.

Note:	When you save a data model, Paradox saves the properties you've specified for each table in the data model. You can save the same data model with different properties to suit all your needs.


About links and indexes

See also	Examples

You could place fields from two or more unrelated tables in a design, but it is more common to relate the data from the tables. You do this through links.

To understand how Paradox links tables in design documents, you must first understand how Paradox sorts and locates data based on the indexes (keys and secondary indexes) you specify. See About indexes and keys.

You create links on common fields. For example, the Customer table has a Customer No field and the Orders table has a Customer No field, so you can link these two tables on that field.

In Paradox tables, the field name does not have to be the same in both tables, but the field type and size must match.

In dBASE tables, you can link only on like field types, unless you use an expression index in the link.

For example, suppose you are creating a data model that uses the sample Customer and Orders tables. Both tables have a Customer No field. The Customer No field in the Orders table contains values that represent records in the Customer table. It's easier and more efficient to keep order and customer information in separate tables. But sometimes you need to see data from both tables at once. That's when you need to link the two tables. When you link Customer and Orders, Paradox looks at each value in the Customer No field of Customer and, using indexes, finds matching values in the Customer No field of Orders. This way, you can tell which customer made each order.

Paradox uses an index to remember where values are. When you create a secondary index on a field, Paradox looks at each value in the field and creates a file that notes each value's location (record number) in the table. This makes it easy and fast for Paradox to find the value you want. If you create a maintained index, Paradox updates the index file every time you update the table.

When you link two tables, you ask Paradox to evaluate a value in the table you are linking from (the master table) and find all matching values in the table you are linking to (the detail table). This means the detail table must be indexed on the field you want to use in the link. The detail table can have either a primary index (key) or maintained secondary index on the linking field.

For example, you can link the Customer table to the Orders table on the Customer No field if you have an index on that field in the detail table. This would be a one-to-many link because for every customer record, you could have zero or more corresponding records in the Orders table. Or, you can link the Orders table to the Customer table on the Customer No field (the primary index of the Customer table). This would be a many-to-one link, because for every order, there is one and only one corresponding record in the Customer table.

Types of links

You can link tables through either

Single-value relationships (one-to-one or many-to-one)

Multi-value relationships (one-to-many)


Single-value relationships

See also	Example

A single-value relationship exists between tables if, for every record in one table, there are no related records, or only one record in the other table is related to it. For example, the relationship between Lineitem and Stock is single-value: each line item ordered (each unique value in Lineitem) is one item of stock (a unique value in Stock).

When tables in Paradox have a single-value link, Paradox treats the fields in both tables much as if they came from the same table. You can group on tables joined by a single-value relationship. They can be displayed in the same table object or multi-record object, for example.

One-to-one (1 [image] 1)

In a one-to-one relationship, each record in the master table is related to one (or no) records in the detail table. The relationship between the Lineitem and Stock tables is one-to-one.

Tip:	Two tables containing identical key fields have a one-to-one relationship. When this exists, it is wise to combine these tables into a single-table.

Many-to-one (M [image] 1)

In a many-to-one relationship, many records in the master table are related to one value in the detail table. For example, the Lineitem table lists specific items that a customer orders. Several items can be ordered at the same time, so many Lineitem records can point to the same Orders value.

When you create a data model with a single-value relationship, Paradox makes the detail table read-only. For information on how to change this, see To view or change table properties.


Multi-value relationships

See also	Example

A multi-value relationship exists between tables if, for every record in the master table, no records, one record, or more than one record from another table is related to it. For example, one customer (one record in the Customer table) can place no orders, one order, or many orders (records in the Orders table). This means that each record in the Customer table can have many records in the Orders table that match it. This is a one-to-many relationship (1 [image] M).


To create a link

See also	Example

To link two Paradox tables,

1.	Open the Data Model dialog box as described in To open the Data Model dialog box.

2.	In the data model panel of the Data Model dialog box, position the pointer over the master table. The pointer becomes a linking  [image]  tool.

3.	Click the master table and drag to the detail table.

4.	Release the mouse. Paradox displays the Define Link dialog box.

In some cases, Paradox creates the link immediately without opening the Define Link dialog box. Paradox does this if Referential integrity exists between the two tables

You can choose OK to accept this link, or you can override it by selecting the detail table and clicking Link to display the Define Link dialog box.

5.	To define the link yourself, choose the detail table index you want from the Index list in the Define Link dialog box. Then choose the master table field you want from the Field list.

Paradox draws a line between the field and the index, and places an arrow between the two table names.

Note:	You cannot create a link using a BLOB, bytes, or logical field. This is because you cannot create an index on these field types.

6.	Choose OK to accept the link. Paradox returns you to the Data Model dialog box.

Note:	If you have established referential integrity between two Paradox tables you are linking, Paradox automatically links them according to the referential integrity specification. In this case, you bypass the Define Link dialog box.

You can also link tables in the Data Model Designer.

Tip:	If you plan to use many tables in your design, you might prefer to link as you add them, rather than adding them all and then linking. This lets you avoid scrolling the data model panel to view all the tables you want to link.


To define a link

See also

Paradox shows all fields from the master table in the Field list of the Define Link dialog box.

1.	Choose the field you want to link on. It appears below the table name in the link diagram panel of the dialog box.

If Paradox finds an index of the detail table that matches the name and type of the field you've chosen, it completes the link for you.

If no name and type match is found, Paradox uses the first index of the detail table that matches in type and length if applicable. You can choose another index to replace the automatic choice.

2.	Choose the index you want to use for the detail table. It appears below the detail table name in the link diagram panel of the dialog box.

If you're using a composite key or index on the detail table, choose fields from the master table to match some or all of the fields in the index.

If you use a composite key or index and match all its fields, Paradox creates a one-to-one link. Otherwise, Paradox creates a one-to-many link.


To preview links

See also

After you choose a matching field from the master table and an index from the detail table in the Define Link dialog box, Paradox creates a link between the two and previews the data model in the link diagram panel.

If you want a different link

1.	Click Unlink and choose a different field or index.

2.	Choose OK to accept the link and return to the Data Model dialog box. The data model panel now shows the tables linked.

The data model shows what type of link exists between the tables.

If two tables are side by side, with a double-headed arrow between them, it indicates a multi-value relationship. The direction of the arrow shows the direction of the link (master-to-detail).

If one table is stacked below another table, with an arrow joining them from their sides, it shows a single-value relationship.


To modify links

See also

To change the way two tables are linked,

1.	From the design window, choose Form|Data Model or Report|Data Model.

2.	Select the detail table. in the Data Model dialog box,

3.	Choose Link to display the Define Link dialog box.

4.	Click Unlink

5.	Choose a different field or index.

6.	Choose OK after you finish working with the link.

You can also modify links in the Data Model Designer.


To remove links

See also

To remove an existing link between tables in a data model,

1.	From the design window, choose Form|Data Model or Report|Data Model.

2.	From the Data Model dialog box, select the detail table.

3.	Choose Unlink.

4.	Choose OK.

You can also remove links in the Data Model Designer.


Example of creating a link

See also

Suppose you want to link the sample Customer and Orders tables.

1.	Open the Data Model dialog box.

2.	Double-click CUSTOMER.DB and ORDERS.DB in the File Name list. Paradox places the tables in the data model panel.

When you pass the pointer over a table in the data model panel, it changes to a linking tool (shown at left).

3.	Click Customer. This is the master table. You create a link by holding down the left mouse button and drawing a line from the master to the detail table.

4.	Drag from Customer to Orders (the detail table). Paradox recognizes the referential integrity established between the two tables and links them on their Customer No fields.

Creating a link without referential integrity

Suppose you do not have referential integrity between the two tables you're linking. In that case, you create the link you want using the Define Link dialog box.

Note:	Because all the sample tables use referential integrity, you need to create a new table to use in this example.

1.	Copy Customer and name it CUST2.DB. Copying files is discussed in Tools|Utilities|Copy.

2.	Open the Data Model dialog box.

3.	Double-click CUST2.DB and ORDERS.DB in the File Name list. Paradox places the tables in the data model panel.

4.	In the data model panel, click and drag from Cust2 to Orders. You'll see a line between the two tables.

5.	Release the mouse. Paradox opens the Define Link dialog box.

Paradox places Customer No below the Cust2 table in the link diagram panel of the dialog box. This is the Cust2 table's key, and the field on which Paradox creates a default link.

Paradox places Customer No below the Orders table in the link diagram panel. If the detail table has an index that matches the primary index (key) of the master table, Paradox uses it.

Paradox draws a line between the field and the index and places a double-headed arrow between the two table names.

6.	Choose OK to accept the link. Paradox returns you to the Data Model dialog box.

When the Define Link dialog box closes, Paradox shows the linked tables in the data model panel. You can add and link more tables, or choose OK to close the dialog box.


Example of a complex data model

See also

You can keep linking tables to the existing data model until you have the data model you want. As long as you have identified indexes properly, you can build data models that are as complex as you need them to be. The following figure shows a data model for some of the sample tables provided with Paradox.

In this example,

The first relationship exists between Customer No in Customer and Customer No in Orders. Customer No is the primary index (key) of Customer and a secondary index in Orders.

The second relationship exists between Order No in Orders and Order No in Lineitem. Order No is the primary index (key) of Orders and a secondary index in Lineitem.

The third relationship was created between Item No in Lineitem and Item No in Stock. Item No is a secondary index in Lineitem and the primary index of Stock.

This data model combines all the data in all the tables into a logically connected whole. As you scroll through the records in a form created from this data model, you see the order information change for each customer. You'll also see line item information change for each order.

Note:	When tables are linked in a single-value relationship, Paradox combines their fields into one table object that includes the fields of all the tables. Field names indicate which source table each field comes from. This extended table object exists only in the design document. Entries made to it are saved in the proper source tables.


Example of a linked multi-table form

See also

In the example form below, fields from the Orders table are displayed on the form in a table frame object. The records in the table frame show the orders placed by the current customer (The Depth Charge).

In this form you can see that each record of the master table (Customer) has one or more corresponding records in the detail table (Orders). The Customer Name field comes from the Customer table. As you move through the records of the Customer table, the linked detail records from the Orders table are updated to show the orders for the current Customer record.

Linked data in a multi-table form:


dBASE linking combinations

See also

You can link dBASE tables

Only on like field types, unless you use an expression index in the link.

Only on maintained indexes (not .NDX files).

You can link dBASE tables using an expression index or a single-field index in an .MDX file. The following table shows valid dBASE links.

From	To

Field	Expression index

Field	Single-field index

Master Expression	Expression index

Master Expression	Single-field index


Limitations on reports containing dBASE tables

See also

There are a few limitations on reports whose data models contain dBASE tables. The limitations apply if a report's master table is linked in a single-value relationship with a dBASE table. (Paradox creates this kind of link if the detail table contains a unique index.) For such a report, you cannot

Sort the report's record band (you cannot right-click it and choose Sort)

Add a group band to the report

To avoid these limitations,

1.	Restructure the detail table with a non-unique index (see the Define Index dialog box).

2.	Re-create the data model of the report and link the tables in a multi-value relationship.


About table aliases

See also

You can assign a different name to a table for the purposes of the document you are creating. This is called a table alias.

Creating a table alias can provide several benefits:

If you use the same table more than once in a data model, table aliases help you avoid confusion.

A form or report is more portable when you use table aliases.

You can change table aliases to conform to the naming conventions of your SQL server when you upsize your application.

You can refer to tables in ObjectPAL code using table aliases. This means you can change the table your code refers to without breaking the code or requiring table name modifications.

You can use table aliases instead of table names when you create calculated fields. If you need to change tables, you can keep the calculated field expressions by assigning the table alias you used to the new table.


To create a table alias

See also

1.	Right-click the table in the Data Model dialog box or the Data Model Designer

2.	Click the table's name to open the Table Name dialog box.

3.	Assign a different name to the table. A table alias

Must have an alpha character for the first character

Cannot contain blanks

Can be up to 32 characters in length


To remove a table alias

See also

To remove a table alias,

1.	Right-click the table in the Data Model dialog box or the Data Model Designer

2.	Click the table's name to open the Table Name dialog box.

3.	Delete the table alias in the Table Name dialog box.


To save a data model in the Data Model dialog box

See also

You can save a data model and use it for other design documents or queries.

1.	From the Data Model dialog box, choose Save DM.

Paradox opens the Save File As dialog box.

2.	Specify a name for the data model, then choose Save.

Paradox saves the data model with the .DM file extension.

You can use saved data models to create forms, reports, and queries, or as a starting point in creating new data models.

You can also define a saved data model as a reference data model for all other data models. See About the Data Model Designer.


About the Data Model Designer

See also

Use the Data Model Designer to

Create a data model without creating a form, report, or query

Modify the data model of a design document

Save and load data models

Print data models

Display a reference data model, or the data model of the active form or report.

When the Data Model Designer is open and you open multiple forms and reports in their design windows, the Data Model Designer remains open, and updates to show the data model of the active form or report.

The Data Model Designer has its own menu bar, Toolbar, and status bar. The Data Model Designer is always the topmost window, and you can move it outside the Paradox Desktop.

You can also use the Data Model Designer to do the same things you do with the Data Model dialog box.


To open the Data Model Designer

See also

Choose Tools|Data Model Designer.

Paradox opens the Data Model Designer.

If you are working in a Form Design or Report Design window, Paradox displays the active form or report's data model in the diagram pane.

If you are not working in a Form Design or Report Design window, the diagram pane contains no data model.


To view the current data model

See also

1.	Open the Data Model Designer by choosing Tools|Data Model Designer.

2.	Choose View|Current Data Model.

When this option is checked, the Data Model Designer shows the data model of the active form or report.


To view a reference data model

See also

1.	Open the Data Model Designer by choosing Tools|Data Model Designer.

2.	Choose View|Reference Model.

When this option is checked, the Data Model Designer shows a data model that you can modify and save to disk independently of a form or report.

When you open a form or report while the reference data model is showing, Paradox switches the display to show the data model for that form or report.

The Data Model Designer stays open as you switch among the open documents, always showing the data model of the active form or report. When the active window is not a form or report, Paradox displays the reference model again.

Note:	This is true only if you have not saved defaults where you've selected View|Reference Model, opened an existing data model and saved defaults. In such cases, it won't switch to the current data model view automatically.


To view two data models at one time

See also

You can split the Data Model Designer into two panes, to view two data models at the same time.

1.	Open the Data Model Designer by choosing Tools|Data Model Designer.

2.	Choose View|Current Data Model and View|Reference Control.

When these options are checked, the Data Model Designer contains two panes.

The top pane shows the currently loaded reference data model.

The bottom pane shows the data model of the active form or report.

You can use the split view to drag tables and links from a reference data model into the data model for the active form or report. See To copy items from the reference data model.

From this view, only the data model of the active form or report can be modified. All menu actions affect only the current data model of the active form or report.


To create a data model
To create a data model in the Data Model Designer

See also

1.	Open the Data Model Designer by choosing Tools|Data Model Designer.

2.	Choose Design|Add Table from the Data Model Designer menu, or click the Add Table button.

Paradox opens the Select File dialog box.

3.	Choose the table(s) you want to add to the data model.

4.	When you've added the tables you want, link them just as you would in the Data Model dialog box. See To create a link for information.

5.	After the tables are linked, choose File|Save or File|Save As from the Data Model menu.

Paradox opens the Save File As dialog box.

6.	Save the data model as a .DM file.

7.	If you want to use it as the reference data model, choose Design|Save As Default from the Data Model Designer menu.

Note:	This will only be brought up automatically if View|Reference Model is selected, this data model file loaded in that pane, then Save As Default is chosen.


To load a data model

See also

1.	Open the Data Model Designer by choosing Tools|Data Model Designer.

2.	Do one of the following:

Choose File|Open from the Data Model Designer menu, or click the Load Data Model [image] button.

Paradox opens the Select File dialog box. Choose the data model you want, then click Open.

When View|Reference Model is checked, right-click the diagram pane.

Paradox displays a list of all data models in the working directory. Choose the one you want to load.

The effect of loading a data model depends on the mode of the Data Model Designer:

If View|Current Data Model is checked,

Paradox loads a data model, replacing the data model of the active form or report. Choose Design|Accept Changes to change the data model of the active form or report. Choose Design|Cancel Changes to cancel the changes.

If View|Reference Model is checked,

Paradox replaces the displayed data model with the reference data model.


To add a table to a data model

See also

In the Data Model Designer, do one of the following:

Choose Design|Add Table.

Click the Add Table [image] button.


To create, break, or modify links

See also

You can change links in the Data Model Designer, as follows.

To link tables,

Click the master table and drag to the detail table.

If there is not referential integrity between the two tables, Paradox opens the Define Link dialog box so you can define the link.

To break the link between tables,

1.	Select a detail table.

2.	Choose Design|Unlink or click the Unlink Table [image] button.

To modify a link,

1.	Select the detail table.

2.	Choose Design|Link.(The selected table must be a detail table.  If it is only a master table, the Link and Unlink menu items are not available.)

Paradox displays the Define Link dialog box where you can make link modifications.


To remove a table from the data model

See also

In the Data Model Designer, do the following:

1.	Select an unlinked table.

2.	Choose Edit|Delete or click the Remove Selected Table [image] button.

Note:	Linked tables can not be deleted from the data model. You must first unlink them.


To copy items from the reference data model

See also

When the Data Model Designer is split into two panes, you can drag tables and links from the reference data model (in the top pane) to the data model for the active form or report (in the bottom pane).

1.	In the Data Model Designer, choose both View|Current Data Model and View|Reference Control to split the pane.

See To view two data models at one time for information.

2.	Select one or more tables from the top pane and drag them to the bottom pane.

Shift+click or Ctrl+click to select more than one table.

If you select linked tables, you can drag the them to the bottom pane and preserve their link.

After you change the data model in the bottom pane, you can save it and apply it to the active document by selecting Design|Accept Changes, pressing F9, or clicking the Accept Changes [image] button.


To view table properties in the Data Model Designer

See also

1.	Open the Data Model Designer by choosing Tools|Data Model Designer.

2.	Select a table.

3.	Right-click the table or choose Design|Current Table.


About saving a data model in the Data Model Designer

See also

In the Data Model Designer, you can save the data model for the active form or report, or you can save a reference data model for use when designing other data models.

The data model you set as the default data model acts as a reference data model when you're working with other data models in the Form Design or Report Design windows. You can view it, borrow from it, or use it directly in your design documents.


To apply changes to the data model for the active form or report

See also

Choose Design|Accept Changes, press F9, or click the Accept Changes [image] button.

This option is available only when View|Current Data Model is checked.


To save changes to the reference data model

See also

To save the data model with its current name,

Choose File|Save or click the Save Data Model [image] button.

Note:	Saving a data model to a .DM file does not apply it to the active document; choose Design|Accept Changes as described above.


To give a data model a new name

See also

1.	Choose File|Save As.

Paradox opens the Save File As dialog box.

2.	Specify a name for the data model.

Paradox saves the data model with the .DM file extension.


To cancel changes to the data model for the active form or report

See also

Choose Design|Cancel Changes to undo changes you have made to a data model.

Paradox reverts to its last saved data model.


To save or restore a default data model

See also

You can specify a data model to use as the default from the Data Model Designer. This data model acts as a reference data model when you're working with other data models in the Form Design or Report Design windows. You can view it, borrow from it, or use it directly in your design documents.

When you save a data model as a reference data model, the menu settings and the location of the Data Model Designer window are also saved.

To save the default reference data model,

1.	Load or create the data model you want.

2.	Choose Design|Save As Default in the Data Model Designer.

Paradox records

The name of the reference data model (if View|Reference Model is checked).

The size and position of the Data Model Designer

Which commands from the View menu have been checked

Then, whenever you open the Data Model Designer, it appears the same as it did when you saved the defaults.

To restore the default data model,

Choose Design|Restore Default to restore the default data model with the appearance of the Data Model Designer as it was when you last chose Design|Save As Default.


To print a data model

See also

To print the currently loaded data model in the Data Model Designer,

Choose File|Print.

Note:	If both the current data model and the reference data model are displayed, only the current data model will print.


About form and report layouts

See also

With a layout, you specify

The style of master and detail records

Which fields you want to display in the document

Which style sheet you want to use to specify the look of the document

Use the Design Layout dialog box to work with a layout. This dialog box has different options for single-table documents and multi-table documents. The document's data model determines which Design Layout dialog box is displayed.

Whether you are designing a single-table or multi-table document, you can

Select fields to be displayed

Display fields as labeled or unlabeled

Specify a style sheet that establishes the default properties of design objects

For information on the Design Layout dialog box, see the following topics:

Design Layout dialog box (single-value relationship)

Design Layout dialog box (multi-value relationship)

To open the Design Layout dialog box


How form and report layouts differ

See also

You use the Design Layout dialog box the same way whether you're designing a form or a report. Most options available for design layouts are the same for forms and reports. The only differences are the way the preview image is displayed and the choice of style sheets.

Reports

Reports use bands to separate different areas of the layout. Reports have bands for report headers and footers, page headers and footers, groups that sort the data, and the body of the report.

The Design Layout dialog box shows report bands when previewing a report layout. Paradox places the contents of your report's data model within the record band.

Forms

Forms don't use bands, so the preview area in the Design Layout dialog box for a form is blank except for the contents of your form's data model.


To open the Design Layout dialog box

See also

1.	Choose File|New|Form or File|New|Report and click Data Model/Design Layout from the New Form or New Report dialog box.

2.	Create your data model.

3.	Choose OK.

Paradox opens the Design Layout dialog box. For information on the Design Layout dialog box, see the following topics:

Design Layout dialog box (single-value relationship)

Design Layout dialog box (multi-value relationship)

Note:	If you've specified a preference in the Forms/Reports Preferences dialog box, you might not see the New Form or New Report dialog box when you choose File|New. Depending on your preference setting, you might see the Data Model dialog box automatically, or you might open an expert or a blank document.

To open the Design Layout dialog box from a blank document

To open the Design Layout dialog box after creating a blank document

1.	Create a data model for the document

2.	Choose Design|Design Layout.

If the Show Fields button is dimmed, choose a layout style other than Blank to make the button available.


To return to the Design Layout dialog box

See also

The Design Layout dialog box is an excellent aid to laying out your design, but it is only a beginning point. You can change the design in a design window after you close the Design Layout dialog box.

To return to the Design Layout dialog box from a design window,

Choose Design|Design Layout.

Note:	When you return to the Design Layout dialog box, you'll see only fields that are currently in place in the design. You can add or remove fields using Show Fields.


To choose a layout style

See also

You specify the initial layout from the Design Layout dialog box, then refine the layout in the design windows. If you're working with a multi-table design, the layout style you choose is for the master table.

1.	Choose Show Layout to display layout options in the left panel of the dialog box.

2.	In the Style area, choose one of the following:

Single-Record displays one record of the table at a time, in a free-form layout.

Tabular displays rows and columns as if you were working with the table itself.

Multi-Record displays several records of the table at a time.

Blank removes all fields from the design.

For information, see the following topics:

Design Layout dialog box (single-value relationship)

Design Layout dialog box (multi-value relationship)

When you choose a style, Paradox displays a sample in the panel on the right.


To select fields to display

See also	Example

When you create a design document, Paradox includes all fields from all of the tables you link to the master table of the document (except for a duplicated field between a linked master and detail table, which is shown only once in the master table).

You can select which fields to display by using the Design Layout dialog box, and choosing Show Fields to display field names in the left panel of the dialog box. As your selections are made, the panel display on the right reflects the changes.

To remove a field from the design,

1.	Select the field in the Selected Fields list. In a multi-table design, use the drop-down arrow to select a table.

2.	Choose Remove Field.

To change the order of fields in the design,

1.	Select the field in the Selected Fields list. In a multi-table design, use the drop-down arrow to select a table.

2.	Use the Up and Down Order arrows.

To reset fields,

Choose Reset Fields. All the fields you removed are returned to the Selected Fields list and the design.

All changes you make in the Design Layout dialog box can be modified in a design window. You can replace removed fields in the design window with the Field tool [image].

Paradox displays only fields from the master table and tables you linked to it in the Design Layout dialog box. You can add fields from unlinked tables to your design in the design window, using the Field tool.

Note:	For reports, Paradox also adds fields for the date, the page number, and the title. You cannot remove these fields in the Design Layout dialog box; you must remove them in the Report Design window.


To display fields in columns or rows

See also

For single-record or multi-record layouts, you can display fields in columns or by rows.

1.	In the Design Layout dialog box, choose Show Layout to display layout options in the left panel of the dialog box.

2.	In the Style area, choose Single-Record or Multi-Record.

3.	In the Field Layout area, choose one of the following:

By Columns displays fields in a top-to-bottom column along the left side of the screen. Paradox creates columns as needed until all fields are displayed, creating additional page images if necessary.

By Rows displays fields one after another in a row along the top of the screen. Paradox creates additional rows as needed until all fields are displayed, creating additional page images if necessary.


To hide or show field labels

See also

By default, all fields in the Design Layout dialog box (and in the design window) have field labels. A field label is a text object that contains the field name.

1.	Choose Show Layout to display layout options in the left panel of the dialog box.

2.	Check Label Fields to show field labels, or uncheck it to hide labels.

This option is unavailable in a tabular design.

Tip:	In the Design Layout dialog box, you specify how you want the fields to be displayed by default. Once in a design window, you can right-click individual fields to turn the display of field labels on or off.


To choose a style sheet

See also

Style sheets change the default look of design objects in design document. Use style sheets to give your forms and reports a consistent appearance.

You can choose a style sheet in the Design Layout dialog box.

1.	Choose Show Layout to display layout options in the left panel of the dialog box.

2.	In the Style Sheet drop-down list, choose a style that suits your design.

Paradox provides several style sheets; you can also create your own style sheets as described in To create a style sheet.


Example of selecting fields for a layout

See also

Before you specify an initial layout [image] particularly when you design multi-table layouts [image] you should use the Show Fields button in the Design Layout dialog box and choose the fields to display in the design. This reduces the number of objects previewed in the Design Layout dialog box, and makes previewed layouts easier to evaluate.

The figure below shows a layout with

Only the Customer No and Name fields from the sample Customer table are displayed.

Only the Order No, Sale Date, Ship Date, Total Invoice and Amount Paid fields from the sample Orders table are displayed.


Example of a single-record layout (single-table design)

See also

The following figure shows a single-record layout.


Example of a tabular layout (single-table design)

See also

The following figure shows the sample Customer table in a tabular design for a form.


Example of a multi-record layout (single-table design)

See also

The following figure shows the sample Customer table in a multi-record design.

You see the fields in only the first region. The same pattern of fields is repeated in each region.

Note:	This figure uses the By Columns option. You can use either Field Layout option within a multi-record region.


To display objects in columns or rows (multi-table design)

See also

When working with multi-table design layouts, you can display objects (whether they are fields, tables, or multi-record objects) either as columns (up and down the page) or as rows (across the page).

1.	In the Design Layout dialog box, choose Show Layout to display layout options in the left panel of the dialog box.

2.	In the Style area, choose Single-Record or Multi-Record.

3.	In the Object Layout area, choose one of the following:

By Columns displays fields from the master table in a top-to-bottom column along the left side of the screen. Paradox creates columns as needed until all fields are displayed, creating additional page images if necessary.

By Rows displays fields from the master table one after another in a row along the top of the screen. Paradox creates additional rows as needed until all fields are displayed, creating additional page images if necessary.


To show detail tables

See also

You specify the style for displaying detail tables in the Design Layout dialog box, then refine the layout in the design windows.

1.	Choose Show Detail Tables to display detail table options in the left panel of the dialog box.

2.	Choose one of the following to specify the type of object used to represent tables that have nothing nested in them:

Table specifies a table frame.

Record specifies a multi-record object.

3.	If you chose Record, use the Multi-Record Layout area to specify whether to arrange the records horizontally, vertically, or both.


To place master records before detail tables

See also

In a multi-table design, you can place master records before any related detail tables. You specify the style for displaying master records in the Design Layout dialog box.

1.	Choose Show Layout to display options that change the layout of the design document in the left panel of the dialog box.

2.	Check Fields Before Tables.

If Fields Before Tables is unchecked, detail tables are placed before fields of the master record on the form or report.


To display several master records at the same time

See also

You specify the style for displaying master records in the Design Layout dialog box, then refine the layout in the design windows.

1.	Choose Show Layout to display options that change the layout of the design document in the left panel of the dialog box.

2.	Choose Tabular or Multi-Record from the Master Table Style options to display more than one record at a time from the master table.

In a form, master records can be displayed in either the tabular style or the multi-record style. Detail records can be either nested (within) the master multi-record object, or separate from either a master table or multi-record object.

In a report, the master records are always displayed in the multi-record style, and the detail records can be displayed in either a table or a multi-record object nested in the master multi-record object.


To nest detail records in a form

See also	Example

In a 1 [image] M form design, you can display master records in a multi-record object and place detail records inside that multi-record object. This is called nesting detail records within the master.

The detail tables are displayed in a multi-record object or a table, depending on what you choose using Show Detail Tables.

1.	In the Design Layout dialog box, choose Show Layout to display layout options in the left panel of the dialog box.

2.	Choose Multi-Record from the Master Table Style options.

Paradox makes the Nested check box available. (In a 1 [image] M [image] M form design, the Nested check box is always available.)

3.	Check Nested.

The following figure shows a detail table object nested within a master multi-record object. The table frame containing detail records is nested within the multi-record object region.


To nest detail records in a report

See also

When you design a report layout, Paradox automatically nests detail objects within master objects whenever you display several master records (or have a 1 [image] M [image] M or more data model).

Since nesting is automatic and required, the Nested option does not appear in the multi-table Design Layout dialog box for a report.

Try to structure your report design so that a record appears on a single page. If you have many detail records for each master, or many levels of nesting (as in a 1 [image] M [image] M data model) you should make sure that all details will fit on a single page before running the report. You can do this by limiting the size or number of detail records.

For example,

1.	Right-click the table or multi-record object containing the detail records and choose Properties.

2.	Uncheck Show All Records on the Run Time property page.

3.	Run the form and notice that you don't see all the data.

4.	Now, check Show All Records

5.	Run the form. This time the detail table expands to include all the data.


Example of displaying one master record at a time

See also

The following figure shows a layout with one record of the master table and a set of detail records from the detail table displayed in a table frame. This is the default layout for a 1 [image] M multi-table design.

The following figure shows the default layout for a report.

The layout of fields appears within the record band of the report design.


Example of displaying detail records in a multi-record object

See also

You specify the style for displaying detail tables in the Design Layout dialog box, then refine the layout in the design windows.

1.	Choose Show Detail Tables to display detail table options in the left panel of the dialog box.

2.	Choose Record to display detail records in a multi-record object.

The following figure shows a form layout with detail records in a multi-record object.

In the Form Design window, right-click the multi-record, choose Properties. On the Record Layout page, change the number of regions that repeat across or down.

In a report layout, Paradox does not show how many regions will be repeated down the page. By default, the multi-record object continues to repeat until all records are printed.


Example of displaying both master and detail records in table frames

See also

You can display both master and detail records as table frames in the Design Layout dialog box.

1.	Choose Show Layout to display options that change the layout of the design document in the left panel of the dialog box.

2.	Choose Tabular from the Master Table Style options.

3.	Choose Show Detail Tables to display detail table options in the left panel of the dialog box.

4.	Choose Table from the Detail Table Style options.

Note:	Non-nested layouts are available only in forms.

The following figure shows a form with both master and detail records as table objects

In this example,

The master table shows fields from the sample Customer table.

The detail table shows fields from sample  Orders.

As you move through the records of the master table, Paradox updates the detail table to display only the current customer's orders.


Example of nesting detail records in a form

See also

In a 1 [image] M [image] M design, the Nested check box is available whether or not you choose Multi-Record from the Master Table Style options.

If you use Show Detail Tables, then choose Record from the Detail Table Style options, Paradox display the detail records in a multi-record object nested within the master multi-record object.


Example of a design using three tables

See also

The following figure shows a layout using three sample tables. The relationship is Customer [image] Orders [image] Lineitem. Customer is in the single-record style, Orders is in the multi-record style, and Lineitem is in a tabular style nested in the multi-record region of Orders.

Selected fields from one record of Customer are displayed. Each region of the multi-record object contains fields from one record of Orders and a table of corresponding records from Lineitem.

This is a 1 [image] M [image] M link. Whenever you work with a 1 [image] M [image] M link, Paradox requires both detail tables (in this case, Orders and Lineitem) to be multi-record regions (either tables or multi-record objects). In any report design, or in any nested design, Paradox makes the first detail table (in this case Orders) a multi-record object. (In the Form Design and Report Design windows, you can manually create a design in which the first detail table is a table frame.)

This layout shows the relationships among the three tables. For each record in Customer, there can be many records in Orders. For each record in Orders, there can be many records in Lineitem. The following figure shows what a form looks like with this layout.

Each table shows the line items for the order displayed above it. Each order refers to the customer at the top of the screen.


About the design window

See also

Use the design window to create or modify the design of a form or report. Paradox has two design windows:

Form Design window

Report Design window

If you are viewing data in a Form or Report window, press F8 or click the Design [image] button to open the corresponding design window for that document.


To open a design document

See also

To open a new design document, follow Step 1:Create the design document.

To open an existing form or report,

1.	Choose File|Open and select Form or Report.

2.	In the Open Form or Open Report dialog box, select the form or report to open.

3.	Choose whether to open a design window to modify the document, or open a view window to view it onscreen. In the case of a report, you also have the option of sending your document directly to the printer.

4.	To open an existing form as a report, choose Open As Report. To open an existing report as a form, choose Open As Form.

5.	To use a form or report design with a different table, choose Change Table and select a replacement table.

You can also open design documents from the Project Viewer.

Click the type of document in the left pane, then double-click the name of the file to open in the right pane.

Right-click the type of document in the left pane, choose File|Open, and select the file to open.


About design window Toolbars

See also

The Toolbar in a Form Design or Report Design window contains design tools that you use to place design objects on a form or report. The name of each tool appears on the status bar when you point to it.

Each design window has its own Toolbar:

Form Design Toolbar

Report Design Toolbar

For details on the design objects, see About design objects.

To display a Toolbar,

Do one of the following

Choose Edit|Preferences, and on the Toolbars page, check the Toolbars you want to display.

Choose View|Toolbars and check the Toolbars you want to display.

Right-click the empty area of any Toolbar and check the Toolbars you want to display.

Right-click the empty area of any Toolbar, choose Properties, and on the Toolbars page, check the Toolbars you want to display.

To use a design tool,

1.	Click the tool you want.

To create more than one object of the same type, hold Shift down while you click the tool you want. The tool remains active until you click the selection arrow or another tool.

2.	Do one of the following:

Click in the design to place the object using its default size.

Click in the design and drag to place the object and specify its size.

Shift+click in the design and drag to constrain the object:

Any object except an ellipse or line is created as a square.

An ellipse is forced to be a circle.

A line is forced to be horizontal, vertical, or a 45 degree angle.

The pointer reverts to the Selection Arrow after you place an object.

Note:	Keyboard equivalents are not available for the Toolbar's design tools.

To change a design object's properties,

Right-click the design object and choose Properties.


To change a tool's properties

See also

You can change the properties of any design tool on the Toolbar.

1.	Place the object on the design document.

2.	Right-click the tool and choose Properties from its menu.

3.	Change any of the properties.

4.	Choose Design|Copy To Toolbar, or right-click the object and choose Copy To Toolbar.

The properties you set for the object are copied to its tool on the Toolbar and are used as defaults for any subsequent objects created with that tool.

To make permanent changes to design tools

Changes you make using Copy To Toolbar last only for the current Paradox session. To make permanent changes to design tools, save the design as a style sheet.

Choose Form|Style Sheet or Report|Style Sheet and save the current style sheet as a new style sheet.

Right-click the design window title bar, choose Style Sheet and save the current style sheet as a new style sheet.


To copy a design object's properties to the Toolbar

See also

You can copy the properties of an existing design object in the design window to its tool on the Toolbar. For example, if you create a yellow ellipse with a thick blue frame, you can copy its properties to the Ellipse tool so that all the ellipses you create look the same.

Do one of the following:

(bmc onestep.bmp}	Select the design object and choose Design|Copy To Toolbar.

(bmc onestep.bmp}	Right-click the design object and choose Copy To Toolbar.

Whenever you create a new ellipse, the Ellipse tool uses those properties.

Save the design to a style sheet. to make the changes permanent.


To copy a composite design object's properties to the Toolbar

See also

You can change the properties of individual components of a composite design object.

For example, you can change the properties of a field that is contained by a table frame, then copy the table frame to the Toolbar. All fields in table frames you subsequently place will have the properties that you set.

1.	Select the design object.

2.	Choose Design|Copy To Toolbar, or choose Copy To Toolbar from the objects right-click menu.

When you copy composite design objects to the Toolbar, you can customize the following components:

Table frames: headers, record, and fields

Multi-record objects: record and fields

Fields: edit region and text label

Crosstabs: text labels, fields, and cell regions

Buttons: text labels


To copy page properties to the Toolbar

See also

Even though the Toolbar does not have a Page tool, you can change the form's page properties, like color or pattern, and copy them to the Toolbar.

1.	Select the page (left-click the background).

2.	Right-click the page(anywhere in the background), and change the properties for the page.

3.	Choose Design|Copy To Toolbar.

Paradox saves page properties the same way it saves design tool properties. Every time you create a new form, it will have the same properties as you saved.

Save the design to a style sheet. to make the changes permanent.


About rulers

See also

Both the Form Design and Report Design windows have horizontal and vertical rulers you can use when placing, resizing, or moving design objects. They also have an expanded ruler (used in combination with the horizontal ruler) for editing and formatting text objects.

When you select a design object, the rulers change color to indicate the object's placement and size.

You can set the default rulers and their grid settings for all design documents on the Designer page under Edit|Preferences. Once these preferences are set, every time you open a new form or report, the default rulers are displayed. You can override these settings once you are in a form or report by doing the following:

To override the default ruler display for the current document

Choose Form|Settings or Report|Settings and check the rulers you want to display. This change only affects the current document only.

To show or hide the rulers

Check or uncheck View|Rulers to display or hide the rulers. This menu option toggles between show and hide. Once you hide the rulers, when you show them again, the default ruler display settings are used instead of the override settings.

To specify the unit of measure

Choose Edit|Preferences, and on the Designer page, change the grid settings to set the unit of measurement for both the grid and the rulers.

Units	Choose inches or centimeters as the unit of measure.
Major Division	Specify the distance (in the units chosen) between major grid lines.
Minor Division	Specify the number of minor divisions (shown by tic marks) between major grid lines.
You can override grid settings for the current document using Form|Settings or Report|Settings.


About the expanded rulers
About the expanded ruler

See also

The expanded ruler, used in conjunction with the horizontal ruler, is an editing and layout tool for use with a text object. Use it to adjust margins, tabs, line spacing, and text alignment.

Using the expanded ruler

You must first select a text object.

The expanded ruler applies to only one text object at a time. It is displayed regardless of the object selected, but the tab, indent, and margin markers appear only when you place an insertion point in a text object (not when you select the object as a whole). The tab, indent, and margin markers apply only to the text object in which you are working.

When you select the entire text object, the expanded ruler's settings apply to all the text within it. When you select specific text and change the settings, the changes apply only to the selected text (except for spacing and alignment settings, which always apply to all the text within a text object). When you position the insertion point in the text object without selecting any text, no changes to settings take effect.

Note:	For text formatting, you can also use a special Text Formatting Toolbar. To display this Toolbar, choose View|Toolbars, and check the Text Formatting Toolbar. You can also right-click to the right of the Design Object Toolbar check Formatting. To display this Toolbar every time you open a design document, check the Text Formatting Toolbar in Edit|Preferences on the toolbar page.

View the expanded ruler one of the following ways:

Check View|Expanded Ruler in the form run-time window to display the expanded ruler when running a form.

Choose Form|Settings, and on the Designer page, check Expanded Ruler to display it in the current window.

To view the expanded ruler in a design window,

Check View|Ruler in the design window.

To specify which rulers display by default in the design window,

Choose Form|Settings, Report|Settings, or Edit|Preferences, and on the Designer page, check the rulers you want.

Using the buttons on the expanded ruler to lay out text in a text object, you can adjust

Alignment		Choose left, centered, right, or justified to align selected text.
Tabs		Select a Tab button, then click the object's shadow above the ruler to place the tab. Slide a tab to move it, or drag it off the ruler to remove it. Types of tabs available are right, left, center, and decimal.
Line Spacing		Click the line spacing you want for the selected text. Choose 1 for single-spaced text, 2 for double-spaced, and so on.


To display the expanded ruler

See also

Check View|Rulers to display the rulers. This menu option toggles between show and hide.

After hiding the rulers, when you display them again, the default ruler display settings are used instead of the override settings.

To set the default display

You can set the default Designer window preferences to display the Expanded Ruler every time you open a design document.

1.	Choose Edit|Preferences

2.	Make sure both Horizontal Ruler and Expanded Ruler are checked on the Designer page.

Note:	Horizontal Ruler will already be checked by default. Checking it again will turn it off.

To override the default display

If Edit|Preferences is set to not display the expanded ruler, you can display it once you are in a form or report.

1.	Choose Form|Settings or Report|Settings

2.	Check both Horizontal Ruler and Expanded Ruler.

These settings affect only the current design document.


To place tabs

See also

Tabs are set in the design window with the mouse.

Tabs can be set on the horizontal ruler, but to change the type of tab, you need to use the expanded ruler.

Default tabs in the ruler and expanded ruler are a half inch apart.

To add a tab marker,

Place a text object on a form or report in the design window and turn on the expanded ruler.

1.	Click inside the text object. (The insertion point must be in a text object.)

2.	Click a Tab [image] button on the expanded ruler.

3.	Click in the tab well to place the tab marker.

Paradox deletes default tabs to the left of tab markers you place the new tab.

The following types of tabs are available:

Left:
Text following the tab is pushed right so that its left edge lines up under the tab marker. This is the most typical tab type.

Right:
Text following the tab is pushed left so that its right edge lines up under the tab marker.

Center:
Text following the tab is centered under the tab marker.

Decimal:
Decimal points line up under the tab marker. Use a decimal tab to align columns of figures at the decimal point.


To move or delete tabs

See also

To move a tab, drag it to a new location.

To delete a tab, drag it away from the ruler.

You cannot move or delete the default tabs.

If you don't place any tabs, Paradox uses default tab settings to place tabs that you can't move or delete. When you place a tab, all default tabs to its left are removed. To delete all default tabs, place a tab near the right margin. You can move and delete the tabs you place. If you delete all the tabs you place, Paradox returns to its default tab settings.


To add indentations

See also

Use indent markers [image] in the ruler or expanded ruler to place indents and create hanging paragraphs in the selected text object.

To place an indent,

From inside a text object, drag the indent marker in the tab well to the location you want.

When the indent marker is to the right of the margin marker, the paragraph is indented. When the indent marker is to the left of the margin marker, the paragraph is outdented.

To move an indent marker,

Drag it.


To change margins

See also

Change margins for a text object in the ruler or expanded ruler. The default margins of your text are the left and right borders of the selected text object.

To change a margin,

Drag the margin icon [image] to the tab well location you want.


To change text alignment

See also

Paradox establishes the default margins of text by the location of the text object. By default, text is aligned along the left edge of the object. You can align text at the left or right margin, down the center of the text object, or at both the left and right margins.

Use the alignment [image] buttons in the expanded ruler to align text objects.

The alignment buttons are left, centered, right, and justified.

To change the alignment,

Click the alignment button you want before you begin typing.

If no text is selected, the next text you type will be aligned the way you chose.

Select typed text and then choose the alignment you want.


To change vertical line spacing

See also

Using the expanded ruler to change spacing is faster than changing the objects properties.

Click the line spacing [image] button for the selected text.

Choose 1 for single-spaced text, 2 for double-spaced, and so on.

If no text is selected, the next text you type will be spaced the way you chose.

The default spacing is single-spaced.

Another timesaver is the Text Formatting Toolbar. To display this Toolbar, choose View|Toolbars and check Text Formatting.


About the grid

See also

A grid is a background of horizontal and vertical lines that help you align the placement of design objects on the page.

Choose View|Grid to see the grid. Paradox displays major grid lines and minor grid ticks.

Lines show the grid's major divisions, and dots show the grid's minor divisions. Use the grid to align the design objects on the page.

Note:	The grid does not have to be visible for you to use it.

To change the scale or unit of measurement of the grid,

You change the grid measurement on the Designer properties page in one of two places:

Choose Edit|Preferences to set the default grid settings for all forms and reports.

Choose Forms|Settings or Report|Settings to change the grid settings for the current document. These settings are temporary and are thrown away when you close the document.

Unit of measure

The unit of measurement used by the grid is the same as the unit of measurement displayed in the ruler. For example, if metric measurements are used in the ruler, the grid increments are metric as well.

Units	Choose inches or centimeters as the unit of measure.
Major Division	Specify the distance (in the units chosen) between major grid lines.
Minor Division	Specify the number of minor divisions (shown by tic marks) between major grid lines.
Reorienting the grid in a report

If the grid is visible in the Report Design window, you can right-click a band and choose Move Grid To Band to reorient the grid at the top left corner of the band.


To view (show) the grid

See also

When you show the grid, Paradox displays major grid lines and minor grid ticks. Showing the grid helps you line things up by eye, or see where design objects are snapping if you have checked Design|Snap To Grid.

Choose View|Grid in a Form Design or Report Design window to see the grid.

Paradox displays major grid lines and minor grid ticks.


To align design objects at the grid line (snap to grid)

See also

Paradox can align all design objects directly on the grid lines (major or minor) whenever you place, resize, or move them.

When a design object snaps to the grid, its top left corner is moved to the nearest intersection of grid lines. An object aligns by its upper left corner or by the edge you are resizing.

To snap objects to the grid,

Choose Design|Snap To Grid. in a Form Design or Report Design window.

When Snap To Grid is checked,

Design objects stay where they are until you move or resize them.

Internally generated resizes (such as when you add text to a text object or define a field object) do not snap to the grid.

If an object cannot move to that position (because it is blocked by the edge of its container, for example), it will get as close as possible.

Note:	The grid has no influence on the position of objects contained in text.


To change grid settings

See also

To change the scale or unit of measurement of the grid,

You can change the grid measurement in two places:

Choose Edit|Preferences and on the Designer page, change the default grid settings for all forms and reports. These settings take affect for any document opened after changing the settings.

Choose Forms|Settings or Report|Settings and on the Designer page, change the grid settings for the current document. These settings are temporary and are saved with the document. They do not affect any other opened documents.

Unit of measure

The unit of measurement used by the grid is the same as the unit of measurement displayed in the ruler. For example, if metric measurements are used in the ruler, the grid increments are metric as well.

Units	Choose inches or centimeters as the unit of measure.

Major Division	Specify the distance (in the units chosen) between major grid lines.

Minor Division	Specify the number of minor divisions (shown by tic marks) between major grid lines.


To zoom forms and reports

See also

You can change the scale of a form or report onscreen. You can zoom out (decrease the scale and see a larger area) or zoom in (increase the scale and see part of the document up close).

1.	Choose View|Zoom in a Form Design or Report Design window.

2.	Choose one of the following:

25% or 50% takes a step back from your document

200% or 400% takes a closer look at your document

Fit Width fits the width to the window

Fit Height fits the height to the window

Best Fit fits the entire document to the window


About Designer preferences

See also

The Designer preferences affect the behavior and display of design windows, and are common to both Form Design and Report Design windows. These preferences can be set as defaults under Edit|Preferences, or changed as settings in the current design window.

Default preferences are used each time a design window is opened. Settings are temporary and are thrown away when document is closed.

The Designer page contains the following design window preferences.

Select From Inside specifies how to select design objects contained by other objects.

Frame Objects specifies whether to display onscreen design objects with or without frames.

Flicker-Free Draw suppresses screen flashes when you move or resize design objects.

Outlined Move/Resize specifies what you see when you move or resize a design object: the object itself or an outline of the object.

Grid measurements specifies the unit of measure and the distance between major grid lines and minor tic marks between grid lines for a grid or a ruler.

Ruler specifies which rulers to display in the design window.


Select From Inside

See also

When you click an object that is contained by another object, the Select From Inside option on the Designer properties page specifies how Paradox selects the object.

Suppose you have an ellipse contained in a box. When you click the ellipse, what do you want selected [image] the box or the ellipse?

If Select From Inside is unchecked, Paradox selects the outermost object first. This means, even though you click inside, Paradox selects the outer object first. The second click selects the ellipse.

Likewise, if a field is contained in an ellipse contained in a box, and you click the field, the first click selects the box, the second click selects the ellipse, and the third click selects the field.

If Select From Inside is checked, you select the object you click. In the example of a field contained in an ellipse contained in a box, you can click the field to select the field, click the ellipse to select the ellipse, and click the box to select the box.

Tips:	Double-click an object contained by another object to select it immediately, regardless of whether Select From Inside is checked.

When you have selected an object contained by another object, you can press Esc to select the next outermost object. For example, if you select an ellipse within a box, press Esc to select the box.


Frame Objects

See also

You can display objects on your screen with or without frames by using the Frame Objects option on the Designer properties page.

See To display frames for design objects for more information.


Flicker-Free Draw

See also

Sometimes the screen flashes a bit when you move or resize objects. This is especially noticeable when your design has a dark background. Check Flicker-Free Draw on the Designer properties page to suppress this behavior.

Turning Flicker-Free Draw on eliminates some screen flickering, but it can cause the movement or resizing of objects to be slower. Experiment with Flicker-Free Draw on and off to see which works best for you.


Outlined Move/Resize

See also

Select Outlined Move/Resize on the Designer properties page to specify what you see when you move or resize an object.

See To display outlines for design objects while moving or resizing for more information.


To set designer preferences

See also

To set Designer preferences as defaults

Choose Edit|Preferences and click the Designer page. Specify the following preferences:

Select From Inside

Frame Objects

Flicker-Free Draw

Outlined Move/Resize

Grid measurements

Ruler

Preferences set here become the default settings for both design windows. Each time you open the Form Design or Report Design window, Paradox uses these settings.

Note:	Changing the default Designer preferences has no effect on an open form or report. You must close the document, then re-open it to utilize the new default preference settings.

To override the default preferences

Choose Form|Settings or Report|Settings and check or uncheck the desired preferences on the Designer page. This change affects only the current document, and does not affect any other opened documents. As soon as you exit the document, these settings are thrown away.


About style sheets

See also

Style sheets let you customize design tools on the Toolbar so that any forms or reports you create have a consistent appearance.

For example, when you create several forms, you might want all your design objects to have a three-dimensional appearance. You might also want all text in the form to be green and all boxes to be blue. Instead of creating these objects and then modifying their properties manually, you can use a style sheet that applies these properties as you create the objects.

Paradox provides several style sheets. You can also create your own style sheets by copying prototype objects to the Toolbar, then saving them. See To create a style sheet.

Style Sheets are created, saved, and attached to documents in the Style Sheet dialog box, which is accessed one of two ways:

Choose Form|Style Sheet or Report Style Sheet.

Right-click the form or report title bar and choose Style sheet from the menu.


To create or save a style sheet

See also

The properties you set for a tool remain in effect for all design documents until you exit Paradox. If you want to keep them permanently, save the current design document as a style sheet.

1.	Modify the design objects to your liking, as described in To change a tool's properties.

2.	Right-click the form or report title bar and choose Style Sheet from the menu.

Paradox displays the Style Sheet dialog box.

3.	Do one of the following:

To modify an existing style sheet, select that style sheet from the list and click the Save button.

To create a new style sheet, click the Save As button. From the Save File As dialog box, specify the file name and path of the new style sheet, then choose OK.


To apply a style sheet

See also

To make all design objects you create conform to a style sheet,

1.	Right-click the form or report title bar and choose Style Sheet from the menu.

Paradox displays the Style Sheet dialog box.

2.	Select a style sheet and choose OK.

Any design objects you place after applying the style sheet will conform to the style sheet. Objects already on the design will retain their original properties.

Note:	You can always change the default style sheet in Edit|Preferences before creating a new design document to make the form or report conform to that style sheet. Or, you can choose a different style sheet in the Design Layout dialog box.


To change to a different style sheet

See also

1.	Right-click the form or report title bar and choose Style Sheet from the menu.

Paradox displays the Style Sheet dialog box.

2.	Choose a style sheet and click OK.

You can also open the Design Layout dialog box and choose a different style sheet.


To specify a default style sheet

See also

To specify that a style sheet be used for all new forms or reports,

1.	Choose Edit|Preferences.

2.	Specify the style sheet on the Forms/Reports preferences page,

To specify a default style sheet for the screen, choose one from the Screen Style Sheets drop-down list.

To specify a default style sheet designed for the printer, choose one from the Printer Style Sheets drop-down list.

3.	Choose OK, and then choose OK again from the Preferences dialog box.

Note:	The extension of the style sheet (.FT or .FP) depends on whether your design document is designed for the screen (.FT), or designed for the printer (.FP).


To access a style sheet from any working directory

See also

When you save a style sheet, Paradox stores it in the current working directory.

To make the style sheet available for any working directory,

Move the style sheet to the Paradox root directory.

For example, supposed you created a style sheet called MYSTYLE.FT. Assuming Paradox is installed in C:\PROGRAM FILES\BORLAND\PARADOX, perform the following steps:

1.	Choose Tools|Utilities|Rename.

2.	Choose Screen Style Sheets from the Files of Type drop-down list.

3.	Choose MYSTYLE.FT from the file list (or type it in the File name text box)

4.	Click Open to display the Rename To: dialog box.

5.	Use the mouse to select the new folder, or type C:\PROGRAM FILES\BORLAND\PARADOX\MYSTYLE.FT in the File name text box.

6.	Choose Save.

The file is moved to the new location.


To save a form or report design

See also

When you save a design document, you are saving the design itself, not the data. Paradox saves data to the appropriate table when you leave each record.

To save design,

1.	Choose File|Save in the Form Design or Report Design window.

2.	Name the file.

Naming documents

You can give a document whatever name you want. Just because a form has been designed using the Customer table doesn't mean you must call it Customer.

It isn't necessary to type a file extension when you save a design document. Paradox automatically gives design documents the appropriate extension so Paradox can access them by their type.


To set form and report default preferences

See also

You can specify how Paradox creates new forms and reports, whether forms and reports open in design mode, the size of the form screen page, and the style sheet for the initial appearance of design objects. After selecting these preferences, every form or report you open will use these settings.

1.	Choose Edit|Preferences.

Paradox displays the Preferences dialog box.

2.	Choose the Forms/Reports preferences page.

3.	Specify your preferences as described in Forms/Reports Preferences dialog box.


About design objects

See also

Design objects are objects you place in forms and reports in a design window. You create design objects with Toolbar tools. Design objects include

Text objects

Boxes, lines, and ellipses

Fields and table frames

Crosstabs and charts

Multi-record objects

Buttons

Graphics

OLE objects

Notebook objects

OLE and native Windows controls

Some objects (like buttons) and OLE controls can be used only in forms, and other objects, like bands, are used only in reports.

Design objects have a default size, except for the text object. Click the appropriate tool on the Toolbar, then click in the form or report to place an object. The object appears the default size. You can resize it by grabbing one of the sizing handles surrounding it with the mouse and dragging the object to a new size. See To change the size and shape of a design object.


To select a design object

See also

To select a design object, click it with the Selection Arrow. Handles appear around the object. For example, to select

A field: point and click.

Specific text: point and click, then click to place the insertion point and drag to select the text.

Several objects: Hold down Shift while clicking the objects.

Adjacent objects: Hold down Shift while you drag an imaginary box around them.

When you hold down Ctrl while clicking, the selection state of a group of objects toggles on and off.

The name of the selected object appears on the status bar in the lower right corner of your screen.

Contained objects

For information on selecting contained objects, see To select a contained design object.


To make a design object selectable or unselectable

See also

By default, you can select any object in a design window. To prevent an object from being selected,

1.	Right-click the object and choose Properties.

2.	Uncheck the Selectable property on the Design page.

When an object is not selectable, you can select any object it contains, but you cannot select or the container object. This means you cannot move it or perform any other action that requires the object to be selected. You can still change its properties by right-clicking it.


To place a design object on a form or report

See also

1.	Click the tool you want. Each design window has its own Toolbar, called the Standard Toobar:

Form Design Toolbar

Report Design Toolbar

2.	In the design window, create the object in one of the following ways:

Click to place the object using its default size.

Click and drag to place the object and specify its size.

Shift+click and drag to constrain the object:

Any object except an ellipse or line is created as a rectangle.

An ellipse is forced to be a circle.

A line is forced to be horizontal, vertical, or at a 45 degree angle.

The pointer reverts to the Selection Arrow after you place an object.

To create more than one object of the same type, hold Shift down while you select the tool you want from the Toolbar. The tool remains active until you click another tool, or click the Selection Arrow.

Note:	Keyboard equivalents for the Toolbar's design tools are not available.


To duplicate a design object

See also

You can place a duplicate of an object adjacent to the original object.

1.	Select a design object.

2.	Choose Design|Duplicate.

Paradox puts a copy of the selected design object just below the original design object.

You can duplicate objects only within the same window, not from one window to another.

3.	Move and resize the copy as you want.

The duplicated object is a completely independent object, just as if you had copied the original to the Clipboard and then pasted it in, or as if you had created it from scratch. The object is not placed on the Clipboard.

To copy an object to the Clipboard, use Edit|Copy. You can then paste it where you want it by choosing Edit|Paste.

You can also duplicate a selected object by clicking the Duplicate Object button on the Align Toolbar. To display the Align Toolbar, choose View|Toolbars and check Align.

To duplicate a table or multi-record object

If the object you are duplicating is a table or multi-record object, a duplicate would violate the rule that a report cannot have two objects of the same type representing the same table in the data model. So when you duplicate an object of this type, Paradox creates the object with an undefined table with the same table-level properties (color, column positions, and so on), but with fields replaced by undefined fields.


To group design objects

See also

You can group objects so they behave as one object during certain operations.

1.	Shift+click to select the objects. The objects must all belong to the same container.

2.	Choose Design|Group.

To ungroup objects,

Do one of the following:

Choose Design|Ungroup.

You can also use the Group Objects button on the Align Toolbar to group and ungroup objects. To display this Toolbar, choose View|Toolbars and check Align, or right-click on an empty area of any Toolbar and check Align.

Why to group objects

When you group objects, they function as a single object. When you select a group, a single set of handles forming a rectangle appears surrounding the whole group. You can move or delete the group as a whole.

Groups act like other containers, except they contain only the objects you selected. They are especially useful if you want some, but not all, close objects to act like a unit. Use groups to

Create a collection of objects that you want to use as a one object.

Reserve the relative positions of design objects when you move or resize them.

Influence tab order in forms. Paradox's default tab order moves to every object within a group before moving outside the group. The most effective way to influence tab order is to use the Run Time Tab stop property.

A group can't contain another object that isn't a member of the group, even if that object is completely within its borders. To add another member to the group, you can either create a new group or ungroup and redefine the group.

Nested groups

Groups can exist within other groups. You can select a group and select other design objects, then group all of them together. The first group remains intact within the larger group.

Group properties and methods

You can view or change a group's properties, and you can attach ObjectPAL methods to the group.

Tip:	When you run a form, Paradox's default tab order moves to every object contained within an object before moving outside the container object. You can use groups to change this tab order when you want to move among specific objects more quickly.


To stack design objects

See also

Objects in a design document can be on top of or underneath other objects. You can change the layering of objects or groups of objects.

1.	Select an object.

2.	Use the following Design menu commands:

Bring To Front moves the selected object to the top position, in front of all other objects.

If you select a group of objects and choose Bring To Front, the internal ordering of the group is maintained and the entire group is brought to the top position.

Send To Back moves the selected object or group of objects behind any other objects.

If objects have transparent colors, you might have difficulty determining their order.

You can also use the Bring To Front and Send To Back buttons on the Form Align Toolbar. To display this Toolbar, choose View|Toolbars and check Form Align, or right-click on an empty area of any Toolbar and check Align.

Contained objects

Bring To Front and Send To Back change the order only within a container.

Tab order

Tab order in the design windows corresponds to stacking order (back to front). You can use the stacking commands to adjust your design tab order. Stacking order does not affect tab order at run time (the Tab Stop and Choose The Next Tab Stop properties do this).


To display frames for design objects

See also

You can display objects on your screen with or without frames.

1.	Choose Form|Settings or Report|Settings to open the Designer page in the Settings dialog box.

2.	Check Frame Objects.

If Frame Objects is checked, objects without a clear frame or outline are outlined by dotted lines to help you see them. You might want to uncheck this if you have many of these objects because they can look cluttered.

If Frame Objects is unchecked, Paradox shows frames only on objects whose Frame property (the frame's color, style, or thickness) you have changed.

These frames appear only in design windows.


To display outlines for design objects while moving or resizing

See also

You can specify what you see when you move or resize an object.

1.	Choose Form|Settings or Report|Settings to open the Designer page in the Settings dialog box.

2.	Check Outlined Move/Resize.

Uncheck Outlined Move/Resize to see the object itself move, grow, or shrink as you move or resize it.

Check Outlined Move/Resize to see an outline of the object move, grow, or shrink as you move or resize the object.

Most moving and resizing is faster with Outlined Move/Resize checked. This is because Paradox does not redraw the screen image until the operation is complete. However, some operations are clearer when you can see what is happening throughout.


To display design object size and position on the status bar

See also

You can display in the status bar the size and position of design objects as you create or resize them.

Choose View|Size And Position.

The right end of the status bar then displays the position (based on an xy axis) and size of the currently selected object.

When you move or resize an object, the left side of the status bar tells you which object is moving, and its position. This can help you move or resize objects more accurately. When you finish moving or resizing, the size and position at the right of the status bar are updated.

Note:	On the View menu, Ruler, Grid, and Size And Position are settings, not properties or preferences.


To move design objects

See also

You can move objects in a design document using the mouse or the keyboard. You can also move objects indirectly by using Design|Align or Design|Adjust Spacing.

To move objects with a mouse,

1.	Select the object.

2.	Drag the object to its new position.

When moving an object, Shift+drag forces it to move only horizontally or only vertically. If you move the mouse along a diagonal line that is flatter than 45 degrees, the object moves horizontally; otherwise, it moves vertically.

To move objects with the keyboard,

1.	Use Tab to highlight the object.

2.	Use the arrow keys to move the object to its new position.


To align design objects

See also

You can align design objects to the left, right, and center horizontally, and to the top, bottom, and middle vertically.

1.	Shift+click to select the objects. You must select more than one object.

2.	Choose Design|Align to see the Align menu.

Align Left moves each object so that its left side aligns with the left side of the leftmost

Align Center moves the objects to align their midpoints vertically.

Align Right moves each object so that its right side aligns with the right side of the rightmost object.

Align Top moves each object so that its top aligns with the top of the highest object.

Align Middle moves the objects to align their midpoints horizontally.

Align Bottom moves each object so that its bottom aligns with the bottom of the lowest object.

Notes

If the objects are inside a table, they align within their column.

An object never leaves its container  in order to align; it goes as far as it can in the indicated direction, then stops. Aligning the object won't break the container relationship.

In reports, objects that are in different bands can't be aligned vertically using Design|Align.

If Snap To Grid is on, Paradox moves the objects to the closest grid point possible.

Tip:	Alignment actions can also be performed using tools on the Align Toolbar. To display this Toolbar, choose View|Toolbars and check Align.


To adjust the spacing of design objects

See also

You can adjust design objects so that the space between the objects is exactly the same.

1.	Shift+click to select the design objects. You must select more than one object.

2.	Choose Design|Adjust Spacing to see the Adjust Spacing menu.

You can adjust either the horizontal or vertical spacing.

Tip:	You can also adjust spacing using tools on the Form Align Toolbar. To display this Toolbar, choose View|Toolbars and check Form Align.


To pin design objects in place on a form or report

See also

To make sure an object in a form or report does not get moved accidentally in the design window, pin the object to the design:

1.	Right-click the object and choose Properties.

2.	On the Design properties page, check one of the following:

Pin Horizontal lets you move the object up or down, but not left or right.

Pin Vertical lets you move the object left or right, but not up or down.

Check both Pin Horizontal and Pin Vertical to keep an object from moving in either direction.

You can move pinned objects by actions such as Design|Align. Pinning only prevents you from inadvertently moving an object with the mouse.

Contained objects

You pin an object relative to its container. You can move a pinned object's container as long as the container itself is not pinned.

Moving or resizing an object to surround a pinned object does not cause the pinned object to become contained, even if it is fully within the resized object's boundaries.

Pinning has no influence on objects contained in text.

Pinning at run time

In addition to pinning objects in the design window, you can also pin them when you run (print or view) a report. See To pin design objects at run time.


To change the size and shape of a design object

See also

To change the size, shape, or position of a design object, do one of the following:

Drag the object.

Shift+drag from a corner handle to constrain the object as follows:

All objects except lines maintain their current proportions.

Lines are forced to be horizontal, vertical, or 45 degree angles.

Some helpful hints

To make a box bigger, drag one of its handles.

If a text object does not resize with the handles, try right-clicking the text object and changing its grow options.

You can resize only the first page in a form. The other pages have handles only to show when they are selected.

If an OLE object or bitmap does not resize with handles, turn off its Size To Fit property. (Right-click object, choose Properties and uncheck Size To Fit on the Design page.)

If an object has the Pin property on, it does not move in the pinned direction when you drag.


To adjust the size and spacing of multiple design objects

See also

You can adjust the size and spacing of design objects to achieve a symmetrical look. For example, if you create a group of buttons you can make them all exactly the same width and height.

1.	Shift+click to select the objects.

You must select more than one object.

2.	Choose Design|Adjust Size to display the Adjust Size menu.

3.	Make a selection from the Adjust Size menu:

Minimum Width resizes all objects to the width of the narrowest object.

Maximum Width resizes all objects to the width of the widest object.

Minimum Height resizes all objects to the height of the shortest object.

Maximum Height resizes all objects to the height of the tallest object.

If Paradox cannot resize an object, it disregards that object and resizes all the objects it can.

Tip:	You can also adjust size and spacing of multiple objects using tools on the Form Align Toolbar. To display this Toolbar, choose View|Toolbars and check Form Align.


To size a field object

See also

You can make a field expand or contract in the design window when its contents gets larger or smaller. (This can happen when you make changes to the field object properties such as display type, font, or size.)

1.	In the Form Design or Report Design window, right-click the field object and choose Properties.

2.	Check Size To Fit on the Design properties page.

For more information, see Size To Fit.


About contained design objects

See also

When one object exists completely within the borders of another, it can be "contained" by the outside object. Contained objects move when you move their containers and are deleted when you delete their containers. To be a container, an object must have Contain Objects checked on its Design menu. Otherwise, objects within its borders remain independent of it.

All objects that can use the Contain Objects property have it checked on the Design property page by default. (Right-click object, choose Properties and check Contain Objects on the Design page.)

If you uncheck this property for an object, the object moves independently of any objects within its boundaries. When this property is checked, all objects within the object's boundaries become contained by it.

You cannot change the Contain Objects property on some objects (table frames, records, fields, pages, bands in reports, multi-record objects, crosstabs, and pages in forms). The contents of these objects can exist only as part of the object. For example, a record cannot exist apart from the table frame that contains it.

Tab order

The containership hierarchy influences default tab order because users must tab to all objects within a container before tabbing out of the container. You can alter tab order more effectively by changing Choose The Next Tab Stop on an object's Run Time property page.

To examine the containership hierarchy of your design, use the Object Explorer button.

Unbreakable contained relationships

You cannot move certain objects out of their containers under certain circumstances. For example, if you are working with a labeled field object, you cannot move either the field label (a text object) or the field edit region out of the container. This is because the labeled field object, by definition, includes all three parts in a contained relationship.


To create a contained design object

See also

1.	Select the container object in a Form Design or Report Design window.

2.	Right-click the object and choose Properties

3.	Make sure the Contain Objects property is checked on the Design property page.

4.	Place the object you want to contain inside the container object. Either

Create a new object within the borders of an existing object.

Move an existing object completely within the borders of another object.

Move or resize a container around an object.

Paste an object into another.

The contained object must be completely within the borders of the container object.

If the container object has a frame, the contained object must be completely within the frame.

If Snap To Grid is on, you may have difficulty containing one object in another because both objects might try to align on the same grid line. In this case, resize one or both of the objects so they snap to different grid lines, or turn off Snap To Grid.

Tip:	You can contain objects in tables only if they fit fully within a column and row. If you remove a field from a table, it can be very difficult to put it back if the cell it left was exactly sized to fit (as they are by default). In such a case, try widening the column slightly and making the row slightly larger.


To select a contained design object

See also

Suppose you have an ellipse contained in a box. When you click the ellipse, what do you want selected [image] the box or the ellipse? Paradox's default action is to select the outermost object first. This means, even though you click inside, Paradox selects the outer object first. The second click selects the ellipse.

To alter this behavior permanently,

Choose Edit|Preferences, and check Select From Inside on the Designer page.

To alter this behavior temporarily,

Choose Form|Settings, and check Select From Inside on the Designer page.


To break a container relationship

See also

Do one of the following:

Right-click the container object, choose Properties and uncheck Contain Objects on the Design properties page.

Select the contained object and move it outside the border of the container.

You do not need to move the contained object completely outside the container borders. The relationship is broken when one part of the contained object is moved outside the container frame.


To delete a contained design object

See also

1.	Select the contained object to delete.

2.	Press Del.

If you delete an object that has Contain Object checked, Paradox deletes the object and everything it contains. (Choose Edit|Undo to undo the deletion.)

Keep these rules in mind when you delete objects in container relationships:

Deleting a container deletes any objects contained in it.

Deleting a contained object does not affect its container.


To delete a container but not its contained objects

See also

1.	Select the container object and right-click it.

2.	Choose Properties then do one of the following:

Uncheck the container's Contain Objects property and then delete the container.

Multi-select the contents and move them out or cut them to the Clipboard, then delete the container, and move or paste the contained objects back.

Note:	You can also select the container and then select Edit|Select All to select all the contained objects before deleting or moving them.


To change the name of a design object

See also

You can change the name of most design objects.

1.	Right-click the object and choose Properties from its menu.

2.	On the General property page, type the new name for the object in the Name Of Object text box.

Object names can be 32 characters long.

Only letters, numbers, the underline character ("_"), and the pound sign ("#") can be used in an object name. Object names cannot contain spaces.

3.	Choose OK.


About scroll bars in forms

See also

Objects in forms and reports can have scroll bars, but the scroll bars differ for forms and reports.

When you place a scroll bar on an object in a form design, the scroll bar appears when the form runs, and the user can scroll through the object.

You can add scroll bars to the following object types:

Text (vertical scroll bar only)

Graphic

OLE

Field object

Table frame

Paradox automatically places a horizontal scroll bar along the bottom of a table frame if you define a table too large to fit on the page when Size To Fit is checked on the Design property page.

Multi-record object

Notebook (See To place a scroll bar on a notebook.)

Form pages

Report pages in the design window

Scroll Bar properties

Horizontal Scroll Bar property

Vertical Scroll Bar property


About scroll bars in reports

See also

Objects in forms and reports can have scroll bars, but the scroll bars differ for forms and reports.

Some objects in reports can have scroll bars, but the scroll bars do not appear when the report is being previewed or printed. You use the scroll bars in a Report Design window to view text and graphics that don't fit in their allocated space. At run time, the object expands to fit its contents and the scroll bars disappear. When the object expands, it may push objects beneath or to the right of it.

Text objects

When you work with a text object in the Report Design window, you can place a vertical scroll bar along its right side. You can then enter large amounts of text in the design window without resizing the text object.

When you run the report, Paradox can expand the text object vertically down the page to display its entire contents. The expansion of the text object may push objects beneath it. You can control the effects of object expansion using Run Time properties.

Graphic and OLE objects

If you resize a graphic or OLE object container to be smaller than its contents, you can place scroll bars across its bottom or along its right side. Use the scroll bars to view different sections of the object. Use this technique to crop the object to show only part of it.

When you preview or print the report, the object's Size To Fit property on the Run Time page determines whether the frame expands to fit the contents or remains fixed and shows only part of the graphic or OLE value.

Tables and multi-record objects

You can place a horizontal scroll bar on a table frame in a report. This lets you scroll through the table frame while in Report Design window. When you run the report Paradox deletes the scroll bar and expands the table frame to display its entire contents. The expansion may push objects beneath it. You can control the effects of object expansion using Run Time properties. See Run Time page (reports).

If a table's contents are too wide to fit on the page, you can indicate in the Print File dialog box how to handle data that does not fit on the page.

Scroll Bar properties

Horizontal Scroll Bar property

Vertical Scroll Bar property


To place a scroll bar

See also

To place a scroll bar on an object,

1.	Right-click the object in a Form Design or Report Design window and choose Properties.

2.	Check one of the following properties on the General page:

Horizontal Scroll Bar places a scroll bar along the bottom of the object.

Vertical Scroll Bar places a scroll bar along the right side of the object.

For information on using scroll bars in forms and reports, see the following topics:

About scroll bars in forms

About scroll bars in reports

Note:	The scroll bar properties vary depending on what object you have selected. For example, text objects do not have Horizontal scroll bars.


To change the width of a scroll bar

See also

Paradox's default scroll bar is narrow. To display a standard-width scroll bar,

1.	Right-click the object in a Form Design or Report Design window and choose Properties.

2.	Check Wide Scroll Bar on the General page.

This setting affects both the horizontal and vertical scroll bars for the selected design object.


To change properties from the Object Explorer

See also

If your design has many objects, and especially if you attach ObjectPAL code to them, you might forget what something does or what you have named it. Paradox provides a handy way to step back from the design and see all objects you have placed.

The object tree half of the Object Explorer displays a schematic diagram of your form or report design. This diagram shows you the design objects and their relationship to one another.

To change the properties of a design object,

1.	Display the Object Explorer in one of the following ways:

Press Ctrl+Enter.

Choose Tools|Object Explorer.

Click the Object Explorer [image] button on the Toolbar.

Right-click an object, and choose Object Explorer from its menu.

By default, both panes of the Object Explorer are displayed.If only one side of the window is displayed, choose View|Both.

2.	Click an object in the object tree.

3.	Use one of the following methods to change an object's properties:

In the object tree,

Right-click the object and choose Properties. Change the properties on the appropriate property page.

On the tabbed Property page,

Select a property, then do one of the following:

Right-click it and choose Edit Property.

Press Enter and type the name of the new property.

Click on a property, then click its down arrow to select a different property

You can use the arrow keys to move from object to object in the object tree.

The object tree is especially useful if you have a large design and do not want to use the scroll bars to navigate around in it.

Choose File|Print to print the diagram, or File|Close to close the object tree window.

For more information on the Object Explorer, see Tools|Object Explorer.


To change penetrating properties

See also

Penetrating properties are those properties that Paradox can apply to any object in a selected group and to any objects contained by a selected object. You use the penetrating properties feature to change properties multiple objects have in common on a design document. For example, if, after creating a form with multiple fields on a page, you want to change the color of the edit region for all the fields, you can select them all and change the color property one time. This saves you a lot of time when designing a form or report.

To change penetrating properties for objects on a form or report,

1.	In a Form Design or Report Design window, hold down Ctrl and at the same time right-click an object. (Or press Shift+F6.)

2.	Choose Properties.

Paradox displays dialog box that contains all properties that can be applied to any of the selected objects. Some can apply to all of the objects. Others might apply to only one of the objects.

3.	Choose a property from dialog box and change it.

Paradox applies your property choice to all objects for which the property is valid and to any objects contained by a selected object. Some of the properties can apply to any of the objects. Others might apply to only one of the objects.

Contained objects

If you Ctrl+right-click a contained object in Step 1 of the above procedure, Paradox applies the changes to any objects contained by a selected object. To change properties for the container only, select the container and right-click it.


To change penetrating properties of all objects

See also

You can change the properties for the design document itself, or the design document and all objects it contains.

1.	Make sure no objects are selected by pressing Esc until the lower-right corner of the status bar indicates the Form or Report is selected.

2.	Do one of the following:

To change only the design document itself, press F6 and choose Properties. Choose the property you want to change.

To change the design document and all the objects it contains, press Shift+F6 and choose Properties. (You can also Ctrl+right-click the form or report's title bar.) Choose the property you want to change.

Suppose you want to change the penetrating properties for everything on the form or report. First make sure no objects are selected, then right-click the form's page or the report's band as described below:

In a form, if you select nothing and

Right-click, you'll see the page's property menu. Paradox applies your property choice only to the page.

Ctrl+right-click, you'll see the penetrating properties of the page. Paradox applies your property choice to the page and all objects on the page for which the property is valid.

Ctrl+right-click the window's title bar, you'll see penetrating properties of all pages of a multi-page form.

In a report, if you select nothing and

Right-click, you'll see the selected band's property menu. Paradox applies your property choice only to the band.

Ctrl+right-click, you'll see the penetrating properties of the selected band. Paradox applies your property choice to the band and all objects in the band for which the property is valid.

Ctrl+right-click the window's title bar, you'll see penetrating properties of all bands of the report.


To add a method to an object with the Object Explorer

See also

ObjectPAL is Paradox's database application development language. You use ObjectPAL by attaching methods, pieces of ObjectPAL code, to objects on a form. You can create methods that manipulate data, respond to actions, and perform functions.

All objects in a form, including the underlying page of the form, have the Object Explorer choice available on their menus. Choose this to define the ObjectPAL methods you want to attach to the object.

See To create a new method in the ObjectPAL Reference.

Refer to your ObjectPAL documentation for information on using ObjectPAL.


About boxes, ellipses, and lines

See also

Paradox provides three drawing tools [image] the Box, Ellipse, and Line [image] that you can use to add graphical elements to your design.

Use the Box tool to create squares, rectangles, and boxes.

Use the Line tool to draw horizontal, vertical, or diagonal lines.

Use the Ellipse tool to create circles and ellipses.

To create boxes, lines, and ellipses, click the appropriate tool, then drag in the design until the object has the shape and size you want. For more information about placing objects on forms, see To place a design object on a form.

Design objects have a default size, except for the text object. Click the appropriate tool on the Toolbar, then click in the form or report to place an object. The object appears the default size. You can resize it by grabbing one of the sizing handles surrounding it with the mouse and dragging the object to a new size. See To change the size and shape of a design object.


Using boxes and ellipses to keep design objects together

See also

When a box or ellipse completely surrounds the borders of another object, the object within the box or ellipse is "contained."

Contained objects

Move when you move their containers

Are deleted when you delete their containers

Are duplicated with the container as a group using Design|Duplicate

See About contained design objects.

Deleting objects within a box or ellipse

If a box or ellipse surrounds an object, and you want to delete the box or ellipse but not the object within it, make sure the box's or ellipse's Contain Objects property is unchecked. See To delete a contained design object.


About boxes

See also

Place a box around objects to give them frames, or use a box alone for visual impact.

You can surround objects with a box by dragging a box around existing objects, or by dragging existing objects into a box.

You can customize boxes to get just the look and functionality you need.


To place a box on a form or report

See also

1.	Click the Box [image] tool.

2.	Click to place the box using its default size, or click and drag to place the box and specify its size.

When you release the mouse, a ruling box with handles appears around the box.

3.	Use the handles to change the shape of the box.


About ellipses

See also

Place an ellipse around objects to give them frames, or use an ellipse alone for visual impact.

You can surround objects with an ellipse by dragging an ellipse around existing objects, or by dragging existing objects into an ellipse.

You can customize ellipses to get just the look and functionality you need.


To place an ellipse on a form or report

See also

1.	Click the Ellipse [image] tool.

2.	Click to place the ellipse using its default size, or click and drag to place the ellipse and specify its size (drag diagonally until the ellipse is the size and shape you want).

When you release the mouse, a ruling box with handles appears around the ellipse.

3.	Use the handles to change the shape of the ellipse.


About lines

See also

You can place the following types of lines of on your forms:

Straight lines at any angle

Curved lines

Lines with arrows on the ends

You can customize lines to get just the look and functionality you need.


Controlling pushed objects with lines

See also

To maintain the alignment of multiple objects on a report as they are pushed or pulled by expanding or contracting objects, draw a line between the expanding/contracting object and the objects being pushed or pulled. The expanding/contracting object pushes or pulls the line, which subsequently pushes or pulls all the objects, maintaining their alignment with each other.

If you do not want to see the line, right-click the line, choose Properties and uncheck Visible on the Run Time page. You can see the line when designing but not when viewing or printing the data.

Tip:	Use invisible boxes for surrounding several objects that you want to keep together on a page: If the box is unbreakable, the objects push to the next page rather than splitting over two pages.


To place a line on a form or report

See also

1.	Click the Line [image] tool.

2.	Click to place the line using its default size, or click and drag to place the line and specify its size.

Handles appear at each end of the line when you release the mouse.

3.	To change the line size, drag its handles.


To create a curved line

See also

After you draw a line, you can change it to a curved line.

1.	Right-click the line and choose Properties.

2.	In the Line Type area of the Style page, choose Curved.

3.	Drag an endpoint to adjust the angle of the curve.

The direction of the curve depends on the direction in which you draw the line, on which endpoint you drag, and on the direction you drag the endpoint, as shown in the following figure.

In the following figure, each curved line was drawn in the direction of the arrow above it. The X shows the endpoint that was dragged to make the curve.

Experiment with dragging either endpoint to get the effect you want.

To straighten a curved line,

Right-click it and change the Line Type to Straight on the Style property page.


To add arrows to straight lines

See also

You can place arrows on the ends of straight lines you draw. (Only straight lines can have arrows.)

1.	Right-click a line and choose Properties. Click the Style page.

2.	Change the Line Ends property:

No Arrow puts no arrows on the line.

Arrow on one End places an arrow on one end of the line. You create a line by clicking and dragging with the mouse, and Paradox places the arrow on the end of the line where you release the mouse. The arrow points in the direction you drag to create the line.

Arrow on both Ends places arrows on both ends of the line.


About graphics

See also

You can place graphic images in a form or report by first putting a graphic object on the document, then inserting the graphic inside the graphic object. You can paste a graphic from the Windows Clipboard, or paste the image from a .BMP, .PCX, .TIF, .GIF, or .EPS file.


About raster operations

See also

When you define a graphic object, you identify a source graphic (a file) to be placed in a destination (your computer's screen). Most often, Paradox assumes you want an unchanged copy of the source placed on the screen.

Suppose, however, you want the source graphic and the screen to interact. You might want to make the source graphic transparent, so the color of the page shows through it, or you might want to invert the color of the source graphic. To achieve these effects, use the graphic object's Raster Operation properties.

Raster operations define how Paradox combines the source graphic with the destination [image] inverting, combining, including, or excluding colors to your specifications. Paradox uses the Boolean AND, OR, and XOR comparison operators to combine individual pixels of color during raster operations.

The following table briefly describes each raster operation.

Raster operation	Onscreen result

Source Copy	Copy an unchanged source graphic to the destination.

Source Paint	Combine the source graphic and the destination using the Boolean OR operator.

Source And	Combine the source graphic and the destination using the Boolean AND operator.

Source Invert	Combine the source graphic and the destination using the Boolean XOR operator.

Source Erase	Invert the destination and combine it with the source graphic using the Boolean AND operator.

Not Source Copy	Invert the source graphic and copy it to the destination.

Not Source Erase	Combine the source graphic and the destination using the Boolean OR operator.

Merge Paint	Invert the source graphic and combine it with the destination using the Boolean OR operator.

Demonstration of raster operations

To see the effects of these raster operations, open RASTEROP.FSL in your SAMPLE subdirectory (or wherever you installed the sample applications.)


To place a graphic on a form or report

See also

Paradox uses frames to contain all graphics. To place a graphic on a form or report, first create the frame, then insert the graphic.

To make a graphic frame,

1.	Click the Graphic [image] tool.

2.	Click to place the graphic frame using its default size, or click and drag to place the graphic frame and specify its size.Drag in the design area to create a frame.

The words Undefined Graphic appear in the graphic object.

When you release the mouse, a ruling box with handles appears around the frame.

3.	Use the handles to change the shape of the frame.

To place a graphic in the frame,

1.	Right-click the graphic object to see its menu.

2.	Do one of the following

Choose Paste to place the contents of the Clipboard in the graphic object. (If the Clipboard is empty, Paste is dimmed.)

Choose Paste From to place a file in the graphic object. You'll see the Paste From Graphic File dialog box.

When you define a graphic object, Paradox resizes it to fit the contents of its frame and checks its Size To Fit property. You must uncheck this property before you can resize the graphic object.


To move a graphic

See also

Clicking inside a graphic's container moves the graphic within the container, so you must select the container to move the graphic object as a whole.

1.	Click outside the graphic object.

2.	Click the container. When handles appear, you can move the object as a whole.

3.	Click the container a second time to activate the graphic. The handles disappear, but you still see shadows on the rulers; and the pointer looks like a hand. Now you can move the graphic withinin the container.


To copy a graphic to a file without using Export

See also

1.	Select the graphic object.

2.	Use Edit|Copy To as described in Edit|Copy To.


To crop a graphic

See also

If a graphic is too big for its frame, you can move the graphic within its frame or cut the graphic down to the size and area you want.

1.	Right-click the container and choose Properties. Make sure its Size To Fit property is unchecked on the Design page. (Size To Fit is checked by default, and gets checked automatically when you put a graphic into a graphic object.)

2.	Drag the container until it is smaller than the graphic it contains.

3.	Click the graphic to select it. The pointer changes to an open hand.

4.	Drag the graphic around in the container to the position you want within the frame.

5.	Resize the container if necessary.


To resize a graphic or OLE object on a report

See also

When you place a graphic or OLE object in the Report Design window, the container you place automatically expands to fit the size of the contents. This is because the Size To Fit property is checked by default.

To resize a graphic or OLE object,

1.	Right-click the OLE object and choose Properties from its menu.

2.	Uncheck Size To Fit on the Design page.


Example of creating a mask for a graphic

See also

Suppose your form's page is colored, and you want to place a graphic object on it. If the background of the graphic object doesn't match the color of the page, the borders of the graphic will be obvious. Use a mask to make some areas of the graphic transparent, so the page's color shows through it.

For example, suppose your form's page is yellow, and you want to place an oval-shaped graphic object on it. Unless the background of the oval graphic and the yellow of the page match exactly, you'll be able to see the borders of the graphic object.

To see examples below, click the button.

Original graphic

Masked graphic

To create the mask,

1.	Make a copy of the source graphic. Call it MASK.BMP.

2.	In a paint program, modify MASK.BMP so that the parts you want transparent are black and all other parts are white.

The mask

3.	In the Form Design window, place a graphic object, then right-click it and choose Paste From.

You'll see the Paste From Graphic File dialog box. Choose MASK.BMP from the File Name list to insert it into the graphic frame.

4.	Right-click the graphic object and choose Properties. Click the Raster Operation page and choose Source Paint.

The mask after applying Source Paint

5.	Place another graphic object. Right-click it and choose Paste From. In the Paste From Graphic File dialog box, select your original graphic.

6.	Right-click the original graphic object and choose the Source And raster operation.

The original graphic after applying Source And

7.	Select both graphic objects (Shift+click them).

8.	Right-click one of the objects and choose Frame|Style. Choose the top style on the Frame palette to remove the frames from the graphic objects.

9.	With both graphic objects still selected, choose Design|Align|Align Left. Then choose Design|Align|Align Top. Finally, choose Design|Group.

When the original graphic and the mask are combined, the areas you want transparent allow the page color to show through.

Note:	The order you place the bitmaps on the form determines the results, as it affects which bitmap is in front. If you place the original bitmap on the form before the mask, before you align them, you need to select the original and choose Design|Bring to Front.


Original graphic

This is the original graphic on a yellow form page. It is completely opaque. The shape of the container obscures the page color.


The mask

On the left is the original graphic. On the right is the mask (MASK.BMP). The part you want to be transparent is is changed to black on the mask, and everything else is changed to white.


The raster operation Source Paint applied to the mask


The raster operation Source And applied to the original graphic


Masked graphic

This is the result of using a mask. The area surrounding the oval picture is transparent [image] the page color shows through it.


About text

See also

Text objects in forms and reports fill a variety of needs. Use them to add labels, provide instructions, or create titles. You can change the formatting, alignment, color, font, and wrapping of text objects. Text objects can be placed separately on a form, using the Text tool, or, they can appear automatically as part of another design object, for example as a label in a field, or a heading in a table frame.


To place a text object on a form or report

See also

You create a text object and type text inside the object's frame.

Text objects in forms and reports grow and shrink to fit text differently, depending on how you create them.

To define the frame size before typing

1.	Click the Text [image] tool.

2.	Click to place the text object using its default size, or click and drag to place the text object and specify its size.

3.	Begin typing.

As you type, Paradox automatically wraps the text at the right border of the frame.

When you reach the bottom of the frame, Paradox scrolls the text upward so you can view the text you are entering.

This type of text object has the Fixed Size property checked [image] it does not grow or shrink based on the amount of text you enter into it. You can manually resize it by dragging the frame.

To start typing without defining the frame size

1.	Click the Text [image] tool.

2.	Click in the design area and begin typing without dragging to create a frame.

Paradox creates a single-row text object that expands to the right until you press Enter. The insertion point then moves to a new line.

As you continue typing, the text wraps automatically at the right border (which you defined by pressing Enter) and continues to expand downward until you finish typing and click somewhere else. If you delete text, the text object shrinks in height, leaving no empty space.

This type of text object has the Fit Text property checked [image] it grows or shrinks to fit the amount of text you enter into it. The Word Wrap property for this type of text object turns on automatically when you press Enter.

When Word Wrap is checked on this type of text object, you can resize the object horizontally only. When Word Wrap is unchecked, you cannot resize the text object at all. (If you need to resize the object, right-click the object and choose Properties. In the Design Sizing area of the General page, choose Fixed Size.)


To change text in a text object

See also

You can only enter and edit text in text objects in the design window. When you run the form or preview the report, you can see text objects, but you cannot edit them.

1.	Click the text object to select it.

The pointer changes to the insertion point.

2.	Click again to place the insertion point in the text object. The sizing handles disappear to show that the text object is ready for editing.

3.	Type the text.

After editing the text, do one of the following:

Press Esc or Tab.

Click outside the text object.

Choose another tool from the Toolbar, or click the Selection Arrow.

If your text object is a Fit Text type and contains no text, Paradox deletes the text object from your design.

To edit text using the keyboard,

1.	Press Tab to select the text object.

2.	Press F2.

3.	Use the arrow keys to move the insertion point to the place in the text you want to edit.


To insert fields in text

See also	Example

You can insert fields within a text object in a form or report design. This is especially useful in a report, because you can use it like a mail merge.

1.	Begin typing within a text object.

2.	Press F5 to insert an unlabeled, undefined field.

3.	Define this field as you would any other.

When you run the form or report, Paradox extracts the text value of the field and wraps it in its position within the line of text. The text following the field value is correctly spaced.


Example of inserting fields in a text object

See also

Suppose you want to include the following line in a report using the Customer and Orders tables, with a Customer [image] Orders data model and a blank design layout.

"You have placed X orders for a total of $X, since you began doing business with us."

To create the line,

1.	Using the field tool, place a field object in the record band of the report. Define it as CUSTOMER.DB:Customer No.

2.	Place another field object in the record band, only this time define the field as CUSTOMER.DB:Name.

3.	Place a text object in the record band of the report.

4.	In the text object, do the following:

1.	Type You have placed and then press Spacebar to place a space between the text and the field value.

2.	Press F5 to insert an undefined field.

3.	Press Spacebar again to place a space after the field value, then type orders for a total of.

4.	Press F5 to insert another undefined field.

5.	Type , since you began doing business with us.

4.	Select the first field object in the text object, then right-click it and define it as Count(ORDERS.Order No). (See To define a summary.)

5.	Select the second field object in the text object, then right-click it and define it as Sum(ORDERS.Total Invoice).

6.	When you run the report, Paradox pushes or pulls the text surrounding the field objects to adjust for the size of the field values.

Note:	If the text object's Line Squeeze property is checked on its Run Time property page, and if there is only one field embedded in a line of text, and the field value is blank, Paradox blanks out the entire line of text that contains the blank field. A line of text is considered to be anything between two carriage returns, and so might be thought of as a paragraph.


To select text to change properties

See also

When you specify properties for a text object, the way you select the text determines how Paradox applies the properties.

To change properties for the entire text object

Select the entire text object before setting properties.

1.	Click away from the object.

2.	Right-click the text object.

Selection handles appear around the object.

3.	Specify properties for the object.

Paradox applies the properties to all text in the text object.

To change properties for selected text

Select the text before setting properties.

1.	Click and drag over text to highlight it.

2.	Right-click the highlighted text.

3.	Specify properties for the text.

Paradox applies the properties only to the highlighted text.

To change properties for text you are about to type

Place the insertion point in the text object before setting properties.

1.	Place the insertion point in the text object but do not highlight text.

2.	Right-click the text object.

3.	Specify properties for the text.

Paradox applies the properties to all text you subsequently type.


To specify a font and typestyle for text

See also

You can specify the font, typeface (Courier, Times Roman, and so on), size, style (bold, italic, and so on), and color of the text, using the Text Formatting Toolbar and the text object property pages.

To use the Text Formatting Toolbar

1.	Select the text object or highlight the text to change.

2.	Click the appropriate a tool on the Text Formatting Toolbar.

To right-click the object

1.	Select the text object or highlight the text to change.

2.	Right-click the text object or highlighted text and choose Properties from its menu. Change the text properties on the appropriate pages.

Note:	The typefaces available from the Typeface menu depend on the fonts installed on your system.


To align text

See also

You can align values in a field or table object, and you can align text in a text object and in the edit region of a field object.

To use the Text Formatting Toolbar

1.	Select the field, table, or text object in a Form Design or Report Design window.

2.	Click an alignment tool on the Text Formatting Toolbar.

To right-click the object

1.	Select the field, table, or text object in a Form Design or Report Design window.

2	Right-click the object or highlighted text and choose Properties from its menu.

3.	Set the alignment property on the Text property page to one of the following:

Left lines up text at the left, with the right edge ragged.

Center clusters text in the middle of the object.

Right lines up text at the right, with the left edge ragged.

Justify spreads out text so both left and right margins are straight.

Tabs, margins, indents, line spacing, and alignment options are also available from the expanded ruler. See About the expanded ruler.


To specify the line spacing for text

See also

To use the Text Formatting Toolbar

1.	Select the text object or highlight the text to change.

2.	Click a line spacing tool on the Text Formatting Toolbar.

To right-click the object

1.	Select the text object or highlight the text to change.

2.	Right-click the text object or highlighted text and choose Properties from its menu, and set the line spacing property on the Text property page.

Tabs, margins, indents, line spacing, and alignment options are also available from the expanded ruler. See About the expanded ruler.


To use word wrap

See also

You can specify word wrap for field and text objects in a form or report design. This wraps text automatically at the object's right border.

1.	Right-click the field or text object in a Form Design or Report Design window.

2.	Choose Properties, and check Word Wrap on the Text page.

Word wrap works differently for fields and text.

Fields

Displays the contents of a field in more than one line when they exceed the width of the field object. Word wrap is not available for graphic and OLE fields.

Text

Wraps text at the text object's frame. If Word Wrap is unchecked, only one line of text can display in the text object. Pressing Enter does not create a new line.


To specify how a text object grows

See also

Text objects in forms and reports grow and shrink to fit text differently, depending on how you create them. See To place a text object on a form or report.

After creating a text object, you can specify how it resizes when the text within it grows and shrinks.

1.	Right-click the text object and choose Properties from its menu.

2.	Choose choose one of the following options in the Design Sizing area of the General page:

Fixed Size wraps the text at the right border of the frame.

The object does not grow or shrink to fit the amount of text it contains. If you want to change the size of the object, select it and resize it manually.

Fit Text creates a single-row text object that expands to the right until you press Enter, moving the insertion point to a new line. As you continue typing, the text wraps at the right border that you defined by pressing Enter.

The object grows or shrinks to fit the amount of text it contains.

Grow Only works like Fit Text, except the object does not shrink when you remove text (unless you manually resize it using the handles).

The most common use for this type of text object is for a field label in a table.

The Design Sizing choices control only how the object grows in the design window, not what happens when you run (view or print) the form or report.


About OLE and native Windows controls

See also

OLE Custom Control (OCX)

You can embed 32-bit OLE Custom Controls (OCXs) into Paradox forms. OCXs can be a complex miniature application such as a spreadsheet, Internet Web browser, communications package, and grid and graphing controls.

To interact with OCXs at run time, you can write ObjectPAL code to get and set properties, invoke methods, and handle events. To interact with an OCX, you can refer to the UIObject name hosting the OLE control directly or use the OleAuto ObjectPAL type. The OleAuto type lets you communicate with an OLE server and OCXs, and Native Window Controls, by translating ObjectPAL into OLE automation calls.

Each OCX surfaces methods, properties, and/or events, which you can set and call when designing or running the form. Because OCXs are a separate application running as a sub-process of Paradox, you will find the behavior different from normal Paradox UIObjects. Each OCX has its own child window on the form and its own message queue. This gives the OCX its own event model, sometimes called the "fire event" model.

OLE controls are said to "fire" events; they are notifications that something is about to happen (before event), is happening (do event), has just finished occurring (after event), or a request to determine if an impending action is permissible (request event).

An OCX will often fire an event without asking first if it is OK to fire such an event. This is the way that the OLE control specification is written. You cannot intercept the events going to an OCX with ObjectPAL (for example, trying to disable a mouseClick() on an OCX). Because of this, ObjectPAL developers will find that the OCX model requires some adjustment.

Native Windows control (NWC)

New controls (native to Windows) have been added to provide developers with added functionality in their custom applications. This release provides five NWCs to be used in a form. These native Windows controls are:

 List Box	A list box that allows single or multi-select

 Combo Box	A drop-down edit region with a list box

 Spin Box	An edit region with Up and Down buttons to increment or decrement the value.

 Progress Bar	A rectangular progress indicator used to track the percent-finished of a process.

 Trackbar	A slider control that allows you to drag a button along a track to set values in an application.

The API for a native Windows control is directly ported from the Windows API. These controls are wrapped in an OLE container in Paradox so they behave just like an OLE control. The OLE wrapper governs its size, position, and frame style, and it provides its hooks to ObjectPAL. NWCs use the same technique as regular OLE controls (OleAuto type) to set and get the properties and to invoke methods. The NWC properties, methods, and events are visible from the Object Explorer, but cannot be set.

For all practical purposes, a native Windows control looks to the rest of the Paradox form and language system as an OLE control. The same programming concepts that apply to OLE controls apply to native Windows controls. The only difference is that NWCs do not use OLE embedding or support any kind of UI negotiation. They are an example of a "lightweight" control.

For more information on native Windows controls, see the NWC.WRI file in your Paradox 7 directory.

Using OCXs and NWCs in design mode

OLE controls are available from third-party vendors, and these vendors provide property pages for you to set properties during form design. This allows you to set the intitial state of the OCX.

Before you can use a control, you must first register it, then add it to the Object Toolbar.

You use OLE controls and native Windows controls the same way in forms. You place the control on the form, right-click it to change its properties, and add new method or events using the Object Explorer.

For information on using and modifying your specific OLE control, see the documentation from the OLE control manufacturer.

OCX's in multi-record objects, table frames and crosstabs

OLE Controls and native Windows Controls do not clone in record objects or crosstab cells. This means that these controls will not embed in either object.  If you create or move an OLE control inside a multi-record object or a tableframe, it will not be a child of the interior (repeating) record object. The same is true for crosstabs [image] the OLE control cannot be a child of (repeating) cell object. OLE controls will not repetitively clone into multiple repeating record groups.


About OLE control event types

See also

OLE controls have events that are different from Paradox events. Each control comes with a primary event set that follows a basic convention for what types of events are fired and how the event parameters are packaged. If the default event type for the control is cancellable, you can modify the event parameters to make the control behave the way you want.

OLE controls can issue events, such as click events. The names of the events issued by a control are chosen by the creator of the control. You can see the names of the events in the tabbed pane of the Object Explorer on the Events page. All methods, events, and properties that come with a control are displayed in the Object Explorer in red text preceded by a round button. These methods, events, and properties will also be listed in the documentation for the control.

Controls usually follow a naming convention for their events. For example, Do events begin with the word Do, and Request events begin with the word Request. Since After events are the most common, any event that does not begin with one of the other type names is assumed to be an After event.

OLE control events fall into four basic categories: Request events, Before events, After events, and Do events. Of the four types of controls, Before and After events are not cancellable.

Request events

A control fires a Request event to determine if an impending action is permissible, and to allow the user to cancel some action. Request events can be cancelled.

Before events

Before events are notifications that something is about to happen. They are fired before an action occurs to allow completion of actions needed before the event fires. Before events can not be cancelled.

Do events

Do events are notifications that something is happening. They are fired to allow the user to replace or supplement the control's default behavior. Do events can be cancelled. Do events usually begin with the word Do, and the last parameter is the cancel flag.

After events

After events are notifications that something has just finished occurring. They are fired after an action occurs to allow response to the action. After events can not be cancelled.

Most real controls only do the After event. For example, a typical control issues only one event for a click. The event would be called Click, comes after the click has happened, and is not cancellable.

Some controls will issue a series of related events. For example, for the click event, you could see the following events:

1.	RequestClick (Request event)

2.	BeforeClick (Before event)

3.	DoClick (Do event)

4.	Click (After event)

Any particular control might not follow these guidelines. For example, it might only expose the DoClick or the Click event.

For information on using and modifying your OLE controls, see the documentation from the OLE control manufacturer.


About ambient properties

See also

Ambient properties are properties an OLE control adopts from its container. For example, an OLE control placed on a yellow form obtains information about the form's properties, determines that it can use the yellow background color, and incorporates the form's background color into its properties, along with any other properties it can use, such as foreground color and text font.

Ambient properties can be set per control, but OLE controls are not required to use these properties. Therefore, you may not see all controls respond to changes to these ambient properties.

Ambient properties give information about the state of the container around the control. This can be the entire container (like the background color), or the immediate area surrounding the control. For example, a control can be inserted into a text document that has different sized fonts. The ambient font property of the control has different values, depending on where the control is placed.


To display the Object Toolbar

See also

OLE and native Windows controls have a separate Toolbar in the Form Design window, called the Object Toolbar. You can view this Toolbar several ways:

Click the vertical scroll buttons on the Standard Toolbar.

Choose View|Toolbars and check Object.

Right-click the background in the Toolbar area, and check Object.

Right-click the background in the Toolbar area, and choose Properties. Check Object on the Toolbars page.

Choose Edit|Preferences and check Object on the Toolbars page.


To place a control on a form

See also

1.	Display the Object Toolbar (See To display the Object Toolbar.)

2.	Click one of the tools on the Object Toolbar.

3.	Click in the design window to place the control using its default size, or click and drag to place the control and specify its size.

4.	Right-click the object to add a method or event to the object, or to change its properties.


To register an OLE control

See also

1.	Install the control on your computer according to the directions from the manufacturer.

2.	Start Paradox.

3.	Choose Tools|Register OLE Control.

4.	In the Register OLE Control dialog box, select the file and click Open.

This registers the control as well as registering Paradox as an OLE automation server.

You need to add the control to the Toolbar before you can use it in a form. Right-click the empty area of the Standard Toolbar and choose Add OLE Control.


To add a control to the Toolbar

See also

You can add an OLE control to the Object Toolbar in the following ways:

In the Form Design window,

Right-click the empty area of the Standard or Object Toolbar and choose Add OLE Control. Select the tool, then click OK.

Right-click the empty area of the Standard or Object Toolbar and choose Properties. On the Object Toolbar page, click Add OLE Control, then select the tool and click OK.


To remove a control from the Toolbar

See also

In the Form Design window,

1.	Right-click the background of the Standard or Object Toolbar area and choose Properties.

2.	On the Object Toolbar page, select the tool, then click Remove and click OK.


To add a page to the Object Toolbar

See also

In a Form Design window,

1.	Select to display the Object Toolbar. To do so, see To display the Object Toolbar.

2.	Right-click the background area of the Object Toolbar and select Properties.

3.	Choose the tab for the Object Toolbar page.

4.	Choose Add Toolbar. In the highlighted area of the list box, type in the name for the new Toolbar.

To add controls to your custom Object Toolbar page, see To add a control to the Toolbar.


To edit events on an OLE control

See also

1.	Place an OLE control on the form.

2.	Right-click the object and choose Object Explorer. (Make sure the tabbed pane is displayed with View|Tabbed Pane on the Object Explorer menu.)

3.	Double-click the event on the Events page.

4.	Edit the method in the Editor window that opens.

For information on editing methods and events, see the Guide to ObjectPAL and About the Object Explorer in the ObjectPAL Reference.


About buttons

See also

You can create buttons on a form, and. using ObjectPAL, you can associate a method to the button. The user clicks the button to initiate the operation you defined in the ObjectPAL method.

Buttons are available only in forms, not in reports.


To place a button on a form

See also

1.	Click the Button [image] tool.

2.	Click to place the button using its default size, or click and drag to place the button and specify its size.

A text object appears on top of the button so you can give it a label. You can also delete the label and use the Graphic tool to place a picture or icon on the button.


To select a button type

See also

A button's type controls its functionality. By default, a button is a standard push button. You can also create a radio button or check box.

1.	Right-click the button and choose Properties from its menu.

2.	On the General page, choose Button Type and select one of the following:

Push Button: A labeled rectangular button that carries out an action described by an ObjectPAL method. When the button is pressed, its value is "True." When the button is not pressed, its value is "False." Push is the default Button Type.

Radio Button: A labeled round or diamond-shaped button that provides an option. Each time a user clicks the button, it toggles between being empty and being darkened. Each click also toggles its value between "False" and "True."

Check Box: A labeled square button that indicates a yes/no state. Each time a user clicks the button, it toggles between being checked and unchecked. Each click also toggles its value between "False" and "True."

Field objects as radio buttons and check boxes

You can also create a group of radio buttons or a check box from a field object. The advantage of using a field instead of a button is that a field object can post a value (the button or check box the user chooses) to the table the form is bound to. Clicking the button posts the value to the table.


To select a button style

See also

A button's style controls its visual display. You can customize the style of radio button or check box buttons.

1.	Right-click the button and choose Properties from its menu.

2.	After selecting Radio Button, or Check Box on the General page, choose Style and select one of the following:

Borland: radio buttons and check boxes look like the ones you see in many Borland products. Radio buttons are diamond shapes, and check boxes are gray, with a three-dimensional look.

Windows 3D: radio buttons and check boxes look like the ones you see in many Windows products. Radio buttons are gray three-dimensional circles, and check boxes are squares.


To place a label on a button

See also

When you create a push button, Paradox places a text object on it containing the word LABEL.

To change the label,

1.	Click the text object to select it.

The pointer changes to the insertion point.

2.	Click again to place the insertion point in the text object. The handles disappear to show that the text object is ready for editing.

3.	Type the new label.

Paradox automatically centers the text on the button. (If you don't want the label centered on the button, right-click the button, choose Properties, and uncheck Center Label on the General page.)

Note:	If you move the label, you will automatically turn off Center Label and will have to turn it back on manually if you want it.

To delete the label,

1.	Select the text object.

2.	Click the Cut button on the Toolbar (or press Del or choose Edit|Cut).


To place a graphic on a button

See also

1.	Use the Graphic tool to place a graphic object on the button. See in To place a graphic on a form or report.

2.	Make sure the button object's Contain Objects property is checked. Right-click the button, choose Properties, and check Contain Objects on the Design page.


To edit button events and methods

See also

Using ObjectPAL, you can edit existing events and methods, or you can add new methods to the button. This is how you assign functionality to the button. The user clicks the button to initiate the operation you defined in the ObjectPAL method. For example, you could add a method to a button that tells Paradox to print a specific report, move to a specific record, or find a certain value when you push the button.

1.	Right-click the button and choose Object Explorer.

2.	Click on either the Method or Events page.

3.	Edit one or more ObjectPAL methods or Events for the button.

4.	Double-click <New Method> on the Methods page to add a new method.

For information about using ObjectPAL methods and events, see the ObjectPAL Reference and the Guide To ObjectPAL.


About field objects

See also

You can place a field from a Paradox table on a form or report. Field objects display data from the tables(s) on which the form or report is built.

In the design window, you do not see the data in the field. When you run the form or report, Paradox places the field's data in the field object.

When you create a form or report and choose any layout other than blank from the Design Layout dialog box, Paradox places the fields from your table in the design. You can place more fields on the design.

Field objects in reports

In reports, you must follow certain rules when placing field objects in multi-table report designs.

If the field object is defined as a field of the master table, you can place it in any band.

If the field object is defined as a field of the detail table, it must be placed within the detail table's repeating region (a table frame or multi-region object).


To place a field on a form or report

See also

To place a field object,

1.	Click the Field [image] tool.

2.	Click to place the field object using its default size, or click and drag to place the field object and specify its size.

By default, Paradox creates a labeled field object, which consists of the label (a text object) and the region in which the field's data appears.

Depending on the properties of the tool, the field may be labeled, unlabeled, drop-down edit, list, radio buttons, or check box.

To define the field,

You must define which field's values to display in the field object.

1.	Right-click the field object to display its menu.

2.	Choose Define Field. Paradox displays a list of available fields.

3.	Choose a field name from the list.

You define the field in the Define Field Object dialog box. You can also place a field that is not available from the menu (such as a summary field, a special field or a calculated field.)

You can also leave the field undefined.

Note:	To define a field, the form or report must be connected to a data model. See To open the Data Model dialog box.


Labeled and Unlabeled field objects

See also

You can choose Labeled or Unlabeled as a display type for a field on the field's General property page.

Labeled: A field with its field label displayed, along with the value of the current record. The label and edit region cannot be removed or deleted from the field.

Unlabeled: A field without a label.

When entering data into a labeled field, the user cannot change the label.

A labeled field needs more room than an unlabeled field.

If you change display types from an unlabeled field to a labeled field without checking Size To Fit, the field remains the same size and the label object and field object compete for space.

If you change display types and check Size To Fit, the field object expands to accommodate the new label.

The examples below show two fields [image] first in the design window, then the results at run time. The field on the left (CUSTOMER.No) is labeled. The field on the right (CUSTOMER.Name) is unlabeled.

Labeled	Unlabeled

For information on creating a labeled or unlabeled field object, see the following topics:

To place a field on a form or report

To specify a field object's display type


Drop-down Edit field objects

See also

When users enter data using a drop-down edit field, they can either type a value in the edit region, or choose the data value from a drop-down list.

Use a drop-down edit field object to provide users with a quick way to enter data into a field that has a limited number of valid values.

For example, if you create a data entry form for the Orders table and you know of six common values for the Payment Method field, you can display these values in a drop-down edit field object.

When you create the field object, you specify the valid values in the Define List dialog box; users pick from these values when entering data while running the form.

The Drop-Down Edit display type is unavailable in reports.

For information on creating a drop-down edit field object, see the following topics:

To place a field on a form or report

To specify a field object's display type


List field objects

See also

A list field offers users a list of values from which to choose. Users choose from the list to select a value and can enter only values that are listed. Only one value can be selected at a time.

Use a list field object to provide users with a quick way to enter data into a field that has a specific number of valid values.

For example, if you create a data entry form for the Orders table and you know that only five values are valid for the Ship Via field, you can display these values in a list field object.

When you create the field object, you specify the valid values in the Define List dialog box; users pick from these values when entering data while running the form.

For information on creating a list field object, see the following topics:

To place a field on a form or report

To specify a field object's display type


Radio button field objects

See also

A radio button field offers users a list of values from which to choose. Each value is listed with a button beside it. Users choose a button to select a value and can enter only values that are listed. Only one value can be selected at a time.

Use a radio button field object to provide users with a quick way to enter data into a field that has a specific number of valid values.

When you create the field object, you specify the valid values in the Define List dialog box; users pick from these values when entering data while running the form.

Changing the label of a button in the design window does not alter the field's value. You must alter the value in the Define List dialog box.

For information on creating a radio button field object, see the following topics:

To place a field on a form or report

To specify a field object's display type


Check Box field objects

See also

A check box has two states: checked and unchecked. The user indicates the field's value by checking it or leaving it unchecked. The field has one value when checked and another value when unchecked. The check box values are defined in the Check Box Values dialog box.

The logical field type is a perfect candidate for the check box display type. It's also a good idea to create a default validity check on the logical field, and specify False as the default value.

For example, suppose you design a form using the Vendors sample table. The Preferred field, a logical field, indicates whether the vendor has preferred status or not. You could define the field as a check box, and define the values for the check box as "true" when checked, and "false" when left blank. If the user checks the box, "true" is entered into the table's field for that record. If the user leaves the box unchecked, a "false" value is entered.

Any values can be entered for the check box values in fields other than logical fields. True and false must be used as the values in a logical field. The most common set of values used is true and false. You can also have a value in one and leave the other blank.

Changing the label of a check box in the design window does not alter the field's value. You must alter the value in the Check Box Values dialog box.

For information on creating a check box field object, see the following topics:

To place a field on a form or report

To specify a field object's display type

To change the values for a drop-down edit, list, radio button, or check box field object


To specify a field object's display type

See also

1.	Right-click the field and choose Properties.

The General page has a Display Type area. The default display type is Labeled.

2.	Choose one of the following display types:

Labeled: A field with its field label, along with the value of the current record.

Unlabeled: A field without a label.

Drop-Down Edit: A list of values users can select from or type their own value into.

List: A list of values users can select from, with no type-in box.

Radio Buttons: A list of values with a radio button beside each one. Users choose a button to select a value. Only one value can be selected at a time.

Check Box: A check box that has one value when the user checks it and another value when the user unchecks it.

3.	If you chose Drop-Down Edit, List, Radio Buttons, or Check Box, click Define Values.

Paradox displays the Define List or Check Box Values dialog box, where you specify values for the object.


To change the values for a drop-down edit, list, radio button, or check box field object

See also

1.	Right-click the field and choose Properties.

2.	Select the display type in the Display Type area.

3.	Click Define Values.

Paradox displays the Define List or Check Box Values dialog box, where you specify values for the object.


To change a label without changing the field value

See also

For radio button and check box field objects, the values in the Define List or Check Box Values dialog box are the actual values that Paradox enters in the table. The default labels on the form match these values. You can change the labels on the form, however, without changing the values you entered in the Define List or Check Box Values dialog box. The labels are standard text objects on the form.

To change the labels after defining the values,

1.	Define the field values in the Define List or Check Box Values dialog box.

2.	Select the text label on the object in the form. (See To change text in a text object.)

3.	Type the change to the label.

4.	Without clicking again (the insertion point is still inside the text), move the mouse to any of the text box borders. Stop when the cursor changes to a double-headed resizing arrow indicating the direction you can drag.

5.	With the double-headed arrow displayed, left-click and drag in the indicated direction to resize the text area.


About special fields

See also

A special field in a form or report contains information about the table or about the design as a whole. It is not a field of a table.

Table

The special fields that relate to a table are:

<Table Name> (The table's name)

<Record Number> (The current record number)

<Number of Records> (The number of records in the table)

<Number of Fields> (The number of fields in the table)

These fields are found on the master table drop-down list and are displayed in brackets, for example, <Table Name> or .

Design

The special fields that relate to the design as a whole are:

Date (Today's date )

Now (The current time)

Page Number (A page number)

Timestamp (The current time and date)

Number of Pages (The number of pages in the form or report)

These special fields are found in the Define Field Object dialog box on the drop-down list in the Special Field area.


To place a special field on a form or report

See also

1.	Click the Field [image] tool.

2.	Click in the design area to create a field object.

3.	Right-click the field object to display its menu.

4.	Choose Define Field.

Paradox displays the Define Field Object dialog box.

5.	Do one of the following in the Define Field Object dialog box:

For a field related to the table, click the drop-down arrow attached to the table name. These special fields are bracketed at the bottom of the list, for example, <Number of Records>.

For a field related to the design, click the drop-down arrow in the Special Field panel.

6.	Choose the special field you want and click OK.

Paradox returns to the design window, where the field object contains the new definition.


About calculated fields

See also

A calculated field in a form or report performs a calculation on the values of one or more fields. The calculation is an expression (which might have several components or terms) that must resolve to a single data value.

A common use of calculated fields is to calculate values of two or more fields from a table. For example, you can create a field object in a form on the Lineitem table, and define it as a calculated field using the formula

[LINEITEM.Qty] * [LINEITEM.Selling Price]

The value of a record in this calculated field is the product of the values of the Qty and Selling Price fields.

Why use a calculated field?

Space saver in tables

In most cases, users want to see calculated results in reports and forms. Calculated fields perform calculations on existing data only at runtime (for example, when viewing a report). This eliminates the need to store excess data in the table.

Broad range of functionality

You can use calculated fields to perform many different operations besides just mathematical calculations. You can use them to concatenate string values, call built-in and custom methods (those returning a single value), base operations on logical criteria, and you can use them to perform special functions (such as Sum and Average). The combination of these and other attributes can prove to be powerful additions to your application.

Scope of a calculated field

A calculated field performs a calculation on a set of records. Before you can perform an operation on the set, you must define the set by defining the scope of the calculation. The scope of a calculated field is the same as that of a summary field as described in About summary scope.

Calculated fields vs. summary fields

Paradox has both calculated fields and summary fields, as described in Calculated fields and summary fields.

Storing values from calculated fields in a table

Values in calculated fields, whether in a form or report, are not stored in the table. Values are created on the fly strictly for viewing or printing purposes. If you want to store these values, perform the calculation in a query or refer to "Validating data entry" in Chapter 2 of the Guide to ObjectPAL.


Referring to fields and field objects

See also

The field object in a design is not the same as the actual field of a table that the field object represents and contains. This distinction is important to remember when using field names in calculations. For example,

The expression Qty * Price performs a calculation on the field objects named Qty and Price.

The expression [LINEITEM.Qty] * [LINEITEM.Price] performs a calculation on the values in the actual Qty and Price fields in the Lineitem table.

The field object in the design and the field in the table to which the form is bound are usually equivalent. At times, however,

A field object is not associated with a table (for example, it might be another calculated field).

A field object might be unbound (not associated with a field in any table) and not defined as a calculated or special field.

A field from a table in the data model is not displayed in the design, but you need to reference its field value.

A field object might not have the same name as the field it is bound to.


Calculated fields and summary fields

See also

You can place calculated fields and summary fields on a form or report:

A calculated field performs a calculation on the values of one or more fields. The calculation is an expression (which might have several components or terms) that must resolve to a single data value. See About calculated fields.

A summary is a type of field calculation. Using summaries, you can sum, count, or average the values in a field. You can find the minimum, maximum, standard deviation, and variance of values in a field. See About summary fields.

You create calculated fields and summary fields in the Define Field Object dialog box.

Calculations on summary fields

In reports, you can perform calculations on the values generated by summaries.

For example, you can group the Orders table by Customer No, then create a summary field [image] Total Due [image] to sum the Balance Due field. This report would tell you the amount that each customer owes.

Suppose a new policy requires you to charge each customer $5 if they have an outstanding balance. You can create the following formula.

[ORDERS.Balance Due]+5

As the report runs, Paradox adds all the values in the Balance Due field for each customer, then adds five to the total.

Summaries on calculated fields

Calculated field expressions can contain summary operators. For example, the sum of all invoice totals from the Orders table multiplied by a sales tax of 7.75% could be expressed as follows:

SUM([ORDERS.Total Invoice]) * .0775

You could also calculate the sum of all line item totals (in a given scope) and multiply that by a sales tax of 7.75% using the following expression:

SUM([LINEITEM.Qty]*[LINEITEM.Selling Price])*.0775


To create a calculated field

See also

1.	Right-click the field object on the design document, and choose Define Field.

The Define Field Object dialog box appears.

2.	Check Calculated and type the calculation you want into the text box below the Calculated check box.

See What calculated fields can include for information on what to type in a calculation.


What calculated fields can include

See also

Operators

Arithmetic operators +, -, *, /, and ()

Logical operators AND, OR, and NOT

Comparison operators <, >, <>, =, >=, and <=

Summary fields (sometimes called aggregates). For example:

SUM([table.fieldA] + [table.fieldB])

SUM([table.fieldA]) + SUM([table.fieldB])

For information on summary fields, see About summary fields.

Object references, such as the name of an object on the form. (Object names are always unique.)

Numeric constants

Alphanumeric strings

Any of the ObjectPAL mathematical, statistical, string manipulation, and date/time methods that return a single value

Custom ObjectPAL methods or procedures that are defined in forms or contained in libraries and accessed by forms. (Custom methods are not accessible by reports.)

Combinations of any of the above


To use a field name in a calculation

See also

1.	Right-click the field and choose Define Field to open the Define Field Object dialog box.

2.	Choose the field you want from the table's drop-down list. The field name appears in the text box at the top of the Define Field dialog box.

3.	Making sure that the Calculated check box is checked.

4.	Choose Copy Field to place that field in the Calculated text box below the Calculated check box.

When Paradox places the field name in the text box, it is selected. Move the cursor to deselect it before you begin typing. (If you accidentally type and replace the selected field name, press Alt+Backspace to restore it.)

In addition to the field name, you'll see the directory alias (if any) of the table and the table's name. For example, if you choose the Balance Due field from the Orders table (and the Orders is in your working directory), you'll see [:WORK:ORDERS.Balance Due] appear in the Calculated text box. This points to the exact location of the field in the expression.

If you've assigned a table alias to a table, use that alias instead of the table's name when defining calculated fields. See To create a table alias.


To calculate on a field that has a punctuated name

See also

Punctuation marks, particularly periods, are reserved characters in Paradox. Dot notation is how Paradox references objects within forms and reports, and periods (dots) in field names invalidate this process.

Using the Copy Field button in the Define Field Object dialog box, you can easily copy a punctuated field into the calculated field text box. If the field name has periods in it, such as Total.Invoice, Paradox looks on the report or form for an object named Total containing another object called Invoice. Consequently, field names with punctuation may cause errors when used in a calculated field.

To use a field name containing punctuation in a calculated field,

Enclose the field name in quotes.

Note:	You can also restructure the table to modify the field name.


To reference another calculated field on the same form or report

See also

You can create a calculated field that references another calculated field in the same form or report.

1.	Right-click the field objects and choose Properties to determine their object names (displayed in the Name of Object text box on the General page).

2.	Use these names in the calculation.

Tip:	When an object is used in another calculated field or expression or report, you can rename it so it is easily recognizable later on. To change the name, type in the desired name on the General page and click OK.


To update calculated fields when opening a form or report with a different table

See also

When you create a calculated field on a form or report, the table name that field references is saved as part of the .FSL or .RSL file. If you open the form or report with a different table, the calculated fields may not be updated to reflect the change. Therefore, the calculation tries to reach information in a table (or tables) which is not bound to the document.

To resolve this,

Redefine the calculated fields so they refer to the new tables and save the form or report.


Example of calculating with a summary operator

See also

You can use calculated fields in forms and reports to generate field values that you might otherwise store in the table itself. For example, tables are sometimes designed with quantity, selling price, and total invoice amount fields. The total invoice is the price multiplied by the quantity. When you use calculated fields and summary operators, the total invoice field need not be part of the actual table. You can instead create a field in your form or report that calculates the total invoice value.

The following expression generates the total for each record in the Lineitem table:

[LINEITEM.Qty]*[LINEITEM.Selling Price]

This expression can be a defined in a calculated field object in a table frame or multi-record object, as shown in the right column of the following figure:

Note:	When you define a calculated field, you must type a value in the field's label. When you define the field as calculated, Paradox shows "formula" in the field object.

When you run the form (or print or preview the report), Paradox calculates the total for each record by multiplying the Selling Price value by the Qty value for each record in the table:

You can create a calculated field that calculates the total of all line items, rather than the total of individual records. To generate the total of all line items in a given scope, you could use the following expression:

SUM([LINEITEM.Qty]*[LINEITEM.Selling Price])

Note:	The example above illustrates how you must use the sum() operator with a calculation. Referencing the UIObject name of a calculated field which contains the same calculation is not valid with the SUM() operator.

The following figure shows a single-table form, so the scope of the calculated field is the entire Lineitem table. The field label of the calculated field at the bottom of the form shows the total price of all line items in the sample Lineitem table.

The following two expressions do not generate the same result:

SUM([LINEITEM.Qty]*[LINEITEM.Selling Price])

SUM([LINEITEM.Qty])*SUM([LINEITEM.Selling Price])

The first expression creates a "total" value for each record by multiplying the quantity by the selling price. It then adds all these totals together. The second expression adds all quantities, then adds all selling prices, then multiplies the results of the two additions.


Example of calculating with a field and a constant

See also

Calculated fields can be used to perform calculations that include a field and a constant. For example, suppose you want to show what the selling price of line items would be if you raised all prices by 25%.

1.	Create a form bound to the Lineitem table.

2.	Place a field object on the form.

3.	Change the field label to the following:

Selling Price increased by 25%:

(To change the field label, click three times on the field to place the cursor inside the text, then type the new label.)

4.	Right-click the field object and choose Define Field to open the Define Field Object dialog box.

5.	Check the Calculated check box, and enter the following formula in the Calculated text box:

[LINEITEM.Selling Price] * 1.25

When you run the form, for each record in the table, the Selling Price field shows the current price, and the calculated field shows the price with the proposed increase.


Example of calculating with an alpha string

See also

You can use the + operator to combine alpha strings.

For example, suppose you want to create a field called Address that combines the values of the Street, City, State/Prov, and Zip/Postal Code fields for the Customer table.

1.	Create a form or report using the Customer table in the data model.

2.	In the Design Layout dialog box, choose the Blank style.

3.	In the design window, use the Table tool to place a table frame with three columns.

4.	Select the first field in the table frame (click three times to get to the field), then right-click it and choose Define Field.

4.	In the Define Field Object dialog box, choose Customer No from the drop-down list on the Customer table.

5.	Repeat step 4 with the second field in the table frame and choose Name.

6.	Select and right-click the third field in the table frame. Choose Define Field and in the Define Field Object dialog box, type the following calculation:

[CUSTOMER.Street] + " " + [CUSTOMER.City] + ", " + [CUSTOMER.State/Prov] + " " + [CUSTOMER.Zip/PostalCode]

The + sign appends one string to the end of another. (You must type the spaces and commas you want inserted between fields within quotation marks.)

8.	Click OK.

In the Form Design window, Paradox displays the word "formula" in the calculated field object.

9.	Type the word Address as the calculated field's label.

When you run the form, Paradox combines the values from the four fields for each record of the table, inserting spaces and commas where you placed them in the calculated expression.


Example of using conditional logic and ObjectPAL methods

See also

When designing forms or reports, it is sometimes desirable to use calculated fields containing conditional statements. For example, if the state is California, multiply the Amount field by 10, otherwise multiply the Amount field by 5. One of the possible appSlications of the iif() keyword is to use it to provide conditional functionality in calculated fields.

Using the iif() keyword to create a conditional statement in a calculated field, you can evaluate a field value to see if it meets a condition, then return a value based on the condition. In a calculated field, the iif() keyword can be used within another expression, for example, in combination with operators and numeric methods.

You can use certain ObjectPAL methods as part of your field calculation. Most methods that involve numeric or alphanumeric strings are available in calculated fields. Any ObjectPAL expression that evaluates to a single value is valid in a calculated field.

To use ObjectPAL in a calculated expression, type the ObjectPAL method directly into the calculated field text box in the Define Field Object dialog box.

The syntax for the iif() keyword is:

iif(Condition, ValueIfTrue, ValueIfFalse)

Condition is any expression that evaluates to a logical value of True or False; ValueIfTrue is the value returned if Condition evaluates to True; and ValueIfFalse is the value returned if the Condition evaluates to False.

Below are five examples of using conditional expressions in a calculated field:

Example 1

Suppose you want a sales representative to visit all the customers in the Customer table. One sales representative (named Elliot) will visit those customers in California, and another (named Dolores) will visit all customers outside of California. You can create a calculated field that returns a different value (Elliot or Dolores) based on the contents of each record's State/Prov field. Use the iif() ObjectPAL keyword to create the expression

iif([CUSTOMER.State/Prov]="CA", "Elliot", "Dolores")

This expression tells Paradox to return the string "Elliot" when the field value is CA, and to return the string "Dolores" when the field value is anything else.

Example 2

You can also use calculated fields to print spaces between fields when appropriate. For example, use the following procedure to print a space after the Zip/Postal Code only when the Zip/Postal Code contains a value.

iif([CUSTOMER.Zip/postal code] = "", "", " ")

Example 3

You can define a calculated field that prints a comma only when the City field contains a value. Use this technique to produce an address that contains punctuation only when appropriate.

iif([CUSTOMER.City] = "", "", ",")

Example 4

This example, based on the sample Orders table, compares the Amount Paid and the Balance Due to determine which is greater, then display one of two messages, depending on which value is greater.

iif([ORDERS.Amount Paid] >= [ORDERS.Balance Due], "This is a preferred customer.", "This customer has a balance due.")

If the Amount Paid is greater than or equal to the Balance Due, the field reads "This is a preferred customer." Otherwise, it displays "This customer has a balance due."

Example 5

Suppose you had an employee table which had a DOB field for Date of Birth. You could use the following expression to see if today was their birthday:

iif(month([EMPLOYEE.DOB]) = month(today()) AND day([EMPLOYEE.DOB]) = day(today()),"Happy Birthday!", "")

If the month value of the employee's date of birth is the same as the current month, and the day value of the employee's date of birth is the same as the current day, then it is the employee's birthday [image] display message. Otherwise, it is not the employee's birthday [image] do not display anything.

The month() method returns the numeric month value of a date. Its syntax is month(Date).

The day() method returns the numeric day value of a date. Its syntax is day(Date).

The today() procedure returns the current date.

See Using ObjectPAL in calculated fields.


To align a calculated field with data in a column of a table frame in a report

See also

If you place a calculated field in a table frame column, for example, at the bottom of a column of numbers, you would need to align the decimal points in the calculated field with the decimal points in the numbers above.

To do this, create the calculated field and perform the the following steps:

1.	Place the calculated field so that the right edge is anywhere to the left of the right edge of the field in the table frame.

2.	Select the edit region on the calculated field.

3.	With the edit region of the calculated field selected, Shift+click the field region of the table frame.

4.	Choose Design|Align|Align Right.

5.	Right-click the edit region of the calculated field and choose Properties.

6.	Make sure Fit Width on the Run Time page is unchecked.


To control page numbering with a calculated field

See also

You can start numbering pages on a report starting at a value other than 1. For example, if you want the first page to have a page number value of 10, incremented by one for each following page, perform the following steps:

1.	Create an undefined field in the page header or footer band.

2.	Right-click the field and choose Define Field.

3.	Choose Page Number from the Special Field list in the Define Field Object dialog box.

4.	Right-click the field again, and choose Properties.

5.	Click the Font page, and set the font color to white (or whatever color the page background is).

This is to make the field invisible.

6.	Create a new field in the page header or footer band where you want the page number to appear.

This is the actual Page Number field that will be displayed.

7.	Right-click the new field, and choose Define Field.

8.	In the Define Field Object dialog box, check Calculated, then type in the following in the Calculated text box:

Page_number.value + 9

Page_number is the default object name given to the Page Number field just created.

9.	Change the label on the new calculated field to read "Page", or however you would like it to appear.


To use a calculated field to print only fields containing data

See also

You can vary what a field displays based on whether or not another field is blank.

Create a calculated field, and type in the following formula:

iif(isBlank(fieldname), ValueIfTrue, ValueIfFalse)

If (fieldname) contains no value, ValueIfTrue is used. Otherwise, ValueIfFalse is used.

Note:	For Number, ShortNumber, and Currency fields, isBlank always returns a FALSE value if Treat Blank Fields As Zero is checked on the Database page under Edit|Preferences.


To use a calculated field to capitalize fields when printing

See also

You can capitalize certain fields and records from the database when you print a report. Using the sample Customer file as an example, the following steps show you how to print the Name field to all caps:

1.	Use the field tool to place a Name field.

2.	Right-click the field, and choose Define Field.

3.	Check Calculated, and type in the following expression in the Calculated text box:

upper([CUSTOMER.Name])

Note:	the Name field does not need to be in the report.

If converting to all lowercase is desired, replace upper in the above calculation with lower.

A calculation to return only initial caps can be done like this:

format ("CC",[CUSTOMER.Name])

This takes the Name field and converts it to initial caps, for example, "sight diver" or "SIGHT DIVER" to "Sight Diver".

For more information, see format procedure.


To print in the page footer only on the last page

See also

Information located in the page footer area of a report prints on the bottom of every page. Sometimes it may be desirable to print information only on the last page of the report. You can place this information in the report footer; however, it will appear above the page footer. If you want this information to appear in the page footer, you can follow the steps outlined below.

The technique presented here involves placing three fields in the page footer (one calculated field and two special fields for Record Number and Number of Records).

In order to use this technique,

Your report must be attached to a data model. (See To open the Data Model dialog box.)

You must also have View|Band Labels checked in the Report Design Window. Make sure that you have some white space in the page footer so you can place fields there. For information on how to resize report bands, see To resize a band.

1.	Create a field in the page footer for the special field Record Number in the master table.

(Click the master table's down arrow to display the field list containing <Record Number>.)

See To place a special field on a form or report.

2.	Create a second field in the page footer for the master table's special field Number of Records.

3.	Select both the Record Number and Number of Records fields (multi-select using Shift+click), then right-click the multi-selected fields and choose Properties.

On the General page, choose Unlabeled as the Display Type.

On the Font page, change the font color to match the page's background color and click Apply.

Step 3 makes the values for Record Number and Number of Record invisible when you print your report.

4.	Create a third field in the page footer. This field will be a calculated field. (See To create a calculated field.)

5.	Check Calculated in the Define Field Object dialog box and type the following expression:

iif(Record_Number = Number_of_Records, "Your Value", "")

"Your Value" is the value that you want to print only on the last page of your report.

Record_Number and Number_of_Records are special fields that contain data about the table as a whole. For more information, see iif().

6.	Click OK.

7.	If you want the calculated field to be unlabeled, right-click the field and change the Display Type to Unlabled on the General property page. Otherwise, change the text of the field by clicking on the word LABEL until the cursor is inside the text, and edit the text object.

8.	Press [F8] to run the report.

The value in the calculated field placed in the page footer should only appear on the last page of the report.


To print a calculation formula

See also

When you define a field in as a calculated field, the formula becomes an ObjectPAL source. This means that the formula prints out along with the other ObjectPAL methods connected to the document. You can print out just the formulas for the calculated fields, or all the ObjectPAL code (for a form only).

To print only the formulas of calculated fields in a form,

1.	In the design window, choose View|Document Source.

This creates a temporary report listing all the ObjectPAL code in that report. This report is based on a temporary table called PAL$SRC.DB.

2.	Choose Report|Design Report.

3.	Choose Report|Filter.

4.	In the MethodName text box, type calcField, then click OK.

5.	Choose File|Print to print the temporary report.

To print all the formulas of calculated fields in a report,

1.	Choose File|Open Report.

2.	In the Open Report dialog box, check the option Open As A Form.

3.	Click Edit The Report Design.

4.	Choose the report from the Look In list, then click Open.

5.	From the Form Design window, choose View|Document Source.

This creates a temporary report listing all the ObjectPAL code in that report. This report is based on a temporary table called PAL$SRC.DB.

6.	Choose File|Print to print the temporary report.

To create a report listing of all the ObjectPAL code contained in a form,

1.	In the design window, choose View|Document Source.

This creates a temporary report listing all the ObjectPAL code in that report. This report is based on a temporary table called PAL$SRC.DB.

2.	Choose File|Print to print the temporary report.


About using numeric procedures in calculated fields
About using number methods in calculated fields

See also

Most of the number type methods, or procedures, also work in a calculated field. You can use number methods to do such things as round numbers in various ways, derive a fractional part of a number value, find the higher of two values, insure integer answers from calculations, or find the differences between dates and times. For a complete listing of number methods, see the ObjectPAL Reference.

Paradox recognizes methods in calculated fields like round, LongInt, fraction, and max. Paradox also recognizes cos, sin, tan, acos, asin, and atan which deal with angles in radians only.


To round a value to a specific number of decimal places

See also

Type the following expression in the Define Field Object dialog box:

round([fieldname],# of digits accuracy)

Example:

round([ORDERS.Total Invoice],1)

If the value in Total Invoice is $555.94, $555.90 is returned.

For more information, see round.


To round a value to the nearest whole number

See also

Type the following expression in the Define Field Object dialog box:

round([fieldname]),# of digits accuracy)

Example:

round([Orders.Total Invoice],0)

If the value in Total Invoice is $555.67, $556.00 is returned. A value of $555.45 return $555.00.

For more information, see round method.


To format a decimal value as a whole number

See also

To format a decimal value to a whole number, without keeping decimal precision,

Type the following expression in the Define Field Object dialog box:

LongInt([fieldname]

Example:

LongInt([ORDERS.Total Invoice])

A value of $555.23 returns $555, as does $555.95.

For more information, see LongInt procedure.


To derive a fractional part of a numeric value

See also

Type the following expression in the Define Field Object dialog box:

fraction([fieldname]

Example:

fraction([ORDERS.Total Invoice])

A value of $555.23 returns 0.23.

For more information, see fraction method.


To find the higher of two values

See also

Type the following expression in the Define Field Object dialog box:

max(value1, value2)

Example

max([ORDERS.Total Invoice], [ORDERS.Amount Paid])

Unless the amount has been paid in full, this will always return the value in Total Invoice.

For more information, see max procedure.


To ensure integer answers from calculations on numeric values
To ensure numeric answers from calculations on numeric values

See also

Paradox returns a whole number when you place a literal expression, such as 35/10 (35 divided by 10) or count (tablename.fieldname)/10. In the example of 35/10, Paradox sees this as an integer divided by an integer and returns an integer value, 3. Operators such as Count and Number of Records return LongInt values.

To remedy this, cast these values as numbers in the calculation as follows:

35/numVal (10)

35/10.0

Both of the above examples return 3.50 instead of 3.

The following returns a number, not an integer.

count(tablename.fieldname)/numVal (10)


To find the difference, in days, between two dates

See also

Type the following expressions in the Define Field Object dialog box:

Example 1

number(date1-date2)

This assumes date1 and date2 are field objects of the same type.

For example, if date1 is 5/10/95 and date2 is 5/5/95, this returns 5.00.

Example 2

number(date(date1)-date(date2))

This example assumes date1 and date2 are strings representing the appropriate date format. For example,

number(date("5/10/95")-date("5/5/95"))

This also returns 5.00.


To find the difference, in hours and minutes, between two times

See also

Type the following expression in the Define Field Object dialog box:

format("TO(%H Hours,%M Minutes)", time1-time2)

This assumes time1 and time2 are two fields with time values of appropriate format (HH:MM:SS am/pm)

For example, if time1 is 5:25:00 pm and time2 is 1:15:00 pm, this returns an answer of 4 hours, 10 minutes.


To calculate a date based on the current date

See also

You can establish a field that will calculate a date based on the current date. For example, in August you want to print a list of transactions current up to the last day of the prior month (July 31). In the report header, you want the title to read "Transactions as of 7/31/94". To establish a field that will calculate that date, type the following expression in the Define Field Object dialog box:

today()-day(today())

where today() is todays date, and day(today() is the number of days since the beginning of the month. Subtracting the number of days since the beginning of the month from today's date returns the last day of the prior month.


About summary fields

See also

A summary is a type of field calculation in forms and reports. Using summaries, you can sum, count, or average the values in a field. You can find the minimum, maximum, standard deviation, and variance of values in a field.

Paradox has the following summary operators:

Summary	Description	Use with
Sum	Sum of non-blank values	Number data types
Count	Number of non-blank values	All data types
Min	Minimum value	Alpha, number, money, date, and number
Max	Maximum value	Alpha, number, money, date, and number
Avg	Divides the total of all non-null values by the number (count) of all non-null values	Number data types
Std	Standard deviation of values	Number data types
Var	Statistical variance of values	Number data types
First*	First value	All data types
Last*	Last value	All data types
Prev*	Previous value	All data types
* Not available in forms

Normal, cumulative, and unique report summaries

When you create a report, you can choose from the following types of summaries. These options appear below the drop-down list of summary operators in the Define Field Object dialog box.

Normal: considers all non-null values in the set, including duplicates.

Unique: counts only unique non-null values in the set. Duplicates are ignored.

Using a unique summary to perform a Sum or Avg function does not yield true results because some values (duplicates) are not considered when the operation is performed.

A common use of a unique summary is to count all unique values in a set. For example, how many different types of items does a certain customer order? Or how many zip codes are in the state of Utah?

Cumulative: keeps a running total that extends from the start of the report to the end of the current set, instead of from the beginning of the current set to the end of the current set.

For example, if you place a cumulative Sum summary on a Balance Due field, Paradox sets the value to zero initially, then keeps a running total from the start of the report through the end of the report.

Calculated fields vs. summary fields

Paradox has both calculated fields and summary fields, as described in Calculated fields and summary fields.


About summary scope

See also

A summary performs a calculation on a set of records. Before you can perform an operation on the set, you must define the set by defining the scope of the summary. The scope specifies on what values you want the summary to operate.

Forms

In a single-table form, Paradox works with only one set of data. In this case, the scope of the summary is the whole table.

See Example of creating an Avg summary on a single-table form.

In a multi-table form, the scope of a summary is dependent on the data hierarchy. The hierarchy is defined by the form's data model.

See Example of defining the summary scope of a multi-table form.

Reports

Both the report's data model and the placement of the summary field in the report design determine the scope of a report's summary. See the following topics:

About summary scope on single-table reports

About summary scope on multi-table reports


About summary scope on single-table reports

See also

When placing summaries in a single-table report, location affects the scope as follows:

Corresponding band headers and footers calculate to the same value. This means you can place a summary in either the report header or report footer and get the same result. Likewise, a calculation in either the page header or page footer yields the same result.

In a table frame, the scope of the calculation is over all records in the table (if it is a detail table, the scope is all records in the detail set).

In a report band (either the header or the footer area), the scope of the calculation is all values contained by the report band [image] all records for the table.

In the page band (either the header or the footer area), the scope of the calculation is all values contained by the page band [image] all records on the page.

In a group band (either the header or the footer area), the scope of the calculation is all values contained by the group band [image] all records for the group.

In a record band, a summary will behave differently in different situations:

In a report without a group band, Paradox performs the summary on all records in the table.

In a report with a group band, Paradox performs the summary on all records in the group.

In a tabular or multi-record report, if the Run Time property Show All Records of the table frame (or multi-record object) is unchecked, Paradox performs the summary on the number of records that fit in the table frame or multi-record object. In this case, the table frame or multi-record object acts like a band defined as a number of records.


About summary scope on multi-table reports

See also

Summaries on master tables

When you place a summary field on the master table of a multi-table report, the scope of the summary is the innermost group of data.

When you place a summary field in the record band of a 1 [image] M report, the summary can calculate only on the current record of the master table. In this case, the current master record behaves like a group band, grouping the detail records.

When working with a 1 [image] 1 or M [image] 1 data model, Paradox joins the two tables in the data model before performing the summary and treats the joined tables as a single table.

Summaries on detail tables

When placing summaries on the detail table of a multi-table report, the record, page, and group band rules for summaries on single-table reports remain true. Additionally, keep these rules in mind:

If you place a summary in the record band, Paradox performs the summary on all detail records of the current master record.

If you embed a summary within a table frame or multi-record object defined as the master table, Paradox performs the summary on each record of the master table.

Summaries on unlinked tables

When placing a summary on an unlinked table in a multi-table report, the sum is performed for the whole table.


To define a summary

See also

A summary performs specific calculations on a specific set of values in a table.

1.	Right-click the field on which you want to perform the summary operation, and choose Define Field from its menu. The Define Field Object dialog box opens.

2.	Click the drop-down arrow for the table and choose the field on which you want to perform the summary operation.

3.	Click the drop-down arrow in the Summary area to display available summaries. Choose the summary you want.

4.	Click OK.

The set of records over which the summary is made is called its scope. The scope is determined by the location of the summary field in the form or report.


To return a summary value relative to a particular page

See also

In a report with a 1 [image] M relationship between two tables, if you want to perform a summary operation, relative to a page, based on a field in the detail table, you may need to link the tables backwards in the data model.

For example, if your report is based on two detail tables, you may have more than one page of detail data. Due to the links, Paradox automatically groups the records in the detail table. Summary operations on a field within a group do not respect page breaks and return a value for the group, not for each page on which the grouped data appears.

The solution is to link from the detail table to the master. There will be no inherent grouping by Paradox. You can then group on a particular field, or even a set number of records, and have a summary value returned relative to a particular page.


Example of creating an Avg summary on a single-table form

See also

Suppose you want to know what average quantity your customers order per line item.

1.	Create a form for Lineitem.

2.	Place a field object on the form.

3.	Right-click the field object, and choose Define Field. The Define Field Object dialog box opens.

4.	Click the table's drop-down arrow and choose the Qty field.

5.	Click the drop-down arrow in the Summary panel to display available summaries. Choose Avg.

6.	Click OK. In the Form Design window, Paradox changes the field object's label to Avg(Qty).

7.	Run the form. You'll see that Paradox calculates the average of all quantities ordered and displays the value in the summary field object.


Example of defining the summary scope of a multi-table form

See also

Suppose you have defined your data model like this:

Customer [image] Orders [image] Lineitem

You can summarize values for fields in the Orders table for each record in the Customer table. In this relationship, Customer is the master table and Orders is the detail table. Paradox sums the set of Orders detail records for the current Customer record.

Likewise, you can summarize values in the Lineitem table for the current record in the Orders table. Again, the master table (Orders) determines the scope of a summary on the detail table (Lineitem). The summary of Lineitem is performed on the set of all items for the current customer's current order.

Note:	In the data model Customer [image] Orders [image] Lineitem, you cannot create a summary of each customer's lineitems [image] only of each order's lineitems. Paradox can move up only one level in the data hierarchy when performing a summary.

When placing a summary field on a detail set of records in a 1 [image] M [image] M form, you must position the summary field within that detail's repeating region (the table frame or multi-record object that displays its records) or within the repeating region of the next table up in the data hierarchy.


Example of creating a count summary in a report

See also

Suppose you're working with a tabular report on the sample Customer table, and you want to know how many customers you have in each country. Define a summary by following these steps:

1.	In the Report Design window, create a group band on the Country field of Customers. See To add a group band.

2.	Click the Field tool on the Toolbar, then drag in the group band to place an undefined field object below the Country field.

3.	Right-click the field object, and choose Define Field. The Define Field Object dialog box opens.

4.	Choose the Customer No field from the Customer table's drop-down list.

5.	Choose Count from the Summary drop-down list.

Paradox displays Count(CUSTOMER.Customer No) in the text box at the top of the dialog box.

6.	Click OK.

7.	Print the report.

For each unique country value, Paradox shows the country name and the number of customers in that country, followed by a table frame displaying customer information.

When you print or preview a report, Paradox performs the calculation defined by the summary and returns a value. In the example of the count-by-country summary, Paradox looks at the record band for each group and returns the number of records in that band.

In the example report below, the Count summary on the Customer No field and the Country field have been inserted within a text object.

When you print or preview the report, the summary field value appears as part of the sentence.

Tip:	When defining a count, it is a good idea to count the values of a table's primary key field. Because a primary key field must contain data, you will be sure of getting an accurate count.


To display the complete contents of a memo field

See also

When you create a memo or formatted memo field, you specify how much of the memo Paradox stores in the table. The entire memo is stored in a different file. (See Paradox field types and sizes.)

The time it takes Paradox to access the .MB file and display its information in your form depends on a variety of factors such as the size of the memo and the speed of your system. To increase performance, you can display only the data stored in the table.

1.	Right-click the memo field and choose Properties.

2.	 Check Complete Display on the Run Time page, then click OK.

For more information, see Complete Display property.


To delete an empty field or record when printing a report

See also

You can specify that if a field or record is empty it does not print when the report is previewed or printed.

To supress printing an empty field or record,

1.	Right-click the field, or the record in a table frame or multi-record object, and choose Properties from its menu.

2.	Check the Delete When Empty property on the Run Time page.

When Delete When Empty is checked, if the design object shows no data in the report, it does not appear when the report is previewed or printed.

When Delete When Empty is unchecked, the object appears even if it shows no data.


To make a field read only

See also

You can prevent a field's data from being changed when you run a form.

1.	Right-click the field and choose Properties from its menu.

2.	Check the Read Only property on the Run Time page.

Read Only fields can be viewed but not edited.

To prevent someone from changing data in a field no matter how they access it (from a table, any form, or a query), use a read-only auxiliary password. See About password security.


To hide a field's contents

See also

You can suppress the contents of a field when you run a form. The field is visible, but not its value. This is especially useful for entering passwords or other protected information.

1.	Right-click the field and choose Properties from its menu.

2.	Check the No Echo property on the Run Time page.

When you choose No Echo, Paradox does not display data you enter in the field.

For more information, see No Echo property.


About table frames

See also

If your form or report design includes a table, you'll see a table frame representing the table. A table frame looks like its source table, but a table frame is not a table. It is a composite object consisting of

Columns (representing fields)

Rows (the top row represents all records)

Text objects containing labels for the fields

Field objects that represent data from the source table in the first row below the header

Paradox automatically places a table frame on the design if you choose a tabular layout in the Design Layout dialog box, or if you are creating a multi-table form or report.


To place a table frame on a form or report

See also

You might want to place a table frame on a design to display additional tables or if you chose a blank layout in the Design Layout dialog box.

1.	Click the Table [image] tool.

2.	Click to place the table frame using its default size, or click and drag to place the table frame and specify its size.

Paradox creates a table grid with labels and undefined fields. This is the table frame.

If you specified a table in the document's data model, the new table frame can be linked to or independent of that table. See To create a link for information.


To define a table frame

See also

When you define a table frame, you specify the table to use and which fields to include.

Use the Table tool to place linked or unlinked tables in a design document.

Paradox creates an undefined table frame with a header containing column labels that say "Label" and a record containing undefined fields.

To define a table frame,

1.	Right-click the table frame and choose Define Table from the menu. The Define Table Object dialog box appears.

2.	Click the table you want from the data model, then click the drop-down arrow to display its fields.

3.	Choose the fields to include in the table frame, then click OK.

Click a field to select it.

Ctrl+click to select multiple fields individually.

Shift+click to select all fields inclusively from the first field clicked to the last field clicked.

The fields and labels in the table are replaced by fields and labels appropriate to the chosen definition. Any contained objects, properties, or ObjectPAL code are lost.

You can also define a table frame by right-clicking the master record and choosing Define Record or by defining individual field objects.

If the Size To Fit property is set on the Design property page, the table frame tries to size to the width required to show all columns. If it cannot, or if Size To Fit is not set, the missing columns are still there. You can view them by placing a horizontal scroll bar on the table frame.

For more information on modifying the table frame, see About Modifying Table Frames.


To repeat a table header in a report

See also

When a table breaks across several pages, you can repeat the table header at the top of each page.

1.	Select the table frame.

2.	Then right-click the table frame and choose Properties from its menu.

3.	Check Repeat Header on the General page.

The Repeat Header property is not available for a table frame with detached headers.


To show all records and columns

See also

When you run a form or report, Paradox can expand a table frame or multi-record object to create as many pages as necessary to display all records or columns.

In a Form Design or Report Design window,

1.	Right-click a table frame or multi-record object and choose Properties from its menu.

2.	Check Show All Records on the Run Time page. For table objects, you can also check Show All Columns.

If Show All Records is unchecked, Paradox displays a fixed number of records.

See Show All Records and Show All Columns for more information.


About modifying table frames

See also

You can customize a table frame in a form or a report.

Resize a column by dragging its right grid line in the header area.

Resize row height by clicking and dragging the horizontal grid line under a field object.

Delete a column by selecting it and pressing Del.

Insert a column by selecting a column and pressing Ins. (The new column appears to the left of the selected column.)

Redefine a field object by right-clicking it and choosing Define Field.

Add a regular, special, summary, or calculated field by placing and defining a new field object.

Stack field objects in the same column.

Add design elements like lines, boxes, and ellipses.

Add data elements like other tables, charts, or crosstabs.

Detach the header (and delete it or move it to another band).

Retype the labels and right-click them to change any text properties.

Right-click the field objects to change properties.

Right-click a record (row) as a whole to change its properties.

Right-click the table frame and choose Grid to change any of its properties.

Right-click the header to change its properties.

Because the table frame you place in a design is not the actual table, property changes and table frame restructuring do not affect the actual table. Only changes made to the data appear in the table itself.


To change the appearance of items in a table frame

See also

The table frame you place in a form or report is in standard tabular format.

1.	Select an object in the table frame.

2.	Right-click it and choose Properties from its menu.

3.	Make the changes you want, and click OK.

You can change the appearance of

Data: You can select the one representative record as a whole, or you can select individual field objects.

The header: You can select the header as a whole, or you can select its individual labels.

Column name: Select it until you have an insertion point, then make your change.

The grid.

The background color and pattern in forms.

The scroll bar in forms, and in reports in the design window.

These changes do not restructure the table itself. They change only the view of the table in this table frame on this document.


To change the grid on a table frame
To specify grid style for a table frame

See also

You can change the grid's style and color, and display a record divider between each row of data.

1.	Right-click the table frame and choose Properties from its menu.

2.	Set the grid properties on the Grid page.

3.	Click OK.

When you check Record Divider, Paradox does not change the table frame image in the design window. That image has record dividers already visible. You'll see the difference when you run the form or print the report. Without record dividers, horizontal lines do not appear between the records in the table frame.


To rearrange the parts of a table frame

See also

Header

Resize header areas by dragging the grid lines under the field labels.

Detach the header by selecting the table frame, right-clicking it, and unchecking Attached Header on the General property page. In a report, you can move the header to another band.

The header labels must remain in alignment with the columns of the table, so dragging either the header or the body of the table sideways causes both the header and the body of the table to move.

Fields

Move a field by dragging it to a new position.

Move a field out of the table area by dragging it out. The column is not removed, only the field.

Rows

Resize the row height by dragging the horizontal grid line under any field object. This resizes the row height for all the rows in the table frame.

Columns

Move a column by selecting the header for the column and dragging it to a new position.

You can also select the whole column and drag it to the new location.

Resize a column by selecting the table frame and dragging the right grid line of the column.

Resize all columns to the minimum width. Right-click the table frame object and choose Minimize Columns.

Remove a column by selecting it and pressing Del. Select a column by pointing to it below the header and record rows, in a blank field area. When the column is selected, it is highlighted.

You can also delete a column by resizing it to nothing. Drag the vertical grid line at the right of the column to the left. When you reach the minimum column width, the grid line changes to a dotted outline. Release the mouse to delete the column.

Add a column by selecting it and pressing Ins. Select a column by pointing to it below the header and record rows, in a blank field area. The new column appears to the left of the selected column.

These changes do not restructure the table itself. They change only the view of the table in this table frame on this document.


To add data and design objects to a table frame

See also

Change the definition of a field object [image] right-click the field, and choose Define Field.

Add a regular, special, summary, or calculated field by placing and defining a new field object. See About Field Objects.

Add design elements such as lines, boxes, and ellipses.

Add data elements such as other tables, charts, or crosstabs.

These changes do not restructure the table itself. They change only the view of the table in this table frame on this document.


To combine (stack) fields in a column

See also	Example

To stack field objects in the same column,

1.	Resize the record area of the column, adjusting its width and height. See To rearrange the parts of a table frame.

2.	Do one of the following:

Drag existing field objects from other columns into the desired column.

Create new field objects within the column.

When you stack fields in a column, the document may be more readable if you right-click the table, choose Properties, and check Record Divider on the Grid page.


Example of combining fields in a column of a table frame

See also

The following example combines the values of the Street, City, State/Prov, and Zip/Postal Code fields from the sample Customer table into one field.

Paradox combines the values from the four fields for each record of the table, inserting spaces and commas where you placed them in the calculated expression.

For step-by-step instructions on creating the above example, see Example of calculating with an alpha string.

The following example shows a similar table, but this time the fields aren't combined, they are stacked in the same column.


Example of placing design objects in a table frame

See also

You can place design objects like lines, boxes, and ellipses [image] even other tables or charts [image] within the table.

1.	Click the tool for the object you want to place.

2.	Drag in the table frame to create the object. Make the object fit completely within the record object by sizing it small enough, or by changing the record's row height and column width.

The following figure shows a form that has Customer [image] Orders as its data model. The table frame in this form has two fields from Customer in its first column. The second column has a chart object in it that illustrates information about orders placed by each customer.


About multi-record objects

See also

A multi-record object displays several records at a time, using a field layout that repeats a specified number of times horizontally and vertically on the page. You can place fields in any pattern. You define the field layout for one record and then specify how many records across and down you want.

A common use of a multi-record object is to create mailing labels. Each label is a group of fields (such as Name, Address, City, State, and Zip) in a layout, repeated for each record. The following figure shows the design for a multi-record report using fields from the sample Customer table.

In the master record region, define the field objects and arrange them in the layout you want.

The gray record regions show where Paradox will place additional records.

When you print or preview this report, Paradox repeats the pattern of the fields in the master record region for every record in the Customer table.

Note:	The record object inside the multi-record object is a container for the records. If you make the record object too small, Paradox will eliminate fields in the Define Multi-Record Object dialog box to make the record fit the container. To resize the records, select the master record region and drag any of its selection handles. Since all record regions in the multi-record object are the same size, Paradox resizes the gray repeating regions along with the master record region.


To place a multi-record object on a form or report

See also

1.	Click the Multi-record [image] tool.

2.	Click to place the multi-record object using its default size, or click and drag to place the multi-record object and specify its size.

3.	Click on the record object inside the multi-record object.

4.	Resize it to make it large enough to contain all the fields you want to include in the record.

If you make the record object too small, Paradox will eliminate fields in the Define Multi-Record Object dialog box to make the record fit the container.


To define a multi-record object

See also

After you place a multi-record object, you can specify which fields display in each record. Only the fields from a detail table can be displayed in a multi-record object.

1.	Right-click the multi-record object and choose Define Record. The Define Multi-Record Object dialog box, which displays the tables bound to the document.

2.	Click the drop-down arrow of the detail table and choose the fields for the record.

Click a field to select it.

Ctrl+click to select multiple fields individually.

Shift+click to select all fields inclusively from the first field clicked to the last field clicked.


To specify the record layout of a multi-record object

See also

You can specify how many records to repeat across and down in a multi-record object.

1.	Right-click the multi-record object and choose Properties

2.	Click the Record Layout tab where you

Specify the number of records to repeat across and down the page.

Set the vertical and horizontal separation between the records. Paradox uses the unit of measurement (inches or centimeters) you specify in the Grid Settings.

Establish the order in which the records appear.

When specifying the layout of a multi-record object in a report, the number of times records repeat down can be affected by the Show All Records and Delete When Empty properties on the Run Time page.


To specify the field layout of a multi-record object

See also

1.	Define the multi-record object.

2.	Right-click the multi-record object and choose Field Layout to open the Layout Multi-Record Object dialog box, which you can use to

Display fields by columns or rows within the record

Display field labels within the record

Select fields to be included in the record

A subset of these features is in the Design Layout dialog box.


To resize records in a multi-record object

See also

1.	Select the master record region of a multi-record object.

2.	Drag any of its selection handles.

Paradox resizes the gray repeating regions along with the master record region.

Note:	The record object inside the multi-record object is a container for the records. If you make the record object too small, Paradox will eliminate fields in the Define Multi-Record Object dialog box to make the record fit the container.


To expand or contract records in a multi-record object

See also	Example

You can expand or contract individual records in a multi-record object when you print or preview reports. This means that the multi-record object does not display the records in a fixed-size grid. Using the Variable Height (Columnar) property, you can usually fit more records on a single page than you can without the Variable Height (Columnar) property.

1.	Right-click the multi-record object and choose Properties.

2.	Click Top-down, Then Left-right, then check Variable Height (Columnar) on the Record Layout page.

Columnar is not available unless you first select the Top-Down, Then Left-Right setting.

Note:	The record object inside the multi-record object is a container for the records. If you make the record object too small, Paradox will eliminate fields in the Define Multi-Record Object dialog box to make the record fit the container.

The Columnar property is available only in reports.

See the Show All Records and Variable Height(Columnar) properties.


Example of expanding or contracting records in a multi-record object

See also

The following example shows the results of the Columnar property for a multi-record object turned on, then Columnar turned off. Notice that when Columnar is off, space is wasted on the page because the records are all a fixed size. In the example where Columnar is on, each record shrinks to eliminate the extra space, allowing more records to fit on a page.

Columnar property off (default setting)	Columnar property on


About notebooks

See also	Example

Notebooks contain one or more pages. Each page has a tab that the user clicks to display the page. You can use a notebook to replace multiple form pages. For example, you can place the information from each table in the form's data model on a different notebook page, rather than on multiple form pages. This makes viewing and editing data much more efficient because the user clicks a tab to display the page, rather than navigating through multiple pages of the form.

Each notebook page is a container for other objects. Any design object that can be placed on a form can be placed on a notebook page. You can even place a notebook object on a notebook page.

Notebooks are available only in forms, not in reports.

Data objects on notebook pages

You can place data objects on different notebook pages to make data maintenance more efficient.

For example, using a 1 [image] M [image] M data model, you might put the master table records on the first notebook page, the first detail table records on the second page, and the final detail table records on the third page. You could then select the first notebook page, cycle through the master records, and consult the details only when needed. Not only does this simplify the display, but it improves performance.

Note:	Two table frames on different notebook pages cannot refer to the same table in the data model.

Notebook properties

You can change the properties for the notebook as a whole, or for individual pages. For example, you can place the tabs on the top or bottom of the notebook, and change the shape of the tab from square to angled. Individual pages can be colored, and each page can have a different color when it is active than when it is inactive. You can make the entire notebook, or individual pages, invisible at run time.


Example of a form that uses a notebook object

See also

The following example is a form for a contact management database that uses notebook pages to keep track of companies, contacts, addresses and phone numbers, tasks, comments and notes.


To place a notebook on a form

See also

1.	Click the Notebook [image] tool on the Form Design Toolbar.

2.	Click in the design area to place a default sized notebook, or click and drag to size the notebook as you place it.

The default notebook object has two pages, with room for three. You can add pages to the notebook by right-clicking the notebook and choosing Page|Add Page, or by choosing Properties and changing the number of pages on the General page.


To select a notebook or a notebook page

See also

Notebooks conform to the conventions of the Select From Inside property. When that property is unchecked, the first click in the design window selects the outermost object. Subsequent clicks select the next smaller level of containership.

To select the entire notebook,

Click the notebook. (If you've already clicked once or twice on the notebook, clear the selection by clicking on the form page.)

A double dotted line with sizing handles frames the notebook object.

If you have difficulty selecting the entire notebook, make sure the property "Select From Inside" is unchecked on the Designer page of Edit|Preferences.

To select a notebook page,

1.	Click the notebook to select it.

2.	Click a page's tab to select the page.

The selected page moves to the top and is surrounded only by sizing handles.

3.	To select a different page, click the page's tab.


To place an object on a notebook page

See also

You can place any design object on a notebook page. You can even place a notebook object on a notebook page.

1.	Select a notebook page.

2.	Click an object's tool on the Form Design Toolbar.

3.	Drag within the confines of the notebook page to create the object.

To modify the label on the tab, select the label text object, press F2 and start typing. The label will grow to fit the text.


To navigate notebook pages

See also

Using the mouse or keyboard

Display a notebook page by clicking its tab. (In a design window or when running the form).

Cycle through the objects by pressing Tab and Shift+Tab. Use this technique to move to any notebook page, or to any object on any notebook page (design window only).

Move through the notebook pages by pressing Shift+F3 (backward) and Shift+F4 (forward). (In a design window or when running the form.)

Using the right-click menu

You can right-click the notebook to move through its pages. This is similar to moving through the pages of a form.

1.	Select the entire notebook and right-click it.

2.	Choose one of the following from the menu:

Page|Next moves to the page to the right of the current one. If the current page is on the right edge of the notebook, Paradox chooses the leftmost page on the row above the current one.

Page|Previous moves to the page to the left of the current one. If the current page is on the left edge of the notebook, Paradox chooses the rightmost page on the row above the current one.

Page|First makes the first page (the one created first) current. In notebooks with multiple rows that have been shifted around, this indicates which page is first.

Page|Last makes the last page (the one created last) current.


To rotate notebook pages

See also

You can move a selected notebook page to the last page's position.

1.	Select the page you want moved to the end of the notebook.

2.	Select the entire notebook. (Click off the notebook, then right-click the notebook.)

3.	Choose Rotate Pages.

Rotate Pages is available only when you are designing the form, not when you are viewing data.


To move or resize a notebook

See also

To move a notebook

1.	Select the entire notebook.

2.	Drag it to a new location.

Notebook pages cannot be moved separately from the notebook.

To resize a notebook

1.	Select the entire notebook.

2.	Drag one of the sizing handles to change the shape.

Notebook pages cannot be individually resized. They automatically adjust when you resize the notebook.


To change the tab height on a notebook

See also

You can change the height of the tabs on the top or bottom of the notebook.

1.	Select the entire notebook.

A double dotted line with sizing handles frames the notebook object.

2.	Drag the center sizing handle nearest the tabs to change the height.

The top center handle resizes the tabs on top.

The bottom center handle resizes the tabs on bottom.

Tip:	If you reduce the height of the tabs, you will want to choose a smaller font size for the labels.


To add a page to a notebook

See also

To add a page,

1.	Select the entire notebook and right-click it.

2.	Choose Add Page from the menu.

Paradox adds one page to the form at the end of the existing pages.

To add multiple pages,

1.	Select the entire notebook.

2.	Right-click the notebook and choose Properties from its menu.

3.	Change the number of pages on the General page.

You can control the number of tabs displayed and the number of rows displaying them. For example, if you specify eight pages with four tabs across, the notebook will have two rows with four tabs on each row.

When you add rows, the tabs on any given row continue to remain on a common row. If you select a tab from the back row, the entire back row of tabs moves to the front row with the selected page active.

To display the tabs in one scrolling row, add a scroll bar as described in To place a scroll bar on a notebook.


To place a scroll bar on a notebook

See also

When the tabs do not fit in the available space, you can use two types of layouts:

Multiple rows, as discussed in To add pages to a notebook.

One row with scrolling tabs.

To add a scroll bar,

1.	Select the entire notebook.

2.	Right-click the notebook and choose Properties.

3.	Check Horizontal in the Scroll Bar area on the General page.

When Horizontal Scroll Bar is checked, the notebook has one row of tabs. Those that do not fit are not visible. On the right side of the notebook are left and right arrow buttons. Pressing one of these buttons scrolls the tabs left or right. If you hold down a button, the tabs scroll repeatedly.

Note:	Scrolling does not change which page is active. You can scroll the tab for the active page offscreen and still view the active page. When you scroll to the desired tab, you must click it to make its page active.


To copy and paste a notebook page

See also

1.	Select a notebook page, and right-click it.

2.	Choose Cut or Copy to place the page on the Clipboard.

3.	Select another notebook page and right-click.

4.	Choose Paste.

Paradox inserts the notebook page after the active notebook page.

You can also use Edit|Cut, Edit|Copy, and Edit|Paste to copy and paste notebook pages.


To delete a notebook page

See also

1.	Select a notebook page.

2.	Choose Edit|Delete, or press Del.

A notebook must have at least one page.


About designing forms and reports

See also

Forms are a good tool for data entry. You design a form to display the data from one or more tables, then use the form to enter and edit the data in the tables. Any change you make to the data in the form is reflected in the table.

Reports are printing tools. Use them to format and print your data. For example, you can use reports to create form letters, mailing labels, invoices, and presentations.

Use the Form Design or Report Design window to create a form or report. This window does not display a table's data. To see the data, run the form, or print or preview the report.

When designing a form or report, you can

Add or remove design objects, such as boxes, fields, tables, and charts

Change the properties of any design object on the form

Add ObjectPAL methods to the design objects to customize their functionality (forms only)

Add, delete, or rearrange pages

Customize a default form or report

Run a form to view and edit data

Run a report to preview or print data

For information about placing objects on forms and reports, see the following topics:

About the design window

About design objects

Forms and reports are called design documents. For a comparison of forms and reports, see About forms and reports.


To create a blank form or report

See also

1.	Choose File|New.

2.	Choose the type of document you want: Form or Report.

Paradox opens the New Form dialog box or the New Report dialog box.

3.	Click the Blank button.

Paradox opens a blank Form Design or Report Design window not bound to a table and containing only

For forms, a single page

For reports, the report header and footer, page header and footer, and record band

You can specify that Paradox always opens a blank form or report. See Forms/Reports Preferences dialog box.


To modify an existing form or report

See also

1.	From the Desktop, choose File|Open|Form or File|Open|Report.

Paradox displays the Open Form or Open Report dialog box.

2.	Select a form or report and choose Edit The Form Design option.

3.	Choose Open.

For information about placing objects on forms and reports, see the following topics:

About the design window

About design objects


About page layout for forms and reports

See also

Page layout specifies the page size for a form or report. You can use a predefined page size, or you can specify a custom width and height.

Designing for the screen

By default, Paradox designs forms for the screen. You can use any screen fonts that are installed on your system. If these fonts are not available on your printer, documents you create for the screen might not appear identical to their printed versions.

When you design for the screen, Paradox uses your system's current screen driver size (in pixels) in the Screen Size panel of the Page Layout dialog box. You can change the size and specify the unit of measurement for the custom size.

You can choose from standard page sizes, or you can enter your own measurements.

When you design a report for the screen, you must use portrait orientation.

Designing for a printer

By default, Paradox designs reports for the printer. If you design for a printer,

Paradox makes available only fonts that are currently installed on your active printer. This may limit your onscreen display, but it ensures a similar document for onscreen viewing and printed output.

Paradox attempts to match onscreen what the printed output will look like. This means that the screen fonts might not match the printer fonts exactly in height or width. Size-to-fit objects are sized based on the printer font sizes. Onscreen, this might cause clipping or text objects that seem to wrap too soon, but on paper they will look right. Be careful, when designing for a printer, that you do not cause unwanted clipping by sizing objects to a screen font.

You can design the form or report using portrait or landscape orientation.

Choosing landscape in the Page Layout dialog box tells Paradox to print the report wide. However, you still need to set the printer for the desired printing orientation.

If you choose portrait for both the Paradox and printer settings, the report will be printed narrow [image] printing on the screen goes across the narrow direction.

If you choose landscape for both the Paradox and printer settings, the report will be printed wide [image] printing on the screen goes across the long dimension of the paper.

If you choose landscape in Paradox, and portrait in the printer settings, then tile the report by setting Create Horizontal Overflow Pages As Needed in the Print File dialog box, this will create a wide report across multiple sheets of paper the narrow direction. This is useful, for example, if you want to bind a report with wide pages in a normal 8 1/2x11 book-like fashion.


To change the page layout for a form or report

See also

1.	Choose Form|Page Layout or Report|Page Layout in a Form Design or Report Design window.

Paradox opens the Page Layout dialog box.

2.	Use this dialog box to define the document's page size.

You can choose from predefined page sizes, or enter a custom width and height.

3.	For printed reports, choose either portrait or landscape orientation, and define the margins.

Choose Inches or Centimeters as the unit of measurement, then type in the values in the Margins area.


To specify a default on-screen size

See also

You can specify that all documents default to a certain on-screen size.

1.	Choose Edit|Preferences and click the Forms/Reports page.

2.	Uncheck Size To Desktop in the On-Screen Size area.

3.	Choose the type of measurement: Inches, Centimeters, or Pixels.

4.	Enter the Width and Height values.

The values entered here will be used every time you open a Form or Report Design Window.


About multi-page forms

See also

If the objects on your form do not fit on a single screen, you can create multiple pages for the form. You place design objects on each page, and the user views the different pages while running the form.

When working with a multi-page form, you must add each page. You cannot place a page break on a form the way you would in a report.

You can also create a form with multiple images by placing a Notebook object on the form. See About notebooks.

Tips

When working with multi-page forms, you might want to choose Form|Zoom|Best Fit to see all pages of the form onscreen at the same time.

ObjectPAL applications that are designed using a multi-page form are often faster than applications that open and close multiple forms.


To add a form page

See also

Choose Form|Add Page in a Form Design window.

Paradox adds a blank page to the form following all existing pages.

You cannot add a blank page between existing pages, but you can rotate or move pages to rearrange their order. See To cut, copy, or paste a form page and To rotate form pages.


To cut, copy, or paste a form page

See also

Use Cut, Copy, and Paste to rearrange pages.

To cut a page,

1.	Select a page in a Form Design window.

2.	Choose Edit|Cut or click the Cut [image] button.

Paradox removes the page and all objects on it.

To copy a page,

1.	Select a page in a Form Design window.

2.	Choose Edit|Copy or click the Copy [image] button.

Paradox copies the page and all objects on it.

To paste a page,

1.	Copy or Cut page in the Form Design window.

2.	Select the page that will follow the pasted page.

3.	Choose Edit|Paste or click the Paste [image] button.

Paradox inserts the pasted page before the selected page.

For example, if you cut page 2 of a five-page report, then select the last page and paste page 2 back in, Paradox inserts it as page 4.


To delete a form page

See also

1.	Select the page in a Form Design window.

2.	Do one of the following:

Press Del

Choose Edit|Delete

Choose Edit|Cut

Click the Cut [image] button

Paradox deletes the page and all objects on it.

Note:	Cut will overwrite the Clipboard, Delete won't.


To rotate form pages

See also

1.	Select the page in a Form Design window.

2.	Choose Form|Rotate Pages.

Paradox moves the selected page to the last page's position.

For example, if you select page 2 of a five-page form and choose Form|Rotate Pages, Paradox moves page 2 to the end of the form (page 5), and moves pages 3, 4, and 5 up one position.


To tile form pages

See also

Use tiling to control the onscreen display of form pages when working with a multi-page form. Display only one page at a time (stacked), or arrange pages across the screen or down.

1.	Choose Form|Tile Pages in a Form Design window.

2.	Choose a tiling option, as discussed in Form |Tile Pages.


To move among form pages

See also

When working with a multi-page form you can move to the first, last, next, or previous page.

1.	Choose Form|Page.

2.	Choose a page from the Page menu.

When you move to a page, Paradox selects it.

Tip:	Use Shift+F4 to move quickly to the next page and Shift+F3 to move to the previous page.

In the Form Design window, you can also use the scroll bars to move through the pages of a form, unless you have pages stacked. After you scroll to a page, you must select it to make it active.

To go to a specific page,

Follow the above procedure, but choose Form|Page|Go To and type the page number you want.


About forms as windows

See also

You can create a form that is either a window or a dialog box.

If you specify Window in the Window Style panel of the Window Style dialog box, Paradox opens the form as a window when you run it.

In the Window Style dialog box, some of the options in the Frame Properties, Title Bar Properties, and Window Properties panels are checked and dimmed. This means you must use these standard features of a window for your form's window.

You can change

The text that appears on the window's title bar. Type the text you want in the Title text box.

The display of horizontal or vertical scroll bars. Uncheck either Vertical Scroll Bar or Horizontal Scroll Bar to remove it from the window.

The Size To Fit option. Check this to have Paradox automatically size the window to fit the page size of the form. (Change the page size from the Page Layout dialog box.) The effect of choosing Size To Fit may not be apparent unless your page size is smaller than your screen display size. Adjust your page size to be as small as it can be without removing any existing objects, then choose Size To Fit.

The display of standard form menus. The Standard Menu option is checked by default. If you create a menu using ObjectPAL, and want your form to use it, uncheck Standard Menu. This applies mainly to multi-form applications. See your ObjectPAL documentation for information on customizing forms.


About forms as dialog boxes

See also

You can create a form that is either a window or a dialog box.

If you specify Dialog Box in the Window Style panel of the Window Style dialog box, Paradox opens the form as a dialog box when you run it. This means the form

Appears in the center of your screen

Appears on top of all open windows

Can be moved like any other dialog box

Can't be resized by the user

In the Window Style dialog box, all options except Standard Menu are available. Standard Menu is dimmed: You must use this feature of a dialog box.

You can choose options from the Frame Properties, Title Bar Properties, and Window Properties panels:

Frame Properties

Dialog Frame displays the dialog box in a standard Windows dialog box frame. The border, colors, and other settings are set from the Windows Control Panel.

Border displays the dialog box with a border instead of the default Windows style.

Thick Frame displays the dialog box with a thick black border instead of the normal Windows style. Thick Frame is unavailable if you choose Dialog Frame.

Title Bar Properties

Control Menu places the standard Window Control menu in the top left corner of the dialog box.

If you open a form as a dialog box and it does not have a Control menu, you can close the dialog by pressing Alt+F4.

Minimize Button places a Minimize button on the top right corner of the dialog box.

Maximize Button places a Maximize button on the top right corner of the dialog box.

Window Properties

Title Bar places a title bar across the top of the dialog box.

Enter the text you want to appear on the dialog box's title bar in the Title text box.

To display horizontal or vertical scroll bars on the dialog box, check either Vertical Scroll Bar or Horizontal Scroll Bar.

Check Modal to prevent users from working anywhere else in Paradox until the dialog box is closed.

Uncheck Mouse Activates to allow users to click the dialog box to activate it without changing the focus to it. For example, if you've created a customized Toolbar using ObjectPAL, and you want to use the tools on that Toolbar in your dialog box, unchecking Mouse Activates will prevent Paradox from activating the Toolbar window every time a user clicks one of its tools.

Note:	Before the settings you choose in the Window Style dialog box can take effect, you must save the form, close the Form Design window, and open the form in the Form window.


To specify form window style

See also

You can specify whether the form appears as a window or as a dialog box, and you can specify the style of the form's title and border.

1.	In a Form Design window, right-click the form's title bar and choose Window Style, or choose Form|Window Style.

Paradox opens the Window Style dialog box.

Note:	The form's title bar is not visible if the form is maximized. Click the restore [image] button on the form's menu bar to drop the form to a window.

2.	Change the form's window style, title, and border.

After you change the window properties of a form, you must save the form and reopen it to see the changes.


About tab order of design objects on a form

See also

When running a form, a user can press Tab to move from object to object. Tab order is the order in which objects become active as the user presses Tab.

You can modify the tab order by changing the Next Tab Stop property and by using Design|Send To Back or Design|Bring To Front.

Note:	Send To Back and Bring To Front are also available as buttons on the Align Toolbar.


To change the design window tab order

See also

While in design mode, objects tab in the order in which you placed them on the form. After you move them around, this order might no longer make sense. To reorder the Tab sequence,

1.	Select the object you want first in the tab sequence.

2.	Choose Design|Bring To Front.

3.	Repeat these two steps for each object on the form in the order you want the user to move through the form.

Note:	For an object to be included in the tab sequence, its Tab Stop property must be checked.

When you use Design|Send To Back and Design|Bring to Front to change the front-to-back positions of objects in a form, you change their tab order in a design window, because objects always tab from back to front. This has no influence on the tab order when you run the form.


To change run-time tab order

See also

When a form runs, objects tab from left to right and from top to bottom.

To alter this tab order,

1.	Right-click a design object and choose Properties

2.	Check Next Tab Stop on the Run Time page.

3.	From the list of objects under Choose The Next Tab Stop, choose the one that should be next in the tab sequence.

If an object is not in the tab order

Some objects (push buttons and charts) are not included in the tab sequence at run time. To include such an object in the tab sequence,

1.	Right-click the object and choose Properties from its menu.

2.	Check Tab Stop on the Run Time page.

If you do not choose Tab Stop, Paradox bypasses the object in the tab sequence. Users of your form can still use the mouse to select the object.


To run a form

See also

In the Form Design window, you view a form's design. To view the form's data, you run the form.

From the Desktop

1.	Choose File|Open|Form.

2.	In the Open Form dialog box, select the file from the list, or type the file name in the File Name box.

3.	Check View The Form in the Options.

From the Form Design window

Do one of the following

Click the View Data [image] button to run the form and view the data.

Press F8 to run the form and view the data.

Choose Form|View Data to run the form and view the data.

Choose Form|Edit Data to run the form and edit the data.

From the Project Viewer

1.	Right-click the form.

2.	Choose View Data.


To view a form with a different table

See also	Example

You can open a form created on one table using the data from another table or from a query. For example, suppose you have two types of vendors that you want to keep separate, but the table structure for each is identical. You can design a form for the first vendor table, and instead of creating an identical form for the second table, you can open the form with the second table.

Using the File menu

1.	Choose File|Open|Form.

The Open Form dialog box appears.

2.	Choose the form from the list.

3.	Click Change Table at the bottom. The Select Replacement Table dialog box appears.

4.	Select the table to view, and choose OK, then Open again when the Open Form dialog box reappears.

If a field in the form does not have a corresponding field in the table, Paradox warns you and makes these fields undefined.

Paradox opens the form. Any undefined fields are given the name LABEL, and no data appears in them.

5.	To redefine undefined fields, click the Design [image] button. See To place a field on a form or report.

Using the Project Viewer

A faster way to open a form with a different table is with the Project Viewer.

1.	Right-click the form in the Project Viewer

2.	Choose View With from the right-click menu.

3.	Choose the new table in the Select File dialog box and click Open.

Warning:	To keep the original form intact, save the new form with a different name.


Example of opening a form with a different table

See also

Suppose you have two vendors (Vendor1 and Vendor2) with identical table structures. You want to view the Vendors form, originally designed for the VENDOR1.DB table, using the VENDOR2.DB table.

1.	Open the Project Viewer.

2.	Right-click the Vendors form's icon and choose View With.

You'll see the Select File dialog box.

3.	Choose VENDOR2.DB and choose OK.

4.	Click the Design [image] button to switch to the Form Design window.

5.	Choose File|Save As and give the form a new name.

6.	Click the View Data [image] button to switch to the Form window and view the new form.

Viewing a form with another table's data is a great way to save time in the Form Design window once you find a design you like. But it can be complicated, depending on the complexity of the form design itself. If you attempt this with the master table of a multi-table form, you'll probably need to redefine links between tables.

Note:	Paradox keeps the original form, so you won't harm existing objects unless you do a File|Save rather than a File|Save As.


About forms based on reports

See also

You can open a form as a report or a report as a form.

If a report's data model and layout are just what you want for a form, you can open the report as a form without recreating the design.

Bands in reports

Paradox gets the form's layout from the record band of the report. Because forms do not use the banded layout that reports do, objects in group, page, or report bands are not included in the new form design.

Objects that behave differently

Some objects behave differently in forms and reports. Calculated fields and summary fields, for example, look at data differently, so you might need to modify them to get the correct results. Summary fields located in the record band of a report work correctly in a form.

Page breaks in reports

If the report design includes a page break in the record band, Paradox creates a multi-page form.

For information on opening a form as a report, see About reports based on forms.


To design a form from a report

See also

1.	Choose File|Open|Report.

2.	From the Open Report dialog box, choose the report you want to use.

3.	Check Open As A Form in the Options section.

4.	Choose OK.

Paradox creates and opens a new form based on the contents of the report's record band, including design properties and page breaks.

Paradox does not change the existing report.


About delivering forms and reports

See also

Delivery gives you a way to let others use your form or report, but not change the design or source code. A delivered form or report cannot be opened in a design window, and therefore cannot be changed.

When you deliver a form or report, Paradox creates a copy of the form or report with all source code removed. Buttons and other objects still work exactly the way you designed them.

Access to the data model

When others use your form or report, they must also have access to all tables in the data model, along with any indexes and referential integrity files. The easiest way to make portable a set of tables, forms, and related files is to use an alias.

Screen display

When designing a form for others to use, consider the screen display with which users will view the form. It's best to use standard color and font choices, as well as standard form window sizes, to ensure the usability of the finished form.

For information on developing applications using forms and programming using ObjectPAL, see the Guide to ObjectPAL.


To deliver a form or report

See also

Choose File|Deliver in the Form Design window or Report Design window.

Paradox saves a copy of the form with an .FDL extension or the report with an .RDL extension. The D stands for delivered.

You can still change the original form or report (the one with the .FSL or .RSL extension), and then deliver it again. Your code is not lost [image] it's protected.


To print a form's design

See also

1.	Choose File|Print from the Form Design window.

Paradox displays the Print File dialog box.

2.	If you're printing a multi-page form, specify a page range or select All to print every page.

3.	Specify the number of copies.

4.	Check the Collate box if you are printing more than one copy and you want the pages collated.

5.	Choose OK.

If your form page is larger than the printer paper, Paradox trims the form design.

To modify your printer setup, or select a different printer, choose File|Printer Setup.


To print a form's records

See also

Although forms are designed primarily to be viewed onscreen, you can print a form directly from the Form window.

1.	Choose File|Print while running a form.

Paradox displays the Print File dialog box.

2.	If you're printing a multi-page form, specify a page range or select All to print every page.

3.	Enter the number you want printed on the first page.

Note:	Form pages won't be numbered unless you put the special Page Number, and/or Number of Pages fields on each page.

4.	Specify the number of copies.

5.	Check the Collate box if you are printing more than one copy and you want the pages collated.

6.	Choose OK.

When you print a form, Paradox prints only the current record. Paradox does not print a form for each record in the table. Use a report to print every record. You can try opening the form as a report, and then print the report. The pages of your report will be in the format of the form. See To design a form from a report.

Potential font problems

If you designed the form for the screen, the fonts that appear on the printed output might not match those that you see onscreen. This depends on whether your screen fonts and printer fonts match.


To change a form's properties

See also

The form, as a whole, has properties just like a design object which can be changed.

1.	In a Form Design window, do one of the following to change the form's properties:

Choose Form|Properties.

In the Form Design window, right-click the form's title bar and choose Properties.

In the Form Design window, right-click the form beyond the edge of the page and choose Properties.

Note:	The form's title bar is not visible if the form is maximized. Click the restore button [image] on the form's menu bar to drop the form to a window.

2.	Change the properties on the General and Pattern pages.

Tip:	When changing the color or pattern of a form, the page's color is not transparent by default. You can make the page a different color than the form by not checking Transparent on the page's General page. If you check Transparent, the page will pick up the form's color and pattern properties.

To view the changes in form color and pattern when the page is not transparent, zoom far enough to see the area of the form beyond the edge of the form page.


To change a form page's properties

See also

The page has properties which can be changed, such as color, pattern, transparency, scroll bar, and Size To Fit.

Right-click the page, and choose Properties.

Tip:	When changing the color or pattern of a form, the page's color is not transparent by default. You can make the page a different color than the form by not checking Transparent on the page's General page. If you check Transparent, the page will pick up the form's color and pattern properties.


About running forms

See also

Sometimes it's more convenient to work with the data from your tables one record at a time, rather than with an entire table full of data. Forms let you see as much (or as little) of your data as you want in the format you prefer.

When you view data in a form, you see the same data as in the table, but Paradox arranges it differently. If you edit data in the form, Paradox updates the data in the table.

Forms are a good tool for data entry. You can design a form to display several records from a table, or even records from several tables at the same time. Then run the form to enter and edit the data in the tables. Any change you make in the form is reflected in the table.

You use the Form window to run, or view, a form. Choose Form|View Data, or press F8. This window displays a table's data. To edit the data, you have to choose Forms|Edit Data, or press F9.

To change the design of the form, switch to the Design window by choosing Form|Design Form, or press F8.

You can toggle between running the form and designing the form by clicking the View Data [image] button and the Design Form [image] button.

When running a form,

Fields show the values in the tables.

Calculated and summary fields show computations on data in the form's tables (read-only).

Charts and crosstabs can be used to summarize data (read-only).

Multi-record objects can display more than one record of a table at a time in a non-tabular format.

Table frames display as many records of each table as fit in the space you allotted. However, you can navigate through the records to show any that don't fit in the display.

You can move from one page to another in forms and notebook objects containing multiple pages.

ObjectPAL code attached to buttons is executed when you push them. ObjectPAL can also be triggered at other times, for example, in OLE controls.


To use a quick form or report

See also

Use a quick form or report to easily view a table's data from the Table window.

1.	Open a table in a Table window.

2.	Choose Tools|Quick Form (F7), or Tools|Quick Report (Shift+F7).

Paradox displays a Form or Report window showing a default form or report containing the table's data.

If you have defined a preferred form or report for the table, Paradox displays that form or report.

When you open a preferred or default form from the Table window, Paradox moves to the record in the form that is currently selected in the table. For example, if you've selected record number 12 in the table, the form opens with record number 12 visible.

To modify the form or report design,

Switch to the design window by doing one of the following:

Click the Design Form or Design Report [image] button.

Choose Form|Design Form or Report|Design Report.

For more information on quick forms and reports, see About quick objects.


To use a default form or report

See also

If you have defined a preferred form or report for a table, and then need to generate a default form or report,

1.	Open a table in a Table window.

2.	Choose Tools|Default Form or Tools|Default Report.

Paradox displays a Form or Report window showing the default form or report containing the table's data.

When you open a preferred or default form from the Table window, Paradox moves to the record in the form that is currently selected in the table. For example, if you've selected record number 12 in the table, the form opens with record number 12 visible.

To modify the form or report design,

Switch to the design window by doing one of the following:

Click the Design Form or Design Report button [image].

Choose Form|Design Form or Report|Design Report.

For more information on quick forms and reports, see About quick objects.


To run an existing form

See also

From the Desktop

1.	From the Desktop, choose File|Open|Form.

Paradox displays the Open Form dialog box.

2.	Select a form.

The option View The Form should be selected by default at the bottom of the dialog box.

3.	Choose Open.

From the Project Viewer

1.	Select Forms in the Project Viewer.

2.	Do one of the following:

Double-click the desired form. The form will open in View mode if the preferences are set that way in the Forms/Reports Preferences Dialog Box dialog box.

Right-click the desired form and choose View Data.


To move among fields on a form

See also

Using the mouse

To move to any field on a form,

Click the field.

Using the keyboard

To move to any field on a single-table form,

Use the arrow keys.

Press Tab or Shift+Tab.

Tab moves from field to field in left-to-right, top-to-bottom order. When you reach the last (most bottom-right) field, pressing Tab returns to the first (most top-left) field on the screen.

Shift+Tab reverses the tab order. The sequence of movement is right-to-left, bottom-to-top.

Using Tab is reliable and predictable in simple forms. As a form becomes more complex, with more objects on it, tab order can become confusing. You can always use the mouse to move quickly to an object.

To control the tab sequence

See To change run time tab order.


To move among records on a form

See also

Do one of the following:

Choose the First, Last, Next, Previous, Next Set, and Previous Set from the Record menu. Each of these menu choices has an equivalent shortcut key displayed next to it on the drop-down menu.

Click the navigation buttons on the Toolbar. See Table and form navigation buttons

Press the appropriate keyboard key (such as PgUp or PgDn).

Tip:	Using the shortcut keys to move among records is most reliable. For example, if you are editing a memo field PgUp or PgDn scrolls the memo instead of changing records.


To move among table objects on a multi-table form

See also

You can move from the master region to the detail region and back again in a multi-table form.

Press F4 (Super Tab) to move forward among the table objects.

Press F3 (Super Back Tab) to move backward.

Shift+F3 and Shift+F4 work to move between pages of a multi-page


To prevent screen flashing

See also

Sometimes the screen flashes a bit when you move from field to field. This is especially noticeable when the form you're working with has a dark background.

To suppress this behavior,

Choose Form|Settings and check Flicker-Free Draw.

Turning on Flicker-Free Draw eliminates some screen flickering, but it may cause the movement from one field to another to be somewhat slower on some graphic adapters. Experiment with Flicker-Free Draw on and off to see what works best for you.


To view a form's source table

See also

When you're running a form, you can view the table on which the form was built.

Do one of the following:

Click the Table View [image] button.

Choose View|Table View.

Press F7.

Paradox opens a Table window showing the source table of a single-table form or the master table of a multi-table form.


To save Form window settings

See also

You can save the ruler, grid, and other Designer settings as preferences for use as default settings in all Form windows.

Choose Edit|Preferences, make the changes to the Designer page, and click OK.


About bands

See also

Paradox uses bands to control how sections of a report repeat. Bands run horizontally across the page and define logical sections for your report.

Reports have four types of bands:

The report band prints information at the beginning and end of the report. The header appears at the beginning of the report and the footer appears at the end.

The page band prints information at the top and at the bottom of each page in your report. The header appears at the top of each page and the footer appears at the bottom.

The record band prints information for every record in the table(s) the report is based on. If the record band contains a table or a multi-record object, the band appears once for every set of records in the master table.

Group bands define sets of records based on certain criteria. They appear at the beginning and end of each group of records. Unless you choose the header property On Group Only, the header appears at the top of any page where a group continues from the previous page. You define the group criteria. Group bands are optional.

When you design a report, Paradox places the page, report, and record bands for you. You cannot remove these three bands, although you can leave them blank and collapse their height. (Select the band, then press Delete.)

Changing band properties

You can change properties for each of the bands in either the design window or the Object Explorer. In the report design window, right-click a band and choose Properties. To display the Object Explorer, press Ctrl+Space.

Boundary lines

The thick lines separating each region of a report design are boundary lines and indicate the placement of report bands. Band regions print something (even whitespace) if their boundary lines do not touch neighboring boundary lines.

Each boundary line contains a band label with a text description and an arrow pointing toward the report region affected by that line. For example, the arrow in the top page band boundary line points down because the page header is below that boundary line.


To show band labels

See also

If band labels are showing, you can more easily select and manipulate bands with the mouse. If any bands are sized to zero height, you cannot see them unless band labels are visible.

Check View|Band Labels in the Report Design window.

Band labels are shown onscreen only in the Report Design window (not in the report itself), and turning them on or off does not affect the layout or presentation of your printed or previewed report.

Turn off (uncheck) Band Labels to make it easier to line up objects as you are designing the report.

For more information, see View|Band Labels.


To select a band

See also

Do one of the following:

Click the bar that contains the band label.

Click any white (or unused) area inside the band.

Which band is selected?

If View|Band Labels is checked, the selected band's label will change color.

In the sidebar along the left side of the Report Design window, the selected band (and any bands within it) is highlighted.

The status bar at the bottom of the Desktop tells which band is selected.


To resize a band

See also

You can add or remove whitespace in your report by resizing the bands.

1.	Select the band. There are three ways you can tell that the band is selected:

You will see the band highlighted in the side bar along the left border of the window

If you have View|Band Labels turned on, the band label will change colors.

The status bar at the bottom of th eDesktop tells which band is selected.

2.	 Place the mouse on the edge of the selected band. The pointer changes to the shape of a two-headed arrow.

3.	Drag the top or bottom band up or down to change the size.

When there is an object in a band,

Drag the top band line to add or remove space above the object

Drag the bottom band line to add or remove space below the object

You can not resize a band to be smaller than the objects within it.

Note:	You must resize bands using the mouse. There is no keyboard equivalent.

You can also condense the band to zero height by deleting it. All objects in the band will also be deleted, and the band will not appear on the report.

If you want to see more of your design on the screen, you can turn band labels off by unchecking View|Band Labels.


To delete a band

See also

For all bands except group bands, deleting a band in Paradox means minimizing its size to zero so it will not appear in a report. Deleting a band also removes any objects in the band.

Click a band and choose Edit|Delete, or press Del.

If you delete a band by mistake, press Edit|Undo.

The only type of band that can actually be removed from the report is the group band.


About report bands

See also

The report band defines the report header and report footer areas. Paradox prints the report header once, at the beginning of the report, and the report footer once, at the end of the report.

Typical information found in a report header would be the company letterhead or report title. A report footer might be an "end of file" statement. You place the objects that should appear as report headers or footers in the appropriate report band. The example below shows a graphic object containing the company logo in the report header area.

Summaries and calculated fields placed in the report header or footer summarize and are calculated from the entire table.

The report header can come either before or after the page header on the first page. Right-click the report band and choose Properties. Check Precede Page Header on the General property page.

The report footer always precedes the page footer on the last page.

Tip:	You can place a page break in a report header to produce a multi-page report header or to separate the header from the first page of the rest of the report.


To change the header order

See also

Paradox prints the report header (the contents of the top report band) before the page header (the contents of the top page band). You can reverse this ordering.

1.	Right-click the report band choose Properties from its menu.

2.	Uncheck Precede Page Header.

Paradox will then print the report header after the page header. You will not see this in the Report Design window because the bands themselves do not move, but when you preview or print the report, the change takes effect.


About page bands

See also

The page band defines the header and footer areas of each page. Paradox prints the page header and footer on every page of the report.

Paradox places three objects in the top page band (the page header) for you:

The Today field that shows the print date of the report. Paradox places this field at the left margin of the page header.

A field object that contains the default title for the report. In a single-table report, Paradox uses the name of the table as the default title. In a multi-table report, Paradox uses the name of the master table as the default title.

Paradox places the title in the center of the page header, however if a field that grows in width (such as a date) is included in the header, it causes the title to be off center when the report is printed. To ensure that the title is always centered, check the Pin Horizontal property on the title's Run Time property page.

The Page field that shows the page number of each page. Paradox places this field at the right margin of the page header.

You can keep, delete, or change any object Paradox places for you.

If you want your header or footer to show the first or last records on the page, place fields in the page bands. Fields placed in the page header show the first record in your page. Fields placed in the page footer show the last record on your page. Summaries and calculated fields summarize and are calculated from all records that appear on the page.

Unlike other bands, the page bands don't expand vertically when you view or print the report. This means Paradox will clip expanding objects (like tables) to fit inside the band.


To suppress the header or footer on the first page

See also

You can suppress the contents of the page header, the page footer, or both on the first page of your report.

1.	Right-click the header or footer and choose Properties from its menu.

2.	Make sure Print on 1st Page is not checked.


About record bands

See also

The record band contains the body of the report [image] the records of the table you are reporting.

You can place data elements such as fields, charts, crosstabs, multi-record objects, and table frames in the record band. These elements contain the data from your table. Paradox automatically places objects in the record band depending on the type of report:

Report type	Objects placed

Tabular	The records of the table to which the report is bound appear within a table frame in the record band.

Single-record	Paradox automatically places field objects in the record band.

Multi-record	Paradox places field objects within a multi-record object in the record band.

Blank	Paradox does not automatically place any objects.

You can move, resize, or delete the objects that Paradox places.

The record band repeats once for every record in the master table, unless the record band contains a table, multi-record object, crosstab, or tabular chart on the master table. In that case, the record band contents appear once for every set of records in the master table.

For example, if you place a crosstab on the master table in the record band, it will be printed once for each record in the table. Usually, you should put a crosstab on the master table in the report band, either in its header or footer. With a 1 [image] M data model, it is often appropriate to put a crosstab on the detail table in the record band to generate a crosstab for each master's detail set.


To start page numbers at one when a band is reached

See also

You can begin a new page and reset the page number to one when the record band or group band is reached.

1.	Right-click the record band and choose Properties from its menu.

2.	Check Start Page Numbers on the General page.

When you choose to restart page numbers for each group, Paradox changes to a page number format that shows page within group (1-1, 1-2, 1-3...2-1, 2-2, 2-3...). You can not modify this format.


To sort records in a record band

See also

You have a choice when it comes to sorting the record band. You can add a group band to force a sort, filter the records, or sort the records using Sort Record Band [image] or if it's a detail table, take the sort order that the link implies.

To sort the records using Sort Record Band,

1.	Right-click the record band and choose Sort from its menu.

Paradox opens the Sort Record Band dialog box.

2.	Specify the fields to sort on, their order, and their sort direction.

Different types of sorts are available for different data models, and have different results. The main advantages of Sort Record Band is that you are not limited to existing indexes and you don't get a break in the table each time the sort key changes.


About group bands

See also

You can place group bands in a report to break information into groups of data. You can base groups on the value of a field, a range of values, or a specified number of records. For example, you could group records by country so that all records with the same country appear together.

Paradox always places group bands between the page band and the record band.

Group header and footer

The group header appears at the start of every group.

The group footer appears at the end of every group.

You can exchange

You may want to place some sort of divider, like a line, within the group footer to clearly show when one group ends and another begins. When you place a page break at the bottom of a group footer, you can be sure that all new groups begin on a new page.

If you do this, don't leave white space after the page break at the bottom of the band.

Displaying repeated group values

You can suppress repeated group values in the record band of a report by checking Remove Group Repeat on the report's General property page.

Multiple group bands

You can create more than one group band. Add group bands so that the largest data group is above all smaller data groups. For example, group by Country first, then by City. Start with the broadest category, then narrow the grouping.

Tip:	Use two group bands when you want to group by a number of records within a given range, or when you want to group by a range within a given number of records.

Changing the position of the group bands

You can change the position of a group band relative to other group bands by selecting a group band and dragging it above or below another group band.

Exchanging group header and footer

You can exchange the group header and footer by selecting one and dragging it towards the other. The information in the selected one will be transferred to the other.

Scope of a group band

Summaries and calculated fields in the group band use the entire group as their scope. Other objects show different data depending on whether they are in the group header or the group footer.

In the group header:

Fields in the group header show the first field in the group.

Crosstabs on detail tables correspond to the first field in the group of the master table.

In the group footer:

Fields in the group footer show the last field in the group.

Crosstabs on detail tables correspond to the last field in the group of the master table.


To add a group band

See also

You can add a group band to your report, if the report is bound to a table.

In the Report Design window, check Report|Add Group Band or click the Add Group Band [image] button.

Paradox opens the Define Group dialog box.

Paradox places the first group band between the page band and the record band. When you place more group bands, Paradox places them closest to the record band. You can rearrange group bands by dragging them with the mouse.

You cannot add a group band to certain reports that have a data model containing dBASE tables. See Limitations on reports containing dBASE tables for more information.

Tip:	When you create a group band, Paradox places both a group header and group footer. You may want to place some sort of divider, like a line, within the group footer to clearly show when one group ends and another begins. When you place a page break in the group footer, you can be sure that all new groups begin on a new page.


To define a group band

See also

1.	Right-click a group band in a Report Design window and choose Define Group.

Paradox opens the Define Group dialog box.

2.	Do one of the following:

Check Group By Field Value and choose the table, fields, and if desired, the range to group by. See About grouping by a range for details.

Group By Record to specify the number of records you want to appear in each group.


To rearrange group bands

See also

If your report has multiple group bands, you can rearrange their order. Moving a band changes the order of the grouping.

1.	Select the band, then drag it to its new location.

Thin lines marking the size of the moving band appear to help you position it.

2.	Release the mouse when the band is positioned where you want it.

You can drag from anywhere within the band. With the band selected, you can also use the Up arrow [image] and Down arrow [image] keys to move the band.

Note:	You cannot group by a field within a range group.


To group by a field value

See also

If you group the records of your report based on the value of a field, you can arrange the data into meaningful sets. For example, you can view your customers grouped by their country or state, view orders grouped by a method of payment or shipment, or view stock items grouped by equipment classification.

1.	Add a group band, as described in To add a group band.

Paradox opens the Define Group dialog box.

2.	Choose the value of a field, a range of values, or a specified number of records to group by.

Paradox places a field object for the field you are grouping by in the header of the new group. You can delete this field.

When you group by the value of a field, you apply a sorting specification to your data. If, for example, you group on the Country field of the Customer table, the records from Customer appear in the report sorted by the values in their Country field.

You cannot place a field group band within a range group band.

Tip:	You can place two group bands on a report to use a field or range grouping in combination with a number of records grouping.


To group by a number of records

See also

You can group the report into sets of records by defining a number to specify the set you want. This is useful if you want to group records for easy viewing without sorting them in any particular way.

1.	In the Define Group dialog box, choose Group By Record.

2.	In the Number of Records text box, enter the number of records you want in each group.


To set printing preferences for group headers

See also

You can print a group header at the beginning of each group, or at the top of the page when the group continues across a page break.

1.	Right-click a group band in a Report Design window and choose Properties from its menu.

2.	Click one of the following properties in the Header area on the General property page:

On Page And On Group

On Group Only

For information, see Header property.

The Header property affects the entire group band. To control how a specific object prints, use its Conditional property. See To set printing preferences for objects in group headers.


To set printing preferences for objects in group headers

See also

You can print a specific object in a report's group header at the beginning of each group, at the top of the page when the group continues across a page break, or both.

These options are available for field objects, records in a table frame, or records in a multi-record object.

1.	Right-click an object in a Report Design window and choose Properties from its menu.

2.	Check one or both of the following Conditional properties on the Run Time page:

Print at Group

Print at Page

For information, see Conditional property.

The Conditional property affects only the specified object. To control how an entire group band prints, use its Header property. See To set printing preferences for group headers.


To specify the sort order for a group

See also

You can sort records in ascending or descending order.

1.	Right-click a group band in a Report Design window and choose Properties from its menu.

2.	Check one of the following Sort Order properties on the General page:

Ascending prints the groups in A to Z or numeric order

Descending prints the groups in Z to A or reverse numeric order


To suppress repeated group values

See also

When you group records on a field value, Paradox will usually print that field value in every record, even though it is the same throughout the group. You can suppress repeated field values that a group is based on by checking the report property Remove Group Repeats.

In the Report Design window, choose Report|Properties and check Remove Group Repeats on the General page.

When Remove Group Repeats is not checked, Paradox displays the value of the grouped field for each record, including duplicates, in the record band.

When Remove Group Repeats is checked, Paradox prints the value for the first record of the group only.

The example below shows a report for the sample Orders table that has a group defined on the Customer No field. Remove Group Repeats is checked. As you can see, only the first record in each group actually shows the customer number.


About grouping by a range

See also	Examples

When defining a group in a report, you can specify a range of values to be met in the field you are grouping on. For example, you might want to group the records in the Orders table by month or quarter, or group the records in the Lineitem table by the units in the Qty field.

You can specify only one range group in a single report. Also, you cannot place a field group band within a range group band.

Records in a group are in sequence [image] lowest to highest for numbers, alphabetical order for alpha fields, and chronological for date and timestamp fields. Grouping by range really only differs in how often the group breaks occur.

Number fields

When you group by a range on a numeric field, groups are determined by intervals; for example, 1-5, 6-10,11-15. The first group begins with zero and increases by the range size you specify.

Paradox accepts fractions when you define a range on number or money fields. Ranges on short, long integer, and autoincrement fields require whole numbers. You cannot define a range on BCD or time fields.

Date or timestamp fields

When you group by a range on a date or timestamp field, groups are determined by day, week, month, quarter, or year.

Day groups records that have the same date.

Week groups records with dates that fall in the same week (Sunday to Saturday).

Month groups records with dates that fall in the same month.

Quarter groups records with dates that fall in the same quarter of the year.

Year groups records with dates that fall in the same year.

Grouping is always chronological. For example, when grouped by month, April 1991 and April 1992 appear as separate groups.

Alpha fields

When you group by a range on a Paradox alpha or a dBASE character field, you specify the number of characters to group on in the Range Group text box (the number of characters that must match to be in the same group). For example, if the field you're grouping by is Last Name, a range of 3 would ensure that Simmons and Simpson were in the same group, and that Sidney was in a different group.

A Range Group size of 1 tells Paradox to group all records that start with the same character together. A Range Group size of 2 tells Paradox to group all records that start with the same two characters together.

Logical

Ranges are not allowed on logical fields.


To group by a range

See also	Examples

If you do not specify a range, a new group begins every time the field value changes.

1.	Open the Define Group dialog box.

Paradox shows the master table and any table linked to it in a 1 [image] 1 relationship in the Table list, and all available fields in the Field list.

Because you cannot create a group on a BLOB field, Paradox doesn't show them in the Field list.

2.	Choose the field you want and check the Range Group check box.

The interval of the range depends on the data type of the field. See About grouping by a range.

Note:	For more information on creating a data model that make more fields avaliable for grouping, see Example of a data model for reports with groups.


Example of grouping by a range on a numeric field

See also

This example groups a report based on a two-unit number range.

Suppose you want to know the unit quantity of stock on hand, listed in the Stock table:

1.	Open the Report Design window for a new report on the Stock table.

2.	Choose Report|Add Group Band. Paradox opens the Define Group dialog box.

3.	In the Define Group dialog box, select the Qty field, check the Range Group check box, and type 2 in the Range Group text box.

4.	Click OK.

Paradox creates a group band.

This report groups records by Qty in ranges of two units. Each group shows up to two values in the Qty field. Paradox does not print groups that contain no values.

The first group begins with zero and increases by the range size of two:

Paradox first creates a group containing the values 0 and 1 in the Qty field. Since there are no values of 0 or 1 in the Stock table, this group is not printed.

Paradox next creates a group containing the values 2 and 3 in the Qty field. Since there are no values of 2 in the Stock table, this group shows only values of 3.

Paradox then creates a group containing the values 4 and 5 in the Qty field. Both values exist in the Stock table, so both are included in the group.


Example of grouping by a range on an alpha field

See also

Suppose you want to group customer records by the first letter of the company's name:

1.	Open the Report Design window for a new report on the Customer table.

2.	Choose Report|Add Group Band. Paradox opens the Define Group dialog box.

3.	In the Define Group dialog box, choose the Name field, check the Range Group check box, and type 1 in the Range Group text box.

4.	Click OK.

Paradox creates a group band. The band label shows the group definition.

The report groups the records according to the first letter in the Name field.


About the sidebar

See also

The sidebar is between the ruler and the window's frame on the left side of the Report Design window. To display the sidebar, you must check Vertical Ruler under Report|Settings on the Designer page. Use the sidebar to see which band is selected and as one way to insert, move, or delete page breaks.


To insert or remove a page break in a report

See also

In the Report Design window, do one of the following:

Click the Insert Page Break [image] button, then click in the document where you want the page break to appear.

Click in the sidebar  where you want the page break to appear.

A line appears across your document, and a page break marker [image] appears in the sidebar.

When adding a page break, follow these rules:

You can place a page break in any band except the page band.

A page break cannot cross an object in the band. It must fall either above or below any existing objects.

To move a page break

1.	Move the mouse cursor over the page break. The cursor changes to a vertical double-headed arrow.

2.	Click and drag the page break marker to the new location.

To delete a page break

Do one of the following:

Click the page break in the sidebar, and drag the marker out of the sidebar.

Move the mouse cursor over the page break (the cursor changes to a vertical double-headed arrow), and press Del.


About expanding, contracting, pushing, and pulling of objects in reports

See also	Examples

When you preview or print a report, some objects (such as fields, tables, multi-record objects, and charts) fill with data. This may cause them to grow or shrink.

Tables and multi-record objects expand or contract vertically, filling as many pages as needed to print all records (unless you have changed the layout or the Show All Records property of the multi-record object).

Fields, when placed individually or as part of a table or multi-record object, expand or contract horizontally to display all the data they contain (unless Word Wrap is checked on the object's Text property page). Fields that expand in tables and multi-record objects cause the whole table or multi-record object to expand with them.

Fields with Word Wrap checked are fixed in width and expand vertically. Even if they contain less data than a single line, they remain fixed in width.

Objects that contain tables, multi-record objects, or fields can grow as the contained objects grow. Or, if they are scrollable objects, they expand to show all the contents (for example, graphic objects, record objects, text objects).

All objects you can place scroll bars on in forms expand to their full size in reports, when Size To Fit is set.

How expanding objects push and pull surrounding objects

When objects expand, they push surrounding objects, maintaining the spacing between them. When they contract (when there is too little data to fill the object) they pull in surrounding objects.

Vertically expanding objects push other objects down the page.

Horizontally expanding objects push other objects across the page to the right.

Changing how objects expand and push

When working with objects that expand and contract, you can use several properties to control run-time behavior.

You can prevent an object from expanding or contracting by setting its Fit Width and Fit Height properties. See To prevent expanding and contracting when running a report.

You can prevent an object from being pushed or pulled by setting its Pin Horizontal and Pin Vertical properties. See To pin design objects at run time.

Run-time errors

If the records in your table or multi-record object contain too much data (are too big) to fit on a page, a run-time error occurs. If you make them fixed size (Fit Height unchecked) they will clip the data but not generate an error. If you do not want clipping, check the Breakable property of the record and the table frame or multi-record object that contains it.

Note:	Multi-record objects are often not breakable, so you're forced to clip the data. You could design the report with a different approach: instead of placing small objects and letting them grow, you could make objects as big as they are allowed to be, making it impossible to get them to shrink. However, you may end up wasting a lot of paper just to print a report containing a few big records that cause clipping.


To prevent expanding and contracting when running a report

See also	Examples

When you preview or print a report, some objects fill with data. This may cause them to grow or shrink. As objects resize, they push or pull other objects on the page.

You can prevent the automatic resizing of these objects (and of objects that contain such objects).

1.	Right-click the object and choose Properties from its menu.

2.	On the Run Time page, uncheck the Fit Width and Fit Height properties.

When these properties are unchecked, the objects retain their size and shape when printed or previewed. Paradox trims data that is too large to fit inside them.

See Fit Width and Fit Height for more information.


To pin design objects at run time

See also	Examples

When you preview or print a report, some objects fill with data. This may cause them to grow or shrink. As objects resize, they push or pull other objects on the page.

You can prevent an object from being pushed or pulled.

1.	Right-click the object and choose Properties from its menu.

2.	Check Pin Horizontal or Pin Vertical on the Run Time page.

See Pin Horizontal and Pin Vertical for more information.

An expanding object can obscure a pinned object. For information on preventing expansion, see To prevent expanding and contracting when running a report.

Design time

For information on pinning objects at design time, see To pin design objects in place on a form or report.


Example of preventing pushing and pulling

See also

When you preview or print a report, some objects fill with data. This may cause them to grow or shrink. As objects resize, they push or pull other objects on the page.

For example, suppose you place the Name field from Customer in a report. When you are working in the Report Design window, the field object is always the same size. When you run the report, however, the values displayed in the field object differ in size, and by default the field object grows or shrinks to fit the data.

Now suppose you have a graphic object to the right of the Name field. The following figure shows how the graphic can be pushed or pulled by the Name field.

The size of the data in the Name field causes the field object to expand or contract. When it expands, it pushes the graphic to the right. When it contracts, it pulls the graphic to the left.

You can do one of two things to prevent the pushing or pulling of other objects from moving the graphic:

Select both the field and the graphic and choose Design|Group.

Right-click the graphic object, choose Properties and check Pin Horizontal on the Run Time page.

The following figure shows how pinning the graphic at run time affects the report.

When you check Pin Horizontal, the size of the data in the Name field does not affect the graphic. Because it is pinned, the graphic is neither pushed nor pulled as the data changes.

One possible consequence of pinning an object, which might otherwise be pushed, is that the expanding object can expand over the pinned object.


Example of invisible lines aligning pushed objects

See also

When you preview or print a report, some objects fill with data. This may cause them to grow or shrink. As objects resize, they push or pull other objects on the page.

Suppose you align objects in the Report Design window, and find that one of them is pushed by another object when you run the report. You can use invisible lines or boxes to group and control the alignment of multiple pushed objects, or you can select the objects and group them using Design|Group.

For example, suppose you had objects like this on the report design:

When you run the report, the Vendor Name field pushes or pulls the box, but not the ellipse.

If, in the Report Design window, you place a vertical line between the field and the other two objects, the expanding field pushes the line, which subsequently pushes both objects.

If you don't want to see the line, right-click it, choose Properties, then check Invisible on the Run Time page.

You can achieve the same results by grouping the box and the ellipse so they move together, rather than using a line.

In the example below, the bottom set of objects is still misaligned, because the invisible line was too long to fit on the page, and moved to the next page.

{bmc push3.bmp)

The solution to this problem is to use an invisible unbreakable box to contain both the box and ellipse. See the Example of a box pushing or pulling contained objects for an example of how to handle this situation.

Note:	You can accomplish the same results by grouping the pushed objects using Design|Group and unchecking the group's run time Breakable property.


Example of a horizontal line pushing objects down

See also

When you preview or print a report, some objects fill with data. This may cause them to grow or shrink. As objects resize, they push or pull other objects on the page.

Suppose you have a report design containing two objects that you need to keep together. You want to make sure that if one object is pushed, the other object is also pushed. For example, in a report design that has objects arranged like the following, you want the box and ellipse to stay aligned horizontally.

When you run the report, the table frame expands down the page until all records are displayed. The box is pushed, but the ellipse is left in place.

If, in the Report Design window, you place an invisible horizontal line between the table frame and the other objects, the expanding table pushes the line, which in turn pushes both objects.

Design window:

Run-time window:

{bmp push9.bmp}

You can place a horizontal line under any vertically expanding object, such as a text or multi-record object.

Note:	You can accomplish the same results by grouping the pushed objects using Design|Group and unchecking the goup's run time Breakable property.


Example of a box pushing or pulling contained objects

See also

When you preview or print a report, some objects fill with data. This may cause them to grow or shrink. As objects resize, they push or pull other objects on the page.

Suppose you have a report design that has objects arranged like this:

The example in Example of preventing pushing and pulling shows how to use a vertical line to align the box and the ellipse as they are pushed by the Vendor Name field's growth, but the line does not solve all problems with the layout.

You can place a box around all of the objects you want Paradox to push or pull in reaction to another object's resizing. Right-click the container box, choose Properties, and check its Invisible property on the Run Time page if you don't want to see it.

When an invisible box surrounds both objects, Paradox both pushes and pulls them together. If the box's Breakable property is unchecked on the Run Time page, Paradox cannot break the group of contained objects across pages.

Note:	You can accomplish the same results by grouping the pushed objects using Design|Group and unchecking the goup's run time Breakable property.


Example of an expanded box and a fixed line pushing or pulling contained objects

See also

When you preview or print a report, some objects fill with data. This may cause them to grow or shrink. As objects resize, they push or pull other objects on the page.

You can contain objects in a box to push objects down the page in reaction to a vertically expanding object.

For example, suppose you want to design a report on the Customer and Orders tables, and you want address fields to appear on the bottom half of the page so the page can be folded with the address showing through a window of an envelope.

Using the Customer [image] Orders data model, design a report that has objects like this in the record band:

In the above figure,

All objects are in the record band.

The table frame has Show All Records checked on its Run Time property page. It will grow down the page to fit all data.

The box maintains white space between the table frame and the text object. It has Fit Height and Invisible checked on its Run Time property page.

The vertical line prevents the box from shrinking. It has Invisible checked.

The fields are embedded in a text object. It can appear lower on the page, but must not appear higher. It is not pinned.

When you print the report,

The table frame containing order information can grow as much as it needs to. The text object containing the Customer fields is unpinned, so it can move down the page if necessary.

If the table frame shrinks, the line within the box prevents the box from shrinking with it. This prevents the text object containing the Customer fields from moving up on the page.

The box ensures the proper distance between the bottom of the table frame and the top of the text object containing the Customer fields.

All the run time properties work together, so the fields are always displayed in the correct area, regardless of the size of the table frame. You can make the box invisible if you don't want it displayed.


Example of a container keeping objects together

See also

When you preview or print a report, some objects fill with data. This may cause them to grow or shrink. As objects resize, they push or pull other objects on the page.

You can use a container to keep a group of objects on the same page. For example, suppose you have a report design that looks like the following.

The objects are surrounded with an invisible container object (box). The container's Breakable property is unchecked on its Run Time property page to keep the objects together on a page.

It's possible, whether you use a line or a box to control the horizontal movement of the box and ellipse, that Paradox could separate the box from the ellipse at a page break. This happens if

You use a line to align the objects

You use a box with its Run Time Breakable property checked

To prevent a group of objects from becoming separated at a page break, you must surround them with a box with its RunTime Breakable property unchecked.

Note:	You can accomplish the same results by grouping the pushed objects using Define|Group and unchecking the group's run time Breakable property.


To create mailing labels using the Report Design window

See also

The Mailing Label Expert can automatically create mailing labels for most standard office label sizes. It is recommended that you use the expert when designing mailing labels. See To create a form or report using the experts.

If you not want to use the expert, follow these steps in the Report Design window:

1.	Place a multi-record object in the record band.

2.	Place the fields you want, in the order you want (including spacing and punctuation) in the master record region of the multi-record object.

3.	Resize the record region so it matches the width and height of one label.

4.	Adjust the width of the record band to reflect the spacing between each label.

5.	Right-click the multi-record object and choose Properties.

6.	Specify the number of records across the page on the Record Layout page.


To merge data using the Merge Expert

See also

The Merge Expert helps you merge data from a table into a form letter created in another application like a word processor or a Paradox report. You can choose the table's fields to include, specify a sort order, and choose a format for the data.

To use the Merge Expert

1.	Choose Tools|Experts, or click the Expert [image] button.

The Experts Control Panel appears.

2.	Click the Merge Expert icon.

Paradox opens the Merge Expert.

2.	Follow the step-by-step instructions provided by the expert.


About reports based on forms

See also

You can open a form as a report or a report as a form.

If a form's data model and layout are just what you want for a report, you can open the form as a report without recreating the design. Paradox uses the form's layout in the record band of the report.

Objects that behave differently

Some objects behave differently in forms and reports:

Calculated and summary fields look at data differently in forms and reports, so you might need to modify them to get the correct results.

If you use a multi-page form, Paradox inserts page breaks at the appropriate places in the record band.

Buttons, notebooks, and OLE controls are not available in reports.

OLE fields .

Non-nested form design layouts are not valid for reports. They will result in undefined objects.

For information on opening a report as a form, see About forms based on reports.


To design a report from a form

See also

1.	Choose File|Open|Form.

2.	From the Open Form dialog box, choose the form you want to use.

3.	Check the Open As Report option at the bottom of the dialog box.

4.	To open the report in the design window, click Edit The Report Design.

5.	Choose Open.

Paradox inserts the form's layout in the record band of the report.

Paradox does not change the existing form.


To change a report's properties

See also

The report, as a whole, has properties which can be changed.

1.	In a Report Design window, do one of the following to change the report's properties:

Choose Report|Properties.

In the Report Design window, right-click the report's title bar and choose Properties.

In the Report Design window, right-click the area outside the form page and choose Properties. (You may have to zoom out to see beyond the edge of the page.)

Note:	The report's title bar is not visible if the report is maximized. Click the restore [image] button on the report's menu bar to drop the report to a window.

2.	Change the properties on the General and Pattern pages.


To change a band's properties

See also

Right-click the band or the band label and choose Properties from its menu.

Paradox displays property choices for the band.

To use the keyboard,

1.	Use Tab to select the band you want.

2.	Press F6 to display the band's menu.

Breakable and Shrinkable properties

All bands except page bands have the Run Time Breakable and Shrinkable properties.

Breakable means if the contents of the band don't fit on one page, Paradox can divide them across pages.

Shrinkable means if the contents of the band will fit on the page, but the band itself is too big to fit (including whitespace), Paradox can discard white space below the bottom object in a band to make the band fit on the page.


To preview a report

See also

Previewing (running) a report shows you what the printed report will look like with data in it.

In the Report Design window,

Click the Run Report [image] button or choose Report|Run Report.

Paradox displays the report in the Report window. Navigation buttons appear on the Toolbar. Click the buttons to move among pages of the report.

You cannot enter or edit data in a report. A report is solely a viewing tool.

To return to the Report Design window,

To make changes to the report, return to the Report Design window.

Click the Design Report [image] button or choose Report|Design Report.

Note:	F8 toggles between Run Report and Design Report.

For faster performance

To speed up previewing of a report, uncheck both the Fit Height and Fit Width Run Time property of any object.


Report navigation buttons

See also

Navigation buttons appear on the Toolbar when you preview a report. Click the buttons to move among pages of the report.

First page of the report

Previous page of the report

Next page of the report

Last page of the report

Opens the Go To Page dialog box, where you type in a page number

You can also use Report|Page menu for these operations.

Next page and Previous page have shortcut button to speed up navigation as well.

Shift+F4 displays the next page.

Shift+F3 displays the previous page.


To size the Report window to the fit the report's page size
To size the Report window to the fit the report's design

See also

Paradox can automatically size the Report window to fit the design.

In the Report Design window,

Choose Report|Properties and check Size To Fit.on the report's General property page.


To display a custom menu when previewing a report

See also

Paradox displays the standard Report window menu when you are previewing a report. If you create a menu using ObjectPAL, your report can use that custom menu at run time.

In the Report Design window,

Choose Report|Properties and uncheck Standard Menu.

Standard Menu is checked by default.


To print a report

See also

1.	Do one of the following:

In the Report window, choose File|Print or click the Print [image] button.

In the Report Design window, choose File|Print|Report, or click the Print button.

Paradox opens the Print File dialog box.

2.	Choose the pages to print, the number of copies to print, and whether to collate multiple copies.

3.	Use the Overflow Handling options area to specify how to treat data that is too wide to fit on the printed page.

See Print File dialog box for information.

4.	Choose OK.

While sending the report to the printer, Paradox displays a dialog box with a Cancel button.

5.	Choose Cancel at any time to stop sending the report to the printer.

Choosing Cancel does not cancel pages Paradox has already sent to the printer.

The report's page layout affects how the report prints. For information about designing the report for the printer, see About page layout for forms and reports.

Potential font problems

If you designed the report for the screen, the fonts that appear on the printed output might not match those that you see onscreen. This depends on whether your screen fonts and printer fonts match.


To print a report's design

See also

In the Report Design window,

Choose File|Print|Design.


To print a report when another user is changing the data

See also

When you run a report on shared data, you run the risk of reporting on changing data. For example, if you print a report on the Customer table while another user is editing the table, your report might be out of date by the time it prints.

In the Report Design window,

Choose Report|Restart Options.

Paradox opens the Restart Options dialog box.

For information on the options, see Restart Options dialog box.


About using a report with a different table

See also

You can open a report created on one table using the data from another table or from a saved query or saved SQL file.

Suppose you design a report for Lineitem and like the layout, colors, and other attributes so much that you want to display the data from Orders in the same style. Instead of re-creating the report on the new table, you can open the report using the new table. This feature is also useful for quickly using an existing report layout to print or view the Answer table of a query.

The following are rules that apply when using a report with a different table:

The master table is the only table that can be changed.

If the original table and the new table have identical field names and table structures, Paradox automatically re-binds the fields in the report to the new table.

If the report has field objects on it that cannot be re-bound to the new table (because there is no corresponding field in the new table), Paradox displays those field objects as undefined.

If the report has calculated fields that reference missing fields, the calculated fields will have invalid expressions and will need to be redefined with the new table. Edit the calculated expression, and remove all field references to the original table and replace them with fields from the new table.

Do not use the data model to change the table being used with the report. Although it is possible to add a new table to the data model and delete the original table from the data model, doing so will cause all the fields in the report to display as undefined, or to be removed altogether, along with any group bands defined from the deleted tables.

Note:	Actually, you can use the data model to change the table used with the report by using table aliases so that Paradox knows you mean both tables to represent the same thing.


To print or preview a report with a different table

See also

From the Desktop

1.	Choose File|Open|Report.

2.	Select the report in the Open Report dialog box.

3.	Click Change Table at the bottom of the dialog box and click Open. The Select Replacement Table dialog box appears.

4.	Select the table, saved query, or saved SQL file to use in the report, and choose OK.

5.	The Open Report dialog box returns. Click Open again.

From the Project Viewer

1.	Choose Reports, then right-click the desired report.

2.	Choose Run With, or Print With.

3.	Select the table, saved query, or saved SQL file to use in the Select file dialog box.

4.	Click Open.

If a field in the report does not have a corresponding field in the table, Paradox warns you.

Paradox opens the report. Any undefined fields are given the name LABEL, and no data appears in them.

To redefine undefined fields,

Click the Design Report [image] button to return to the design window where you can define the fields. See To place a field on a form or report.

To keep the original report intact, save the new report with a different name. Return to the design window and choose File|Save As. Give the report a new name. (This will not work if your document is a delivered report.)


About printing a report to a file

See also

Sometimes, you might want to print the report to a file so you can take it to a printing service, or transfer it to another computer. To print a report to a file, you need to add a printer through the Windows Control Panel and set its output to a file. Then, select that printer as the acitve printer before printing your report.


To add a printer
To add a printer for printing to a file

See also

1.	Open the Windows Control Panel. (See your Windows help for how to do this.)

2.	Open the Printers folder and double-click Add Printer.

3.	Using the Add Printer Wizard, install a new printer using an existing printer driver.

If you want the file to print as text-only (no formatting), choose the Generic/Text Only printer. (Don't worry if the report looks incorrect on the screen [image] it prints to a file correctly. You can prevent this by desiging the report for the screen.)

If you want the file to print with formatting, choose a graphics printer driver, such as one in the Hewlett Packard Series II, or a postscript printer.

4.	Choose FILE: as the port to use for the active printer, then compete the Wizard as directed.


To print to a file

See also

1.	From the report, choose File|Printer Setup, and choose the printer that prints to a file from the Printer Setup dialog box.

2.	Choose File|Print.

3.	Make desired changes in the Print File dialog box, then click OK.

4.	Type a new name for the file in the Print To File for this dialog box.

5.	Choose the location for the file, then click OK.

Each time you print a report, you can choose which printer to use from the Printer Setup dialog box. Whatever printer was last selected is the current printer.


About charts

See also

Charts can show you the overall view of a situation. They can reveal trends and patterns, and they can show how different parts contribute to a whole. You can use charts to draw conclusions quickly and see relationships in your data that you might otherwise miss. You can also view different types of charts as you work with your data.

Charts must be in a form or a report. Each chart is based on the tables in the data model of the form or report.

When you create a chart, Paradox first cross-tabulates the data before generating the chart. Understanding crosstabs might help you work with charts. See About crosstabs.


Chart data types

See also

You can chart the following types of data.

Tabular (no categories)

Paradox's default (and most simple) chart type is tabular. Because a tabular chart displays data without summarizing it, there is no crosstab equivalent. For a tabular chart, you can specify

One field for x-axis values

Multiple fields for the y-axis, each representing a series of values plotted as a group on the chart

A tabular chart measures the values in one numeric field within each category represented by the values in another field. These values are unique only if the x-value field is a key field. To make x-values unique when the field is not a key field, choose a 1-D summary chart.

The example below shows a tabular chart created on the sample Orders table. When both the chart and a table frame are on a form,you can move through the table's records and the chart updates to reflect the current record.

One-dimensional summary (one category)

A 1-D chart has one category. A 1-D summary chart differs from a tabular chart in that Paradox lets you choose a type of summary operation to define the y-axis values. It also guarantees that x-values are unique. The example below shows a 2D summary chart created on the Orders table.

In this chart, the values on the x-axis are from the Ship Via field of the Orders table. The values charted against the y-axis are the sum of values in the Total Invoice field for each Ship Via category. The chart shows the total sum spent on orders using each method of shipment.

Two-dimensional summary (two categories)

A 2-D summary chart categorizes, or groups, the summary data being charted by two fields' unique values. The example below shows a 2-D summary chart created on the Orders table.

This chart is the same as the 1-D example above, except that it shows the sum of Total Invoice values for the Terms field, as well as the Ship Via field.

This chart defines Ship Via as the x-axis, Terms as the Grouped By field, and Total Invoice as the y-value.


Multi-table charts

See also

If you want to analyze (cross-tablulate) data contained in two or more tables, the tables must be linked.

A chart can draw information from any number of tables that are linked in a single-value (one [image] one or many [image] one) relationship. For example, if you want to view the number of items in stock by equipment class and the vendor that supplies them, you can link the Stock and Vendors tables. You can then define the x-axis, y-axis, and summary data using any field from either table.

The figure below shows how the tables are linked and the fields defined for this example multi-table chart based on two tables.

Note:	Fields used in the y-axis must be numeric.

To create the table relationship, use the Data Model dialog box (accessible from the Define Chart dialog box) or the Data model Designer. When you place a chart in a form or report, the chart uses the data model of that design document.

You can combine fields from linked tables in the same chart only if the link is single-value (one [image] one). You cannot chart information from combined fields of tables linked in multi-value (one [image] many) relationships. You can chart information from the detail table only in a one [image] many relationship.

The figure below shows the result of the 2-D summary chart defined above.

The chart is grouped by values in the Equipment Class field of the Stock table. The x-axis is defined as the Vendor Name field of the Vendors table. The y-axis is defined as a count of the Stock No field from the Stock table. The legend shows what color and pattern represent each equipment class value in the chart.


Charts of detail tables

See also

Suppose you have a linked multi-value (one [image] many) relationship and you want to see a summary chart of only those records in the detail table that apply to a record of the master table. For example, you might want to define a chart of the Orders detail table that sums the Total Invoice field by month for each customer, as shown in the following figure.

In the relationship between the Customer and Orders tables, each customer can have many orders. You can link the two tables and create a chart on the detail table, Orders. You can then place the Customer No or Name field (or both) from the master table, Customer, on the page.

Paradox knows from the data model that the information in the chart applies only to the current record of the master table. In this example, the Name field at the top comes from the Customer table. As you scroll through Customer, the chart is updated to show each customer's order information.


To use a quick chart

See also

Use a quick chart to easily create a chart of a table's data from the Table window.

1.	Open a table in a Table window.

2.	Choose Tools|Quick Chart or click the Quick Chart [image] button.

The Define Chart dialog box appears.

If you have defined a preferred chart for the table, Paradox displays that chart.

3.	Specify the fields for the x-axis, y-axis, and, if you are creating a 2-D summary chart, additional grouping.

4.	Choose OK.

Paradox calculates and generates the chart in a Form window.

To modify the chart design,

Switch to the design window by doing one of the following:

Click the Design Form [image] button.

Choose Form|Design Form.

Press F8.

For more information on quick charts, see About quick objects.


To place a chart on a form or report;adding, charts
To place a chart on a form or report

See also

In the Form Design or Report Design window,

1.	Click the Chart [image] tool, and click in the design window.

An empty tabular chart object appears with undefined x-axis, y-axis, and charted data.

2.	Drag the sizing handles to resize the chart.

Charts in reports

In a report, the scope of a chart is determined in part by the section of the report you place it in.


About y-axis values

See also

Tabular y-axis

With a tabular chart, you can choose only numeric fields for the y-value. Fields that are not numeric are dimmed.

1-D summary y-axis

With a 1-D summary chart, you can choose any available and valid field(s) to define the y-axis. When you choose a y-axis field, Paradox couples it with a default summary operation. By default, Paradox

Sums number, money, short, long integer, autoincrement, and BCD field data

Counts alpha, date, time, timestamp, or logical field data

These default summary operations appear in the Summary drop-down list in the Define Chart dialog box when you highlight each field in the Summaries panel.

2-D summary y-axis

With a 2-D summary chart, you can choose any one of the available and valid fields to define the y-axis. When you choose the y-axis field, Paradox couples it with a default summary operation.


To define a chart

See also

In the Form Design or Report Design window,

1.	Right-click the upper left corner of a chart to display its menu, or press F6.

2.	Choose Define Chart. This opens the Define Chart dialog box.

3.	In the Data Type panel of the dialog box, select the chart data type: Tabular, 1-D Summary, or 2-D Summary. (See Chart data types.)

4.	With X-Value selected in the Fields Used In panel, choose from a table's drop-down list the field whose values will be the x-axis values.

5.	With Y-Axis selected in the Fields Used In panel, choose from a table's drop-down list the field whose values will be charted according to the y-axis measure.

You cannot use the same field for x-axis values and y-value data. If you have already chosen a field to supply the x-axis values [image] or additional grouping values, if you are creating a 2-D summary chart [image] that field is dimmed.

See About y-axis values for more information.

When you're finished defining the chart, press OK.

You can customize the chart further, by formatting the series,  specifying titles, and changing the properties of different areas of the chart.


To define a series

See also

When you place a new chart object on a form or report, undefined data series appear in the chart's x-axis.

A data series is one row or column of data in a group used to draw one or more objects on a chart (such as one bar or one line). You can define the series and format their display.

In the Form Design or Report Design window,

1.	Right-click the series separately and choose Define Y-Value from its menu.

2.	Make the adjustments you want.

Tabular or 1-D summary y-axis values

When the data type of the chart is tabular or 1-D summary, you can add more series to the original undefined ones by choosing additional fields for Define Y-Value.

2-D summary y-axis values

When the data type of the chart is 2-D summary, you can choose only one field for the single series allowed for this data type.

Formatting the series, including type override

Besides choosing the field whose values you want to be the particular series' values, you can format that series' display by choosing display options. In particular, you can choose Type Override with some chart types to make one series a different type from the rest. For example, in a 2-D Bar chart you might make one series a 2-D Line.


To specify an additional group field in a 2-D summary chart

See also

For 2-D summary charts, you can choose any of the available and valid fields to group the summary data by. The data is also grouped by the x-axis categories.

In the Form Design or Report Design window,

1.	In the Define Chart dialog box, select Grouped By.

2.	Choose from a table's drop-down list the field you want to group the summary data by.

You cannot choose the same field for x-axis values, y-value data, and an additional grouping. If you have already chosen fields from this table to supply the x-axis value and the y-axis value, those fields are dimmed.

You can also define a group by right-clicking the chart's title and choosing Define Group from its menu.

Why specify an additional group?

Specifying an additional group field is like having a secondary x-axis. For example, a chart might show sales by quarter. The quarters are listed along the x-axis, and sales along the y-axis. You could break the data down more, for example, to show sales by quarter and, within each quarter, sales by product. In this new chart, the x-axis and y-axis would be the same, but each point in the x-axis would have multiple summaries [image] one for each product. The legend shows how each product summary is represented in the chart.


To change a chart's type

See also

A wide variety of chart types, such as bar charts and pie charts, are available.

In the Form Design or Report Design window,

1.	Right-click the upper left corner of a chart and choose Chart Type from its menu.

2.	Select a chart type from the list.


To change a chart's data type

See also

In the Form Design or Report Design window,

1.	Right-click the upper left corner of a chart object.

2.	Choose Data Type, then choose a type: Tabular, 1-D Summary, or 2-D Summary. (See Chart data types.)

Changing the data type causes the chart object to change. The choices on object's property pages also change according to data type as well.


To change a chart's x-axis

See also

In the Form Design or Report Design window,

1.	Right-click a chart's x-axis and choose Define X-Value from its menu.

2.	Choose one field to supply x-axis values.

You can choose the minimum and maximum number of values to include in the x-axis. Right-click the upper left corner of the chart, choose Min x-values or Max x-values. Choose a number, or click the ellipsis at the top of the menu to specify your own values.

To format the title, scale, and ticks

You can format the x-axis title and ticks (and scale for xy charts):

1.	Right-click the x-axis area and choose Title, Scale, or Ticks from its menu.

2.	Choose from the available options to format the x-axis.


To change a chart's y-axis

See also

In the Form Design or Report Design window,

1.	Right-click the y-axis, or an individual series, and choose Define Y-Value from its menu.

2.	Choose a field or fields for the y-axis, depending on the data type of your chart.

See About y-axis values for more information.

To format the title, scale, and ticks

You can format the y-axis title, scale, and ticks:

1.	Right-click the y-axis area and choose Title, Scale, or Ticks from its menu.

2.	Choose from the available options to format the y-axis.


To change a chart's z-axis

See also

Most 3-D chart types, (except pie charts) have a third axis, called the z-axis. The z-axis is along the third dimension of the chart. Depending on the specific chart type, the labels for the z-axes can be next to the chart, or can be displayed in the legend position under the chart.

To change the z-axis font properties, right-click the z-axis on a 3-D chart to change the Font used in its label. You can change

Typeface

Size

Style

Color

For each of these properties, a palette of choices appears.


To change a chart's title

See also

In the Form Design or Report Design window,

1.	Right-click the title area and choose Title from its menu.

2.	Choose from the available options to define and format the title.


To change a chart's background

See also

The chart's background is the area not being filled with data, for example above and between the columns in a tabular chart. You can change the background's color, pattern, and pattern color.

In the Form Design or Report Design window,

1.	Select the chart, then right-click the background area.

2.	Choose Color or Pattern from its menu.

3.	Choose a color and pattern from the palettes displayed.

To make the chart transparent, you have to select the chart, rather than the background and check Transparent on the General property page.


To remove fields from a chart

See also

You can remove fields from a chart's X-Axis, Y-Value, and Grouped By boxes in the Define Chart dialog box.

In the Form Design or Report Design window,

1.	Select the chart and right-click in the upper left corner of the chart.

2.	Choose Define Chart.

3.	In the Define Chart dialog box, select the field you want to remove in the X-Axis, Y-Value, or Grouped By boxes.

4.	Click the Remove Field button.


To control the number of groups (series) a 2-D summary chart displays

See also

Paradox displays 8 groups (series) in a 2-D summary chart. You can control the number of groups displayed. For example, if your data has too many groups to display clearly, you might want to see only the first few groups.

In the Form Design or Report Design window,

1.	Right-click a 2-D summary chart and choose Max Groups from the menu.

2.	Choose a number from the list, or click the ellipsis (...) at the top of the list to open a dialog box, where you can type a higher number.


To change the order of y-value fields on a chart

See also

With tabular and 1-D summary charts, you can choose more than one field to define the y-axis. These fields appear in the order you choose them in the Define Chart dialog box. Their order determines the order of series in the chart: the first field's values will be the first series, the second field's values will be the second series, and so on.

In the Form Design or Report Design window,

In the Define Chart dialog box, use the Change Order arrows at the bottom of the Field Used In area to change the order.

These arrows become active when you are defining a tabular or 1-D summary chart, when you have Y-Value selected, and when you have more than one field in the Y-Value box.


To change chart properties

See also

A chart object is a composite object made up of

An x-axis area

A y-axis area

Separate series areas

A title area

A background area

Additionally, certain chart types have separate slice areas, a legend area, and walls, and a z-axis.

Each part of a chart has unique properties, and the chart object as a whole has properties.

To change properties of the entire chart

In the Form Design or Report Design window,

Right-click the upper left corner of the chart and choose Properties from its menu, or change a value on the right-click menu.

When you select the entire chart object, handles appear around it.

To change properties of a portion of the chart,

Right-click a portion of the chart and choose a property from its menu.

Handles do not appear around the separate chart areas when you select them. This is because you cannot move the individual components of the chart object. However, the cursor changes to an up arrow when you pass over an area of the chart that can be modified.


To change a chart's fonts

See also

Use the Font palette to specify a chart's typeface, size, and style.

In the Form Design or Report Design window,

1.	Right-click a portion of a chart that has text (like the title or an axis), and choose Title, then Font from its menu.

2.	Change the typeface, size, style, and color of the font.


To change a chart's color and transparency

See also

Use the Color palette on the chart's General property page to specify a chart's color and transparency, and to create custom colors for the chart.

In the Form Design or Report Design window,

1.	Right-click the upper left corner of the chart and choose Properties.

2.	Click a color on the color palette on the General property page.

3.	Check Transparent to make the chart transparent.

To change the color of a series, or other area of the chart, right-click the area, and choose Color from the menu. Change the color by clicking a color on the palette.

See the Color  property for more information on changing colors.


To create custom colors for a chart

See also

In the Form Design or Report Design window,

1.	Right-click the upper left corner of the chart and choose Properties.

2.	On the General property page, click one of the blank spaces on the color palette, then click Add Custom Color.

Paradox displays the Custom Color dialog box.

3.	Choose a color scheme (RGB, HSV, or CMY).

4.	Drag the sliders to mix a color.

5.	When you're done mixing the color, choose OK.

The custom color appears on the Color palette and is available for use.

Paradox saves custom colors in the Registry, not with the particular document you are working on when you create the color. This way, you can create a custom color in one design document and use it in any other design document.


About chart properties

See also	Example

A chart object has many parts. Each part of the chart object has a unique property menu in addition to the property menu of the chart as a whole. Right-click the upper left corner of the chart to select the chart as a whole, or right-click an area of it to select that area. (Click the Example to see these areas.) Choose Properties from its menu to display the property pages. To change other aspects of the chart, choose an item from the right-click menu:

Menu Item	Description

Properties	Displays the Properties dialog box with tabbed pages for changing the properties. These include the standard Color, Pattern, Frame, Design, and Run Time properties used by other design objects. For Help on these property pages, select them with the mouse and press F1.

Object Explorer	Displays the Object Explorer for editing ObjectPAL methods, events, and object properties (forms only).

Define Chart	Displays the Define Chart dialog box.

Data Type	Specifies Tabular, 1-D Summary, or 2-D Summary.

Chart Type	Displays a listing of 2-D and 3-D chart types.

Max Groups	Controls the number of groups (series) a 2-D Summary chart displays.

Min x-values	Sets the minimum number of chart series.

Max x-values	Sets the maximum number of chart series.

Options	Customizes the chart using these options:

Show Title: Toggles the display of the title on and off. On by default.

Show Legend: Toggles the legend on and off. Off by default.

Show Grid: Toggles the display of the grid on and off. On by default.

Show Axes: Toggles the display of axes on and off. On by default.

Show Labels: Toggles the display of labels on and off. Off by default.

Rotation: Turns a chart around its vertical axis by the number of degrees you choose. This option is available for all 3-D charts except 3-D Pie and 3-D Columns.

Elevation: Changes the angle from which you view a 3-D chart. This option is available for all 3-D charts except 3-D Pie and 3-D Columns.


About chart area properties

See also	Example

You can change properties of each area of a chart. When the pointer changes to a small vertical arrow, right-click to see a list of properties for that area. (Click the Example to see these areas.)

For the areas of x-axis, y-axis, and Grouped By, you can specify field, scale, grid, ticks, and title. In a 2-D summary chart, you can also define the group by right-clicking the chart title and choosing Properties.

You can set the following options for series labels:

Property	Description

Define Y-Value	Specifies the field whose values you want to chart on the y-axis. Or click the top of the list to open the Define Field Object dialog box, where you can choose a field from another table in the data model.

You can specify more than one y-value, one at a time, if you right-click the y-axis area instead of just a series.

Title	Specifies Text and Font or Use Default.

Color	Displays the standard Paradox Color palette.

Pattern	Changes the color and style of the pattern.

Remove This Y-Value	Removes a series from a chart. The field is also removed from the Y-Value fields list in the Define Chart dialog box. This option is available with Tabular and 1-D Summary data types.

Type Override	Changes the selected series to a different display type from the rest of the chart. Choose None, 2-D Bar, 2-D Line, or 2-D Area. Type Override is available for any 2-D Bar, 2-D Line, 2-D Area, or 2-D Rotated Bar chart.

To change chart type, data type, and formats for the entire chart, right-click the chart outside the specific areas.


Example of chart areas

See also


About charts and crosstabs

See also

You can place charts and crosstabs in your form and report designs. Charts and crosstabs help you analyze your data. They expose "hidden" information in your tables by

Breaking it into categories you specify

Summarizing the data within those categories

Sorting the summarized information

For example, when you break down a company's sales data by year and quarter, you can study trends. Break it down further by product type and regional sales, and your analysis becomes more sophisticated.


Queries behind charts and crosstabs

See also

The summarized data for a chart or crosstab is created by a query. Crosstabs automatically create and run queries, so defining a query is not part of creating a crosstab.

This is a one-dimensional crosstab of the Orders table:

This is the corresponding chart:

This is the query and Answer table that Paradox generates to produce the crosstab or chart:


About crosstabs

See also

A crosstab is a data analysis tool that summarizes (cross-tabulates) information according to one or more categories.

A crosstab is a design object, and the categories are fields. The summarized data for a crosstab is created by a query. Because crosstabs automatically create and run queries, defining a query is not part of creating a crosstab. It is, however, a way to understand the type of information a crosstab can contain.

A crosstab

Classifies data by one or more categories

Summarizes the data within those categories

Sorts the summarized information

Displays the data in a spreadsheet-like format

The crosstab below is created on the sample Orders table. Terms is the selected as the column field, Ship Via as the category, and Total Invoice is the summary field. the crosstab summary region shows the sum of Total Invoice by shipment and terms.

As another example, you may know that in your organization, last year's sales totaled $100,000,000 nationwide. But what if you wanted to know where you should concentrate your advertising dollars? Breaking the information down by region would provide better information to base such a decision on:

Region	Sales

North	$25,000,000

South	$30,000,000

East	$15,000,000

West	$30,000,000

You could break this table down even further to show, for example, how much each product contributes to its region's sales:

Region	Sales

Product #1	Product #2

North	$12,000,000	$13,000,000

South	$10,000,000	$20,000,000

East	$10,000,000	$5,000,000

West	$15,000,000	$15,000,000

You can quickly get an in-depth look at your data using crosstabs.


One-dimensional crosstabs

See also

When you create a one-dimensional crosstab, you analyze one type of data in light of another. For example, you can use a crosstab to break down order amounts by payment method:

The Orders table has a Payment Method field. The crosstab counts the number of orders placed using each of the seven possible payment methods. In this case, Payment Method is the category of information, and the calculation Count(ORDER.Order No) provides the data for each category.

You can arrange the display of information horizontally or vertically. The previous figure shows a horizontal construction; the following shows a vertical construction:

Paradox can usually calculate and generate a vertical one-dimensional crosstab faster than a horizontal one.


Two-dimensional crosstabs

See also

A 2-D crosstab summarizes information by more than one category. The following figure shows a 2-D crosstab:

To create a 2-D crosstab, indicate two category fields (the Column and Categories boxes in the Define Crosstab dialog box), and a field whose data you want to summarize (entered in the Summaries box of the Define Crosstab dialog box). In this case, using the Orders table, you could show the count of orders (the summary appearing in the cells of the crosstab object) placed for each payment method and each month (the categories appearing across the top and down the left side of the crosstab object). The data is two-dimensional because it reflects both the month in which the orders were placed and the method used to pay for them.

The summary information (count of Order No) appears in the crosstab cells sorted in rows by Month and in columns by Payment Method. To find the number of orders in a given month, you would find the intersection of the appropriate row and column. For example, the number 4 in the first column of cells indicates that four orders were placed in the month of December by customers who used AmEx to pay for the orders. This is a convenient way to analyze the buying habits of customers over a period of time.


Multi-table crosstabs

See also

To analyze (cross-tablulate) data contained in two or more tables, the tables must be linked. A crosstab can draw information from any number of tables that are linked in a single-value (one [image] one or many [image] one) relationship.

For example, to view the number of items in stock by equipment class and the vendor that supplies them, you can link the Stock and Vendors tables. You're then free to define the rows, columns, and summary fields using any field from either table.

The following figure shows a multi-table crosstab using the Vendors Name field from the Vendors table and the Equipment Class field from the Stock table:

In this figure,

Summary values show how many pieces of each type of stock came from each vendor.

Row titles show values from the Vendor Name field of the Vendors table.

Column headings show values from the Equipment Class field of the Stock table.

Combining fields from linked tables

You can combine fields from linked tables in the same crosstab only if the link is single-valued. You cannot cross-tabulate information from combined fields of tables linked in multi-value (one [image] many) relationships. You can cross-tabulate information from the detail table only in a one [image] many relationship.

Creating a link

Before creating a multi-table crosstab of a linked one-to-one relationship, you must define the relationship with the data model. To create a table relationship, use the Data Model dialog box (accessible from the Define Crosstab by clicking the Data Model button) or the Data Model Designer.


Crosstabs of detail tables

See also

Suppose you have a linked multi-valued (one [image] many) relationship and you want a summary crosstab of only those records in the detail table that apply to a specific record of the master table.

For example, you might want to define a crosstab of the detail table Orders that sums the Total Invoice field by Payment Method and by Month for each customer in the Customer table.

In the relationship between the Customer and Orders tables, each customer can have many orders. You can link the two tables and create a crosstab on the detail table, Orders. You can then place the Customer No or Name field (or both) from the master table, Customer, on the form. Paradox knows from the data model that the information in the crosstab applies only to the current record of the master table. In this example, the Name field at the top comes from the Customer table. As you scroll through Customer, the crosstab updates to show each customer's order information.


To use a quick crosstab

See also

Use a quick crosstab to easily create a crosstab of a table's data from the Table window.

1.	Open a table in a Table window.

2.	Choose Tools|Quick Crosstab or click the Quick Crosstab [image] button.

If you have defined a preferred crosstab for the table, Paradox displays that crosstab.

If you don't have a preferred crosstab defined, the Define Crosstab dialog box appears.

3.	In the Define Crosstab dialog box, specify the fields to use as the column headings, leftmost row categories, and summarized data.

4.	Choose OK.

Paradox generates the crosstab in a Form window.

To save this crosstab form, click the Design Form button, then choose File|Save As from the design window.

To use this crosstab as the preferred crosstab, return to the Table view for that table by clicking the Table View button, and choose Table|Preferred Document|Crosstab. Choose the form containing this crosstab in the Choose Preferred Crosstab dialog box, then click Open.

To modify the crosstab design,

Switch to the design window by doing one of the following:

Click the Design Form or Design Report [image] button.

Choose Form|Design Form or Report|Design Report.

For more information on quick crosstabs, see About quick objects.


To place a crosstab on a form or report

See also

In the Form Design or Report Design window,

1.	Click the Crosstab [image] tool.

2.	Click in the design area to create a crosstab object, or drag to place and size the crosstab.

An empty crosstab object appears with undefined fields in the row header, column header, and first summary area.

When you place a crosstab in a form or report, the crosstab uses the data model of that form or report.


To define a crosstab

See also

Define the crosstab using fields from the table(s) of the form or report's data model.

In the Form Design or Report Design window,

1.	Right-click the upper left corner of the crosstab object and choose Define Crosstab.

Paradox opens the Define Crosstab dialog box, which displays a list of tables bound to the document.

2.	Select fields for column headings, row categories, and summarized data.

You can choose more than one field at a time from the tables in the data model. You can also revise the document's Data Model and choose summary operations.

The total number of category fields plus the number of columns created for a crosstab cannot exceed 254.


To define the fields of a crosstab

See also

When you place a new crosstab object on a form or report, the first column field, first row field, and first summary field are undefined.

In the Form Design or Report Design window,

Right-click a crosstab field and choose Define Field from its menu.

Paradox opens the Define Field Object dialog box.


To specify column headings for a crosstab

See also

In the Form Design or Report Design window,

1.	Right-click the upper left corner of the crosstab object and choose Define Crosstab.

Column is selected by default in the Field Used In panel.

2.	With Column selected, choose from a table's drop-down list the field whose values will be the column headings.

You can choose only one field to supply column heading values.

If you are creating a vertical one-dimensional crosstab, do not choose a field for column heading values.


To specify row headings (categories) for a crosstab

See also

In the Form Design or Report Design window,

1.	Right-click the upper left corner of the crosstab object and choose Define Crosstab.

2.	Select Categories in the Field Used In area.

3.	With Categories selected, choose from a table's drop-down list the field(s) whose values will be the row categories.

You cannot use the same field for column headings and row categories. If you have already chosen a field from this table to supply the column heading values, that field will be dimmed.

One-dimensional crosstabs

If you are creating a horizontal one-dimensional crosstab, do not choose a field for row categories.

Two-dimensional crosstabs

For two-dimensional crosstabs, as long as you have at least one field specified for column headings, you can choose as many fields as are available and that are valid in the tables of the data model to be row categories. Each field you add to the Categories list further refines the grouping of information.

When Paradox generates a crosstab with multiple fields specified for categories, it sorts the information by the top category first, then by the next, and so on.


To specify summary fields for a crosstab

See also

In the Form Design or Report Design window,

1.	Right-click the upper left corner of the crosstab object and choose Define Crosstab.

2.	Select Summaries in the Field Used In area.

3.	With Summaries selected, choose from a table's drop-down list the field(s) whose values to summarize.

You cannot choose the same field to summarize that you have chosen for column headings or for row categories. If you have already chosen fields from this table to supply column heading and row category values, those fields will be dimmed.

You can choose as many fields as are available and that are valid from the tables of the data model. The order in which you choose them determines the order in which the summarized data appears in the crosstab.

Unlike fields you choose for column heading values and row category values, fields you summarize are available for choosing more than once. The number of summary fields times the number of column values cannot exceed 254.

After you choose data to summarize, specify a summary operation as described in To specify a summary operation for a crosstab.


To specify a summary operation for a crosstab

See also

After you specify the field(s) to summarize in a crosstab, you can specify which summary operation to perform (sum count, min, max, or average). By default, Paradox performs the following operations:

Sums number, money, short, long integer, autoincrement, and BCD field data

Counts alpha, date, time, timestamp, or logical field data

To change a summary operation,

In the Form Design or Report Design window,

1.	Right-click the upper left corner of the crosstab object and choose Define Crosstab.

2.	Select a summary field in the Summaries panel.

3.	Choose one of the available summary operations for that field from the Summary drop-down list.


To run a crosstab

See also

From the design window, do one of the following:

Click the View Data [image] button in the Form Design window, or the Run Report button in the Report Design window.

Choose Form|View Data or Report|Run Report

Press (F8).

Run-time errors

Paradox runs a query to calculate a crosstab's summary information. The process might fail if the resulting Answer table contains too many fields, or if you have inadequate disk space for the query. When the crosstab fails, an empty grid appears in its place.


To change the appearance of a crosstab

See also

You can change the way each part of a crosstab looks.

Field

In the Form Design or Report Design window,

Right-click a field and choose Properties from its menu.

Column area

Right-click the column heading area (anywhere in the first row of the crosstab except the column's field object) and choose Properties from its menu.

Row area

Right-click the row area (anywhere in the first column of the crosstab except the row's field object) and choose Properties from its menu.

Summary area

Right-click the summary area (anywhere in the data area of the crosstab except the summary's field object) and choose Properties from its menu.


To change the size of a crosstab

See also

You can change the size of the entire crosstab, the column area, or the row area.

Entire crosstab

In the Form Design or Report Design window,

Drag its borders.

Column area

Drag the grid lines surrounding it.

Row area

Drag its borders.


To rearrange category and summary fields on a crosstab

See also

When you choose more than one field to define the row categories and more than one field to summarize, you can change the order the fields appear in the Categories and Summaries panels.

In the Form Design or Report Design window,

1.	Right-click the upper left corner of the crosstab object and choose Define Crosstab.

2.	Use the Change Order arrows at the bottom of the Field Used In area.

These arrows become active when you select either Categories or Summaries and when you have more than one field in their panels.

You can rearrange the categories or summaries in the Form Design and Report Design windows by dragging them to a different location.


To remove a field from a crosstab

See also

You can remove the fields used for column headings, row categories, and summaries.

In the Form Design or Report Design window,

1.	Right-click the upper left corner of the crosstab object and choose Define Crosstab.

2.	Select a field in the Column, Categories, or Summaries panels.

3.	Choose Remove Field.


To change crosstab properties

See also

A crosstab object is a composite object made up of

Fields

Row area

Column area

Summary area

Each part of a crosstab has unique properties, and the crosstab object as a whole has properties.

To change properties of the entire crosstab,

In the Form Design or Report Design window,

Right-click the upper left corner of the crosstab and choose Properties from its menu.

To change properties of a portion of the crosstab,

Right-click a portion of the crosstab and choose Properties from its menu.


To save a crosstab to a table

See also

Once you have created a crosstab on a form, you run the form, then save the crosstab to a table.

1.	Create a crosstab and save the form containing the crosstab.

2.	Choose Edit|Save Crosstab. (This menu command is available only when running a form that contains a crosstab.)

3.	Type the name you want to give to the new table, or select one from the list.


Alignment property (Table window)

In a Table window, you can change the alignment of data in a field or text in a column heading. Text and data can be justified horizontally (at the left, center, or right of the column) or vertically (at the top, middle, or bottom of the row).

To change the alignment, right-click the column heading or any value in the column, choose Properites, and choose the position on the Alignment page.

Changes apply to the selected object.

To change alignment in all columns of the table at once, press Shift+F6, choose Properties, and make the change on the Alignment page.


Alignment property (field or table object)

You can align values in a field or table object, text in a text object, and text in the edit region of a field object. To can do this several ways:

Use the Text Formatting Toolbar

Right-click the object, choose Properties, and change the alignment on the Text property page.

Use the alignment buttons on the expanded ruler.

Left	Lines up text at the left, with the right edge ragged

Center	Clusters text in the middle of the object

Right	Lines up text at the right, with the left edge ragged

Justify	Spreads out text so both left and right margins are straight


Attached Header property

Uncheck Attached Header to separate the header area (the labels) from the body of a table. You can then

Move the header wherever you want

Move the header to another band (in a report)

Delete the header to suppress the labels

A detached table and header align with each other automatically.

To attach the header, check the Attached Header property.


Breakable property

When creating a report, you might place some objects too close to the bottom to fit on the page. Or an object might grow too large to fit entirely on a page (a table with many records or a very large memo field, for example).

To make the object split, so the first part is on one page and the second part is on another, right-click the object and choose Breakable on the Run Time page.

To make the object stay intact and be pushed to the next page when it does not fit, uncheck the Breakable property.

Some objects (charts and graphics) are never breakable.

If an object is not breakable and does not fit on one page, Paradox pushes it to the next page.

If it still does not fit on the second page, Paradox displays an error box indicating the report contains an object too large to fit.

If you are previewing a report and see a blank page unexpectedly, look at the next page to see if the object was pushed or cannot fit.


Button Type property

A button's type controls its functionality.

Push Button

A labeled rectangular button that carries out an action described by an ObjectPAL method. When the button is pressed, its value is "True." When the button is not pressed, its value is "False." Push is the default Button Type.

All button types execute their Push Button() event allowing ObjectPAL code to run. However, push buttons are more generally used for this.

Radio Button

A labeled round or diamond-shaped button that provides an option. Each time a user clicks the button, it toggles between being empty and being darkened. Each click also toggles its value between "False" and "True."

Check Box

A labeled square button that indicates a yes/no state. Each time a user clicks the button, it toggles between being checked and unchecked. Each click also toggles its value between "False" and "True."

Field objects as radio buttons and check boxes

You can also create a group of radio buttons or a check box from a field object. The advantage of using a field instead of a button is that a field object can post a value (the button or check box the user chooses) to the table the form is bound to. To post a value to a table with a button object, you must use ObjectPAL. See the Display Type property.


Center Label property

Choose Center Label to cause a push button or notebook page to automatically keep its label centered. If the button has no label, this option is not available.

If you move the label away from a centered position, this property is automatically turned off. Turning it back on on the object's General property page, or in the Object Explorer tabbed pane, will re-center the label.


Color property

You can change the color of an object or the selected part of an object (including parts of tables).

When you right-click an object and choose Properties, Paradox displays the Color palette on the General page. You can apply any color on the palette to the object. To see the affect of the proposed color change, click Apply. To close the Properties dialog box, click OK.

If multiple objects are selected, the change affects all the selected objects. To change the property for multiple objects at one time, shift+click the objects to select them, then right-click and choose Properties.

If you plan to change the color of several objects separately, apply the color change, but don't click OK. The Properties dialog box remains open. You can move it by dragging the header area, and you can keep it onscreen as long as needed. Click each object to change its properties [image] the Properties dialog box changes to reflect the properties for the newly selected object.

Changes apply to the selected object(s). To change the color of text or background in all columns of the table at once, press Shift+F6, choose Properties and make the change.


Column Lines property

In a Table window you can hide or display the lines between columns in Table View. When Column Lines is checked (the default), the lines show. Uncheck Column Lines to hide the lines.

Note:	To change the grid lines when they are hidden, choose Table|Grid Properties.

You can choose the line style and spacing for these lines.

Color

You can change the color of all the space around rows and columns in a table, as well as the color of any grid lines marking rows and columns.

To change the color of the space, choose the color on the General property page.

To change the color of the lines, choose the color from the Grid Lines property page.


Complete Display property

Memo and formatted memo field types have a Complete Display property. This is available in a Table window on the General property page, and on a design object's Run Time property page in a Form Design window.

Paradox stores memo and formatted memo fields in a separate file (with the .MB extension), not in the table itself. The table contains a portion of the field (this is the size you specify from the Create Table dialog box), and a pointer to the .MB file.

Check Complete Display to display all the record values all the time.

Uncheck Complete Display to display only the value of the current field. Paradox moves through records more quickly when Complete Display is unchecked because it does not have to access the .MB file.

Memos in dBASE tables

If you're working with a dBASE memo field, Paradox does not store any memo data in the .DBF file. Because of this, when you uncheck Complete Display on dBASE memo fields, you do not see any of the memo. Instead, you see a marker indicating the memo field contains data. When you select the field, Paradox displays the memo value from the .DBT file.

To display a memo while running a form

When you run a form with a memo field, you'll see only as many characters displayed in the memo as are specified in the table's structure. These characters are followed by an ellipsis (…) to indicate that there is more information. To view the full memo, move to it and enter Field View. Paradox locates the rest of the memo in the .MB file and displays it.


Conditional property

You can print a specific object in a report's group header at the beginning of each group, at the top of the page when the group continues across a page break, or both.

Print at Group displays the object at the beginning of each group, but not at the top of each page (unless a group begins at the top of the page).

Print at Page displays the object at the top of the page whenever a group breaks across pages. The object is never displayed on the first page of the report. This setting is useful for a text object that indicates that a group has been continued to the next page.

The Conditional property affects only the specified object. To control how an entire group band prints, use its Header property.


Contain Objects property

When one object exists completely within the borders of another, it can be contained by the outside object. Contained objects move when you move their containers, and are deleted when you delete their containers. When users tab between objects on a form, they tab to all objects within a container before tabbing to any objects outside the container.

Choose Contain Objects on the Design property page to ensure that objects contained inside are moved when you move their surrounding object. When this option is checked, objects inside the container can be dragged out of it, but you cannot move the container without moving its contained objects. Properties applied to the container, however, still affect only the container, not the objects in it (unless you use Ctrl+right-click). If you want to delete an object but not the objects it contains, turn off Contain Objects and then choose Del.

Note:	You cannot resize an object smaller than the objects it contains.


Current Picture property

Choose the Picture property page to specify a character string that acts as a template for the values that can be entered in this field object. Choose a standard picture from the drop-down list under Current Picture, or, click Add Custom Picture to open the Picture Assistance dialog box and create a custom picture.

This property is not available

In reports.

For field objects bound to BLOB or autoincrement fields, nor for summary, calculated, or special field objects.

For field objects with a Display Type of List, Checkbox, or Radio Button.

If the field object is bound to a field that has a picture. See About Pictures and Picture string characters for more information.


Date Format property

Undefined and date fields have a Date Format property. Choose this property to change the format in which Paradox displays dates in the selected field.

When you choose Date Format, Paradox displays a list of available predefined date formats. Choose a format to apply to the selected field, or click the top of the list to open a dialog box for defining your own customized format.


Define Graphic property

In defining a graphic, you can either choose

Paste	To place the contents of the Clipboard in the graphic object. (If the Clipboard is empty, Paste is dimmed.)

Paste From	To name a file to place in the graphic object. In the Paste From Graphic File dialog box, choose the graphic. Paradox places it in the frame.


Define OLE property

Choose one of the following options from the OLE object's right-click menu for working with an OLE container.

Paste

Choose Paste to insert an embedded object from the data previously put on the Clipboard by an OLE server. When you insert an embedded object in an OLE container, the data is actually copied into the OLE container, and no relationship is maintained with the source of the data. See About embedded objects for more information.

Choosing Paste is the same as choosing Edit|Paste from the Desktop.

Paste Link

Choose Paste Link to insert a linked object from the data previously put on the Clipboard by an OLE server. A linked object is actually a pointer to data somewhere outside of the OLE container. Changes you make to a linked object are actually made to the source of the object. See About linked objects for more information.

Choosing Paste Link is the same as choosing Edit|Paste Link from the Desktop.

Insert Object

Choose Insert Object to insert a linked or embedded object using the Insert Object Dialog Box.

Choosing Insert Object is the same as choosing Edit|Insert Object from the Desktop.


Delete When Empty property

The Delete When Empty property is only avalilable for objects containing data in reports.

When Delete When Empty is checked, if the design object shows no data in the report, it does not appear when the report is previewed or printed.

When Delete When Empty is unchecked, the object appears even if it shows no data.


Design property
Design properties

All design objects have the Design property page available. The Design properties only apply to the object in the design window. These properties help you work with objects in the Form Design or Report Design windows.

The Design choices available differ depending on the object. For example, Contain Objects is not available for a line because a line is incapable of containing another object. On the other hand, some objects (like tables) are always containers, and you cannot uncheck the Contain Objects property.

Pin Horizontal prevents the object from moving left or right across the design.

Pin Vertical prevents the object from moving up or down.

Size To Fit causes an object to expand or contract automatically in the design window based on the object's contents.

Contain Objects causes within the selected container to move with their container.

Selectable allows the object to be selected with a mouse click.


Design Sizing property

The way you create a text object determines how Paradox initially sets its sizing option. You can override the automatic setting by right-clicking the text object and choosing Properties. You have three Design Sizing choices on the General page:

Fixed Size

Fixed Size objects do not grow (or shrink) horizontally or vertically to fit the amount of text they contain.

Click the Text tool, then drag to place a frame in the design area. As you type, Paradox automatically wraps the text at the right border of the frame. When you reach the bottom of the frame, Paradox scrolls the text upward so you can view the text you are entering.

To change the size of the object, select it and resize it manually. In a fixed-size text object, Word Wrap must be checked on the Text property page. To make all the text available when the form is run, add scroll bars.

Fit Text

Fit Text objects grow or shrink to fit the amount of text they contain.

If you choose Fit Text and Word Wrap for a text object, the object grows or shrinks vertically to fit the amount of text it contains. Text wraps at the right side of the frame.

If you choose Fit Text without Word Wrap, the object can only be one line. It grows or shrinks horizontally to fit the amount of text it contains.

Click the Text tool, then click in the design area and begin typing. Paradox creates a single-row text object that expands to the right until you press Enter, moving the insertion point to a new line. As you continue typing, the text wraps automatically at the right border that you defined by pressing Enter. The text expands downward until you finish typing. The text object shrinks in height if you remove text. Otherwise, the text object grows and shrinks horizontally with the text.

Note:	If you try to resize this type of text object with Word Wrap on, you can resize it only horizontally. If Word Wrap is off, you cannot resize the text object at all. Right-click the object and choose the Fixed Size property before resizing it.

Resizing restrictions with Fit Text

You cannot resize a text object horizontally if Fit Text is checked and Word Wrap is unchecked.

You cannot resize a text object vertically if Fit Text is checked.

Grow Only

Grow Only objects grow but do not shrink to fit the amount of text they contain.

If you choose Grow Only and Word Wrap for a text object, the object grows vertically to fit the amount of text it contains. Text wraps at the right side of the frame.

If you choose Grow Only without Word Wrap, the object can only be one line. It grows horizontally to fit the amount of text it contains.

Click the Text tool, then click in the design area and begin typing. Paradox creates a single-row text object that expands to the right until you press Enter, moving the insertion point to a new line. As you continue typing, the text wraps automatically at the right border that you defined by pressing Enter. The text expands downward until you finish typing. Unlike Fit Text, the Grow Only text object never shrinks unless you manually resize it.


Design Tool properties

These are the properties of the design tool itself. By changing any of these properties on the tool, you change the default properties of the design tool. All objects you subsequently place on a document with this tool will have these properties.

To change properties of a tool, place the object on the design first, right-click the object and change it's properties. Right-click the object again and choose Copy To Toolbar.


Display Type property

Use the properties on the Display Type property to set the display type of a field object on a document.

Right-click the field object and choose Properties. Choose a display type from the Display Type drop-down menu:

Labeled	A field with its field label displayed, along with the value of the current record. The label and edit region cannot be removed or deleted from the field.

Unlabeled	A field without a label.

Drop-Down Edit	A list of values users can select from or type in their own value. The list box drops down when the user selects the arrow. (This property is available only for forms.)

List	A list of values users can select from. This type of list has no type-in box. List is always in full view.

To enter the values for the list items, click the Define Values button after choosing the display type

Radio Buttons	A list of values with a round or diamond-shaped button beside each value. Users click a button to select a value. Only one value can be selected at a time.

Changing the text in the label of a button does not alter its value. To alter the value of the button, click the Define Values button after choosing the display type.

Check Box	A check box that has one value when the user checks it and another value when the user unchecks it.

Changing the label of the check box does not alter its value. To alter the value of the check box, click the Define Values button after choosing the display type.


Editing property

In ObjectPAL, this read-only property of a manager or TV window indicates whether you are in Edit mode.


Field Squeeze property

In a text object, check Field Squeeze on the Run Time property page to push or pull an embedded object. When you run the report, Paradox extracts the text value of the field and wraps it in its position within the line of text within the text object. The text following the field value is correctly spaced.

Field Squeeze is available only inside a text object in a report.


Fit Height property

When you right-click an object in a report design and choose Properties, the Fit Height property appears on the Run Time page.

If you check Fit Height, Paradox expands objects in a report vertically to show all of their contents when you run the report.

A text object fits font height when Word Wrap is not checked. It expands to fit all the text and contained objects when Word Wrap is checked. Extra lines can be added. Even if all text fits at design time without scroll bars, if the text object has contained objects that grow or shrink, this can cause the text object to change size.

A field object expands to fit the data (whether it is text or graphic or OLE). If the field is a button-style field (radio or check box), it expands to show all buttons.

A record, box, or ellipse expands to show all contained objects (for example, a table or a text object that expands). If the contained objects are Fit Height, the container tries to maintain white space from the bottom of the lowest object to the bottom of the container.

If you uncheck the Fit Width or Fit Height of an object, be sure the object itself is big enough to show all that you want it to. It's a good idea to preview the report, then resize the object in the Report Design window to get its sizing right.

Tip:	Unchecking Fit Height for an object in a report can speed up previewing.


Fit Width property

When you right-click an object in a report design and choose Properties, the Fit Width property appears on the Run Time page.

If you check Fit Width, Paradox sizes the object when you run the report to fit the width of its contents. The result depends on the type of object.

A text object grows or shrinks to exactly fit the size of its text and contained objects. Fit Width is available for text objects only when Word Wrap is not checked.

A field object fits the width of the text or graphic stored in the database. If the field is a button-style field (radio or check box), it expands to show all buttons.

A record, box, or ellipse expands to show all contained objects. If the contained objects are Fit Width, they can cause this object (the container) to widen, maintaining the white space from the rightmost object to the rightmost edge.

If you uncheck the Fit Width or Fit Height property of an object, be sure the object itself is big enough to show all that you want it to. It's a good idea to preview the report, then resize the object in the Report Design window to get its sizing right.

Tip:	Unchecking Fit Width for an object in a report can speed up previewing.


Font property

Font lets you change typeface, size, style, and color from pop-up selection lists. To see the full Font palette right-click a text object, choose Properties, then click the Font page.

Font	The typefaces available from the Font list depend on the fonts installed on your system. In a form or report, they also depend on whether you are designing for the screen or for the printer. Standard typefaces include Helvetica, Times Roman, Courier, and System.

Choose the typeface you want for the selected area of the table.

Note: If you are designing for the printer, the font displayed on the screen is a best match to a printer font on the selected printer. The screen font may not match the printer font exactly, resulting in anomalies where the object seems too big or too small.

Size	Displays a menu of available type sizes (in points). Choose the size you want for the selected text.

Font Style	Displays the available text styles.

Choose	To

Normal	Remove all style attributes from the text

Bold	Display the text in a heavier style

Italic	Display the text at a slanted angle

Bold Italic	Displays the text in both Bold and Italic

Effects	Displays the available text effects.

Underline	Display the text with a horizontal line beneath it

Strikeout	Display the text with a horizontal line running through it

Color	Changes the color of the selected text.

Changes apply to the selected object.

Tip: 	To change font characteristics in all columns of a table at once, press Shift+F6, then choose Properties, and change the fonts on the Font page.

To change the font characteristics for all the text objects on a form or report, Shift+click all the objects to select them, then choose Properties, and change the fonts on the Font page.


Frame property

Many objects are surrounded by a frame. Objects that have frames have a Frame property page.

To change the frame properties, right-click the object, choose Properties. Click the Frame tab and choose the color, style, or thickness of the frame.

Color displays color palette for choosing the color of the frame.

Style displays the types of frames available.

Thickness displays a Thickness palette if your design document is designed for the screen, or a menu of thicknesses if it is designed for the printer.

From each palette, choose a frame property (either click it or move to it and press Enter). Paradox changes the frame of the selected object(s).

Note:	Frame styles that are unavailable are dimmed on the palette. Some line and frame styles can be applied only when the line or frame is set to the thinnest choice.

Tip:	Text objects have no frame by default. Before you customize the color or thickness of a text object frame, choose a frame style. Then the color and thickness settings will take effect.


Full Size property

The Full Size property is a read-only property telling you how big the object would be if all of it showed. The full size of an object is the area within its frame. An object's full size may be bigger than the object; in which case, it is a scrollable or (in the case of bitmap and OLE) pannable object. Nonscrollable objects generally have full size smaller than size.

In reports, if you set Fit Height or Fit Width, the object will expand so that the full size fits inside the frame in the indicated dimension.


Grid property

Use the Grid property to configure the grid in a table frame or crosstab. It has submenus for

Grid style

Row dividers (whether they should appear at run time [image] table frames only)

Color


Grid Lines property

You can customize the grid in numerous ways. Choose Table|Grid Properties, and click the Grid Lines page. You can control what lines are displayed:

Hide or display a line in the heading area by choosing Heading Lines.

Hide or display the vertical lines of the grid by choosing Column Lines.

Hide or display horizontal lines between the records of the table by choosing Row Lines.

You can specify what the lines look like:

Query Look makes the header of a table have the same style as that found in queries.

Line Style specifies the type of lines.

Color changes the color of the lines.

Spacing specifies the number of lines between each column or row. You can display single, double, triple, 3D, or no lines.


Grid Style property

On table objects or crosstab objects, Grid Style can be single, double, triple, 3D, or None. Paradox applies your chosen style to the whole object.

To change the grid style and color, right-click the object, choose Properties, then change the grid properties on the Grid page.

Tip:	Choose None for reports, because printing the grid can take a long time on many printers.


Heading Lines property

In a Table window you can hide or display the grid lines under all column headings. When Heading Lines is checked (the default), the lines show. Uncheck Heading Lines to hide any line under your column headings.

You can choose the line style and spacing for these lines.

Color

You can change the color of all the space around rows and columns in a table, as well as the color of any grid lines marking rows and columns.

To change the color of the space, choose Color from the General property page.

To change the color of the lines, choose Color from the Grid Lines property page.


Header property

You can print a group heading at the beginning of each group, at the top of the page when the group continues across a page break, or both. This property is available on the group band General property page.

On Page And Group prints the group heading at the beginning of each group and at the top of a page when the group is continued across page breaks.

Individual objects in headings marked Page And Group can appear at the start of groups, at the page continuation, or both, depending on the setting of their Conditional property.

On Group Only prints the group heading at the beginning of each group, but not at the top of a page when the group is continued across page breaks.

The Header property affects the entire group band. To control how a specific object prints, use its Conditional property.


Horizontal property

Horizontal specifies the alignment of data in a Table window:

Left

Center

Right

For more information, see About aligning heading text and data.


Horizontal Scroll Bar property

Horizontal Scroll Bar places a horizontal scroll bar at the bottom of a crosstab, table, graphic, or OLE object.

For information on using scroll bars in forms and reports, see the following topics:

About scroll bars in forms

About scroll bars in reports


Invisible property

Check Invisible on the object's Run Time property page to make Paradox suppress the display of an object at run time.

Using invisible objects in designs

Invisible objects can be used to control the growing and shrinking of other objects. When you want an object that grows to push other objects that are not directly beneath or beside it, you can add a line beneath or beside it that extends far enough to push the other object.

This behaves like any other line, but you do not want to see it (it is only for formatting), so you make it invisible. This is the same as placing a transparent white color on the line, but you can see it at design time, and it is slightly more efficient at run time.

Similarly, you might want to take advantage of the formatting properties of a box (for example, grouping some objects that should all go on the same page and putting them in an unbreakable box) but not see the box. Again, this is the same as a transparent white frame, but you can see it at design time, and it is more efficient at run time.

When you check Invisible, Paradox hides the object, but not any objects contained by it.


Line Ends property

You can place arrows on the ends of lines. When you choose Line Ends on the line object's Style property page, you can choose

No Arrow	Does not place an arrow at either end of the line. (This is the default choice. It is also the only choice for a line that has the Line Type|Curved property checked.)

On One End	Places an arrow on one end of the line. Because you create a line by clicking and dragging with the mouse, Paradox places the arrow on the end of the line where you released the mouse. The arrow points in the direction you dragged to create the line.

On Both Ends	Places arrows on both ends of the line.


Line Spacing property

In text or memo fields, Line Spacing specifies how far apart lines of text are spaced. You can choose the number of lines separating each column or row. The choices are 1, 1.5, 2, 2.5, or 3 lines.


Line Squeeze property

If a text object's Line Squeeze property is checked on its Run Time property page, and if only one field is embedded in a text object and the field value is blank, Paradox blanks out the entire line of text that contains the blank field.

Line Squeeze is available only inside a text object in a report.


Line Style property

Line style can apply to line objects as well as to Table window grid lines. Line style is also part of the line property on ellipses and the lines in charts.

Line Style displays a selection of different types of lines, including dashed lines of varying length. When you choose a style, all selected lines are changed to that style.


Line Type property

Paradox gives you the option of drawing straight or curved lines. A straight line is the default. This is what you see when you click the Line tool, then drag across the design.

If you want the drawn line to be curved, choose Curved from the Line Type area of the Style property page. Paradox curves the line. (You cannot choose this property if the No Arrow property is not checked for the Line Ends.)

To straighten a curved line, right-click it and choose Properties. Click the Style page, and check Straight for the Line Type.


Logical Format property

dBASE logical fields have the Logical Format choice on their menu. Choose it to select which values to accept in the logical field. Choose one of the pairs in the list of predefined logical formats or click the top of the list to open a dialog box where you can define your own custom formats.


Magnification property

Choose the Magnification property page to size a graphic or OLE object to fit in its container. Paradox proportionally resizes the object.

25% or 50% shrinks the displayed object

100% restores its original size

200% or 400% expands the displayed object

Best Fit shrinks the object to fit in the field while retaining the proportions of the original object. When you choose Best Fit, changing the column width or row height changes the size of the object.

Tip:	For fastest performance, display graphic and OLE objects at 100%. Best Fit usually gives the slowest performance.


Choose The Next Tab Stop property

You can specify the tab order of objects at Run Time with the Choose The Next Tab Stop property on an object's Run Time property page.

Choose the name of the next design object that you want to receive focus when the user presses Tab.

This property is available only if the Tab Stop property is checked. If an object's Tab Stop property is unchecked, its name does not appear on the Next Tab Stop list for any other object. By default Tab Stop is not checked for pushbuttons.


No Echo property

Choose No Echo on the Run Time property page if you do not want to the contents of a field.

No Echo is useful for a field where users type in a password. They can enter data, but it is not displayed.


Number Format property

Undefined fields, number fields, and numeric chart labels have a Number Format property on the Format property page. Choose this property to change the format in which Paradox displays numbers in the selected field or chart.

When you choose Number Format, Paradox displays a list of available predefined number formats. Choose a format to apply to the selected field, or click the Create New Format button to open a dialog box for defining your own customized format.


Number Of Pages property

Number Of Pages specifies the number of pages on a notebook object. Each page is represented by a tab.


Object Name property

An object's name appears at the top of its menu. When the object is selected, its name appears on the status bar. Paradox names an object with its type and a number. For example, #ellipse32 or #box3.

Why name objects?

The name of a selected object appears on the status bar and in some error messages. Naming objects can help you determine which object is selected in a complicated design.

In a form, all design objects can have ObjectPAL methods attached to them. ObjectPAL refers to objects by name. If the name of an object begins with the pound character (#), then you need not name the object explicitly when referring to its children in ObjectPAL.

In a report, you can use object names in defining calculated fields.

See To change the name of a design object.

Automatic numbering of design objects

Paradox numbers objects within a design document sequentially, from the first object created to the most recent. For example, when you create a form, the form itself is #1, and the page is #2. The first design object you place on a form is #3.

Suppose you create a new form and place a labeled field object on it. Because a labeled field object is made up of three parts, you can right-click it in three different places, as shown in the following figure. Each part of the labeled field is a separate object and has a different sequential number.


OLE Command property

Choose an OLE command fromt the OLE object's right-click menu to manipulate the object in an OLE container. The ways you can manipulate an object depend on the kind of OLE server associated with the object.

For example, if the OLE container contains a word processing document, two commands are available: Edit Documnt and Open Document. Edit opens the document for in-place editing, and Open opens the document by launching the word processor.

If you insert the word document and link it, the OLE menu commands change to Edit Document Link and Open Document Link.

For more information about inserting objects in OLE containers, see

About embedded OLE objects

About linked OLE objects


Orphan/Widow property

An orphan is a single line of text at the bottom of a page that has been separated from the paragraph it begins.

A widow is a single line of text at the top of the page that has been separated from the paragraph it ends.

If a text object is breakable, you will probably encounter orphans and widows. Check Orphan/Widow on the objects Run Time property page to prevent orphans and widows.


Pattern property

Use the properties on the Pattern page to change the color or fill pattern of an object. A pattern will show up only if the underlying object has a color other than transparent white.

Color is where you choose the color for the pattern.

Style is where you choose the pattern style.

Make your choice from each palette (either click it or move to it and press Enter). Paradox applies the pattern to the selected object(s).

If choosing a pattern style does not have any effect, make sure the object's foreground and background colors are different.


Pin Horizontal property (run time)

Pin Horizontal is one of the properties on the Run Time property page, which establishes the behavior of a report at run time (when you view or print the document).

Choose Pin Horizontal to pin an object to its horizontal position relative to its container. This means that expanding or contracting objects cannot move the pinned object horizontally.

To speed up previewing of a report, pin as many objects as possible.


Pin Horizontal property (design window)

Choose Pin Horizontal on the Design property page to prevent an object from moving left or right by accidental mouse moves. It can still be moved by choosing Align from the menu.

When you pin an object horizontally, you can move it up or down across the design, but Paradox prohibits you from moving it left or right. Also, the object does not automatically become contained by other objects that surround it.


Pin Vertical property (run time)

Pin Vertical is one of the properties on the Run Time property page, which establishes the behavior of a report at run time (when you view or print the document).

Choose Pin Vertical to pin an object to its vertical position relative to its container. This means that expanding or contracting objects cannot move the pinned object vertically.

To speed up previewing of a report, pin as many objects as possible.


Pin Vertical property (design window)

Choose Pin Vertical on the Design property page to prevent an object from moving up or down by accidental mouse moves. It can still be moved by choosing Align from the menu.

When you pin an object vertically, you can move it left or right on the design, but Paradox prohibits you from moving it up or down. Also, the object does not automatically become contained by other objects that surround it.


Precede Page Header property

Right-click the report band and choose Precede Page Header on the General page to print the report header before the page header. If Precede Page Header is unchecked, the report header appears after the page header.

This is not visible in the Report Design window because the bands themselves do not move. When you preview or print the report, the report band and page band will be in the order you choose from the report band's menu.


Print On 1st Page property

Right-click the page band and choose Print On First Page on the General property page to print the contents of the page band on the first page of the report.

You can set this separately for the page header and footer.


Property

No help is available for this property.


Query Look property

Check this property to make the header of a table have the same style as that found in queries. Choose Table|Grid Properties, click Propeties, and check Query Look on the Grid Lines page.


Raster Operation property

When you define a graphic object, you identify a source graphic (a file) to be placed in a destination (your computer's screen). Most often, Paradox assumes you want an unchanged copy of the source placed on the screen.

Suppose, however, you want the source graphic and the screen to interact. You might want to make the source graphic transparent, so the color of the page shows through it, or you might want to invert the color of the source graphic. When you want to achieve these types of effects, use the graphic object's Raster Operation properties.

Raster operations define how Paradox combines the source graphic with the destination, inverting, combining, including or excluding colors to your specifications. Paradox uses the Boolean AND, OR, and XOR comparison operators to combine individual pixels of color during raster operations.

To use a raster operation, choose it from the Graphic's Raster Operations property page.

Demonstration

To see the effects of these raster operations, open RASTEROP.FSL in your SAMPLE subdirectory (or wherever you installed the ObjectPAL sample applications).

Source Copy	Copies an unchanged source graphic to the destination

Source Paint	Combines the source graphic and the destination using the Boolean OR operator

Source And	Combines the source graphic and the destination using the Boolean AND operator

Source Invert	Combines the source graphic and the destination using the Boolean XOR operator

Source Erase	Inverts the colors of the destination and combines it with the source graphic using the Boolean AND operator

Not Source Copy	Inverts the colors of the source graphic and copies it to the destination

Not Source Erase	Combines the source graphic and the destination using the Boolean OR operator

Merge Paint	Inverts the colors of the source graphic and combines it with the destination using the Boolean OR operator

To see an example of using raster operations, see Example of creating a mask for a graphic.


Record Divider property

Places horizontal lines between records of a table frame or crosstab. The lines help you scan across the records of large table frames.


Record Layout property

Right-click the multi-record object and choose Properties, then click the Record Layout tab. Here you can specify the layout of records in a multi-record object.

You can specify

The number of records across and down.

The vertical and horizontal spacing between the records. The grid settings on the Designer preferences page determines the units used for the spacing.

The fill order in which the records appear: Top-down, then left-right or Left-right, then top-down.

Note:	If Include All Data is checked for a multi-record object in a report, then the final number of repeats in the fully rendered report is not determined by this number but by the data. If the order is Top Down Left Right, then Paradox adds more records in extra columns on the right. If the order is Left Right Top Down, Paradox adds additional records in extra rows on the bottom.


Record Marker property

You can choose to display or hide a record marker in a table to display a horizontal line beneath the current record, and you can customize the lines color and thickness.

Choose Table|Grid Properties, and click the Record Marker page.

Show Record Marker	When Show is checked on the Grid Lines property page, the record marker is visible.

Line Style	Displays the Line Stylepalette. When you choose a line style, Paradox displays the record marker in that style.

Color	When you choose a color, Paradox displays the record marker in that color.


Remove Group Repeats property

To retain or suppress repeated group values within a record band,, choose Report|Properties, and check Remove Group Repeats on the report's General property page.

When Remove Group Repeats is not checked, Paradox displays the value of the grouped field for each record, including duplicates, in the record band.

When Remove Group Repeats is checked, Paradox prints the value for the first record of the group only.

Remove Group Repeats requires a group band in the report design, even if you know the records are ordered because the table is keyed or you've used Sort Record Band. But you can add a group band, then delete all the objects in it, and shrink its header and footer to nothing. This gives nearly the same effect [image] except that now the table breaks on group changes.


Repeat Header property

When a table breaks across several pages or several groups, you can repeat the table header at the top of each page or group. Paradox checks a table frame's Repeat Header property by default.

To prevent the header from repeating at the top of each page or group, right-click the table frame, choose Properties, and uncheck Repeat Header property on the General page. This property is not available for a table frame with a detached header.


Row Lines property

In a Table window you can hide or display the lines between records. When Row Lines is unchecked (the default), no lines appear between the records. Check Row Lines on the grid's Grid Lines property page to display lines between all records in the table.

You can choose the line style and spacing for these lines.

Color

You can change the color of all the space around rows and columns in a table, as well as the color of any grid lines marking rows and columns.

To change the color of the space, choose Color from the grid's General property page.

To change the color of the lines, choose Color from the grid's Grid Lines property page.


Selectable property

When the Selectable property is checked on the object's Design property page, you can select any object by clicking it. Uncheck Selectable to prevent the object from being selected by a mouse click. You can still select any objects that the object contains, and you can still right-click the object or click it in the Object Explorer.

Selectable is on by default.


Show property
Show Record Marker property

Check Show record marker on the grid's Record Marker property page to display a line indicating the current record. Paradox displays a thin, black line under the selected record.

You can also choose the line style and color for this line from the Line Style and Color palettes on the Record Marker property page.


Show All Columns property

When Show All Columns is checked and you are viewing data, the table frame expands to show all columns of the table.

When this property is not checked, the table frame behaves like a fixed-width table when you are viewing data.


Show All Records property

In One Object

By Duplicating Object

Table frames and multi-record objects both have the Run Time property Show All Records for reports. When this property is checked on a table frame, Paradox expands the object vertically down the page, creating as many pages as necessary to show all records of the table.

When Show All Records is checked and you are viewing data, a table frame or multi-record object will keep expanding, until all data in the group is displayed.

A table frame expands vertically.

On a multi-record object, the way in which the object expands is determined by the options you choose on the Record Layout property page. If you choose Top Down, then Left-Right, Paradox creates additional columns. If you choose Left-Right, then Top-Town, Paradox creates additional rows.

When Show All Records is not checked, the table frame or multi-record object can still expand, but you will see a fixed number of records when viewing data. To keep the table frame or multi-record object from expanding, uncheck the record object's Fit Height property on the Run Time property page.

Show All Records applies only to tables and multi-record objects.


Shrinkable property

Sometimes, when an object in a report (such as a box or a report band) begins near the bottom of a page, it has enough room for all contained objects, but not for the whitespace below the last object.

To ignore this final whitespace, check Shrinkable on the objects Run Time property page. The object shrinks it to fit on the current page by clipping off the whitespace.

When Shrinkable is checked, it takes precedence over

Breakable (when checked)

Fit Height (when unchecked)


Size property

Choose Size on the Font property page of a text object to change the font point size. Paradox displays a list of available point sizes.


Size To Fit property

Fields, tables, graphic, and OLE objects in design documents use the Size To Fit Design property. If you check Size To Fit on the objects Design property page, the object automatically grows or shrinks to fit the size of its contents.

For example, suppose you create a small field object, then define it as Customer No. If Size To Fit is checked, the field label and edit region automatically resize to fit the definition, and the whole field object resizes around them. If you redefine it as Qty, the field automatically shrinks to fit the smaller definition.

Size To Fit can work slightly differently on different objects.

Field objects

Choose Size To Fit if you want a field to expand or contract in the design window as a result of the its contents getting larger or smaller. (This can happen when you make changes to the field object properties such as display type, font, or size.)

For example, a labeled field needs more room than an unlabeled field.

If you change display types from an unlabeled field to a labeled field without checking Size To Fit, the field remains the same size and the label object and field object compete for space.

If you change display types and check Size To Fit, the field object expands to accommodate the new label.

When Size To Fit is checked, the field resizes when you

Change display type

Redefine the field

Change font

Change frame

Move or resize anything contained in the field

If you manually resize the field, it stays that size until you do one of the above four actions.

It is a good idea to have Size To Fit on if you resize a field label or redefine the field.

Table objects

Size To Fit causes a table frame to expand to fit all fields in the table. If you leave this unchecked, the table frame retains the size and shape you created when you placed it.

Paradox automatically places a horizontal scroll bar and unchecks Size To Fit when you:

Manually resize the table

Add more fields to the table than will fit in the form

Graphic and OLE objects

Use Size To Fit with graphic and OLE objects to make them fit the data they are designed to display. To resize graphic and OLE objects, you must first uncheck Size To Fit.

Window objects

When check Size to Fit is checked on the General property page for a form or report, Paradox automatically sizes the window to fit the size of the design.

The effect of choosing Size To Fit might not be apparent unless your page size is smaller than your screen display size.

Note:	The window frame and the page size may differ. To change the page size, choose Form|Page Layout.


Sort Order property

The Sort Order property is available on the group band's General property page.

Choose Sort Order|Ascending to print the groups in A to Z or numeric order.

Choose Sort Order|Descending to print the groups in Z to A or reverse numeric order.

Sort Order is not available for a group band that is defined on a number of records.


Spacing property

Choose one of the following Spacing options for the grid lines separating table columns: Single, Double, Triple, 3D, or None. Paradox applies your selection to the whole table.

To change grid properties, choose Table|Grid Properties. The Spacing property is on the Grid Lines property page.

To hide the line under all column headings or between columns, uncheck Heading Lines or Column Lines on the Grid Lines menu.

To display lines between records, check Row Lines.

To change the line style, choose Line Style.

Color

You can change the color of the space around rows and columns in a table, as well as the color of any grid lines marking rows and columns.

To change the color of the space, choose Color from the grid's General property page.

To change the color of the lines, choose Color from the grid's Grid Lines property page.


Square Tabs property

Square Tabs specifies whether a notebook's tabs are square or angled.


Standard Menu property

Check this property on the form or report General property page to make Paradox display the standard Paradox Report window menu when you are viewing data. Standard Menu is checked by default. This property is useful primarily if you are manipulating this document using ObjectPAL and want to display your own menu while the document is previewed.


Start Page Numbers property

Start Page Numbers makes Paradox begin a new page and reset the page number to one when the band is reached. Check this property on the page band's General property page.

When you choose to restart page numbers for each group, Paradox changes to a page number format that shows page within group (1-1, 1-2, 1-3...2-1, 2-2, 2-3...). You can not modify this format.


Style property

Radio buttons and check boxes

A button's style controls its visual display. Paradox provides the following styles for radio buttons and check boxes. The button style choices are displayed below the button type on the button's General property page.

Borland: radio buttons and check boxes look like the ones you see in many Borland products. Radio buttons are diamond shapes, and check boxes are gray, with a three-dimensional look.

Windows: radio buttons and check boxes look like the ones you see in some older Windows products. Radio buttons are standard circles, and check boxes are squares.

Windows 3D: radio buttons and check boxes look like the ones you see in many Windows products. Radio buttons are gray three-dimensional circles, and check boxes are squares.

Frame style

Objects that can have frames have Frame property page containing a Frame Style palette. To choose a frame style, click it or move to it and press Enter. Paradox changes the frame of the selected object(s). Frame styles that are unavailable are dimmed on the palette. Some line and frame styles can be applied only when the line or frame is set to the thinnest choice.

Pattern style

Objects that can be filled with a pattern have a Pattern property page containing a Pattern Style palette. To choose a pattern style, click it or move to it and press Enter. Paradox fills the selected object(s) with that pattern. If choosing a pattern style does not seem to have any effect, make sure the object's foreground and background colors are different.


Style property

Font Style displays a list of available font styles (like Bold or Italic). Font Styles are available on a text object's Font property page.


Tab Stop property

Users can tab from one object to another on a form.

Right-click an object and choose Properties. On the Run Time property page, check Tab Stop to include the object in the tab sequence. Fields, buttons, and charts have a Tab Stop property.

When Tab Stop is checked, users can move to the object by using the Tab key, arrow keys, or ObjectPAL.

When users tab to a field in Edit mode, they can edit it.

When users tab to a chart, they can scroll it.

When users tab to a button, they can press Enter to activate the button.

Users must tab to all objects within a container before they can tab to any objects outside the container.


Tabs Across property

Tabs Across specifies the number of tabs across a notebook object. If the notebook has more pages than are specified in Tabs Across, Paradox displays the tabs in multiple rows.


Tabs On Top property

Tabs On Top specifies whether notebook tabs are located at the top of a notebook object. If checked, the tabs are across the top of the notebook. If unchecked, the tabs are across the bottom.


Text property

The Text property page is available for any design object that includes text. This property defines the alignment, line spacing, and word wrap properties of the text object.

Paradox treats text as a design element much like any other design element. Use the Text tool to place text in the design. You create text inside a frame.

Text objects in Paradox design documents behave differently, depending on how you create them.

You can click the Text tool, then click in the design area and begin typing. Paradox creates a single-row text object that expands to the right until you press Enter, moving the insertion point to a new line. As you continue typing, the text wraps automatically at the right border that you defined by pressing Enter, and expands downward until you finish typing and click somewhere else in the design area. This is a Fit Text type of text object.

You can click the Text tool, then drag to place a frame in the design area. As you type, Paradox automatically wraps the text at the right border of the frame. When you reach the bottom of the frame, Paradox scrolls the text upward so you can view the data you are entering. This is a Fixed Size type of text object.


Thickness property

You can change the thickness of a line or a frame.

The Line Thickness and Frame Thickness properties display a thickness palette if you are designing for the screen, or drop-down list showing point sizes if you are designing for the printer.

To change the Thickness property, right-click the design object, and choose Properties. Choose the Frame or Style property page, and change the thickness.

On drop-shadow frames, the size of the shadow is four times the frame thickness.


Time Format property

Undefined and time fields have a Time Format property. Choose this property on the object's Format property page to change the format in which Paradox displays the time in the selected field.

When you choose Time, Paradox displays a list of available predefined time formats. Choose a format to apply to the selected field, or click Create New Format to open a dialog box for defining your own customized format.


Timestamp Format property

Undefined and time fields have a Timestamp Format property. Choose this property on the object's Format property page to change the format in which Paradox displays the timestamp in the selected field.

Choose Timestamp Format to change the display format of a time/date field. Choose a predefined timestamp format to apply to the selected field, or click Create New Format to open a dialog box for defining your own customized format.


Typeface property
Font property

Choose Font to display a menu of available font typefaces. Standard typefaces include Helvetica, Times, Courier, and System.

The typefaces available from the Font list depend on the fonts installed on your system. In a form or report, they also depend on whether you are designing for the screen or for the printer.

Note:	If you are designing for the printer, the font displayed onscreen is a best match to a printer font on the selected printer. The screen font may not match the printer font exactly, resulting in anomalies where the object seems too big or too small.


Update Now property

Choose Update Now from an OLE objects right-click menu to immediately make the appearance of a linked object in an OLE container match that of its source. A linked object is actually a pointer to data somewhere outside of the OLE container. Paradox provides OLE containers in two ways: as a field in a table and as a design object in a form or report.


Variable Height (Columnar) property

Choose Variable Height (Columnar) to expand or contract individual records in a multi-record object when you print or preview reports. This means that the multi-record object does not display the records in a fixed-size grid. Using the Variable Height (Columnar) property, you can usually fit more records on a single page than you can without this property.

Note:	Variable Height(Columnar) is not available unless you first check the Top-Down, Then Left-Right setting.


Vertical property

Vertical specifies the alignment of data in a Table window:

Top

Middle

Bottom

For more information, see About aligning heading text and data.


Vertical Scroll Bar property

Vertical Scroll Bar places a vertical scroll bar at the right of a crosstab, table, graphic, OLE, or text object. The Vertical Scroll Bar property is available on an object's General property page.

On table and crosstab objects, vertical scroll bars scroll through data, not the underlying image. That's why the vertical scroll bar does nothing when you click it in a design window. When you are viewing data, the vertical scroll bar acts like the navigation buttons on the Toolbar to move forward and backward through records or sets of records.

For information on using scroll bars in forms and reports, see the following topics:

About scroll bars in forms

About scroll bars in reports


Visible property

Visible is one of the properties on the Run Time property page, which affects the behavior of a form at run time (when you view the document).

Visible is checked by default. If you uncheck it, Paradox hides the object (and all objects contained by it) when you run (view) the form.

This feature is useful mainly for ObjectPAL developers who want to create forms in which objects are visible only when needed.

Unlike Invisible (used in reports on lines and boxes), Visible makes the children of the object disappear, as well as the object itself.


Wide Scroll Bar property

Check Wide Scroll Bar on an objects General property page to make a design object's horizontal and vertical scroll bars wide.


Word Wrap property

Word Wrap is a property of field objects and text boxes available on the object's Text property page.

Fields	Choose Word Wrap if you want the contents of a field (all fields except graphic and OLE) to display in more than one line when they exceed the width of the field object.

Text	All text objects have the Word Wrap option on their menus. Choose this if you want Paradox to wrap text automatically at the text object's frame. If Word Wrap is turned off, you can have only one line of text in the text object. Pressing Enter does not create a new line.


Add Records In dialog box

See also

Use the Add Records In dialog box to add the records in one table to those in another without having to retype them. The Add Records In dialog box indicates the table to add the records from.

To open this dialog box, choose Tools|Utilities|Add.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can use for the addition operation you are performing.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Add Records In <table> To dialog box

See also

Use the Add Records In <table> To dialog box to add the records in one table to those in another without having to retype them.

You can use the Options area in this dialog box to either append new records, update existing records, or both.

To open this dialog box, either choose Open in the Add Records In dialog box, or, in the Project Viewer, right-click the icon of the table you want to add records from and choose Add from its menu.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to add records to or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can use for the addition operation you are performing.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.

Options

These settings let you append records, update records, or both.

Append

Adds new records from the source table to the target table without affecting any existing records:

If the target table is not keyed, the records are placed after existing records. Records that violate validity checks are placed in the temporary Keyviol table in your private directory.

If the target table is keyed, added records that meet the key criteria are inserted in their proper sort order. Records that do not meet the key criteria are stored in the temporary Keyviol table in your private directory. If you want, you can edit these records to meet the key criteria, then use Add again to place them in the target table.

Update

Updates records that already exist in the table you are adding records to. Any records in the source table that do not match an existing record are not added.

When you choose Update, the records of the source table overwrite matching records in the table you are adding records to. Paradox places the records that are overwritten in the temporary Changed table in your private directory.

Note: The table you add records to must be keyed to use Update.

Append & Update

Adds new records to a table (following the rules stated above) and updates existing records in the target table (following the rules just stated).

Note: The table you add records to must be keyed to use Append & Update.


Alias Manager dialog box

See also

Use the Alias Manager dialog box to create or modify aliases for local or network directories.

Creating aliases lets you give logical names to directories and is strongly encouraged, since it frees you from typing long path names, and makes your files more portable.

To open this dialog box, choose Tools|Alias Manager.

Dialog box options

Public Alias

Check this check box to make an alias a public alias [image] available from all applications that use BDE. Uncheck this check box to make an alias a project alias [image] available only to Paradox applications in the current working directory.

Database Alias

Choose an alias from the list. To create a new alias, first choose New, then type the name (alias) you want to give the database.

Driver Type

Choose the driver you want. The Driver Type drop-down list shows all the drivers you are connected to. If you want to create a database of Paradox and/or dBASE tables, choose STANDARD.

Path

Type the full path of the directory location, including the drive letter.

Show options

Show Public Aliases Only

Choose this button if you want to see only public aliases.

Show Project Aliases Only

Choose this button if you want to see only project aliases.

Show All Aliases

Choose this button if you want to see both public and project aliases.

Browse

Choose Browse to look for a directory using the Directory Browser.

New

Choose New to open an empty box where you can type in a new alias. After you choose New, the button becomes the Keep New button.

Keep New

Choose Keep New if you want this to be a temporary alias, existing only until you exit. Then click OK, and the Alias Manager dialog box closes.

Note:	Keep New does not close the dialog box. It lets you do a temporary save which does not take effect until you click OK. If you click Cancel, whatever you temporarily saved with Keep New is canceled.

Choose Keep New if you are creating several aliases and do not want to open this dialog box to create each one.

Remove

Choose Remove to tag the selected alias for removal. The alias is removed when you exit the box without specifying the removed name again or when you choose Save As and overwrite the current file containing the alias.

Save As

Choose Save As if you want this alias to be permanent [image] usable any time you use Paradox. You see the Save File As dialog box. By default, Paradox stores saved public aliases in IDAPI32.CFG and project aliases in PDOXWORK.CFG. You are prompted to overwrite the existing .CFG file.

Important:	When you overwrite, Paradox appends the new alias without changing any existing configuration settings. You can undo the change by deleting the alias (using the Alias Manager dialog box).

OK

Choose OK if you want to save any changes you have made in the dialog box, but only for the current Paradox session. All Windows applications currently running are affected by any changes.

Cancel

Cancels only the changes in type-in boxes. Any changes you made with Save As remain.


Auxiliary Passwords dialog box

See also

Use the Auxiliary Passwords dialog box to assign passwords for table and field rights.

To open this dialog box, choose the Auxiliary Passwords button in the Password Security dialog box.

Dialog box options

Passwords

Lists the passwords for the current table.

Current Password

To specify an auxiliary password, type it in the Current Password text box.

Add

After choosing the table and field rights for your auxiliary password, click Add to place the password in the Passwords list.

Table Rights

Choose the level of table rights for the password from the Table Rights panel. You can choose only one type of table rights for each auxiliary password. If you want a user to have more than one (but not all) rights, you must assign more than one auxiliary password.

All

Gives a user all rights to any function of the table, including the ability to restructure or delete it, and to change or delete passwords.

Insert & Delete

Gives a user the right to insert, delete, or empty records, but not to delete or restructure the table.

Data Entry

Gives a user the right to edit data and insert records, but not to delete records, restructure, or empty the table.

Update

Gives a user the right to view the table and change non-key fields, but not to insert or delete records or change key fields.

Read Only

Gives a user the right to view the table, but not to change it in any way.

Field Rights

Assigns rights to individual fields. The default right in the Field Rights list is All. To choose another option, double-click the field or choose the Field Rights button.

All

Gives a user all rights to the data in that field (within the limits of the table rights you specify).

Read Only

Gives a user the right to view, but not to change, the data in that field.

None

Prevents a user from viewing or changing the data in that field. Paradox hides the values in the field when the table is opened.

New

Choose New when you have finished adding one auxiliary password to the list and want to add another before leaving this dialog box. You can repeat this process to assign any number of auxiliary passwords.

Change

Change a password that's already on the Passwords list by selecting it and then choosing Change.

Delete

Remove a password by selecting it in the Passwords list and choosing Delete.


Browse dialog box

See also

Use the Browse dialog box to find a file to insert into an OLE field or object. This dialog box appears when you choose Insert Object, check Create From File, and choose Browse.

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to insert or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can use.

Insert

Places the selected file into the current OLE field as an OLE object.


Font dialog box

Use this dialog box to specify the default system font.

To open this dialog box, choose Change in the Default System Font panel of the General page of the Preferences dialog box. See About fonts for more information on system fonts.

Dialog box options

Font

Specify the font you want to use by default in design objects by typing it in the text box or selecting one from the list box.

Font Style

Specify a style for the font that appears in the Font text box. You can type it in the Font Style text box or select a style from the list box.

Size

Specify a size, in points, for the font that appears in the Font text box. You can type it in the Size text box or select a size from the list box.

Sample

This field displays a sample of the specified font.

Script

Lists the available language scripts for the specified font. Pick the one appropriate for the language your computer is set up for.

Note:	You must exit and restart Paradox for the system font change to take effect.


Change Icon dialog box

See also

Use the Change Icon dialog box to change the icon (and its label) displayed for an iconized OLE object. To display this dialog box, choose Change Icon in the Insert Object dialog box.

Icon

Current

Choose this button to keep the current icon.

Default

Choose this button to use the default icon for the selected file.

From File

Choose this button to use an icon from an executable file or Dynamic Link Library (DLL) file. Type the name of the file in the adjacent text box, or click the Browse button to browse through the directory tree to find one.

Label

Type the label you want to appear below the icon.

Browse

Choose this button to browse through the directory tree to find a file.


Change Source dialog box

See also

Use the Change Source dialog box to change the source of a linked object in an OLE container. To display this dialog box, choose Edit|Links, then choose Change Source in the Links dialog box.

Dialog box options

Look In

By default, Paradox lists files in the working directory. To choose another directory, use this drop-down list to browse until you reach the directory. All files of the appropriate type in that directory appear in the table list below the Look In drop-down list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the new source file or select one from the list box below the Look In drop-down list. You don't need to type an extension; Paradox recognizes the type of file based on the file type listed in the Files Of Type drop-down list.

Files Of Type

Displays the type of file you are linking to.

Item Name

Displays the name of the specific item you want to link to in the OLE file displayed in the File Name text box.


Change Value dialog box

See also

Change the value of a watched variable and choose OK.

To open this dialog box, right-click the Watches window and choose Change.

Note:	You cannot change the value of Form, Script, and Report type variables.


Check Box Values dialog box

See also

Use the Check Box Values dialog box to specify values you want entered into a table when users click a check box in a form.

When you exit this dialog box, Paradox places a label next to the check box containing the text in Value When Checked. You can change the label without altering the value in Value When Checked.

To open this dialog box, right-click the field object in a Form or Report Design window. Choose Properties from its menu. Click the Display Type drop-down list, choose Check Box, and then click Define Values.

Dialog box options

Value When Checked

Type what you want entered into the table when the user checks the box.

Value When Blank

Type what you want entered into the table when the user does not check the box.

To enter the specified value while editing data in the form, the user must check and uncheck the box. If the user leaves the check box blank, Paradox leaves the field in the table blank (unless you've specified a default value).


Choose Preferred Chart dialog box

See also

Use the Choose Preferred Chart dialog box to specify the form containing the chart you want to see when you choose the Quick Chart Toolbar button.

To open this dialog box, choose Table|Preferred Document|Chart in a Table window.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In drop-down list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file with the preferred chart or select one from the list box below the Look In drop-down list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can select.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Choose Preferred Crosstab dialog box

See also

Use the Choose Preferred Crosstab dialog box to specify the form containing the crosstab you want to see when you choose the Quick Crosstab Toolbar button.

To open this dialog box, choose Table|Preferred Document|Crosstab in a Table window.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In drop-down list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file with the preferred crosstab or select one from the list box below the Look In drop-down list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can select.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Choose Preferred Form dialog box

See also

Use the Choose Preferred Form dialog box to specify the form you want to see when you choose the Quick Form Toolbar button.

To open this dialog box, choose Table|Preferred Document|Form in a Table window.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In drop-down list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the preferred form or select one from the list box below the Look In drop-down list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can select.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Choose Preferred Report dialog box

See also

Use the Choose Preferred Report dialog box to specify the report you want to see when you choose the Quick Report Toolbar button.

If your table contains long memo fields, it is a good idea to make a preferred report. Paradox's default report is tabular. Records in tables cannot be split over more than one page, so the data must fit on one page. Since this might not be the case for a long memo field, a single-record style report might be preferable. Or if you do not mind clipping your memo fields, you could use fixed-size records.

To open this dialog box, choose Table|Preferred Document|Report in a Table window.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In drop-down list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the preferred report or select one from the list box below the Look In drop-down list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can select.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.

Note:	The report you choose as a table's preferred report can be a multi-table report. In this case, the table must be the master table in the report's data model.


Copy dialog box

See also

Use the Copy dialog box to specify the file you want to copy. You can copy tables, forms, reports, queries, scripts, libraries, SQL files, data models, and style sheets from within Paradox.

Note:	Do not try to copy tables using the DOS COPY command or the Windows Explorer.

To open this dialog box, choose Tools|Utilities|Copy.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In drop-down list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to copy or select one from the list box below the Look In drop-down list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can copy.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Copy <file name> To dialog box

See also

Use this dialog box to specify a file name and directory for the destination file in a file copying operation.

To display this dialog box, right-click a file name in the Project Viewer and choose Copy or use Tools|Utilities|Copy and choose OK in the Copy dialog box

Dialog box options

Save In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory where you want to save the file. All files of the selected type in that directory appear in the graphics list below the Save In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Save In drop-down list and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to save or select one from the list box below the Save In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Save As Type drop-down list.

Save As Type

Displays the types of files you can save.

Note:	To copy a Paradox table to a dBASE table or vice versa, specify the appropriate extension. For example, if you want to copy NAMES.DBF to a Paradox table, type NAMES.DB in the File Name text box. See Copying to a different table type for important information on copying between Paradox and dBASE table types.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Save In drop-down list and the tables in that directory appear in the file list.


Copy To File dialog box

See also

Use the Copy To File dialog box to copy values in a table's binary fields to non-Paradox files.

In a form, you can also copy values from any field that contains text, numbers, or dates; you cannot copy binary, OLE, or autoincrement data. When designing a form, you can copy a text object to a file. Use the Copy to Graphic File dialog box to copy graphics.

To open this dialog box, choose Edit|Copy To with a binary field selected.

Dialog box options

Save In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory where you want to save the file. All files of the selected type in that directory appear in the file list below the Save In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Save In drop-down list and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to save or select one from the list box below the Save In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Save As Type drop-down list.

Save As Type

Displays the types of files you can save.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Save In drop-down list and the files in that directory appear in the graphics list.


Copy To Graphic File dialog box

See also

Use the Copy to Graphic File dialog box to copy values in graphic objects or fields to non-Paradox files.

To open this dialog box, select a graphic object or field and choose Edit|Copy To.

Dialog box options

Save In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory where you want to save the file. All files of the selected type in that directory appear in the graphics list below the Save In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Save In drop-down list and its files appear in the graphics list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to save or select one from the list box below the Save In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Save As Type drop-down list.

Save As Type

Displays the types of files you can save.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Save In drop-down list and the graphic files in that directory appear in the graphics list.


Create dBASE Table dialog box

See also

Use the Create dBASE Table dialog box to specify the structure of a dBASE table.

This dialog box has two main panels: Field Roster and Table Properties. You can move between them using the keyboard: Use the Super Tab key (F4) to move from Field Roster to Table Properties; to return, press Shift+Tab.

To open this dialog box, choose a dBASE table format in the Create Table dialog box.

Dialog box options

Field Roster

Use the Field Roster to specify the fields of a table. You can add, delete, or rename fields, and change field types and sizes.

To insert a field between two existing fields in the Field Roster, select a field and press Ins. Paradox opens a blank row above the selected field.

To delete a field from the Field Roster, select it and press Ctrl+Del. Paradox deletes the entire row.

The order in which fields are listed in the Field Roster is the order in which the fields appear in the table. To change the field order, click the row number of the field and drag it to a new position.

Field Name

Specifies the name of the field. See Rules for dBASE field names for more information. This is a required field. (When a field is required, you must enter a value in the field for every record in the table. See About required fields for more information.)

Type

Specifies the type of the field. Right-click the Type column or press the Spacebar to display a list of field types. See dBASE field types and sizes for more information. This is a required field.

Size

Specifies the size of the field. See dBASE field types and sizes for more information. This is a required item for some field types.

Dec

Specifies the number of decimal places for number or float fields.

Table Properties

In the Table Properties panel you can specify the following:

Indexes

Creates an index on the current field in the Field Roster. See About dBASE indexes for more information.

Choose Indexes, then choose Define to open the Define Index dialog box.

Once you create an index, you can choose Modify to change it or Erase to remove it.

Table Language

Specifies the language driver. See About table language drivers for more information.

Choose Table Language, then choose Modify to open the Table Language dialog box.

Borrow

Specifies whether to create this table structure by using the structure of another table as a template. Choose Borrow to open the Select Borrow Table dialog box and choose from the list of tables. The Field Roster must be empty to borrow another table's structure.

Record Lock

Contains information about records locked by other users.

Info Size

Specifies whether to keep track of record locking information in a multiuser environment. When you check Info Size, Paradox adds a hidden field to the table that shows when a record was locked and by whom.

The amount of information you see when you encounter a locked field depends on the Info Size you specify. The default size is 16 characters. You can choose a size from 8 to 24 from the Info Size drop-down list. See dBASE Record Lock fields for more information.

Save As

Saves the table you are creating and closes the Create dBASE Table dialog box. Choose Save As to open the Save Table As dialog box, where you type a name for your new table. You can save the table in the current directory or another one.


Create INFORMIX Table dialog box

See also

Use the Create INFORMIX Table dialog box to specify the structure of an Informix table.

This dialog box has two main sections: the Field Roster panel and the panels on the right. You can move between them using the keyboard: Use the Super Tab key (F4) to move from Field Roster to the panels on the right; to return, press Shift+Tab.

To open this dialog box, choose INFORMIX in the Create Table dialog box.

Field Roster

In the Field Roster, you specify the fields of a table. When you are creating a table, you can add, delete, or rename fields, and change field types and sizes:

Field Name	Required for every field

Type	Required for every field. Right-click or press Spacebar to choose a field type.

Size	Table type determines which fields require this

Dec	Table type determines which fields require this

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. Check to make the selected field required. When a field is required, you must enter a value in the field for every record in the table. See About required fields for more information.

List of Indexes

In the panel on the right, you create indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.

Borrow

You can borrow another table's structure. Choose Borrow to open the Select Borrow Table dialog box and choose from the list of tables. The Field Roster must be empty to borrow another table's structure.


Create INTRBASE Table dialog box

See also

Use the Create INTRBASE Table dialog box to specify the structure of an InterBase table.

This dialog box has two main sections: the Field Roster panel and the panels on the right. You can move between them using the keyboard: Use the Super Tab key (F4) to move from Field Roster to the panels on the right; to return, press Shift+Tab.

To open this dialog box, choose INTRBASE in the Create Table dialog box.

Field Roster

In the Field Roster, you specify the fields of a table. When you are creating a table, you can add, delete, or rename fields, and change field types and sizes:

Field Name	Required for every field

Type	Required for every field. Right-click or press Spacebar to choose a field type.

Size	Table type determines which fields require this

Dec	Table type determines which fields require this

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. Check to make the selected field required. When a field is required, you must enter a value in the field for every record in the table. See About required fields for more information.

List of Indexes

In the panel on the right, you create indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.

Borrow

You can borrow another table's structure. Choose Borrow to open the Select Borrow Table dialog box and choose from the list of tables. The Field Roster must be empty to borrow another table's structure.


Create ORACLE Table dialog box

See also

Use the Create ORACLE Table dialog box to specify the structure of an Oracle table.

This dialog box has two main sections: the Field Roster panel and the panels on the right. You can move between them using the keyboard: Use the Super Tab key (F4) to move from Field Roster to the panels on the right; to return, press Shift+Tab.

To open this dialog box, choose ORACLE in the Create Table dialog box.

Field Roster

In the Field Roster, you specify the fields of a table. When you are creating a table, you can add, delete, or rename fields, and change field types and sizes:

Field Name	Required for every field

Type	Required for every field. Right-click or press Spacebar to choose a field type.

Size	Table type determines which fields require this

Dec	Table type determines which fields require this

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. Check to make the selected field required. When a field is required, you must enter a value in the field for every record in the table. See About required fields for more information.

List of Indexes

In the panel on the right, you create indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.

Borrow

You can borrow another table's structure. Choose Borrow to open the Select Borrow Table dialog box and choose from the list of tables. The Field Roster must be empty to borrow another table's structure.


Create Paradox Table dialog box

See also

Use the Create Paradox Table dialog box to specify the structure of a Paradox table.

This dialog box has two main panels: Field Roster and Table Properties. You can move between them using the keyboard: Use the Super Tab key (F4) to move from Field Roster to Table Properties; to return, press Shift+Tab.

To open this dialog box, choose a Paradox table format in the Create Table dialog box.

Dialog box options

Field Roster

Use the Field Roster to specify the fields of a table. You can add, delete, or rename fields, and change field types and sizes.

To insert a field between two existing fields in the Field Roster, select a field and press Ins. Paradox opens a blank row above the selected field.

To delete a field from the Field Roster, select it and press Ctrl+Del. Paradox deletes the entire row.

The order in which fields are listed in the Field Roster is the order in which the fields appear in the table. To change the field order, click the row number of the field and drag it to a new position.

Field Name

Specifies the name of the field. See Rules for Paradox field names for more information. This is a required field.

Type

Specifies the type of the field. Right-click the Type column or press the Spacebar to display a list of field types. See Paradox field types and sizes for more information. This is a required field.

Size

Specifies the size of the field. See Paradox field types and sizes for more information. This is a required field for some field types.

Key

Specifies whether the field is a key field. The table type determines rules for Paradox key fields. See About primary indexes (key fields) for more information.

Table Properties

In the Table Properties panel you can specify the following:

Validity Checks

Specifies requirements and defaults for a field. You must have a valid entry selected in the Field Roster area to specify validity check information. For more information about validity checks, see About validity checks.

You can specify the following types of validity checks:

Required Field: Specifies that the selected field in the Field Roster is a required field. When a field is required, you must enter a value in the field for every record in the table. See About required fields for more information.

Minimum: Specifies a minimum value for the selected field in the Field Roster. When a field has a minimum validity check, the values entered in the field must be greater than or equal to the minimum you specify here. See About minimum and maximum values for more information.

Maximum: Specifies a maximum value for the selected field in the Field Roster. When a field has a maximum validity check, the values entered in the field must be less than or equal to the maximum you specify here. See About minimum and maximum values for more information.

Default: Specifies a default value for the selected field in the Field Roster. When a field has a default validity check, Paradox enters the value you specify here if you do not enter another value when you edit this field. See About default values for more information.

Picture: Restricts the types of information you can enter in a field. When a field has a picture validity check, you specify a character string as a template for the values that can be entered into this field. See About pictures for more information.

Assist: Opens the Picture Assistance dialog box, where you can select or modify a predefined string to use as a picture.

Table Lookup

Specifies a lookup table for the current field in the Field Roster. A lookup table is another table that contains values that are valid for the current field. See About table lookups for more information.

Choose Table Lookup, then choose Define to open the Table Lookup dialog box.

Secondary Indexes

Creates a secondary index on the current field in the Field Roster. A secondary index lets you sort data in an order different from the key field, and lets you form links between tables. See About secondary indexes for more information.

Choose Secondary Indexes, then choose Define to open the Define Secondary Index dialog box.

Referential Integrity

Creates a referential integrity relationship between the current field and the key field in another table. A referential integrity relationship ensures that ties between like data in separate tables cannot be broken. See About referential integrity for more information.

Chose Referential Integrity, then choose Define to open the Referential Integrity dialog box.

Password Security

Creates passwords to protect your tables from unauthorized access. See About password security for more information.

Choose Password Security, then choose Define to open the Password Security dialog box.

Table Language

Specifies the language driver. See About table language drivers for more information.

Choose Table Language, then choose Modify to open the Table Language dialog box.

Dependent Tables

Displays all tables that depend on the current table for referential integrity.

Borrow

Specifies whether to create this table structure by using the structure of another table as a template. Choose Borrow to open the Select Borrow Table dialog box and choose from the list of tables. The Field Roster must be empty to borrow another table's structure.

Save As

Saves the table you are creating and closes the Create Paradox Table dialog box. Choose Save As to open the Save Table As dialog box, where you type a name for your new table. You can save the table in the current directory or another one.


Create SYBASE Table dialog box

See also

Use the Create SYBASE Table dialog box to specify the structure of an Sybase table.

This dialog box has two main sections: the Field Roster panel and the panels on the right. You can move between them using the keyboard: Use the Super Tab key (F4) to move from Field Roster to the panels on the right; to return, press Shift+Tab.

To open this dialog box, choose SYBASE in the Create Table dialog box.

Field Roster

In the Field Roster, you specify the fields of a table. When you are creating a table, you can add, delete, or rename fields, and change field types and sizes:

Field Name	Required for every field

Type	Required for every field. Right-click or press Spacebar to choose a field type.

Size	Table type determines which fields require this

Dec	Table type determines which fields require this

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. Check to make the selected field required. When a field is required, you must enter a value in the field for every record in the table. See About required fields for more information.

List of Indexes

In the panel on the right, you create indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.

Borrow

You can borrow another table's structure. Choose Borrow to open the Select Borrow Table dialog box and choose from the list of tables. The Field Roster must be empty to borrow another table's structure.


Create Table dialog box

See also

Use the Create Table dialog box to specify the type of table to create.

Table type determines

The table's file-name extension.

Which tables you can borrow a structure from.

What are valid field names. For example, Paradox permits spaces and punctuation in names, while dBASE does not.

What are valid field types and sizes.

The rules for specifying indexes.

To open this dialog box, choose File|New|Table from the Desktop. Or right-click the Open Table Toolbar button and choose New.

Dialog box options

Table Type

Specifies the type of table to create. You can choose any table type on the drop-down list.

Tables created using the Paradox 4 option are compatible with Paradox 4.5 for Windows and Paradox 4.0 for DOS.


Create Table dialog box (other SQL)

See also

Use the Create Table dialog box to specify the structure of an SQL table.

This dialog box has two main sections: the Field Roster panel and the panels on the right. You can move between them using the keyboard: Use the Super Tab key (F4) to move from Field Roster to the panels on the right; to return, press Shift+Tab.

To open this dialog box, choose an SQL driver in the Create Table dialog box.

Field Roster

In the Field Roster, you specify the fields of a table. When you are creating a table, you can add, delete, or rename fields, and change field types and sizes:

Field Name	Required for every field

Type	Required for every field. Right-click or press Spacebar to choose a field type.

Size	Table type determines which fields require this

Dec	Table type determines which fields require this

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. Check to make the selected field required. When a field is required, you must enter a value in the field for every record in the table. See About required fields for more information.

List of Indexes

In the panel on the right, you create indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.

Borrow

You can borrow another table's structure. Choose Borrow to open the Select Borrow Table dialog box and choose from the list of tables. The Field Roster must be empty to borrow another table's structure.


Custom Color dialog box

See also

Use the Custom Color dialog box to create custom colors for your design objects.

To open this dialog box, select one of the rectangles in the far-right column of the Color palette and click Add Custom Color.

Dialog box options

Sample area

Changes color to reflect the settings you choose.

Scroll bars and value boxes

Create the color mix you want. Slide the box in each scroll bar or type in values.

Radio buttons

Choose one of the following color schemes:

RGB

Red, green, and blue

HSV

Hue, saturation, and value

CMY

Cyan, magenta, and yellow

When you get the color mix the way you want it and choose OK, the custom color appears on the Color palette and is available for use.

Paradox saves custom colors in the Windows registry, not with the particular document you are working on when you create the color. This gives you the ability to create a custom color in one design document and use it in any other design document.


Data Dependent Properties dialog box

See also

Use the Data Dependent Properties dialog box to display a specified range of values in a field with different colors or fonts.

Alpha, number, short, long integer, date, time, timestamp, logical, autoincrement, and money field types (as well as dBASE character, number, float number, date, and logical field types) all have the Data Dependent property choice.

To open this dialog box, right-click any data area in a table.

Dialog box options

Ranges

Lists the ranges you have specified.

New Range

Choose New Range to specify another range to add to the Ranges list.

Remove

Select in the Ranges list the range to remove. Then choose Remove to delete it from the list.

Range Includes Values

Choose an operator, then type the corresponding numbers in the text boxes:

Operator	Description

=	Equals

>	Greater than

>=	Greater than or equal to

<	Less than

<=	Less than or equal to

Set Properties

Choose Set Properties to specify color and font for displaying this range of values. The display you specify is demonstrated in the Sample area.

Apply Changes

When you have specified the range to appear differently, choose Apply Changes. The range is displayed in the Ranges list.

The range you specify in the Data Dependent Properties dialog box does not have to be numeric. You can set a range of dates or match text strings. For example, in the Customer table, all State field values equal to CA could be displayed in yellow italic text. Or all dates in 1991 could be displayed in blue underlined text.

Note:	The properties of a data-dependent range override those you specify for a column. If, for example, you choose a blue background color for a column, any records that fall within a data-dependent range specification are not affected. These records continue to use the background color for the range, rather than for the column as a whole.


Data Model dialog box

See also

Use the Data Model dialog box to specify which tables to use in a form or report, and to define the relationship between them. You can also use this dialog box to choose and link tables for use in a query.

Tables do not have to be linked together in a data model. You can choose to keep the tables unrelated. For more information on linking tables in a data model, see About links and indexes.

Using the Data Model dialog box

Use this dialog box to choose the tables for the form or report and to define their relationship.

The list on the left shows the files in your working directory that are of the type specified in the Type drop-down list.

The panel on the right shows a diagram of the data model as you build it. You place the tables you want here, then, if desired, link them to each other.

It’s a good idea to link tables as you go, so you have more room in the data model panel.

Note:	In the data model panel, if a table name has an asterisk, that means a field from that table is bound to an object on the document.

For more information on data models and linking, see

Multi-table data models if you plan to create a data model with more than one table.

About links and indexes for information on how to link tables in this dialog box.

Opening the Data Model dialog box

To open this dialog box, do one of the following:

Choose File|New|Form or File|New|Report and click Data Model/Design Layout from the New Form or New Report dialog box.

From a design window, click the Data Model [image] button, or choose Form|Data Model or Report|Data Model.

From any of the Define dialog boxes (Define Field, Define Table, Define Chart, and so on), click the Data Model button.

Dialog box options

File Name

The File Name list on the left contains a list of all the tables in your current working directory. To add a table to the data model, select it and click the Add Table arrow [image] or double-click the file name. To remove a table, click the table, then click the Remove Table arrow  [image]  or press Alt+D. After you place a table in the data model panel, you can right-click it to change the way it is used in the data model.

Drive (Or Alias)

To see tables in other directories, choose an alias such as your private directory or another drive. Or click Browse to open the Select File dialog box.

Type

Select one of the following:

<Tables> to create a data model from tables. This is the default choice.

<Queries> to create a data model containing a saved query.

<Data Models> to load a saved data model into the dialog box. You can then customize the data model.

<SQL> to create a data model from an SQL query file.

Browse

Choose Browse to use the File Browser to look for a file in another directory.

Link

To change the way two tables are linked, select the detail table and choose Link to display the Define Link dialog box. From there, choose Unlink to break the existing link, then specify the link you want.

This option is available only when two or more tables are in the data model panel.

Unlink

To remove an existing link, select the detail table in the data model panel and choose Unlink.

This option is available only when a detail table is selected.

Save DM

Choose this button to save the data model to a file.

This option is available only when one or more tables are in the data model panel.

Message box

The box above the Data Model panel provides link information, file path information, and other helpful messages.


Define Chart dialog box

See also

Use the Define Chart dialog box to define chart values all at one time. You can also define chart values by right-clicking portions of a chart and choosing the properties on the chart's menu.

To open this dialog box from the Form Design or Report Design window:

Right-click the entire chart object and choose Define Chart.

To open this dialog box from the Table window, do one of the following:

Click the Quick Chart [image] button

Choose Tools|Quick Chart

Press Ctrl+F7

Dialog box options

Data Model button

Choose to view or change the data model.

Data Model panel

Use the drop-down list from the table names to select the fields you want to use. This area shows all tables in the data model.

Field Used In

Specify unique values for the following:

X-Axis

Specify the field whose unique values you want to use as X-Axis values. Paradox allows only one X-Axis field.

Grouped By

For 2-D summary charts, you can choose any of the available and valid fields to group the summary data by. The data is also grouped by the x-axis categories.

When you group data in a chart, you create as many series in your chart as there are different values in the field you group on.

This field appears only when your data type is 2-D summary.

Y-Value

Specify the field(s) whose values you want to chart against the y-axis (the different series of the chart). You can only pick one field for Y-Value when your data type is 2-D summary.

Change Order

Click the Up or Down arrows to move a selected field up or down in a list so that the series appear in the order you want.

Remove Field

Click to remove a selected field from a list.

Data type

Specify the type of data to chart:

Tabular

When defining a tabular chart, choose the field values you want for the X-Axis and Y-Values. When you have more than one field in the Y-Value area, you can change their order with the Up and Down arrow buttons. You can remove any selected field with the Remove Field button. A tabular chart takes its data directly from the table, rather than summarizing the data in the table.

1-D Summary

A 1-D Summary chart analyzes one type of data in light of another. When you choose 1-D Summary, and choose a Y-Value, Summary becomes available. Choose the type of summary operation to perform on each Y-Value field you choose.

2-D Summary

A 2-D Summary chart summarizes information by more than one category. When you choose 2-D Summary, the Grouped By area appears where you specify an additional field whose values you want to group the summary data by.

Summary

Click the drop-down arrow in the Summary area to display available summary operators. If you are creating either a 1-D or 2-D summary chart, specify the type of summary operation to perform on each Y-Value field you choose. Summary is unavailable for a tabular chart.


Define Crosstab dialog box

See also

Use the Define Crosstab dialog box to create your crosstab specification.

Open the Define Crosstab dialog box and make all your decisions at once about defining fields, grouping, summarizing, and so on.

Develop the crosstab definition piece by piece from menu selections for the parts of the crosstab object that have their own menus.

To open this dialog box in a design window, right-click a crosstab object and choose Define Crosstab.

To open this dialog box from the Table window, click the Quick Crosstab [image] button, or choose Tools|Quick Crosstab

Dialog box options

Data Model button

Click the Data Model [image] button to view or change the data model. Paradox opens the Data Model dialog box.

Data Model panel

All tables in the data model are shown in this area.

Field Used In

Specify the settings for each field in the crosstab:

Column

Specify which field's values to use as column headings across the top of the crosstab. (For example, Payment Method in the Orders table could define column headings.)

Categories

Specify the field(s) whose values you want to use as row headings (categories) down the left column of the crosstab. (For example, Sale Date in the Orders table could define categories.)

Summaries

Specify the field(s) whose values you want to perform a summary operation on, thus providing the data of the crosstab. (For example, you might perform a summary on Total Invoice in the Orders table.)

Change Order

Click the Up or Down arrows to move the selected field up or down in a list.

Remove Field

Click to remove the selected field from a list.

You cannot choose OK to generate the crosstab if you have not defined its fields: at least one field for either the column headings or row categories and at least one field to summarize.

Summary

Specify the type of summary operation to perform on each summary field you choose. Click the drop-down arrow in the Summary area to display available summary operators. You can use these to perform specific calculations on a specific set of values.


Define Field Object dialog box

See also

Use the Define Field Object dialog box to place a field not available from a field object's menu (such as a summary field, a special field, or a field in a parent table).

To open this dialog box, right-click a field object and choose Define Field.

Dialog box options

Data Model button

Click the Data Model [image] button to open the Data Model dialog box where you can add a table or change table relationships.

Table name

Click the drop-down arrow to see a list of all available fields. Special fields containing data about the table appear in angle brackets (<>) at the bottom of the list.

Summary

Click the drop-down arrow to display available summary operators. You can use these options to perform specific calculations on a specific set of values in a table.

If you are in a report, you can modify the scope of the summary.

Normal: The scope is the current set.

Cumulative: The scope is from the start of the report to the end of the current set.

Unique: The scope ignores duplicate values.

For information on summaries, see About summary fields or To define a summary.

Special Field

Display special fields that relate to the design.

Note:	Special fields that refer to a specific table (such as record number) are in the Table Name drop-down list, not in the Special Field drop-down list.

Calculated

Check this to make the field a calculated field. Then enter a formula in the text box below.

For information on calculations, see About calculated fields or To create a calculated field.

Copy Field

Place fields quickly in your formula for a calculated field. First select a field from the drop-down list of a table in the panel above, then choose Copy Field to paste that field name into the text box at the insertion point.


Define Group dialog box

See also

Use the Define Group dialog box to place optional group bands in a report. Use group bands to break your information into groups of data. Groups can be based on the value of a field, a range of values, or a specified number of records.

To open this dialog box, choose Report|Add Group Band. If a group band already exists on the report, right-click it and choose Define Group.

Dialog box options

Band Label

Displays the table, field, and type of group you choose.

Group By Field Value

Check this box to base your group on the value of a field.

Table	Choose the table that contains the field you want.

Field	Choose the field you want to group records on.

Range Group	You can further define the group by specifying a range of values to be met in the field you are grouping on. See About grouping by a range for details.

Group By Record

Check this box to base your group on a specified number of records.

Number of Records

Type the number of records you want to appear in each group.


Define Index dialog box or Index Info dialog box (dBASE tables)

See also

Use the Define Index and Index dialog box to define or display indexes for dBASE tables.

To open the Define Index dialog box, choose Define in the Create dBASE Table dialog box or the Restructure dBASE Table dialog box.

To open the Index Info dialog box, select an index in the Structure Information dialog box and choose Detail Info.

Dialog box options

Field List

Paradox displays the fields in your table. Select the one you want to appear in the Indexed Field box.

Indexed Field

Displays the field you have selected.

In the Define Index dialog box, you can select the field you want in the Field List and use the Add Field arrow [image] to add it to the Indexed Fields list (or press Alt+A). To remove a selected field, use the Remove Field arrow [image].

The Add Field and Remove Field arrows are unavailable in the Index Info dialog box.

Expression Index/Index Field (button)

Specifies whether the index is an expression index or a field index. By default, the button reads Expression Index and Paradox is set to create a field index.

In the Define Index dialog box, you can choose Expression Index to create an expression index. The Expression Index box becomes available.

If the Index Field box isn't available, you can choose Index Field to create an index on a field.

Options

Indicates how you want Paradox to treat your indexes.

Unique

Tells Paradox that each value in the index must be unique.

Unique is not equivalent to a Paradox key. It does not prevent you from entering duplicate values for fields in the index; rather, it only shows you one record for a given set of values for the index.

Maintained

Tells Paradox to maintain the index automatically. This means every time the table changes, Paradox updates the index.

Descending

When checked, the index sorts the table in descending (Z to A) order.

Expression Index

Specifies the expression to use for an expression index. In the Define Index dialog box, you can type any formula that results in a value. For example, you could create an expression index such as FIRST_NAME + LAST_NAME, where FIRST_NAME and LAST_NAME are field names. For more information, see Creating a dBASE expression index.

Subset Condition (filter) Expression

In the Define Index dialog box, lets you create an expression (sometimes called a filter) that evaluates to true or false. For details, see Creating a subset condition expression.


Define Index dialog box or Index Info dialog box (SQL tables)

See also

Use the Define Index and Index Info dialog boxes to define or display indexes for SQL tables.

To open the Define Index dialog box, do one of the following:

Choose Define Index in the Create Table dialog box or the Restructure Table dialog box.

Select an index in the Create Table dialog box or the Restructure Table dialog box and choose Modify Index.

To open the Index Info dialog box:

Select an index in the Structure Information dialog box and choose Detail Info.

Dialog box options

Field List

Displays the fields in your table. Select the fields you want to appear in the Indexed Field box.

Indexed Field

Displays the field for the index.

In the Define Index dialog box, you can select the field you want in the Field List and use the Add Field arrow [image] to add it to the Indexed Fields list (or press Alt+A). To remove a selected field, use the Remove Field arrow [image].

The Add Field and Remove Field arrows are unavailable in the Index Info dialog box.

Change Order

Changes the order of the fields in the Indexed Fields list.

In the Define Index dialog box, you can select a field and use the Change Order arrows to move it up or down. These arrows become available when two or more fields appear in the Indexed Fields list. Change the order of the fields to change the sort order of the index.

This field is unavailable in the Index Info dialog box.

Index Options

Indicate how you want Paradox to treat your indexes. These options are available only if they are supported by your server.

In the Index Info dialog box, these options are for information only and cannot be changed.

Unique

Tells Paradox that each value in the index must be unique. The index accepts only the first occurrence of any duplicate field values.

Descending

When checked, the index sort the table in descending (Z to A) order. With Descending checked, if you try to link to another table that is sorted in ascending (A to Z) order, you will not be able to perform the link.

Case Sensitive

When Case Sensitive is checked, Paradox pays attention to capitalization in sorting.

Note: Capitalizing a value does not make it unique in a case-insensitive index.


Define Link dialog box (Paradox)

See also

Use the Define Link dialog box to define a link.

Opening the Define Link dialog box

This dialog box automatically opens when you try to create a link between tables that do not have referential integrity.

To open this dialog box after a link has been established, select the detail table in the pair, and click Link.

Dialog box options

Field

Choose the master table field you want from the Field list. Click the Add Field arrow [image] or press Alt+A to place the selected field in the link diagram panel, or double-click the field name. Click the Remove Field arrow [image] or press Alt+D to remove a field from the diagram.

Note:	You cannot create a link on a memo, formatted memo, graphic, OLE, binary, bytes, or logical field type. This is because you cannot create an index on these field types.

Link diagram area

The field you select from the Field list appears below the table name in the link diagram panel of the dialog box. If Paradox finds an index of the detail table that matches the name and type of field you chose, it completes the link for you. If more than one index could be used, you have to choose the one you want. An arrow in the link diagram area shows you the link.

Index

Choose the detail table index you want from the Index list. The Index list shows all predefined indexes for the detail table. The table's key (the table's primary index) is marked with an asterisk (*). If the key is a composite key, all fields of the composite are displayed, linked with a dash and marked with an asterisk (*). The table's secondary indexes are listed after the key.

Click the Add Index arrow [image], double-click the file name, or press Alt+I to place the selected field in the link diagram panel.

Unlink

Choose Unlink to break an existing link.


Define Link dialog box (dBASE)

See also

Use the Define Link dialog box to define a link.

Opening the Define Link dialog box

To open the Define Link dialog box, click the master table and drag to the detail table in the Data Model dialog box.

Dialog box options

Field

Choose the master table field you want from the Field list. Click the Add Field arrow [image], double-click the file name, or press Alt+A to place the selected field in the link diagram panel. Click the Remove Field arrow [image] or press Alt+D to remove a field from the diagram.

Link diagram area

The field you select from the Field list appears below the table name in the link diagram area of the dialog box. If Paradox finds an index of the detail table that matches the name and type of field you chose, it completes the link for you. If more than one index could be used, you have to choose the one you want. An arrow in the link diagram area shows you the link.

Index

Choose the detail table index you want from the Index list. The Index list shows all predefined indexes for the detail table (all tags in the .MDX file).

Click the Add Index arrow [image], double-click the field name, or press Alt+I to place the selected field in the link diagram panel.

You can link dBASE tables only on maintained indexes (not .NDX files).

Master Expression

Check the Master Expression check box to make this edit box available. Then type an expression in this box. You can link dBASE-type tables only on like field types unless you use a master expression in the link.

Unlink

Choose Unlink to break an existing link.


Define List dialog box

See also

Use the Define List dialog box to specify values to display in a drop-down edit, list, or radio button field.

To open this dialog box, right-click a field object in a Form Design or Report Design window and choose Properties. On the General page, choose a Display Type of Drop-Down Edit, List, Radio Buttons, or Check Box, then click Define Values.

Dialog box options

Item/Item List

Type the choices for the field's value in the Item text box. Press Enter after each choice you type. The choice appears in the Item List.

Field Type

The display type appears in the Field Type area. To change the display type, change the field object's properties.

Sort List

Choose Sort to alphabetically sort the values in the Item List.

Modify Item

Select an item from the Item list and choose Modify Item to move the choice back to the Item text box, where you can edit it. After you edit the item, press Enter to return the choice to the Item List.

Remove Item

Select an item in the Item List and choose Remove Item to remove it from the list.

Change Order

Select an item in the Item List, then use the Up and Down arrows to move it up or down in the list.

Note:	When you enter values in a field, make sure the field size is large enough. Paradox trims values that are too large to fit in the field. Also, make sure any values you enter meet the requirements of any validity check for the field.


Define Secondary Index dialog box (Paradox tables)

See also

Use the Define Secondary Index dialog box to define secondary indexes for Paradox tables.

To open this dialog box, choose Secondary Indexes, then choose Define in the Create Paradox Table dialog box or the Restructure Paradox Table dialog box. Or select an index and choose Modify.

For Paradox 3.5 tables, you can't define a secondary index based on more than one field.

Dialog box options

Fields

Paradox displays a list of the fields you can use as a secondary index. Bytes, logical, and BLOB fields are dimmed [image] you cannot create a secondary index on these fields.

Indexed Fields

Select the field you want and use the Add Field arrow to add it to the Indexed Fields list, or press Alt+A. To remove a selected field, use the Remove Field arrow.

If you add more than one field, Paradox creates a composite secondary index and sorts on all included fields, starting at the top of the list. For details, see About composite secondary indexes.

Add Field arrow

Adds the selected field in the Fields list to the Indexed Fields list.

Remove Field arrow

Removes the selected field in the Indexed Fields list and places it in the Fields list.

Clear All

Removes all fields in the Indexed Fields list and places them in the Fields list.

Change Order

To move a field in the Indexed Fields, select the field and use the Change Order arrows to move it up or down. These arrows become available when two or more fields are in the Indexed Fields. Change the order of the fields to change the sort order of the index.

Index Options

Choose how you want Paradox to treat your secondary indexes.

Unique

Specifies whether more than one record can have the same value in the secondary index fields. If Unique is checked and Paradox encounters a duplicate value, the index isn't applied and a warning message appears. You can edit the field data and try indexing again after the duplicate value has been removed.

Descending

Specifies whether the secondary index is ascending or descending.

Case Sensitive

Specifies whether to pay attention to capitalization in sorting.

When checked, Case Sensitive sorts the following sets of characters in this order:

Abcd, aBcd, aaaa

When Case Sensitive is unchecked, the following sets of characters are sorted in this order:

aaaa, Abcd, aBcd

Values such as Abcd and aBcd are considered duplicates in a case-insensitive index. They appear in the order in which they were entered in the table.

Paradox automatically names single-field, case-sensitive indexes with the field's name. You must name a case-insensitive index when you save it. This enables you to create two indexes on the same field, one case-sensitive and one case-insensitive.

Maintained

Specifies whether to maintain the secondary index automatically.

Maintained indexes are updated by Paradox every time the table changes.

This speeds up certain operations like queries. Also, you can link Paradox tables in form and report data models only on maintained indexes.

Maintained indexes are available for keyed tables only.

Non-maintained indexes are updated only when the index is used; for example, when you link tables or run a query.

The operation that uses the secondary index takes slightly longer using a non-maintained index, because Paradox must first update the index to recognize values that you have added, deleted, or changed, and then sort the table according to the new index. Also, if a non-maintained index becomes out of date, you cannot use it to change the viewing order of records.

Non-maintained indexes are most useful on tables that are read-only.


Define Table/Multi-Record Object dialog box

See also

Use the Define Table/Multi-Record Object dialog box to limit or reorder the display of a table frame or multi-record object to show only the fields you want. By default, Paradox displays all fields of a table when you first define a table frame.

To open this dialog box, right-click the table frame or and choose Define Table, or right-click the multi-record object and choose Define Record.

Dialog box options

Data Model

Click the Data Model [image] button to open the Data Model dialog box where you can add or remove tables bound to the document.

If you choose a table, its name appears next to the Data Model button, and the words <No fields included> appear in the Included Fields list. If you choose OK at this point, Paradox defines the table frame as the table you choose, but does not define any field objects with the chosen table's fields. You can right-click and define each field object individually.

Table Name

Click the table's drop-down arrow to see a list of all available fields. The fields you select in this list are added to the Included Fields list.

Included Fields

Paradox lists the fields to be displayed on the table frame or multi-record object in the order they will appear.

To remove a field from the Included Fields list, choose it and click the Remove Field button.

To add a field to the Included Fields list, select it from the list of fields under the table name.

To select multiple fields, use Ctrl+Click.

Change Order

Use the Change Order arrows to move your selected field up or down in the Included Fields list. This determines the order of the fields in the table frame or multi-record object.

Remove Field

Select a field name and click to remove the field(s) from the Included Fields list.

Size To Fit

Check Size To Fit to make the table frame grow or shrink to fit all fields in the table you defined. If you leave this unchecked, the table frame retains its current size. Size To Fit is dimmed for multi-record objects.

Replace Layout

Check Replace Layout to overwrite fields in the table frame with the fields listed in the Define Table/Multi-record Object dialog box.

If Replace Layout is unchecked, the fields you add to the table frame are appended, leaving existing fields intact (even if existing fields are undefined). Some existing fields might become undefined because they are incompatible with the new table or multi-record object definition.

If Replace Layout is unchecked, the new definition may be incompatible with some fields already in the table frame. In this case, the previously existing fields become undefined.


Delete dialog box

See also

Use the Delete dialog box to delete a file from disk. You can delete tables, forms, reports, queries, scripts, libraries, SQL files, data models, text files and style sheets from within Paradox.

To open this dialog box, choose Tools|Utilities|Delete.

Warning:	Be careful when deleting objects! You cannot undo a deletion. Make sure the table is not used in any associated objects like forms, reports, or queries. Associated documents are not deleted when you delete the table; you must delete them yourself.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In drop-down list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to delete or select one from the list box below the Look In drop-down list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you want to delete.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.

When you choose Delete, Paradox displays a message asking you to confirm the deletion of each object. Choose Yes to delete the object, or No to cancel the operation.


Design Layout dialog box (single table and single-value relationship)

See also

Use the Design Layout dialog box to format the basic layout of a design document whose data model contains a single table or several tables with single-value relationships.

The right panel of the dialog box shows what the layout will look like when you open it in a design window. The left panel shows either the fields or the layout options:

When you choose Show Layout, the left panel displays options for controlling field layout, the design's style, a multi-record style (if necessary), and whether to display field labels.

When you choose Show Fields, the left panel displays options for choosing which fields from the table(s) you want to include in the design.

To open this dialog box, create a new form or report using the Data Model/Design Layout button in the New Form or New Report dialog box, or choose Design|Design Layout from a design window.

Dialog box options

Show Layout

Choose this button to display options you can use to change the layout of the design document.

Show Fields

Choose this button to change the fields used in the design document and the order in which they are presented. See Show Fields for more information.

Field Layout

Select how to display fields in single-record and multi-record styles:

By Columns

Displays objects in columns, down the page. This is the default layout.

By Rows

Displays objects in rows, across the page.

Style

Use the style options to select a layout.

Single-Record

Displays one record of the table at a time, in a free-form layout. Single Record is the default style for a form.

If you are designing a report with a table that contains very long memo fields, you might want a Single-Record style. Records in table frame and multi-record objects cannot break over pages of a report if the Breakable property on the Run Time page is not checked for the table frame or multi-record object. The Breakable property is set as the default.

Tabular

Displays rows and columns just as if you were working with the table itself.

Multi-Record

Displays several records of the table at a time. When you specify a multi-record layout, Paradox displays a multi-record object in the Design Layout dialog box.

In a multi-record object, you view the fields of a record in the first record region, then specify whether you want repeated regions (each displaying an additional record) across and down the page. Use the Multi-Record options (Horizontal, Vertical, Both) to detail how you want the records repeated.

If you want to change the number of repeated regions, right-click the multi-record object in the design window, choose Properties and click the Record Layout tab.

For reports, the dialog box doesn't show how many regions will be repeated downward. By default, Paradox adds as many regions as necessary to show all of the table data whenever you print or preview the report.

Blank

Removes all fields from the design. The fields of the table are still available for manual placement (use the Field tool in the design window), but they are not automatically placed in any layout style.

Creating a design document by choosing a data model with a blank layout is different from creating a blank design document. When you choose a data model, then choose a blank layout, the design document you create is associated with the data model, and its fields are available for placement. A truly blank design document is not associated with any table.

You can return to the Data Model dialog box and add a data model to the blank design whenever you want by clicking the Data Model Toolbar button in the design window.

Multi-Record Layout

If your layout is multi-record, specify whether you want the records to be arranged horizontally, vertically, or both.

Horizontal repeats the records across the page. (This is the default multi-record layout.)

Vertical repeats the records down the page.

Both repeats the records both across and down the page. (This is the default multi-record layout for a form.)

Label Fields

Gives you the option of using labeled fields or unlabeled fields.

This option is unavailable in a tabular design, because table frames automatically include field labels as column headings.

Style Sheet

Choose a style sheet to control the initial appearance of objects you put on the design document. See About style sheets for information.

Preview of the design document

A preview of the document you are designing appears in the dialog box. As you make changes to the design, the preview changes.


Design Layout dialog box (multi-value relationship)

See also

Use the Design Layout dialog box to format the basic layout of a design document whose data model contains a multi-value relationship.

When you design a multi-table document, the options in the Design Layout dialog box are different than when you design a single-table document:

The Object Layout options affect fields from both the master and detail tables.

The Show Detail Tables button is available to set detail table style options and multi-record layout options for the detail table.

By default, records from the master table are displayed one at a time, and appear in the single-record style. Records from the detail table are displayed in a table frame.

To open this dialog box, create a new form or report using the Data Model/Design Layout button in the New Form or New Report dialog box, or choose Design|Design Layout from a design window.

Dialog box options

Show Layout

Choose this button to display options that change the layout of the design document.

Show Detail Tables

Choose this button to display options you can use to change the layout of the detail tables and of multi-record objects. See Show Detail Tables for more information.

Show Fields

Choose this button to display options you can use to change the fields used in the layout of the design document. See Show Fields for more information.

Object Layout

Select how you want objects in single-record and multi-record styles displayed:

By Columns

Displays objects in columns, down the page. This is the default layout.

By Rows

Displays objects in rows, across the page.

Master Table Style

Use these options to select a layout for the master table.

Single-Record

Displays one record of the table at a time, in a free-form layout. Single Record is the default style for a form (and for a report if its data model contains a multi-value relationship.)

If you are designing a report with a table that contains very long memo fields, you might want a Single-Record style. Records in table frame and multi-record objects cannot break over pages of a report if the Breakable property on the Run Time page is not checked for the table frame or multi-record object. The Breakable property is set as the default.

Tabular

Displays rows and columns just as if you were working with the table itself. You cannot choose this option when Nested is checked.

This option is dimmed for reports with a I [image] M data model.

Multi-Record

Displays several records of the table at a time. When you specify a multi-record layout, Paradox displays a multi-record object in the Design Layout dialog box.

In a multi-record object, you view the fields of a record in the first record region, then specify whether you want repeated regions (each displaying an additional record) across and down the page. Use the Multi-Record options (Horizontal, Vertical, Both) to detail how you want the records repeated.

If you want to change the number of repeated regions, right-click the multi-record object in the design window, choose Properties and click the Record Layout tab.

If you are formatting a report with a 1 [image] M [image] M (or more) data model, or you choose Multi-Record, make sure detail tables have very few records per set. If this occurs, return to the data model and reverse the direction of the links (converting 1 [image] M to M [image] 1). This lets you use group bands to break up the data into sets, rather than detail tables, and you can avoid tables and multi-record objects. Or, you can check the run time Breakable property on the record object of a multi-record object.  See Data models for reports with groups for more information.

Blank

Removes all fields from the design. The fields of the table are still available for manual placement (use the Field tool in the design window), but they are not automatically placed in any layout style.

Creating a design document by choosing a data model with a blank layout is different from creating a blank design document. When you choose a data model, then choose a blank layout, the design document you create is associated with the data model, and its fields are available for placement. A truly blank design document is not associated with any table.

You can return to the Data Model dialog box and add a data model to the blank design whenever you want by clicking the Data Model Toolbar button in the design window.

Fields Before Tables

When you check Fields Before Tables, all fields of the table's current record appear before any objects representing detail tables. Otherwise, detail tables appear first.

Nested

When you are creating a form and you choose Multi-Record for the Master Table Style, or if your data model has a 1 [image] M [image] M relationship, Paradox makes the Nested check box available. If you choose Nested, Paradox displays the master records in a multi-record object and places the detail record object inside the master multi-record object. The details are "nested" within the master.

Label Fields

Gives you the option of using labeled fields or unlabeled fields. This option is unavailable in a tabular design.

Style Sheet

Choose a style sheet to control the initial appearance of objects you put on the design document. See About style sheets for information.

Preview of the design document

A preview of the document you are designing appears in the dialog box. As you make changes to the design, the preview changes.


Show Fields (Design Layout dialog box)

See also

Choose the Show Fields button from the Design Layout dialog box to specify which fields to use in the layout of a design document.

Dialog box options

Table

Choose a table from this drop-down list to see the fields being used from that table or any table in a single-value relationship with that table.

Reset Fields

Click this button to add all fields from the table to the Selected Fields list. This option is only available if you have removed fields.

Selected Fields

The fields from the table you selected are shown here. When you open a new form, you always start with all fields. When you open an existing design document, only the fields previously included in its design appear in the Selected Fields list.

Paradox includes all fields from this list in the design. Fields appear in the design in the order they are shown in this list

Order

To change the order of the fields in the list, choose the field you want to move and use the Up and Down arrows.

Remove Field

To remove a field displayed in the Selected Fields list, choose it and click Remove Field.

All changes you make in the Define layout can be modified in the design window. You can replace removed fields there using the Field tool [image]. The Define Layout dialog box gives you the opportunity to make choices before opening the design window.


Show Detail Tables (Design Layout dialog box)

See also

Choose the Show Detail Tables button from the Design Layout dialog box to specify the layout of the detail tables in a design document.

Dialog box options

Detail Table Style

Specify the type of object used to represent tables that have nothing nested in them:

Table

Specify a table frame object.

Record

Specify a multi-record object.

Multi-Record Layout

If your layout contains multi-record objects, specify whether to arrange the records horizontally, vertically, or both. The default for forms is Both. Your layout contains multi-record objects if

Detail Table Style is Record

You have a Nested design

Master Table Style is Multi-Record


Colors page (Developer Preferences dialog box)

See also

Use the Colors page of the Developer Preferences dialog box to specify how you want the different elements of your code to appear in an Editor window. You can specify both colors and text attributes. Preferences you set apply in the Editor, Library, Script and SQL Editor windows.

Dialog box options

Elements

Select a code element whose color or text attributes you want to specify.

Color

To specify colors, use the color grid to set the foreground (FG) and background (BG) colors for the element.

To select colors using the mouse,

1.	Click a color to select it as the foreground color. (FG appears in the colored box.)

2.	Right-click a color to select it as the background color. (BG appears in the colored box.)

To select colors using the keyboard,

1.	Use the arrow keys to select a color.

2.	Press F to set it as the foreground color, or B to set it as the background color.

Use Default

If a Use Default check box is checked, the Editor will use your Windows system colors for whatever is checked (the foreground, the background, or both) to display a code element. Unchecking either option restores the color you selected previously or, if no color has been previously selected, sets the code element to the Windows system color.

Note:	To change the Windows system colors, use Control Panel (under Settings on the Windows Start menu).

Text Attributes

If you want a code element to appear in bold, italic, or underlined, select it in the Elements list, and then check the attribute(s) you want.


Display page (Developer Preferences dialog box)

See also

Use the Display page of the Developer Preferences dialog box to set various Editor display preferences. Preferences you set apply in the Editor, Library, Script and SQL Editor windows.

Dialog box options

Keystroke Mapping

Use this drop-down list to select from three sets of keystrokes:

The Editor's default [image] uses key bindings that match CUA mappings (with some WordStar additions). This is closest to the keystroke mappings in the Paradox 5.0 Editor.

BRIEF [image] uses key bindings that match most of the standard BRIEF keystrokes.

Epsilon [image] uses key bindings that match a large part of the Epsilon editor.

Note:	When you are in an Editor window, you can press Shift+F1 to see the keystrokes for the current keymap selection.

Options

You can also set the following preferences by checking the check box beside the option:

Prompt To Save

The Editor will prompt you to save changes when you close the Editor window or run a form. (The contents of an Editor window are saved to the form. To save to disk all the changes made in the Editor windows, save the form.)

BRIEF Cursor Shapes

Uses an underline instead of a vertical cursor in insert mode.

Show Sidebar

Shows the sidebar with breakpoint symbols.

Custom Size

Opens the next Editor window to the size of the active Editor window (if one is open), or the size of the last Editor window open.

Hints On Status Bar

Shows Toolbar help messages on the status bar. When unchecked, displays only Editor messages.

Font

Use the Name and Size drop-down lists in the Font panel to choose a font name and size. The Editor uses only monospaced screen fonts, such as Courier. A sample of what you choose appears in the Sample box.


Editor page (Developer Preferences dialog box)

See also

Use the Editor page of the Developer Preferences dialog box to customize the behavior of the Editor. Preferences you set apply in the Editor, Library, Script and SQL Editor windows.

Option	When selected

Option	When selected

Auto Indent	Indents the next line to the indent of the current line, when you press Enter.

Backspace Outdents	Aligns the insertion point to the previous indent level (outdents it) when you press Backspace, if the insertion point is on the first character of a line.

Insert Mode	Inserts text at the insertion point without overwriting existing text. If Insert Mode is not checked, text is overwritten. (Use the Ins key to toggle Insert Mode in the Editor without changing this setting.)

Use Tab Character	Inserts a true tab character (ASCII 9). If not checked, inserts spaces instead. If Smart Tab is enabled, this option is off.

Cursor Through Tabs	Enables the arrow keys to move uniformly (column by column) through tabs. If this option is not checked, the insertion point jumps several columns when you move it over a tab.

Smart Tab	Indents to the next character of the previous line. Especially useful when you want to create tabular-looking code.

Group Undo	Undoes as a group your last editing  command (for example, a typed character or a overstrike) and all preceding commands of the same type, when you choose Edit|Undo. A "group" starts the last time Enter was pressed. If Group Undo is not checked, Edit|Undo undoes a single command or keystroke.

Undo After Save	Enables you to perform an Edit|Undo command after a file has been saved.

Persistent Blocks	Keeps marked blocks selected even when the insertion point is moved, until a new block is selected.

Overwrite Blocks	Replaces a marked block of text with whatever is typed next. If Persistent Blocks is also checked, text you enter is added to the currently selected block.

Cursor Beyond EOF	Lets you move the insertion point beyond the end-of-file character.

Cursor Beyond EOL	Lets you move the insertion point past the last column of the line.

Use Default

Choose this button to set the above options to the default of the current keystroke mapping [image] default, BRIEF, or Epsilon. (Select the keyboard mapping you want on the Display page of the Developer Preferences dialog box.)

Tab Size

Use Tab Size to specify the number of columns you want between tab stops.

Block Indent

Use Block Indent to specify how many columns to indent and outdent a block.

Undo Limit

Use Undo Limit to specify the number of undo actions stored before undo information is discarded.


Explorer page (Developer Preferences dialog box)

See also

Use this page of the Developer Preferences dialog box to set your preferences for the Object Explorer. (In a Form Design window, the Object Explorer lists methods, events, properties, and optionally, shows the object tree. In Library and Script windows, it lists methods and events. In a Report Design window, it lists bands and design objects and, optionally, shows the object tree.) Check the options you want.

Dialog box options

Keep Pinned

The Object Explorer will open automatically when you open a form, library, or script in a design window and will stay open until you close it or leave the design window.

Stack Explorer Tabs

Stacks the tabbed pages of the Object Explorer one above the other when the window is narrowed, with all tabs still visible.

Display OCX Parameters

Displays the parameters of OCX methods and events. If not checked, parameters are not displayed.

Method/Event Sorting

Choose how you want methods and events sorted in the Object Explorer:

Sort without grouping (A-Z)

Sort all custom methods, built-in event methods, and OCXs mixed in together, in alphabetic order.

Sort in 3 groups: code, OCX, other

Sort in three groups: methods with custom code on top, followed by OCXs, followed by built-in event methods.

Sort in 2 groups: code, then OCX/other

Sort in two groups: methods with custom code on top, followed by built-in event methods and OCXs mixed together.

Colors

In the Object Explorer, OCX properties, normal properties, and read-only properties are color coded so you can quickly distinguish between them. You can change the default colors. Click a Change button to change a default color, then select a color and choose OK.

To return to the Object Explorer default colors, click the Default button.


General page (Developer Preferences dialog box)

See also

You can control many elements of the integrated development environment (the Editor, the Debugger, the Object Explorer, the ObjectPAL Quick Lookup, and design windows) by setting your preferences in the Developer Preferences dialog box. Check the options you want.

Dialog box options

ObjectPAL Level

The ObjectPAL Quick Lookup and the Object Explorer can be set to display all appropriate elements of the ObjectPAL language or only a subset of the elements (the default setting). This setting is just for display purposes and does not affect the writing or functioning of code. You can temporarily override the setting you choose here by checking or unchecking the Show All box in the ObjectPAL Quick Lookup or toggling the View|View All command in the Object Explorer.

Beginner

The ObjectPAL Quick Lookup and the Object Explorer show only a subset of the ObjectPAL language [image] just as much as a beginner might need. Even if you have this option selected, you can still use any ObjectPAL language element in code.

Advanced

The ObjectPAL Quick Lookup and the Object Explorer show all the elements in the ObjectPAL language.

Debug Environment

The Debug environment consists of the Debugger window and the Watches, Breakpoints, Tracer, and Call Stack windows.

Open In Design

Keeps the Debugger environment open in a design window.

Open In Run

Opens the Debugger whenever you run a form.

If you do not check either of these options, the debug environment opens whenever a breakpoint is hit, and closes when you return to the design window.

Note:	Choose Edit|Save Debug State in the Debugger to save the current size, location, and state (for example, minimized), of each of these windows.

Debugger Settings

Enable Ctrl+Break

Halts execution of a form and returns you to the design window when you press Ctrl+Break.

If you also turn on Program|Compile With Debug in the Editor, you can suspend execution and run the Debugger by pressing Ctrl+Break, just as if a breakpoint had been encountered.

When this option is not checked here, Ctrl+Break has no effect.

Enable debug( ) Statement

Lets you use the debug( ) statement to define your own breakpoints in methods and procedures. In addition to checking this option, you must check the Program|Compile With Debug command in the Editor for the debug( ) statement to work.

When this option is not checked here, or if Program|Compile With Debug is not checked, debug( ) statements are ignored.

Note: Checking this option has two additional advantages: 1) Paradox provides more detailed error information, even if you never use a debug( ) statement; and 2) debug( ) statements are saved with your source code so you do not have to keep resetting them as you would a breakpoint.

Show Developer Menu

Extends your choice of menu options in the Form Design window. This includes the Program menu and extra commands on the View and Tools menus [image] commands that otherwise appear only in the Editor or Debugger menus.


Directory Browser

See also

Use the Directory Browser to select a directory.

Dialog box options

Directories and Drive (Or Alias)

Select a drive or alias from the Drive (Or Alias) drop-down list, then select a directory from the Directories list box.


Editor Print Layout dialog box

See also

Use the Editor Print Layout dialog box to set the margins of your printed page and choose whether to print line numbers and page headers.

To open this dialog box, choose File|Print from the Editor or the Tracer.

Dialog box options

Margins (in characters)

Specify the distance (in characters) for your page margins. Click the Default button to reset the margins back to the default margins.

Show Line Numbers

Check this option to include line numbers in your report.

Show Page Header

Check this option to include a page number header for your report.


Empty dialog box

See also

Use the Empty dialog box to remove all records from a table.

When you choose Empty, Paradox displays a message asking you to confirm the emptying operation for each table. Choose Yes to remove all records from the table or No to cancel the operation.

To open this dialog box, choose Tools|Utilities|Empty.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to empty or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file based on the type shown in the Files Of Type drop-down list. You can select more than one table. See To select from lists for more information.

Files Of Type

Displays the types of files you can use for the emptying operation you are performing.

Alias

If the directory has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Enter Password(s) dialog box

See also

Use the Enter Password(s) dialog box to supply a password when Paradox requests it, or to specify passwords to use for your Paradox session:

The Enter Password(s) dialog box appears when you attempt to load or run a query, form, or report based on a Paradox table that has been password protected. You must enter the password to open the table or run the query.

Open the Enter Password(s) dialog box to specify whether to use or stop using the passwords for your Paradox session. To open the Enter Password(s) dialog box, choose Tools|Utilities|Passwords. The Enter Password(s) dialog box is helpful for users working with protected tables or tables on a network.

The password you enter is added to Paradox's password list. The password list contains all passwords that have been entered in the current Paradox session. Once you enter a specific password, you can gain access to any table that recognizes that password until you exit Paradox.

You define passwords for Paradox tables in the Create Table dialog box or the Restructure Table dialog box.

This dialog box is used only for Paradox tables.

Dialog box options

Password

Type the password in the Password text box. Asterisks (*) represent the characters you type.

Add

Adds the password you typed in Password to Paradox's memory. When you choose Add, the dialog box remains open so you can enter additional passwords for tables that you intend to open later in the session. Press Add again to add another password.

Remove

Deletes the password from Paradox's memory. By default, if you have closed a password-protected table, you can open it again before exiting Paradox, without supplying the password again. Selecting Remove, however, requires you to give the password the next time you open the table.

Use Remove when you want to open a new table but have exceeded the maximum number of passwords per session (if this occurs, you will be notified with an error message).

Remove All

Removes all passwords from Paradox's memory. This means any table you have opened using a password will again be protected.

Note:	Paradox releases all passwords when you exit the program. Through the Enter Password(s) dialog box, you can release a password without exiting Paradox.


Export <table> As dialog box

See also

This dialog box specifies the type of file to create or modify with the export operation.

To open this dialog box, choose Open in the Export Table dialog box.

Dialog box options

Export Format

The type of file to create or modify. For a list of available formats, see About exporting data.


Export Data dialog box

See also

The Export Data dialog box lets you specify the name, type, and other information about the table you are exporting and the file you are creating with the export.

To open this dialog box, choose File|Export, then specify a source file in the Export Table dialog box and specify a destination file in the Export <table> As dialog box.

Note:	To display Help for each page (tab) of this dialog box, click a tab, then press F1.

Dialog box options

From

The table you are exporting; the source file. You can type the path and name of the file, or choose it in the Select File dialog box. To display the Select File dialog box, click the button beside the text box:

From Type

The type of file you are exporting.

To

The name of the file you are creating by exporting the source file. You can type the path and name of the file, or choose it in the Select File dialog box. To display the Select File dialog box, click the button beside the text box:

To Type

The type of file you are creating by exporting the source file.

To Table

Specifications for the new table you are creating. For details, see To Table page (Export Data dialog box).

To Text

Specifications for the text file you are exporting to. For details, see To Text page (Export Data dialog box).

To Fields

Specifications for the fixed-length text file you are exporting. For details, see To Fields page (Export Data dialog box).

To Spreadsheet

Specifications for the spreadsheet file you are exporting. For details, see To Spreadsheet page (Export Data dialog box).

Export

Creates a file of the type specified in the To Type drop-down list, containing the data from the file specified in the From text box.


To Fields page (Export Data dialog box)

See also

This page of the Export Data dialog box lets you supply field specifications for fixed length text files. Paradox uses these specifications to create the exported text file records and break them into fields of the appropriate name, type, and length.

By default, Paradox assumes the field types and lengths are the same as in the source table.

Dialog box options

Field Name

Indicates the name of each field, from left to right in the table.

Type

Indicates the type of each field.

Start

The character column the field starts with, numbered from left to right, starting with 1. For example, if the first field has a length of 20 and starts at 1, the second field starts at 21.

Length

The number of characters the field always contains in the text file.

Load Spec

Lets you load specifications saved earlier. When you choose Load Spec, the Select File dialog box appears. You can browse to choose the specification table you want.

Save Spec

Lets you save the current specifications. The Save Export Specification As dialog box appears. You can choose an existing specification table to overwrite, or create a new one.


To Spreadsheet page (Export Data dialog box)

See also

This page of the Export Data dialog box lets you indicate whether to write field names as the first row of data.

Dialog box options

Use First Row Of Data As Field Names

When checked, this indicates that the first row of the spreadsheet should be written with field names (column labels), not data.


To Table page (Export Data dialog box)

See also

This dialog box page provides specifications about the table you are creating with the export operation.

Dialog box options

Table Options

These settings let you create a new table or modify an existing table. If the table specified in the To text box of the Export Data dialog box already exists, Create New Table is not available in the To Table page.

Create New Table

Lets you create a new table with the specified name.

Overwrite Existing Table

Replaces the specified table with a new table.

Append To Existing Table

Adds the exported data to the data already entered in the specified table.

Auxiliary Table Options

These settings let you create temporary tables for troubleshooting purposes.

Write Transfer Failures To Problems.db

Creates a table called Problems.db if errors occur while exporting.

Write Duplicate Key Records To Keyviol.db

Creates a table called Keyviol.db if records with duplicate key field values are found while exporting.

Display Table On Completion

When checked, this setting tells Paradox to open the new or modified table when the export operation is finished. Otherwise, it remains closed.

Display Auxiliary Tables on Completion

When checked, this setting tells Paradox to open the Problems and Keyviol tables when the export operation is finished (if either was created). Otherwise, they remain closed.

Note:	For more information about the Problems and Keyviol tables, see Temporary tables created when restructuring.


To Text page (Export Data dialog box)

See also

This page of the Export Data dialog box lets you specify delimiters and other information about the text file you are creating with the export operation. If you're exporting a fixed-length file, the only option available is Character Set.

Dialog box options

Fields Separated By

Indicates the character used to separate fields in each record of the text file:

Commas

Semi-Colons

Tabs

Other [image] enter the desired character in the text box

Fields Delimited By

Indicates the character, if any, used to delimit (enclose) fields in each record of the text file:

Quotes

Nothing

Other [image] enter the desired character in the text box

Delimited Fields

Indicates the type of field(s) enclosed by the delimiter character:

Text Fields Only [image] only surrounds text fields with the delimiter character

All Fields [image] puts delimiter characters around all fields

Field Names

When Use First Row of Data As Field Names is checked, Paradox writes field names out as the first row of data. Otherwise, no field names are written and data begins on the first row.

Character Set

Indicates the type of character mapping to use, the machine's original mapping or that supported by Windows:

OEM

ANSI

Note:	Files created in DOS-based applications, like Edit, typically use the OEM character set. Files created in Windows applications, like WordPad, typically use the ANSI character set.


Export Table dialog box

See also

Use the Export Table dialog box to tell Paradox the file you want to export.

To open this dialog box, choose File|Export.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In drop-down list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to export or select one from the list box below the Look In drop-down list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can export (Paradox and dBASE).

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Field Filter dialog box

See also

Use the Field Filter dialog box when you want to see and edit only those records that meet certain conditions.

For information on filters, see About filters.

To open this dialog box, right-click a field in a table or a field object in a form or report (Report Design window only, for reports) and choose Filter from its menu.

Dialog box options

Filter For <field name>

Type the conditions for the records you want to see.


File Browser

See also

Use the File Browser to select files in other directories.

Dialog box options

Directories and Drive (Or Alias)

Select a drive or alias from the Drive (Or Alias) drop-down list, then select a directory from the Directories list box. The list box to the right of these fields displays the files in the directory you select.

File Name

The text box displays the file extension of the type of file you are browsing for. Choose a file from the list box below the text box.

File Types

The type of file you are browsing for. You can choose a file type if there is more than one displayed in the list.


Document has changed. Save it?

You tried to close the active document or query before saving changes you made to the file. Choose Yes to save the file. Choose No to close the file without saving your changes. Choose Cancel to continue working with the file.


File Import dialog box

See also

Use the File Import dialog box to tell Paradox the file you want to import.

To open this dialog box, choose File|Import, then choose Import in the Import dialog box.

Note:	The Import dialog box appears only if you have the Text Import Expert installed. Otherwise, the File Import dialog box appears as soon as you choose File|Import.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to import or select one from the list box below the Look In drop-down list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can import.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Newly created document. Save it?

You tried to close the active document or query before saving the file. Choose Yes to save the file. Choose No to close the file without saving it. Choose Cancel to continue working with the file.


Filter Tables dialog box

See also

Use the Filter Tables dialog box to see and edit only those records that meet certain conditions. You can also use this dialog box to specify a secondary index to view records in a certain order.

To open this dialog box, choose Table|Filter, Form|Filter, or Report|Filter. For information on filters, see About filters.

Dialog box options

Table List

If you are filtering a table, this list shows that table. If you are filtering a form or report, this list shows master tables in the data model. It also shows detail tables for multi-value relationships in the data model.

Order By

Check this check box to order records according to the selected index. The table's primary index is preceded by an asterisk (*). Double-click an index to change which fields are shown and the arrangement of these fields in the Filters On Fields panel of this dialog box.

Note:	This option is not available for Reports; however, you can sort and group records in reports. See Reports for more information on working with reports.

dBASE Index File

If the table is a dBASE table, type the name of the dBASE index to use in ordering the records. This will update the list of indexes shown above this text box.

Range

Choose to specify a Range of values using the Set Range for Index dialog box.

Note:	Range is available when the Order By check box is checked and an index is selected. (For a dBASE table, the index must be a Unique index.)

Filters On Fields

Lists the fields in your table. The following types of fields do not appear:

Linking fields in the detail tables in multi-value relationships

BLOB fields

Type the conditions for the records you want to see. For a given record to appear, the conditions specified in each field must all be true for that record.

More sophisticated conditions can be specified using special keywords and symbols. You can use many of the same keywords and symbols to specify filters that you can use in queries to specify selection conditions. See Filters and queries compared for a list of the differences between rules for query selection conditions and for filter conditions.


Find dialog box (Editor)

See also

Use the Find dialog box to find strings of text in your code.

To open this dialog box, choose Search|Find, or press Ctrl+Z.

Dialog box options

Search For

Type the text you want to look for.

Case Sensitive

Check this to make the search case-sensitive.

Backwards

Check this if you want to search backward from the insertion point instead of forward.

Whole Words Only

Check this if you don't want to see partial matches.

Advanced Pattern Match

Check this to use Paradox's extended wildcards.

Global Search

Check this to search all the form's code for the specified value.

Find

Choose Find to begin searching for the specified value. If found, the matching string is highlighted. If you are using the default keymap, you can then press

Ctrl+A to find the next occurrence of the string

Ctrl+R to replace the selected text with the replacement value previously specified in the Find And Replace dialog box. If there is not a replacement value, the selected text is deleted.

Ctrl+L to replace all occurrences of the string with the replacement value previously specified in the Find And Replace dialog box.


Find dialog box (SQL Editor)

See also

Use the Find dialog box to find strings of text in your SQL statement.

To open this dialog box, choose Search|Find, or press Ctrl+Z.

Dialog box options

Search For

Type the text you want to look for.

Case Sensitive

Check this to search for the text exactly as you typed it, including capitalization.

Backwards

Check this if you want to search backward from the insertion point instead of forward.

Whole Words Only

Check this if you don't want to see partial matches.

Advanced Pattern Match

Check this to use Paradox's extended wildcards.

Find

Choose Find to begin searching for the specified value. If found, the matching string is highlighted. You can then press

Ctrl+A to find the next occurrence of the string

Ctrl+R to replace the selected text with the replacement value specified in the Find and Replace dialog box. If there is not a replacement value, the selected text is deleted.

Ctrl+L to replace all occurrences of the string with the replacement value specified in the Find and Replace dialog box.


Find And Replace dialog box

See also

Use the Find And Replace dialog box to search for and replace text (called a string) in a memo field or formatted memo field, or in a text object in a design window.

To open this dialog box, select the block of text to search, then choose Edit|Find and Replace.

Dialog box options

Search For

Type the string to look for.

Replace With

Enter the replacement string (in ordinary searches) or the translation string (in Advanced Pattern Match searches).

Case-sensitive

Check this to search for the text exactly as you typed it, including capitalization.

Advanced Pattern Match

Check this to use an extended list of wildcards in the search.

Find

Choose Find to begin the search. Paradox finds the first matching value, highlights it, and displays the message "Match found" in the status bar. If the value does not exist, Paradox displays the message "No match found" in the status bar.

Replace

Choose Replace to change the string to the value you entered in Replace With. Paradox replaces the value, then moves to the next occurrence of the Search For value.

If you do not want to replace the string, choose Find again. Paradox moves on to the next occurrence of the Search For value.

Replace All

Choose Replace All to replace all occurrences of the Search For value.


Find And Replace dialog box (Editor)

See also

Use the Find And Replace dialog box to change strings of text in your code.

Note:	If you have used the Find And Replace dialog box in the current session, you can press Ctrl+R while in the Editor to perform a find and replace based on the current values and settings in the Find and Replace dialog box. (Ctrl+R works only if you're using the default keymap.)

To open this dialog box, choose Search|Replace.

Dialog box options

Search For

Type the text you want Paradox to look for.

Replace With

Type the replacement text.

Case Sensitive

Check this to search for the text exactly as you typed it, including capitalization.

Backwards

Check this if you want to search backward from the insertion point instead of forward.

Whole Words Only

Check this if you don't want to see partial matches.

Advanced Pattern Match

Check this to use Paradox's extended wildcards..

Global Search

Check this to search all methods and procedures for the specified value.

Find and Replace All

After specifying the string to search for and the replacement text, choose Find to begin the search, or Replace All to replace all occurrences of the string with the new text. If you choose Find, the Editor moves to the matching string and selects it. You can then press (if you're using the default keystroke mapping)

Ctrl+A to find the next occurrence of the string.

Ctrl+R to replace the selected text with the replacement value specified in the Find and Replace dialog box. If there is not a replacement value, the selected text is deleted.

Ctrl+L to replace all occurrences of the string with the replacement value specified in the Find and Replace dialog box.


Find And Replace dialog box (SQL Editor)

See also

Use the Find And Replace dialog box to find and replace text strings in your SQL statement.

Note:	If you have used the Find And Replace dialog box in the current session, you can press Ctrl+R while in the Editor to perform a find and replace based on the current values and settings in the Find And Replace dialog box.

To open this dialog box, choose Search|Replace.

Dialog box options

Search For

Type the text you want to look for (or paste it from the Clipboard).

Replace With

Type the text you want to insert (or paste it from the Clipboard).

Case Sensitive

Check this to search for the text exactly as you typed it, including capitalization.

Backwards

Check this if you want to search backward from the insertion point instead of forward.

Whole Words Only

Check this if you don't want to see partial matches.

Advanced Pattern Match

Check this to use Paradox's advanced wildcard operators. See Extended list of wildcards for a list.

Find and Replace All

After specifying the string to search for and the replacement text, choose Find to begin the search, or Replace All to replace all occurrences of the string with the new text. If you choose Find, the Editor moves to the matching string and selects it. You can then press (if you're using the default keystroke mapping)

Ctrl+A to find the next occurrence of the string.

Ctrl+R to replace the selected text with the replacement value specified in the Find and Replace dialog box. If there is not a replacement value, the selected text is deleted.

Ctrl+L to replace all occurrences of the string with the replacement value specified in the Find and Replace dialog box.


Found A Match dialog box

See also

Paradox displays the Found a Match dialog box when it locates the value you want to replace. Use the dialog box to confirm whether you want to replace the value, replace all occurrences of the value, or skip an occurrence without replacing the value.

Dialog box options

Skip This Occurrence

Check this if you do not want to replace the value. When you choose OK, Paradox moves to the next occurrence of the value.

Change This Occurrence

Check this to replace this occurrence of the value. When you choose OK, Paradox replaces the value and moves to the next occurrence.

Change All Occurrences

Check this and choose OK to replace this and all other occurrences of the value.


Go To Page dialog box

See also

Use the Go To Page dialog box to move through the pages of a form or report. Type the page number you want to go to or click the arrow buttons.

To open this dialog box in a form, choose Form|Page|Go To.

To open this dialog box when viewing a report, choose Report|Page|Go To.


Import dialog box

See also

The Import dialog box lets you choose how to import text files, with or without using the Text Import Expert.

To open this dialog box, choose File|Import.

Note:	The Import dialog box appears only if you have the Text Import Expert installed. If it isn't installed, the File Import dialog box opens.

Dialog box options

Import

Choose Import to open text, spreadsheet, and database files into a Paradox of dBASE table without using an Expert. Import displays the File Import dialog box, so you can choose the file to import.

Text Import Expert

Choose Text Import Expert to use that Expert to import a text file into a Paradox or dBASE table. You can use the Text Import Expert to open files with fields indicated by columns of fixed length or with fields delimited by commas or other separator characters.


Import Data dialog box

See also

The Import Data dialog box lets you specify the name, type, and other information about the file you are importing into a table and the table you are creating with the import.

To open this dialog box, choose File|Import, then choose Import in the Import dialog box and specify a source file in the File Import dialog box.

Note:	To display Help for each available page (tab) of this dialog box, click a tab, then press F1.

Dialog box options

From

The file you are importing into a table; the source file. You can type the path and name of the file, or choose it in the Select File dialog box. To display the Select File dialog box, click the button beside the text box:

From Type

The type of file you are importing into a table.

To

The name of the table you are importing the source file into. You can type the path and name of the file, or choose it in the Select File dialog box. To display the Select File dialog box, click the button beside the text box:

To Type

The type of table you are importing the source file into, Paradox (.db) or dBASE (.dbf).

To Table

Specifications for the table you are importing the source file into. For details, see To Table page (Import Data dialog box).

From Text

Specifications for the text file you are importing. For details, see From Text page (Import Data dialog box).

From Fields

Specifications for the fixed-length text file you are importing. For details, see From Fields page (Import Data dialog box).

From Spreadsheet

Specifications for the spreadsheet file you are importing. For details, see From Spreadsheet page (Import Data dialog box).

Import

Adds the data in the source file to a table of the type specified in the To Type drop-down list. The imported data can create a new table, or replace or add to data in an existing table.


Inspect dialog box;ObjectPAL code, debugging;Debugger;variables
Inspect dialog box

See also

Use this dialog box to specify the variable you want to inspect when execution is suspended at a breakpoint.

To open the dialog box, choose Program|Inspect from the Debugger, or press Ctrl+I.

Type the name of the variable, and choose OK. A second dialog box shows you the value of that variable. You can change the value in the second dialog box, and choose OK.

If you selected a variable before choosing Inspect, or if the insertion point is in or near a variable, then only the second dialog box appears, displaying the value of your variable.


From Fields page (Import Data dialog box)

See also

This page of the Import Data dialog box lets you supply field specifications for fixed length text files. Paradox uses these specifications to interpret the imported text file records and break them into fields of the appropriate name, type, and length.

By default, Paradox assumes there is one field, alpha, in the first column of the table, with a length of 255 characters.

Dialog box options

Field Name

Indicates the name of each field, from left to right in the table.

Type

Indicates the type of each field.

Start

The character column the field starts with, numbered from left to right, starting with 1. For example, if the first field has a length of 20 and starts at 1, the second field starts at 21.

Length

The number of characters you want Paradox to read for the field.

Load Spec

Lets you load specifications saved earlier. When you choose Load Spec, the Select File dialog box appears. You can browse to choose the specification table you want.

Save Spec

Lets you save the current specifications. The Save Import Specification As dialog box appears. You can choose an existing specification table to overwrite, or create a new one.


From Spreadsheet page (Import Data dialog box)

See also

This page of the Import Data dialog box lets you specify a range of spreadsheet data to import. You can also indicate whether to use the first row of data as field names.

Dialog box options

Spreadsheet Range

Enter the 2-D or 3-D range of data to import, or choose <all> to import all data in the entire spreadsheet. Data from successive pages appears below data from the previous page in the destination table.

Use First Row Of Data As Field Names

When checked, this indicates that the first row in the import range is to be used as field names, not data.


From Text page (Import Data dialog box)

See also

This page of the Import Data dialog box lets you specify delimiters and other characteristics about the text file you are importing. If you're importing a fixed-length file, the only setting available is Character Set.

Dialog box options

Fields Separated By

Indicates the character used to separate fields in each record of the text file:

Commas

Semi-Colons

Tabs

Other [image] enter the desired character in the text box

Fields Delimited By

Indicates the character, if any, used to delimit (enclose) fields in each record of the text file:

Quotes

Nothing

Other [image] enter the desired character in the text box

Delimited Fields

Indicates the type of field(s) enclosed by the delimiter character:

Text Fields Only [image] all text surrounded by the delimiter character (such as quotes ") will be interpreted as text

All Fields [image] delimiter characters are ignored when determining field type

Field Names

When Use First Row of Data As Field Names is checked, Paradox uses the first row of data as field names. Otherwise, default field names are used. You can change them later by restructuring the table.

Character Set

Indicates the type of character mapping to use, the machine's original mapping or that supported by Windows:

OEM

ANSI

Note:	Files created in DOS-based applications, like Edit, typically use the OEM character set. Files created in Windows applications, like WordPad, typically use the ANSI character set.


To Table page (Import Data dialog box)

See also

This dialog box page provides specifications about the table you are creating or modifying with the import operation.

Dialog box options

Table Options

These settings let you create a new table or modify an existing table. If the table specified in the To text box of the Import Data dialog box already exists, Create New Table is not available in the To Table page.

Create New Table

Lets you create a new table with the specified name.

Overwrite Existing Table

Replaces the specified table with a new table.

Append To Existing Table

Adds the imported data to the data already entered in the specified table.

Auxiliary Table Options

These settings let you create temporary tables for troubleshooting purposes.

Write Transfer Failures To Problems.db

Creates a table called Problems.db if errors occur while importing.

Write Duplicate Key Records To Keyviol.db

Creates a table called Keyviol.db if records with duplicate key field values are found while importing.

Display Table On Completion

When checked, this setting tells Paradox to open the new or modified table when the import operation is finished. Otherwise, it remains closed.

Display Auxiliary Tables on Completion

When checked, this setting tells Paradox to open the Problems and Keyviol tables when the import operation is finished (if either was created). Otherwise, they remain closed.

Note:	For more information about the Problems and Keyviol tables, see Temporary tables created when restructuring.


Insert Object dialog box

See also

Use this dialog box to insert a linked or embedded object in an OLE container, a Paradox OLE field or design object.

To open this dialog box, choose Edit|Insert Object, or right-click the OLE object and choose Insert Object.

Dialog box options

Create New

Choose to create a new object to insert in the OLE container.

Object Type

Choose the type of object you want to insert.

Create from File

Choose to insert a copy of a file in the OLE container.

File

Type the file name of the file you want to copy into the OLE container.

Browse

Choose this button to browse through the directory tree to find a file.

Link

Check this check box to insert a linked object. A linked object is actually a pointer to data somewhere outside the OLE container. When you insert a linked object in an OLE container, changes you make to the object are actually made to the source of the object.

Uncheck this check box to insert an embedded object. When you insert an embedded object in an OLE container, the data is actually copied into the OLE container, and no relationship is maintained with the source of the data.

Display As Icon

Check this check box to make Paradox display the object as an icon. For example, you are embedding a graphic image and do not want to see the image in the table or form. You check this check box to see the graphic application's icon instead of the image itself.

Change Icon

This button is visible only if Display As Icon is checked. Choose this button to change the icon (and its label) displayed in the OLE container.

Result

Explains the result of using the currently selected options.


Layout Multi-Record Object dialog box

See also

Use this dialog box to change the layout of a multi-record object that is bound to a table. Paradox opens this dialog box when you choose Field Layout after right-clicking a multi-record object that is bound to a table.

At the top of this dialog box are two buttons that control the options shown in this dialog box: Show Layout and Show Fields.

To open this dialog box, select the record in a multi-record object, then right-click it. Choose Field Layout.

Show Layout

Choose this button to display options you can use to change the layout of the multi-record object.

Object Layout

Select how you want fields in single-record and multi-record styles displayed. Select By Columns to display objects in columns, down the page. (This is the default layout.) Select By Rows to display objects in rows, across the page.

Label Fields

Gives you the option of using labeled fields or unlabeled fields.

The following fields are visible only if the report's data model contains a multi-value relationship.

Show Details

Check this check box to show records from the detail table in the multi-record object. This check box is available only if some fields from the detail table appear in the Selected Fields list (described below).

The following fields are available only if the Show Details checkbox is checked.

Detail Table Style

Specify the type of object used to represent detail tables:

Table

Specify a table frame object.

Record

Specify a multi-record object.

Multi-Record Layout

If your layout contains multi-record objects, specify whether you want the records to be arranged horizontally, vertically, or both.

Fields Before Tables

Check this checkbox if you want records from the master table to appear above those for the detail table.

Show Fields

Choose this button to change the fields used in the design document and the order in which they are presented.

Table

Displays the name of the table (and of its detail tables) to which this multi-record object is bound.

Reset Fields

Choose this button to add all fields from the selected table to the Selected Fields list.

Selected Fields

The fields from the table are shown here. Paradox includes all fields from this list in the design. Fields appear in the design in the order they are shown in this list

Order

To change the order of the fields in the list, choose the fields you want to move and use the up and down Order arrows.

Remove Field

To remove fields displayed in Selected Fields, choose them and click Remove Field.

Preview of the Multi-record Object

A preview of a single record from the multi-record object you are designing appears in the dialog box. As you make changes to the design, the preview changes.


Links dialog box

See also

Use this dialog box to modify the links in OLE containers, such as Paradox OLE fields and design objects.

To open this dialog box, choose Edit|Links on a document containing a linked OLE object.

Dialog box options

Links

This list box displays for each link the path and file name of the source, the type of object, and the update property setting.

Source

Displays the path and file name of the source of the selected link.

Type

Displays the type of file to which the object is linked.

Update

Choose how you want the selected links to be updated:

Choose Automatic to make Paradox update the appearance of linked objects automatically.

Choose Manual to make Paradox update the appearance of linked objects only when you choose to do so by choosing Update Now.

Update Now

Choose this button to update the contents of the selected links now.

Open Source

Choose this button to open the source files of selected links in the server application.

Change Source

Choose this button to change the source file of selected links. Paradox opens the Change Source dialog box.

Break Link

Choose this button to break the link. This means the object becomes a static object that can no longer be edited or updated.


Locate And Replace dialog box

See also

Use the Locate And Replace dialog box to move to a particular value in a field and change that value.

To open this dialog box, choose Record|Locate|And Replace.

Dialog box options

Value

Type in the value you want to change.

Replace With

Type in what you want the value changed to.

Case-sensitive

Check Case-sensitive to search for the text exactly as you typed it, including capitalization.

Exact Match

Check Exact Match if you do not want to find fields that contain the value as a substring, and do not want to use a pattern.

@ and ..

Check @ and .. if you want to use either or both of these wildcards in your search. @ stands for any character, and .. stands for any number of characters, including none.

Advanced Pattern Match

Check Advanced Pattern Match if you want to use an extended list of wildcards in your search.

Field

Choose the field that contains the value you want to locate and replace.

When you choose OK, Paradox finds the first occurrence of the value you want to replace and displays the Found A Match dialog box, where you can choose to skip the occurrence, change the occurrence, or change all occurrences.

Tip:	You get improved performance if the field you use for the Locate operation has an index. Performance is further improved if the Case-sensitive setting of the index and of the Locate operation match.


Locate Field dialog box

See also

Use the Locate Field dialog box to find a particular field in a very wide table. This feature is especially useful if you are working on a large table with many fields. It is sometimes faster than using the scroll bars or pressing Tab repeatedly.

To open this dialog box, choose Record|Locate|Field in a Table window.

Dialog box options

Fields

The Fields list shows all the table's fields. Select the field you want, then choose OK to move to it.


Locate Record Number dialog box

See also

Use the Locate Record Number dialog box to enter the record number of the record you want to move to.

To open this dialog box, choose Record|Locate|Record Number.

Dialog box options

Locate Record Number

Type the number of the record you want to locate.


Locate Value dialog box

See also

Use the Locate Value dialog box to move to a particular value in a field.

To open this dialog box, choose Record|Locate|Value, press Ctrl+Z, or click the Locate Field Value [image] button.

Dialog box options

Field

Choose the field in which the value is to be found.

Value

Type in the value you want to locate.

Case-sensitive

Check Case-sensitive to search for the text exactly as you typed it, including capitalization.

Exact Match

Check Exact Match if you do not want to treat pattern characters as wildcards.

@ and ..

Check @ and .. if you want to use either or both of these wildcards in your search. @ stands for any character, and .. stands for any number of characters, including none.

Advanced Pattern Match

Check Advanced Pattern Match if you want to use an extended list of wildcards in your search.

When you choose OK, Paradox moves to the first occurrence of the value. To move to the next occurrence, choose Record|Locate Next or click the Locate Next button on the Toolbar.

If no values match, or after all matching values have been found, Paradox displays the message "[value] was not found" on the Desktop status bar.

Note:	You can only locate values from this box. If you want to replace values, click the Edit Data Toolbar button or press F9 to move into Edit mode, then choose Record|Locate|And Replace to open the Locate and Replace dialog box.

Tip:	You get improved performance if the field you use for the Locate operation has an index. Performance is further improved if the Case-sensitive setting of the index and of the Locate operation match.


Lookup Help dialog box

See also

When you define table lookup for a table with Help And Fill, and then press Ctrl+Space when resting in the lookup field in Edit mode, this dialog box appears.

Its contents vary according to the way you have defined the lookup table and field. It shows the lookup field you are filling plus related fields if you requested them.


Method List dialog box

See also

The Method List dialog box displays all of a form's methods that contain custom code. To load one of the listed methods in the Debugger, select it and choose OK.

To open this dialog box, choose View|Source from the Debugger.


Move Help dialog box

See also

Use the Move Help dialog box to move a detail record to a new master record.

To open this dialog box, select the field of a dependent record that has referential integrity, or any field of a record in a detail table, and press Ctrl+Shift+Spacebar.

Dialog box options

The entire master table appears in the Move Help dialog box.

Select the new master record from the master table displayed and click OK. The selected detail record is now assigned to the new master record.

Note:	Move Help is available only in fields for which a one [image] many relationship or a referential integrity relationship has been defined.


New Form dialog box

See also

Use this dialog box to create a new form.

To open this dialog box, choose File|New Form.

Dialog box options

Click one of the following buttons to create a new form.

Blank

Create a new form that is not bound to a table and contains no design objects other than a single empty page.

Form Expert

Create a new form using the Form Expert.

Data Model / Design Layout

Create a new form using the Data Model and Design Layout dialog boxes. These dialog boxes give you options for giving your form a data model and choosing the primary design objects used to work with the tables in the data model.

Bypassing this dialog box

You can bypass this dialog box every time you choose File|New Form:

1.	Choose Edit|Preferences.

2.	On the Forms/Reports page, choose one of the options other than No Default under New Forms/Reports.


New Method dialog box

See also

Enter a name for the new method you want to create and choose OK.

To open this dialog box, select <New method> from the Object Explorer, Methods page.


New Report dialog box

See also

Use this dialog box to create a new report using one of four methods.

To open this dialog box, choose File|New Report.

Dialog box options

Click one of the following buttons to create a new report.

Blank

Create a new report that is not bound to a table and contains no design objects other than the report header and footer, page header and footer, and record band.

Report Expert

Create a new report using the Report Expert.

Label Expert

Create a report designed to be printed on mailing labels.

Data Model / Design Layout

Create a new report using the Data Model and Design Layout dialog boxes. These dialog boxes give you options for giving your report a data model and choosing the primary design objects used to work with the tables in the data model.

Bypassing this dialog box

You can bypass this dialog box every time you choose File|New Report:

1.	Choose Edit|Preferences.

2.	On the Forms/Reports page, choose one of the options other than No Default under New Forms/Reports.


Constants page (ObjectPAL Quick Lookup)

See also

The Constants page of the ObjectPAL Quick Lookup lists constant types and their available constants in alphabetical order. Choose a constant type to display the constants for that type.

To open this dialog box, choose View|ObjectPAL Quick Lookup, and click the Constants tab.

F1 Help

Highlight any constant type and press F1 to get help on that type. If there is only one Help topic for the selected item, pressing F1 takes you directly to that topic. If Help contains multiple topics for the selected word, you'll see a list of topics. Select one and choose Display.

Navigation

When the focus is on a list box, you can type a letter to move to the first item that starts with that letter.

Dialog box options

Constant Types

Lists ObjectPAL constant types. Select a type to display available constants.

Constants

Lists available constants for the selected type. You can select a constant to insert it into your code.

Insert Constant

Inserts the selected constant into your own code at the insertion point. Click the Insert Constant button and click OK.

Show All

Check Show All to see all available elements in the ObjectPAL language. Uncheck to show a "Beginner's" subset.

Note:	You can set this preference permanently in the Developer Preferences dialog box (Edit|Developer Preferences). On the General page, set your ObjectPAL level to Beginner (the default) or Advanced. (Code executes identically at either level, and you can use advanced elements in code even when the level is set to Beginner.)

The Show All option in the ObjectPAL Quick Lookup temporarily overrides the preference you set in the Developer Preferences dialog box.


Objects And Properties page (ObjectPAL Quick Lookup)

See also

The Objects And Properties page of the ObjectPAL Quick Lookup lists objects and their properties in alphabetical order. Choose an object name to display the properties for that object.

To open this dialog box, choose View|ObjectPAL Quick Lookup, and click the Objects And Properties tab.

F1 Help

Highlight any object or property name and press F1 to get help on that object or property. If there is only one Help topic for the selected item, pressing F1 takes you directly to that topic. If Help contains multiple topics for the selected word, you'll see a list of topics. Select one and choose Display.

Navigation

When the focus is on a list box, you can type a letter to move to the first item that starts with that letter.

Dialog box options

Objects

Lists ObjectPAL objects. Select an object name to display its properties.

Properties

Lists properties for the selected object. Choose a property from the Properties panel to list valid values in the Values panel.

Values

Lists valid values for the property you selected.

Insert Object

Inserts the selected object name into your own code at the insertion point. Click the Insert Object button and click OK.

Insert Property

Inserts the selected property name into your own code at the insertion point. Click the Insert Property button and click OK.

Show All

Check Show All to see all available elements in the ObjectPAL language. Uncheck to show a "Beginner's" subset.

Note:	You can set this preference permanently in the Developer Preferences dialog box (Edit|Developer Preferences). On the General page, set your ObjectPAL level to Beginner (the default) or Advanced. (Code executes identically at either level, and you can use advanced elements in code even when the level is set to Beginner.)

The Show All option in the ObjectPAL Quick Lookup temporarily overrides the preference you set in the Developer Preferences dialog box.


Types And Methods page (ObjectPAL Quick Lookup)

See also

The Types And Methods page of the ObjectPAL Quick Lookup lists all object types and their methods and procedures in alphabetical order.

To open this dialog box, choose View|ObjectPAL Quick Lookup.

F1 Help

Highlight any type or method name and press F1 to get help on that type or method. If there is only one Help topic for the selected item, pressing F1 takes you directly to that topic. If Help contains multiple topics for the selected word, you'll see a list of topics. Select one and choose Display.

Navigation

When the focus is on a list box, you can type a letter to move to the first item that starts with that letter.

Dialog box options

Types

Lists ObjectPAL types. Select a type name to display its methods and procedures.

Methods And Procedures

Lists methods and procedures for the selected type. Methods are marked with an "M" and procedures are marked with a "P." The parameter list for the method or procedure appears in a prototype panel below the two lists.

Insert Type

Inserts the selected type name into your own code at the insertion point. Click the Insert Type button and click OK.

Insert Method

Inserts the selected method or procedure name into your own code at the insertion point. Click the Insert Method button and click OK.

Show All

Check Show All to see all available elements in the ObjectPAL language. Uncheck to show a "Beginner's" subset.

Note:	You can set this preference permanently in the Developer Preferences dialog box (Edit|Developer Preferences). On the General page, set your ObjectPAL level to Beginner (the default) or Advanced. (Code executes identically at either level, and you can use advanced elements in code even when the level is set to Beginner.)

The Show All option in the ObjectPAL Quick Lookup temporarily overrides the preference you set in the Developer Preferences dialog box.


Open Document dialog box

See also

Use the Open Document dialog box to specify the file you want to open. The name of the dialog box changes to fit the type of file being opened, for example, Open Form, Open Report, or Open Query.

To open this dialog box, choose File|Open, then choose a file type.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can use for the addition operation you are performing.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.

Options

The available options differ according to the object you are opening.

Form

View The Form opens the form in its view window.

Edit The Form Design opens the form in its design window.

Print The Report prints the form as a report if you also choose Open as Report.

Open As A Report opens the form as a report. This is a quick way to use a form layout to specify the layout of a report.

Query

Run The Query runs the query and displays the Answer table.

Edit The Query opens the query in its design window.

Report

View The Report opens the report in its view window.

Edit The Report Design opens the report in its design window.

Print The Form prints the report as a form if you also choose Open as Form.

Open As A Form opens the report as a form. This is a quick way to use a report layout to specify the layout of a form.

Script

Run The Script runs the script.

Edit The Script opens the script in its design window.

SQL File

Run The SQL File runs the statement and displays the results.

Edit The SQL File opens the statement in the SQL Editor window.

Change Table

Opens a form or report using a different master table [image] a different table from the one on which it was originally designed. When you choose Change Table, Paradox opens the Select Replacement Table dialog box, where you specify the new master table.


Page Layout dialog box

See also

Use the Page Layout dialog box to specify page layout for designing a form or report on the screen. You can print the result to any printer even if the available paper sizes are different from those of the design. You can display the document on a screen with a different resolution or orientation from the screen on which the document was designed.

When you open the Page Layout dialog box for an existing form or report, Paradox displays the design size and orientation of the document you are working on. If the form or report was designed for printer output, a list box containing the paper sizes available on the current printer is also displayed. If the size of your document matches one of these paper sizes, it will be highlighted. If the form or report was designed for screen display, the list box will show the size of the document in screen pixels.

If a new document is being designed for printer output, the size and orientation will match the current, default settings of your printer. If a new document is being designed for screen display, the size and orientation will match the resolution and orientation of your screen.

If you close the dialog box with OK, you might change the form or report design page size and orientation. If you close the dialog box with Cancel, no changes will be made.

To open this dialog box, choose Form|Page Layout or Report|Page Layout.

Dialog box options

Design For

Select Printer or Screen. The custom sizes you specify in the other panels refer to this choice.

If you design for a printer,

Paradox makes available only fonts that are currently available to your active printer, or to both your printer and to the screen. This may limit your onscreen display, but it ensures a similar document for onscreen viewing and printed output.

Paradox attempts to match onscreen what the printed output will look like. This means that the screen fonts might not match the printer fonts exactly in height or width. Size-to-fit objects are sized based on the printer font sizes. Onscreen, this might cause clipping or text objects that seem to wrap too soon, but on paper they will look right. Be careful, when designing for a printer, that you do not cause unwanted clipping by sizing objects to a screen font.

Orientation

Select Portrait or Landscape to change the way the document looks on the screen during design. (Paradox shows you a sample of the selected page orientation.) Set the orientation of the paper for printing in the Printer Setup dialog at print time.

The orientation setting in the Page Layout dialog box sets the orientation of the report design in Paradox, but it does not force the printer to use the selected orientation. It does change the current printer settings, but, if you print the report at a later time, and the printer setup has changed, the printer settings will take precedence over the report design.

To ensure the report prints with the same orientation you've selected in Paradox, change the orientation in the Printer Setup dialog box to match the settings in the Page Layout dialog box.

This option is unavailable when you are designing for screen. When you design for the screen, you must use the default orientation of the screen. The Paper Sizes list changes to the Screen Size list, and Paradox displays your system's current screen driver size (in pixels) in it.

Paper Sizes/Screen Size

Select one of the standard sizes.

Paper Sizes are those your currently selected printer supports; they are available when you are designing for the printer.

Screen Size is the size Paradox detects for your current screen driver; it is available when you are designing for the screen.

Custom Size

Specify any non-standard size, or any size not supported by the currently installed printer or screen to design a larger or smaller document. Units are those specified in the Units panel.

Custom size only makes sense in these cases:

You want to design the report on one printer installed, but intend to run it on another which will support the size you've chosen.

You have a newer laser printer that supports any arbitrary size from a postcard up to the limits of the printer.

Units

Choose the units for the values in Custom Size and Margins. The default value for the printer units is sensitive to your International settings.

Margins

Change the margins by typing numbers in these text boxes. Units are those specified in the Units list.

This option is available only for reports.


Paste From File dialog box

See also

Use the Paste From File dialog box to paste text from an external file into a selected Paradox text object, text field, or memo field.

To open this dialog box, choose Edit|Paste From with a text object, text field, or memo field selected.

Dialog box options

File Name

Type in the name and extension of the file you want to copy from or select one from the list box below this text box. Text will be inserted at the insertion point. If there is a selection in the text object of the field, the selected text will be replaced by the inserted text.

Files Type

Paradox displays the word <Text>, indicating you can copy text values from .PXT, .TXT, or .RTF files. The extension shows the format used to copy the text. PXT files use an internal Paradox format for rich text and object storage. .TXT files are plain text files such as those created by Notepad. .RTF files are standard Rich Text Format files which contain font and other information.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Paste From Graphic File dialog box

See also

Use the Paste From Graphic File dialog box to paste a value from an external file into a selected Paradox graphic field or graphic object.

To open this dialog box, select a graphic field and choose Edit|Paste From, or if you are in a Form window, right-click the graphic object and choose Paste From.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory where you want to paste from a file. All files of the selected type in that directory appear in the graphics list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In drop-down list and its files appear in the graphics list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to paste from or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can paste from: *.bmp, *.pcx, *.tif, *.gif, *.eps.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the graphics list.


Parameters For dialog box

See also

Use this dialog box to specify parameters for running the executable file.

To open this dialog box, right-click an executable file in the Project Viewer and choose Run <file name> W/Params.


Password Security dialog box

See also

Use the Password Security dialog box, to create passwords to protect your tables from unauthorized access.

To open this dialog box in the Create Table or Restructure Table dialog box, choose Password Security from the Table Properties drop-down list, then choose Define.

Dialog box options

Master Password

Type your password in the Master Password text box. Only asterisks appear onscreen. A password can be from 1 to 15 characters and can contain spaces.

Verify Master Password

Type your password again in the Verify Master Password text box. Passwords are case-sensitive. If the two passwords are not identical, an error message prompts you to enter either of them again.

Auxiliary Passwords

Choose this to open the Auxiliary Passwords dialog box. (This button is not enabled until you verify a master password.)

Change

Changes the master password. Choose Change, then enter the new password and verify it.

This button only appears when a master password already exists.

Delete

Deletes the master password. Choose Delete to remove the password.

This button only appears when a master password already exists.


Picture Assistance dialog box

See also

Use the Picture Assistance dialog box to get assistance with pictures you create or with the standard pictures Paradox provides.

To open this dialog box, do one of the following:

In the Create Table or Restructure Table dialog box, choose Validity Checks in the Table Properties drop-down list, then choose the Assist button.

Right-click a field object in a design document and choose Properties. Click Add Custom Picture on the Picture page.

Dialog box options

Picture

Using picture string characters, type the picture you want in the Picture text box or the field object you right-clicked. You can fill this text box with the contents of the Sample Pictures drop-down list box. For details, see "Sample Pictures" below.

Verify Syntax

Choose Verify Syntax to ensure Paradox can interpret the picture. If the syntax is correct, a message appears telling you the picture is valid.

Restore Original

If you make a mistake, choose Restore Original to return to the picture that was originally in the Picture text box or the field object you right-clicked.

Sample Value

Type a value, then choose Test Value to see if your picture works.

Test Value

Choose Test Value to ensure Paradox can interpret the value you typed into the Sample Value Text box. The message area below the button reports the result of the test.

Sample Pictures

Paradox provides several standard pictures, available from the Sample Pictures drop-down list of the Picture Assistance dialog box. Click the drop-down arrow to see this list. When you choose one of these pictures, you see an explanation of it in the message area. For example, when you choose the picture "5{#}[-4{#}]," you see the message that this picture is for either a 5-digit or a 9-digit U.S. zip code."

Add To List

Choose Add To List to open the Save Picture dialog box where you can describe your picture and add it to the Sample Pictures drop-down list. The description you type in the Save Picture dialog box will appear in the message area of the Picture Assistance dialog box whenever you select it from the Sample Pictures list.

Delete From List

Choose Delete From List to delete your picture from the Sample Pictures drop-down list.

Use

Choose Use to copy one of the sample pictures to the Picture text box or to the field object you right-clicked.


Advanced page (Preferences dialog box)

See also

Use this dialog box to specify advanced Desktop preferences.

To open this dialog box, choose Edit|Preferences and click the Advanced tab.

Dialog box options

Don't Show Warning Prompts When Changing Directories

Check this check box to prevent Paradox from displaying the Are You Sure dialog box every time you change your working or private directory and have one or more objects open on the Desktop.

Always Use Alt+Numeric Keypad For Character Entry

Check this check box if you always want to use the Alt key and the numeric keypad to insert a character using its ANSI code

Regardless of whether you are in Field View

Regardless of whether Num Lock is on

Indicate Expandable Directory Branches

Check this check box if you want Paradox dialog boxes that display a directory tree to indicate which directories contain subdirectories.

Note:	Checking this check box increases the time it takes to navigate the directory tree of these dialog boxes.

Use Scroll Bars In Form Windows By Default

Check this check box if you want new forms and reports to have horizontal and vertical scroll bars.


BDE page (Preferences dialog box)

See also

Use this dialog box to view settings that control BDE, the Borland Database Engine.

BDE is the interface Paradox uses to access your data. BDE needs information about your specific environment in order to properly access and deliver your data. This information is stored in the BDE configuration file.

To change any of these settings, use the BDE Configuration Utility. Its icon is part of the Paradox program group. Changes do not take effect until you restart Paradox.

To open this dialog box, choose Edit|Preferences and click the BDE tab.

Dialog box options

Network Control File Directory

Shows the location of your Paradox network control file, PDOXUSRS.NET.

Language Driver

System

This driver can be used as a default if the Paradox and dBASE language drivers are undefined.

Paradox

This driver determines the sort order, capitalization, and string comparison conventions that are specific to your country's language for Paradox tables. The default for users in the United States is the Paradox ASCII driver.

dBASE

This driver determines the sort order, capitalization, and string comparison conventions that are specific to your country's language for dBASE tables.

Database Driver List

Shows what database drivers you have installed. You can create a table of the type of any database driver you are connected to.

For information on ODBC drivers, run the BDE Configuration Utility, then choose Help|Contents in the utility menu bar, click the Index button at the top of the Help window, and type ODBC in the text box at the top of the Help window.

Buffer Size (in Kilobytes)

This buffer specifies the minimum and maximum amount of memory Paradox uses.

Local Share

When Local Share is On, you can safely share tables with non-BDE applications that you are running locally. (Note: Non-BDE applications include earlier versions of Paradox, dBASE IV, and Quattro Pro version 6 or earlier.)

When Local Share is Off, the data locks set by Local share are turned off. If you are sharing data with non-BDE applications, this leaves you unprotected from data corruption. This option might provide a slight performance increase in accessing local data. Local Share is Off by default.


Database page (Preferences dialog box)

See also

Use this dialog box to specify general database and multi-user preferences.

To open this dialog box, choose Edit|Preferences and click the Database tab.

Dialog box options

Private Directory

Specify a directory to use as your private directory. The directory you specify is where Paradox stores any temporary tables you create. This avoids conflicts with any other network user's temporary tables. See About directories and aliases for more information.

Browse

Opens the Directory Browser so you can choose your private directory visually.

Treat Blank Fields As Zero

When checked, tells Paradox to interpret blanks in calculated fields as the number zero. Otherwise, Paradox treats blanks in calculations the same as blanks in other types of fields. (Note: When blanks are not treated as zero, they are not included in summary calculations such as average, count, or min and max. So, these calculations can change, depending on whether zeros are counted as blanks.)

Network

These settings affect how Paradox works on a network and provide information about other users in a multiuser environment.

User Name

Shows the network user name you used to log on to a network. If you are not attached to a network, the box displays the message No user name available.

Current User List

Shows a list of all users who are using the same Paradox network installation you are. This is especially useful when you want to place a lock on an object and want to find out who might be inconvenienced.

Refresh Rate

Sets the number of seconds you want between screen refreshes. This is the length of time between updates of information on your screen, as data is being changed elsewhere in the network in tables you are currently linked to. This is useful for monitoring remote tables that might change without any action on your part, like a shared table on a network.

Refresh Rate applies only to Paradox tables. To force a refresh on other file formats (such as dBASE or SQL tables) press Ctrl+F3.

Note: When you are editing, you do not need to tell Paradox when to refresh your screen. Paradox always refreshes your display whenever you make a change, regardless of your Refresh Rate setting.

Tip: The more you refresh your screen, the higher the demand you place on your network. Choose a longer time between refreshes to lighten the work load on the network. Choose 0 to turn off automatic refreshes.

Retry Period

If you try to access a record in a table and find you are locked out of it, you can automatically retry opening it. Enter the length of time (in seconds) that you want Paradox to retry.

You will be prevented from doing anything else in Paradox during the retry period, but you are not blocked from doing other things on your system.

Tip:	If you set the retry period to 30, Paradox attempts to access the table for 30 seconds. While the attempt is being made, you are prevented from any other Paradox activity on your system. If you do not want to wait long, set a low retry period.


Designer page (Preferences or Settings dialog box)

See also

The Designer preferences affect the behavior and display of design windows, and are common to both Form Design and Report Design windows. These preferences can be set as defaults under Edit|Preferences, or changed as settings in the current design window, using Form|Settings or Report|Settings.

Preferences are used by default each time a design window is opened. Settings are temporary and are thrown away when a document is closed.

Dialog box options

Select From Inside

When you click an object that is contained by another object, the Select From Inside option specifies how Paradox selects the object.

If Select From Inside is unchecked, Paradox selects the outermost object first.

If Select From Inside is checked, you select the object you click.

Frame Objects

You can display objects on your screen with or without frames by using the Frame Objects.

If Frame Objects is checked, objects without a clear frame or outline are outlined by dotted lines to help you see them. You might want to uncheck this if you have many of these objects because they can look cluttered.

If Frame Objects is unchecked, Paradox shows frames only on objects whose Frame property (the frame's color, style, or thickness) you have changed.

These frames appear only in design windows.

Flicker-Free Draw

Sometimes the screen flashes a bit when you move or resize objects. This is especially noticeable when your design has a dark background. Check Flicker-Free Draw to suppress this behavior.

Turning Flicker-Free Draw on eliminates some screen flickering, but it can cause the movement or resizing of objects to be slower. Experiment with Flicker-Free Draw on and off to see which works best for you.

Outlined Move/Resize

Select Outlined Move/Resize to specify what you see when you move or resize an object.

Uncheck Outlined Move/Resize to see the object itself move, grow, or shrink as you move or resize it.

Check Outlined Move/Resize to see an outline of the object move, grow, or shrink as you move or resize the object.

Most moving and resizing is faster with Outlined Move/Resize checked. This is because Paradox does not redraw the screen image until the operation is complete. However, some operations are clearer when you can see what is happening throughout.

Grid

Grid specifies the unit of measure and the distance between major grid lines and minor tick marks between grid lines for a grid or a ruler.

Check Design|Snap To Grid to use the grid to limit moves and resizes to grid lines.

Check View|Grid to see the grid. Paradox displays major grid lines and minor grid ticks.

Units

Choose inches or centimeters as the unit of measurement.

Major Division

Specify the distance (in the units chosen) between major (solid) grid lines. For example, if you choose 2, you'll see a solid line every two inches (assuming you chose Inches as your unit of measurement).

Minor Division

Specify the number of minor divisions (shown by tick marks) between major grid lines. For example, if you choose 16, you'll see 16 dotted lines between each solid line.

If the space between minor grid ticks is too small, Paradox does not display them.

Ruler

Both the Form Design and Report Design windows have horizontal and vertical rulers you can use when placing, resizing, or moving design objects. They also have an expanded ruler (used in combination with the horizontal ruler) for editing and formatting text objects.

Check or uncheck a ruler to display or hide it. This setting is the default setting for the design windows. To override this setting for the current document, check or uncheck View|Ruler.

Horizontal Ruler

Check to display a ruler along the top of the document. This ruler must be checked to set tabs using the expanded ruler.

Vertical Ruler

Check to display a ruler along the left edge of the document.

Expanded Ruler

The expanded ruler is an editing and layout tool for use with a text object. It is displayed above the horizontal ruler. Use it to adjust margins, tabs, line spacing, and text alignment. You can also edit text objects with the Text Formatting Toolbar and on the Text property page for the object.

To set tabs, the horizontal ruler must be used with the expanded ruler. Alignment and line spacing controls work with or without the horizontal ruler.

Note:	Changing the default Designer preferences has no effect on an open form or report. You must close the document, then re-open it to utilize the new default preference settings.

To override the default preferences

Choose Form|Settings or Report|Settings and check or uncheck the desired preferences on the Designer page. This change affects only the current document, and does not affect any other opened documents. As soon as you exit the document, these settings are thrown away.


Experts page (Preferences dialog box)

See also

Use this dialog box to set properties that affect the Paradox experts.

To open this dialog box, choose Edit|Preferences and click the Experts tab.

Dialog box options

Run Experts When Creating Objects On Documents

If this setting is checked, the appropriate expert opens each time you use a tool to create a chart, button, field, or text object in the Form Design and Report Design windows.

Run Startup Expert Each Time Product Loads

If this setting is checked, the Startup Expert appears each time you start Paradox and lets you:

Use the Paradox Database Expert to choose a predefined database structure for your data.

Use the Paradox Table Expert to name (with an alias) and create your own database.

Name (with an alias) an existing database.

Open an existing database.


Forms/Reports page (Preferences dialog box)

See also

Use this dialog box to specify the way Paradox creates new forms and reports, or reopens existing ones.

To open this dialog box, choose Edit|Preferences and click the Forms/Reports tab in the Preferences dialog box.

Dialog box options

New Forms/Reports

When you choose File|New|Form or File|New|Report, Paradox presents a dialog box to ask how you want to create the new form or report. Choose an option other than No Default if you want to bypass this dialog box and always create forms and reports a certain way.

No Default

Choose this option if you want Paradox to ask you how to create a new form or report every time you do so.

Always Blank

Choose this option if you want Paradox to create all new forms and reports not bound to a table and not containing any objects other than

In forms, a single page

In reports, the report header and footer, page header and footer, and record band

Always Use Expert

Choose this option if you want Paradox to use an expert to create all new forms and reports.

Always Use Data Model

Choose this option if you want Paradox to open the Data Model dialog box every time you create a new form or report.

Open Default

Check one of the following check boxes to specify the

Default option used when opening a form or report using the Open Document dialog box.

First command on the menu that comes up when you right-click a form or report in the Project Viewer. The first command is the also the one that is executed when you double-click a form or report.

Open Forms in Design Mode

Check this check box to make Paradox open forms in a design window by default and put the Design command at the top of the menu that appears when you right-click forms and reports in the Project Viewer.

Open Reports in Design Mode

Check this check box to make Paradox open reports in a design window by default and put the Design command at the top of the menu that appears when you right-click a form or report in the Project Viewer.

Form Screen Page Size

Size To Desktop

Check this check box to make Paradox create new forms the size of the Desktop. When you create a form, it will exactly fill the Desktop when maximized so long as it has no scroll bars and no rulers are showing. Uncheck this check box to specify a specific size.

Width, Height

Type the width and height for new forms and reports.

Inches, Centimeters, Pixels

Choose one of these options to specify the units for the values in the height and width fields. The International measurement setting in the Windows Control Panel determines the default unit.

Designer Style Sheets

Choose a style sheet to control the initial appearance of objects you put on forms and reports.

Screen Style Sheets

Choose the style sheet you want Paradox to use for new design documents designed for the screen.

Printer Style Sheets

Choose the style sheet you want Paradox to use for new design documents designed for the printer.

See About style sheets for more information.


General page (Preferences dialog box)

See also

Use this dialog box to specify a variety of general Desktop preferences.

To open this dialog box, choose Edit|Preferences and click the General tab.

Dialog box options

Title

Type the title you want to appear on the Desktop title bar.

Background Bitmap

Type the name of a bitmap file or choose Find to select one from a list.

Tile Bitmap

Choose this option to repeat the bitmap until it fills the Desktop.

Center Bitmap

Choose this option to display the bitmap in the center of the Desktop.

Find

Choose Find to open the Select File dialog box, where you can choose another bitmap file for the Desktop background.

Desktop State

The Desktop state is the windows that are open and the size and position of those windows. For example, you have two tables open in the upper half of the Desktop and a query open on the bottom half [image] this is the state of the Desktop.

Use the following check boxes and button to set the Desktop state the way you want it.

Save On Exit

Check this check box to save the state of the Desktop when you exit Paradox.

Restore On Startup

Check this check box to restore the saved state of the Desktop when you start Paradox. If you uncheck this check box, the Desktop will be empty when you open Paradox.

Save Now

Choose this button to save the state of the Desktop now.

Default System Font

This field displays the default system font, used in text objects. To change the default system font, click the Change button. Paradox opens the Font dialog box.

Project Viewer Settings

Check Open Project Viewer On Startup to display Project Viewer automatically each time you open Paradox.


Query page (Preferences dialog box)

See also

Use this dialog box to specify default preferences for Paradox queries. To open this dialog box, choose Edit|Preferences and click the Query tab.

To override these defaults and set properties for individual queries, choose Query|Properties in the Query window.

Dialog box options

Table Update Handling

In a multiuser environment, someone might be changing data in tables you are using in a query while you are running the query. Choose one of the following options to tell Paradox ahead of time what to do if it finds the data has changed.

Restart Query On Changes

Start the query over. Choose Restart Query On Changes when you want to make sure you get a snapshot of the data as it existed at some instant. Another user might change the data after the query is completed but before the Answer table is displayed, but at least you got a snapshot. This is just the nature of multiuser work.

Lock All Tables To Prevent Changes

Lock all other users out of the tables needed while the query is running. If Paradox cannot lock a table, it does not run the query. This is the least polite to other users. And you must wait until all the locks can be secured before the query will run.

Ignore Source Changes

Run the query even if someone changes the data while it is running. This may affect whether the query answer is up-to-date.

Queries Against Remote Tables

These options apply only to queries of remote data on SQL servers. Running queries locally is slower, but might be necessary [image] for example, if you're querying joined tables from more than one server.

Query May Be Local Or Remote

Choose this button to make Paradox attempt to run the query remotely (as described below). If this fails, Paradox runs the query locally (as described below).

Run Query Remotely

Choose this button to make Paradox request that the server run the query and send back only the answer data.

Run Query Locally

Choose this button to make Paradox run the query locally. This means that Paradox

1.	Requests all data in queried tables from the server.

2.	Runs the query on your computer system.

Auxiliary Table Option

Choose one of the following buttons to affect the way Paradox runs queries that change data (INSERT, DELETE, and CHANGETO queries).

Fast Queries (No Auxiliary Tables)

Choose this button to keep Paradox from generating auxiliary tables when running queries that change data. Because Paradox does not create the Inserted, Deleted, and Changed tables, the query is performed faster.

Generate Auxiliary Tables

Choose this button to make Paradox create auxiliary tables when running queries that change data. These tables are stored in your private directory by default.

Default QBE Check Type

Indicates whether the Check or CheckPlus operator is the default checkmark Paradox places when you either click a field's check box or press F6.

If you frequently run queries that produce live query views, it's a good idea to choose CheckPlus as the default checkmark. If you know that all values are unique, using CheckPlus will make the query run faster.

Check

Displays unique values that meet the selection condition in the Answer table or live query view. If two or more records have the same value in all fields with a Check, the Answer table contains only the first record and the Answer table is sorted.

CheckPlus

Displays all values that meet the selection condition in the Answer table or live query view. If two or more records have the same value in all fields with a CheckPlus, the Answer table contains all matching records.

SQL Answer Constraints

Controls the update of SQL tables from live query views.

Constrained Updates

When checked, you are only able to update an SQL table in a live query view with values that meet the selection conditions for the query; you are unable to enter any values that don't match the query conditions.


Toolbars page (Preferences or Toolbar Preferences dialog box)

See also

Use this dialog box to display other Toolbars instead of or in addition to the standard Toolbar for each Paradox window.

To display this dialog box, do one of the following:

Choose View|Toolbars.

Choose Edit|Preferences, then choose the tab for the Toolbars page.

Right-click the background area of a Toolbar, choose Properties, then click the Toolbar tab.

Dialog box options

Toolbars

Indicates which Toolbars to display. Certain Toolbars are only available in certain windows. For example, the Object Toolbar only appears as a separate Toolbar when you are in the Form Design window.

Standard

When checked, displays the Standard Toolbar for each window.

Global

Displays the Global Toolbar, with a button to open each type of Paradox object and save appropriate objects.

Text Formatting

Displays the Text Formatting Toolbar with buttons for formatting text data.

Object

In the Form Design window, displays the Object Toolbar, with tools for applying OLE controls and native Windows controls.

Align

In the Form Design and Report Design windows, displays the Align Toolbar, with tools for aligning design objects.


Print File dialog box (forms)

See also

Use the Print File dialog box to specify printing options for forms.

To open this dialog box, choose File|Print, or choose the Print button on the Standard Toolbar.

Dialog box options

Print

Choose All or type in a page range. (If you have only one page, ignore this.)

To print pages in reverse order, type the higher number in the From box and the lower number in the To box.

Choose the number to print on the first page (the number you want to start printing from).

Note:	Form pages won't be numbered unless you put the special Page Number, and/or Number of Pages fields on each page.

Copies

Type in the number of copies you want.

Collate

Make sure Collate is checked if you want multiple copies collated into sets. (If your printer prints multiple copies separately, you do not need to check this check box.)


Print File dialog box (reports)
Print File dialog box (reports and tables)

See also

Use the Print File dialog box to set options for printing an entire report or table, or certain pages of a report or table.

After you set all options, choose OK. While sending the job to the printer, Paradox displays a dialog box with a Cancel button. Choose Cancel at any time to stop sending the report to the printer. Choosing Cancel does not cancel pages Paradox has already sent to the printer.

To open this dialog box, choose File|Print in a Report or Table window, or File|Print|Report in a Report Design window, or choose the Print button on the Standard Toolbar.

Dialog box options

Print

Choose All or type a page range.

To print pages in reverse order, type the higher number in the From box and the lower number in the To box.

To make the report page numbers begin with a number other than 1, type that number in the Number on First Page field.

Copies

Type the number of copies you want.

Collate

Make sure Collate is checked if you want multiple copies collated into sets. (If your printer prints multiple copies separately, you do not need to check this check box.)

Overflow Handling

Specify how to treat data that is too wide to fit on the printed page:

Clip To Page Width

Clips (trims) all data that does not fit across the page (within the margins).

Create Horizontal Overflow Page

Prints additional pages when necessary to fit all the data. Each of these pages immediately follows the page it extends.

Panel Vertically

If any page of the report needs an overflow page, a second page for each page of the report prints, regardless of how many pages have overflow data.


Printer Setup dialog box

In the Printer Setup dialog box, choose the printer you want from the list, or choose Modify Printer Setup to open the Windows Printer Properties dialog box for the currently selected printer. The Printer Properties dialog box allows you to configure the currently selected printer.

Then you can choose a different printer, or configure an existing printer differently. Choose Help to get detailed information on the Windows Printer Setup dialog box, or see your Windows documentation.


Answer page (Query Properties dialog box)

See also

Use the Answer page settings to specify the type of answer a query generates.

This dialog box page is available only when you have created or opened a valid query that could display an Answer table. To open this dialog box in the Query window, choose Query|Properties or click the Query Properties [image] Toolbar button. If you do not see this page in the Query Properties dialog box, either the query is invalid or does not produce an Answer table.

Dialog box options

Query Answer Type

Live Query View

Choose this button if you want the query to generate a live query view. For important information on how to use this option, see About live query views.

Answer Table

Choose this button if you want the query to generate an Answer table.

Table Type

Paradox/dBASE

Choose whether to save the Answer table as a Paradox or dBASE table.

Table Name

Lets you create a new results table instead of ANSWER.DB. Type the new table name in the text box. When you run the query, the result appears in a table with the new name, rather than ANSWER.DB. This named table is permanent; ANSWER.DB is a temporary table that is overwritten each time you run a query.

Or, you can keep the name ANSWER.DB and type another path name in the box. When you save ANSWER.DB to a directory other than your private directory, Paradox does not delete it when you exit the program. (NOTE: While you can change the path, renaming ANSWER.DB is preferable.)

Caution:	If the path you type already contains an Answer table, Paradox will overwrite this with no warning when you run the query.

Browse

Displays the Save File As dialog box, where you can choose a path and name for the results table specified in Table Name.


QBE page (Query Properties dialog box)

See also

Use the QBE page settings to specify how to handle queries against remote tables (SQL tables) and whether to generate auxiliary tables for queries that change data.

To open this dialog box page in the Query window, choose Query|Properties or click the Query Properties [image] Toolbar button, then click the QBE tab.

Dialog box options

Queries Against Remote Tables

These options apply only to queries of remote data on SQL servers. Running queries locally is slower, but might be necessary [image] for example, if you're querying joined tables from more than one server.

Query May Be Local Or Remote

Choose this button to make Paradox attempt to run the query remotely (as described below). If this fails, Paradox runs the query locally (as described below).

Run Query Remotely

Choose this button to make Paradox request that the server run the query and send back only the answer data.

Run Query Locally

Choose this button to make Paradox run the query locally. This means that Paradox

1.	Requests all data in queried tables from the server.

2.	Runs the query on your computer system.

Auxiliary Table Option

Choose one of the following buttons to affect the way Paradox runs queries that change data (INSERT, DELETE, and CHANGETO queries). Creating auxiliary tables is slower than running a query without creating them, but they can be useful if you want to undo a query. For more information, see Setting auxiliary table properties.

Fast Queries (No Auxiliary Tables)

Choose this button to keep Paradox from generating auxiliary tables when running queries that change data. Because Paradox does not create the Inserted, Deleted, and Changed tables, the query is performed faster.

Generate Auxiliary Tables

Choose this button to make Paradox create auxiliary tables when running queries that change data. These tables are stored in your private directory by default.


Sort page (Query Properties dialog box)

See also

Use the Sort page to sort the Answer table before you run a query.

This dialog box page is available only when you have created or opened a valid query that could display an Answer table. To open this dialog box in the Query window, choose Query|Properties or click the Query Properties [image] Toolbar button, then click the Sort tab. If you do not see this page in the Query Properties dialog box, either the query is invalid or does not produce an Answer table.

Dialog box options

Answer Fields

Lists the fields that will appear in the Answer table.

Sort Order

Lists the fields you select to sort by.

Add Field Arrow

Moves selected fields from the Answer Fields list to the Sort Order list. Add the fields in the order to sort the Answer table by. Or use the Change Order arrows to change the order.

Remove Field Arrow

Removes a selected field from the Sort Order list.

Change Order Arrows

Change the order of the fields in the Sort Order list. Select a field, then click the appropriate arrow to move it up or down in the list. Or, drag the fields to the desired position.

Clear All

Removes all fields from the Sort Order list and returns them to the Answer Fields list.


SQL page (Query Properties dialog box)

See also

Use the SQL page settings to specify how to handle queries against remote tables (SQL tables), whether to generate auxiliary tables for queries that change data, and whether to limit data entered in live query views to values that are "legal" for the current query selection conditions.

To open this dialog box page in the SQL Editor window, choose SQL|Properties or click the Query Properties Toolbar button, then click the SQL tab.

Dialog box options

Queries Against Remote Tables

These options apply only to queries of remote data (tables that you access using Borland SQL Link).  Running queries locally is slower, but might be necessary [image] for example, if you're querying joined tables from more than one server.

Query May Be Local Or Remote

Choose this button to make Paradox attempt to run the query remotely (as described below). If this fails, Paradox runs the query locally (as described below).

Run Query Remotely

Choose this button to make Paradox request that the server run the query and send back only the answer data.

Run Query Locally

Choose this radio button to make Paradox run the query locally. This means that Paradox

1.	Requests all data in queried tables from the server.

2.	Runs the query on your Desktop system.

Auxiliary Table Option

Choose one of the following buttons to affect the way Paradox runs queries that change data (INSERT, DELETE, and CHANGETO queries).

Fast Queries (No Auxiliary Tables)

Choose this radio to make Paradox not create auxiliary tables when running queries that change data. Because Paradox does not create the Inserted, Deleted, and Changed tables, the query is performed faster.

Generate Auxiliary Tables

Choose this radio button to make Paradox create auxiliary tables when running queries that change data.

Constraints

Controls the update of SQL tables from live query views.

Constrained Updates

When checked, you are only able to update an SQL table in a live query view with values that meet the selection conditions for the query; you are unable to enter any values that don't match the query conditions.


Structure page (Query Properties dialog box)

See also

Use the Structure page to determine the order of fields in the Answer table before you run a query.

This dialog box is available only when you have created or opened a valid query that could display an Answer table. To open this dialog box page in the Query window, choose Query|Properties or click the Query Properties [image] Toolbar button, then click the Structure tab. If you do not see this page in the Query Properties dialog box, either the query is invalid or does not produce an Answer table.

Dialog box options

Answer Fields

Lists the fields that will appear in the Answer table.

Change Order Arrows

Change the order of the fields in the Sort Order list. Select a field, then click the appropriate arrow to move it up or down in the list. Or, drag the fields up and down to reorder them.

Undo

Restores the previous order in the Answer Fields list.


Referential Integrity dialog box

See also

Use the Referential Integrity dialog box to define a referential relationship between two tables. First select a field from the table you are creating or restructuring (the child table), then select a table containing all valid values for your selected field (the parent table).

For a list of referential integrity tasks, click See also.

To open this dialog box, choose Referential Integrity from the Table Properties list of the Create Paradox Table or the Restructure Paradox Table dialog box, and then choose the Define button.

Dialog box options

Fields

The Fields list displays all the fields from the referential integrity child table. Memo, formatted memo, graphic, binary, OLE, logical, autoincrement, BCD and bytes fields are dimmed in the Fields list, because you cannot create referential integrity from these field types.

Add Field arrow

Choose the referential integrity child field; then click the Add Field arrow or press Alt+A. The field appears in the Child Fields box.

If you choose a field that is not the same logical type as the parent's key field, Paradox displays a message on the status bar, and doesn't add the field. In most cases, this means the field types must be identical; however, autoincrement and long integer are of the same logical type.

Child Fields

Displays the fields you select from the Fields list.

Parent's Key

Displays the fields in the referential integrity parent's key.

Add Field arrow

Choose the referential integrity parent table in the Table list; then click the Add Field arrow. The parent table's key appears in the Parent's Key box.

You must choose a table with a key that is the same logical type as the field in the Child Fields box.

Table

Paradox displays tables from the working directory in the Table list. Choose the referential integrity parent table and click the Add Field arrow.

Remove Field arrow

To remove a field from the diagram, select the field, then click the Remove Field arrow or press Alt+R.

Update Rule

Paradox provides two update rules for tables that use referential integrity. Update rules specify what happens when a user tries to update or delete data in a parent table that has dependent records in a child table.

Prohibit

Prohibit specifies that you cannot change or delete a value in the parent's key if there are records that match the value in the child table.

For example, if the value 1356 exists in the Customer No field of Orders, you cannot change that value in the Customer No field of Customer. (You can change it in Customer only if you first delete or change all records in Orders that contain it). If, however, the value doesn't exist in any records of the child table, you can change the parent table.

Cascade

Cascade specifies that any change you make to the value in the key of the parent table is automatically made in the child table. If you delete a value in the key of the parent table, dependent records in the child table are also deleted. Cascade is the default update rule for Paradox.

To cascade an update across tables, Paradox must place a lock on the target table. If the lock is denied (because another user has already placed a lock), Paradox cannot perform the cascade update.

If you are working with SQL tables, the availability of cascading updates and deletes varies according to the table type and software version.

Strict Referential Integrity

Choose Strict Referential Integrity to protect your data from being corrupted by earlier versions of Paradox (the default). Strict Referential Integrity specifies that Paradox for DOS cannot access a table on which you've defined referential integrity.

Suppose you use a version of Paradox for DOS to open a Paradox for Windows table that uses referential integrity. You could add data that violates the referential integrity, because the version of Paradox you're using doesn't recognize the referential integrity. To prevent versions of Paradox for DOS from opening the table, check the Strict Referential Integrity check box.


Rename dialog box (tables)

See also

Use the Rename dialog box to give the table you are viewing a different name. This dialog will also rename the associated files such as the indexes.

To open this dialog box, choose Table|Rename in a Table window.

Dialog box options

From

Shows the name of the table to be renamed.

To

Type the name you want to give the table.

When you click OK, Paradox renames the table.


Rename dialog box (objects)

See also

Use the Rename dialog box to give a file a different name. You can rename tables, forms, reports, queries, scripts, libraries, SQL files, data models, text files, and style sheets from within Paradox.

Note:	Do not try to rename tables using the DOS RENAME command or the Windows Explorer.

To open this dialog box, choose Tools|Utilities|Rename, or right-click the object's name in the Project Viewer and choose Rename from its menu.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can rename.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Rename <file name> To dialog box

See also

Use this dialog box to specify a file name and directory for the destination file in a file renaming operation.

To display this dialog box, right-click a file name in the Project Viewer and choose Rename or use Tools|Utilities|Rename and choose OK in the Rename dialog box.

Dialog box options

Save In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory where you want to save the file. All files of the selected type in that directory appear in the file list below the Save In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Save In drop-down list and its files appear in the graphics list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to save or select one from the list box below the Save In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Save As Type drop-down list.

Save As Type

Displays the types of files you can save.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Save In drop-down list and the tables in that directory appear in the file list.


Restart Options dialog box

See also

When you run a report on shared data, you run the risk of reporting on changing data. For example, if you print a report on the Customer table while another user is editing the table, your report might be out of date by the time it prints.

To open this dialog box, choose Report|Restart Options in the Report Design window.

Dialog box options

Restart Report If Data Changes

Starts the report over, regenerating any queries if someone makes a change to the table you're reporting on. Use this option when you want to get the latest data but do not want to lock other users out of the table. This is the default restart option for Paradox tables.

This option is not available for reports bound to dBASE tables.

Lock Tables To Prevent Data Change

Locks all other users out of the tables used by the report while the report is running. Paradox releases the lock as soon as the printing is complete. If a lock cannot be put on a table, Paradox stops the report.

Lock And Copy Tables, Run From Copies

Locks all other users out, copies to disk all tables needed for the report, then releases the locks and runs the report using the copies of the tables. Paradox locks the tables just long enough to copy them. Paradox deletes the copied tables as soon as the printing is complete.

Use this option to lock tables for the shortest possible time. This option holds the lock for less time than the previous option, because copying tables to disk is usually quicker than running the report.

Make sure you have enough memory to create a copy of the table.

Ignore Data Changes And Continue

Keeps running the report even if someone changes the data while it is running. The changes won't be reflected in the report until you close it and open it again. This is the fastest option and works well for rough reports where having the latest information is not a concern.

This is the default restart option for dBASE tables.


Restructure dBASE Table dialog box

See also

Use the Restructure dBASE Table dialog box to specify the structure of a dBASE table.

This dialog box has two main panels: Field Roster and Table Properties. You can move between them using the keyboard: Use the Super Tab key (F4) to move from Field Roster to Table Properties; to return, press Shift+Tab.

To open this dialog box, do one of the following:

Right-click a table icon in the Project Viewer and choose Restructure from the menu.

From the Table window, choose Table|Restructure.

From the Desktop, choose Tools|Utilities|Restructure, then specify the table name in the Select File dialog box.

Before restructuring a table, make sure no forms or reports that use the table in their data model are running. If you or any other user (in a multiuser environment) have such a document running, you will not be able to restructure the table.

Dialog box options

Field Roster

Use the Field Roster to specify the fields of a table. You can add, delete, or rename fields, and change field types and sizes.

To insert a field between two existing fields in the Field Roster, select a field and press Ins. Paradox opens a blank row above the selected field.

To delete a field from the Field Roster, select it and press Ctrl+Del. Paradox deletes the entire row.

The order in which fields are listed in the Field Roster is the order in which the fields appear in the table. To change the field order, click the row number of the field and drag it to a new position.

Field Name

Specifies the name of the field. See Rules for dBASE field names for more information. This is a required field.

Type

Specifies the type of the field. Right-click the Type column or press the Spacebar to display a list of field types. See dBASE field types and sizes for more information. This is a required field.

Size

Specifies the size of the field. See dBASE field types and sizes for more information. This is a required field for certain field types.

Dec

Specifies the number of decimal places for number or float fields.

Table Properties

In the Table Properties panel you can specify the following:

Indexes

Creates an index on the current field in the field roster. See About dBASE indexes for more information.

Choose Indexes, then choose Define to open the Define Index dialog box.

Table Language

Specifies the language driver. See About table language drivers for more information.

Choose Table Language, then choose Modify to open the Table Language dialog box.

Pack Table

When Pack Table is checked, Paradox deletes records that you have marked for deletion.

Record Lock

Contains information about records locked by other users.

Info Size

Specifies whether to keep track of record locking information in a multiuser environment. When you check Info Size, Paradox adds a hidden field to the table that shows when a record was locked and by whom.

The amount of information you see when you encounter a locked field depends on the Info Size you specify. The default size is 16 characters. You can choose a size from 8 to 24 from the Info Size drop-down list box. See dBASE Record Lock fields for more information.

Save

Overwrites the old structure with the new structure. If the restructure could cause data loss, the Restructure Warning dialog box opens, where you can tell Paradox what to do about the problem.

Save As

Saves the table you are creating and closes the Restructure dBASE Table dialog box. Choose Save As to open the Save Table As dialog box, where you type a name for your new table. You can save the table in the current directory or another one.


Restructure INFORMIX Table dialog box

See also

Use the Restructure INFORMIX Table dialog box to modify the indexes of an existing Informix table.

To open this dialog box, choose one of the following:

Table|Restructure in a Table window, to restructure the current table

Tools|Utilities|Restructure, then specify the table name in the Select File dialog box

Dialog box options

Field Roster

The Field Roster panel (on the left), specifies the fields of a table. You cannot modify fields of SQL tables.

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. You cannot change whether a field of an SQL table is required.

List of Indexes

The panel on the right lists existing indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.


Restructure INTRBASE Table dialog box

See also

Use the Restructure INTRBASE Table dialog box to modify the indexes of an existing InterBase table.

To open this dialog box, choose one of the following:

Table|Restructure in a Table window, to restructure the current table

Tools|Utilities|Restructure, then specify the table name in the Select File dialog box

Dialog box options

Field Roster

The Field Roster panel (on the left), specifies the fields of a table. You cannot modify fields of SQL tables.

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. You cannot change whether a field of an SQL table is required.

List of Indexes

The panel on the right lists existing indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.


Restructure ORACLE Table dialog box

See also

Use the Restructure ORACLE Table dialog box to modify the indexes of an existing Oracle table.

To open this dialog box, choose one of the following:

Table|Restructure in a Table window, to restructure the current table

Tools|Utilities|Restructure, then specify the table name in the Select File dialog box

Dialog box options

Field Roster

The Field Roster panel (on the left), specifies the fields of a table. You cannot modify fields of SQL tables.

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. You cannot change whether a field of an SQL table is required.

List of Indexes

The panel on the right lists existing indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.


Restructure Paradox Table dialog box

See also

Use the Restructure Paradox Table dialog box to specify the structure of a Paradox table.

This dialog box has two main panels: Field Roster and Table Properties. You can move between them using the keyboard: Use the Super Tab key (F4) to move from Field Roster to Table Properties; to return, press Shift+Tab.

Before restructuring a table, make sure no forms or reports that use the table in their data model are running. If you or any other user (in a multiuser environment) have such a document running, you will not be able to restructure the table.

To open this dialog box, do one of the following:

Right-click a table icon in the Project Viewer and choose Restructure from the menu.

From the Table window, choose Table|Restructure.

From the Desktop, choose Tools|Utilities|Restructure, then specify the table name in the Select File dialog box.

Dialog box options

Field Roster

Use the Field Roster to specify the fields of a table. You can add, delete, or rename fields, and change field types and sizes.

To insert a field between two existing fields in the Field Roster, select a field and press Ins. Paradox opens a blank row above the selected field.

To delete a field from the Field Roster, select it and press Ctrl+Del. Paradox deletes the entire row.

The order in which fields are listed in the Field Roster is the order in which the fields appear in the table. To change the field order, click the row number of the field and drag it to a new position.

Field Name

Specifies the name of the field. See Rules for Paradox field names for more information. This is a required field.

Type

Specifies the type of the field. Right-click the Type column or press the Spacebar to display a list of field types. See Paradox field types and sizes for more information. This is a required field.

Size

Specifies the size of the field. See Paradox field types and sizes for more information. This is a required field for certain field types.

Key

Specifies whether the field is a key field. The table type determines rules for Paradox key fields. See About primary indexes (key fields) for more information.

Table Properties

In the Table Properties panel you can specify the following:

Validity Checks

Specifies requirements and defaults for a field. You must have a valid entry selected in the Field Roster area to specify validity check information. For more information about validity checks, see About validity checks.

You can specify the following types of validity checks:

Required Field: Specifies that the selected field in the Field Roster is a required field. When a field is required, you must enter a value in the field for every record in the table. See About required fields for more information.

Minimum: Specifies a minimum value for the selected field in the Field Roster. When a field has a minimum validity check, the values entered in the field must be greater than or equal to the minimum you specify here. See About minimum and maximum values for more information.

Maximum: Specifies a maximum value for the selected field in the Field Roster. When a field has a maximum validity check, the values entered in the field must be less than or equal to the maximum you specify here. See About minimum and maximum values for more information.

Default: Specifies a default value for the selected field in the Field Roster. When a field has a default validity check, Paradox enters the value you specify here if you do not enter another value when you edit this field. See About default values for more information.

Picture: Restricts the types of information you can enter in a field. When a field has a picture validity check, You specify a character string as a template for the values that can be entered into this field. See About pictures for more information.

Assist: Opens the Picture Assistance dialog box, where you can select or modify a predefined string to use as a picture.

Table Lookup

Specifies a lookup table for the current field in the Field Roster. A lookup table is another table that contains values that are valid for the current field. See About table lookups for more information.

Choose Table Lookup, then choose Define to open the Table Lookup dialog box.

Secondary Indexes

Creates a secondary index on the current field in the field roster. A secondary index lets you sort data in an order different from the key field, and lets you form links between tables. See About secondary indexes for more information.

Choose Secondary Indexes, then choose Define to open the Define Secondary Index dialog box.

Referential Integrity

Creates a referential integrity relationship between a field or group of fields and the key field in another table. A referential integrity relationship ensures that ties between like data in separate tables cannot be broken. See About referential integrity for more information.

Chose Referential Integrity, then choose Define to open the Referential Integrity dialog box.

Password Security

Creates passwords to protect your tables from unauthorized access. See About password security for more information.

Choose Password Security, then choose Define to open the Password Security dialog box.

Table Language

Specifies the language driver. See About table language drivers for more information.

Choose Table Language, then choose Modify to open the Table Language dialog box.

Dependent Tables

Displays all tables that depend on the current table for referential integrity.

Pack Table

Check to reuse disk space left over from deleting records. Some restructure operations automatically pack the table. Check this check box to be sure that Paradox packs the table when you choose Save or Save As.

Save

Overwrites the old structure with the new structure. If the restructure could cause data loss, the Restructure Warning dialog box opens, where you can tell Paradox what to do about the problem.

Save As

Saves the table you are creating and closes the Restructure Paradox Table dialog box. Choose Save As to open the Save Table As dialog box, where you type a name for your new table. You can save the table in the current directory or another one.


Restructure SYBASE Table dialog box

See also

Use the Restructure SYBASE Table dialog box to modify the indexes of an existing Sybase table.

To open this dialog box, choose one of the following:

Table|Restructure in a Table window, to restructure the current table

Tools|Utilities|Restructure, then specify the table name in the Select File dialog box

Dialog box options

Field Roster

The Field Roster panel (on the left), specifies the fields of a table. You cannot modify fields of SQL tables.

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. You cannot change whether a field of an SQL table is required.

List of Indexes

The panel on the right lists existing indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.


Restructure Table dialog box (other SQL)

See also

Use the Restructure Table dialog box to modify the indexes of an existing SQL table.

To open this dialog box, choose one of the following:

Table|Restructure in a Table window, to restructure the current table

Tools|Utilities|Restructure, then specify the table name in the Select File dialog box

Dialog box options

Field Roster

The Field Roster panel (on the left), specifies the fields of a table. You cannot modify fields of SQL tables.

Required Field

The Required Field check box (in the panel on the right) specifies whether the selected field is required. You cannot change whether a field of an SQL table is required.

List of Indexes

The panel on the right lists existing indexes for the table. You can add indexes, modify existing indexes, and erase indexes.

Define Index	Choose Define Index to create an index. Paradox opens the Define Index dialog box.

Modify Index	Choose Modify Index to change the selected index. Paradox opens the Define Index dialog box.

Erase Index	Choose Erase Index to remove the selected index. Paradox erases the index.


Restructure Warning dialog box

See also

When you restructure a table, you often make changes that could result in a loss of data. Changes such as shortening field sizes, creating validity checks, or changing field types can cause existing data to become invalid. Whenever this happens, Paradox opens the Restructure Warning dialog box when you leave the Restructure Table dialog box. Choose any of the following options to answer that data handling question the same way for every restructured field. Otherwise, you will be asked to answer these questions repetitively.

Dialog Box Options

Field Trim

Choose how Paradox treats data in fields.

Trim All Fields

Truncates all data that does not fit in the new field, without asking for confirmation on each field.

Trim No Fields

Extracts all records containing data that exceed the new maximum length of the shortened field, and saves these records in a Problems table.

Skip confirmation for each deleted field

When this is checked, Paradox deletes fields without asking for confirmation for each one.

Validity Checks

Check this, then choose whether or not to apply validity checks to existing data:

Apply to Existing Data

When this is checked, any existing data that does not meet the conditions of new validity checks is written to the Keyviol table. You can change the records in Keyviol, and then add them back to the table using Tools|Utilities|Add. (Note: Paradox does not apply a Picture validity check to existing data.)

Do not apply

When this is checked, Paradox does not enforce the new validity checks on existing data.


Save Export Specification As dialog box

See also

Use the Save Export Specification As dialog box to save specifications for importing a fixed length text file.

To open this dialog box, choose Save Spec in the To Fields page of the Export Data dialog box.

Dialog box options

Save In

By default, Paradox saves tables to the working directory. To choose another directory, use this drop-down list to browse until you reach the directory. All files of the appropriate type in that directory appear in the table list below the Save In drop-down list.

If the directory has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Save In drop-down list and its files appear in the table list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the specifications table or select one from the list box below the Save In drop-down list. You don't need to type an extension; Paradox recognizes the type of file based on the table type you chose in the Files Of Type drop-down list.

Files Of Type

Displays the type of table you are saving.

Alias

If the directory has an alias, you can select it in the Alias list box. The name of the selected directory appears in the Save In drop-down list and the tables in that directory appear in the table list.


Save File As dialog box

See also

Use the Save File As dialog box to save a file under another name or to copy data to a file.

Dialog box options

Save In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory. All files of the selected type in that directory appear in the file list below the Save In drop-down list.

If the directory has an alias, choose it in the Alias list box. The name of the directory appears in the Look In drop-down list and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to save or select one from the list box below the Save In list. You don't need to type an extension; Paradox recognizes the type of file based on the type shown in the Save As Type drop-down list.

Save As Type

Displays the types of files you can save.

Alias

If the directory has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Save In drop-down list and the files in that directory appear in the file list.


Save Import Specification As dialog box

See also

Use the Save Import Specification As dialog box to save field specifications for importing a fixed length text file.

To open this dialog box, choose Save Spec in the From Fields page of the Import Data dialog box.

Dialog box options

Save In

By default, Paradox saves tables to the working directory. To choose another directory, use this drop-down list to browse until you reach the directory. All files of the appropriate type in that directory appear in the table list below the Save In drop-down list.

If the directory has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Save In drop-down list and its files appear in the table list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the specifications table or select one from the list box below the Save In drop-down list. You don't need to type an extension; Paradox recognizes the type of file based on the table type you chose in the Files Of Type drop-down list.

Files Of Type

Displays the type of table you are saving.

Alias

If the directory has an alias, you can select it in the Alias list box. The name of the selected directory appears in the Save In list box and the tables in that directory appear in the table list.


Save Index As dialog box (dBASE tables)

See also

Use the Save Index As dialog box to specify a file name or tag name for your dBASE table index.

To open this dialog box, choose OK in the Define Index dialog box.

Dialog box options

Index File Name

If you have specified a nonmaintained index, the Index File Name text box is available. If you have specified a single-field index, Paradox enters the field's name as the file name. If you have specified an expression index, enter the name to assign to it. Paradox saves the index with the .NDX extension.

Index Tag Name

If you have specified a maintained index, the Index Tag Name text box is available. Enter a name to give the index. This name appears in the Create Table (or Restructure Table) dialog box below the Define button. Paradox creates a file using the table's name and the .MDX extension to store all maintained indexes.


Save Index As dialog box (Paradox tables)

See also

Use the Save Index As dialog box to name and save a composite or case-insensitive secondary index you have constructed in the Define Secondary Index dialog box.

To open this dialog box, choose OK in the Define Secondary Index dialog box after defining a composite or case-insensitive secondary index.

The Save Index As dialog box appears only when you create an index that is not case-sensitive or not based on a single field. You cannot give such an index the name of a field as its name.

Dialog box options

Index Name

The name you type in this dialog box appears only in the Secondary Index list in the Create Table or Restructure Table dialog box. A secondary index name can be up to 25 characters and include any printable character except: tab, carriage return, line feed, , comma, *, >, <, =, [ ], |, +, ?, : (colon), and \.

Paradox automatically names single-field, case-sensitive indexes with the field's name and warns you if you are overwriting an existing index.


Save Index as dialog box (SQL tables)

See also

Use the Save Index As dialog box to name and save an index.

To open this dialog box, choose OK in the Define Index or Define Secondary Index dialog box after defining the index.

Dialog box options

Index Name

The name of the index.

For SQL tables other than Sybase, Paradox supplies the prefix "<table>_" for the index name. This prefixes the index name with the table name to ensure that the index name is unique within the database, as described in Creating indexes on SQL tables.


Save Referential Integrity As dialog box

See also

Use the Save Referential Integrity As dialog box to name and save a relationship you constructed in the Referential Integrity dialog box. Paradox saves referential integrity definitions in a file with the table's name and the .VAL file extension when you save the table's structure.

For a list of referential integrity tasks, click See also.

To open this dialog box, choose OK in the Referential Integrity dialog box.

Dialog box options

Referential Integrity Name

Type the name to give the referential integrity relationship. Referential integrity names can be up to 31 printable characters and require no file extension. When you choose OK, the Referential Integrity dialog box is closed, and the referential integrity name appears in the list area below the Define button in the Create Table (or Restructure Table) dialog box.

The name you type in this dialog box appears only in the Referential Integrity list in the Create Table dialog box or the Restructure Table dialog box. When you complete all restructures, the referential integrity relationship is saved in a .VAL file of the same name as your table in the working directory.


Save Table As dialog box

See also

Use the Save Table As dialog box to save a new table, or to save a restructured table under a new name, leaving your original table intact.

When you restructure a table, you should use Save As when you are not sure what some of the potential problems, key violations, or trimming options might do to your data. If you like the new table, you can delete the old one or use Tools|Utilities|Rename to rename the new table and overwrite the old.

To open this dialog box, choose Save As in the Create Table or Restructure Table dialog box.

Dialog box options

Save In

By default, Paradox saves tables to the working directory. To choose another directory, use this list box to browse until you reach the directory. All files of the appropriate type in that directory appear in the table list below the Save In drop-down list.

If the directory has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Save In list box and its files appear in the table list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the table or select one from the list box below the Save In drop-down list. You don't need to type an extension; Paradox recognizes the type of file based on the table type you chose in the Create Table dialog box.

Save As Type

Displays the type of table you are saving.

Alias

If the directory has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Save In drop-down list and the tables in that directory appear in the table list.

Options

Display Table

Check to open the new table after you save it.

Add Data to New Table

Check this to add to the new table as much data from the old structure as is applicable to the new structure. This option is available only when you are restructuring tables.


Select Alias dialog box

See also

Use the Select Alias dialog box to choose an alias for the remote database to send your SQL query to. Paradox displays the aliases you created in the Alias Manager dialog box. Select an alias from the drop-down list box and choose OK.

To execute the SQL statement, choose SQL|Run SQL or press F8. You can also click the Run SQL button on the Toolbar [image].

To create an alias for the remote database, choose Tools|Alias Manager.


Select Borrow Table dialog box

See also

Uses the structure of an existing table as a template for the table you are creating. You can borrow the structure, and then modify it for your new table.

Dialog box options

Look In

By default, Paradox looks for a source table in the working directory. To choose another directory, use this list box to browse until you reach the directory. All files of the appropriate type in that directory appear in the table list below the Look In drop-down list.

If the directory has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In drop-down list and its files appear in the table list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the table or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file based on the table type you chose to create in the Create Table dialog box.

Files of Type

Displays the type of table structure you can borrow, based on the type of table you specified earlier in the Create Table dialog box.

Alias

If the directory has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the tables in that directory appear in the table list.

Options

The options you can borrow vary according to the type of table you are creating.

Paradox

Primary Index

Check to borrow the primary index from the source Paradox table.

Validity Checks

Check to borrow the validity checks from the source Paradox table.

Lookup Table

Check to borrow the lookup table assignments from fields in the source Paradox table.

Secondary Indexes

Check to borrow the secondary indexes from the source Paradox table.

Referential Integrity

Check to borrow the referential integrity relationships from fields in the source Paradox table.

dBASE

Indexes

Check to borrow the indexes from the source dBASE table.


Select Built-In Methods For Tracing dialog box
Select Built-in Event Methods For Tracing dialog box

See also

Use the Select Built-In Event Methods For Tracing dialog box to display all of the built-in event methods. Checking a built-in method in this dialog box traces that method whether or not it has any ObjectPAL code attached to it.

Select All

Checks all of the methods.

Select None

Unchecks all of the methods.`

When the box labeled Form Prefilter (the last box) is checked, methods are traced as they execute for the form and the intended target object; otherwise, methods are traced only for the target object.


Select File dialog box

See also

Use the Select File dialog box to specify a file.

This dialog box opens in several situations; for example, if you are pasting from a text file into a memo field.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can use for the operation you are performing.

Alias

If the directory has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Select File dialog box (queries)

See also

Use the Select File dialog box to create new queries or add tables to a query you are editing.

When you first create a new query, you have the option to add individual tables, to copy an existing query, or to make a query with the same tables as one of your existing forms, reports, or data models.

Creating a query

Use this dialog box to create a query if you did one of the following before this dialog box appeared:

Chose File|New|Query

Right-clicked the Open Query [image] Toolbar button and chose New

See To create a query from a table for step-by-step instructions on creating a query.

Adding tables to a query

Use this dialog box to add tables to a query if you did one of the following before this dialog box appeared:

Chose Edit|Add Table

Clicked the Add Table [image] Toolbar button

See To add tables to a query for step-by-step instructions on adding tables to a query.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory. All files of the selected type in that directory appear in the list below the Look In drop-down list. You can use Ctrl+click to select more than one file in the file list.

If the directory has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can use for the operation you are performing. You can choose tables, forms, or other queries.

Alias

If the directory has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Select/Create/Change Date Format dialog box

See also

Use the Select Date Format dialog box to select, create, or change date formats. Paradox adds the newly defined format to the list of existing date formats. You can then apply the new format to a date field.

Note:	Where applicable, you can right-click the format options to get the default Windows Short Date or Long Date settings. These are established by the Windows Control Panel.

To open this dialog box, right-click a date field, choose Properties, then choose Format. When you choose Create New Format, this dialog box appears.

Dialog box options

Date Format

Use these options to customize the date format:

Weekday

Specify how to display the day of the week [image] as a full word or an abbreviation. (Weekday is dimmed until you specify to display weekdays using the %W in the Order text box.)

Day

Specify whether to display the day value with or without a leading zero.

Month

Specify whether the month value should be spelled out as a word, abbreviated, or indicated by a number.

Year

Specify whether to display four digits of the year or just the last two.

Era

Check to specify values for BC and AD dates. Enter the values in the BC and AD text boxes. To display the era, you must put the %E symbol in the Order text box.

Order

Specify the order in which to display the weekday (%W), day (%D), month (%M), year (%Y), and era (%E) values. (The percent signs indicate variables.) Delete a value if you don't want that part of a date to appear, or type in a string, that you do want included in the date format. For example, type in commas or parentheses.

Case

If you have specified to display words, rather than numbers, for months and weekdays, click the Case check box to choose

Mixed: Initial uppercase format

Lower: All lowercase letters

Example area

Refer to this area as you make your selections for an example of how your format will look.

Operation:

Name

Specify an existing date format or type in a name for your custom date format.

Note: An easy way to define a new format is to select an existing one similar to what you want (from the Existing Formats box), choose Create, make changes, then change the name of the format before you choose OK.

You can name custom formats for number, money, date, time, timestamp, and logical fields. You must give each format a unique name, regardless of the data type it applies to. For example, you cannot give a number format and a date format the same name.

Permanent

Check to save the date format permanently so you can use it in format menus and dialog boxes whenever you use Paradox. (Paradox saves the format in the Windows registry.)

If Permanent is unchecked, the format is available only in the file (table view, form, or report) from which you specified it.

Create

Choose Create to open a Name text box where you can type in a name for your custom date format. When you click Create, the dialog box title changes to Create Date Format.

Change

Choose Change to modify a custom date format.

Note:	You can change only those formats you have created. The Change button is dimmed when you choose an existing format, which cannot be changed.

Delete

Choose Delete to delete a custom date format.

Note:	You can delete only those formats you have created. The Delete button is dimmed when you choose an existing format, which cannot be deleted.

Add Format

Choose Add Format if you are finished with one format, but want to stay in the dialog box to work on another. This adds your custom date format to the Existing Formats list. (Check Permanent to save the format beyond the current session.)

Existing Formats:

Specify an existing date format here. Its name appears in the Name text box. See Predefined date formats for more information on the choices in this list box.


Select/Create/Change Logical Format dialog box

See also

Use the Select Logical Format dialog box to select, create, or change logical formats. Paradox adds the newly defined format to the list of existing logical formats. You can then apply the new format to a logical field.

To open this dialog box, right-click a logical field, choose Properties, then choose Format. When you choose Create New Format, this dialog box appears.

Dialog box options

Logical Format

Use these options to customize the logical format:

True

Type the value to represent True. (For example, type full).

False

Type the value to represent False. (For example, type empty).

Operation:

Name

Specify an existing logical format or type in a name for your custom set in the Name text box.

Note: An easy way to define a new format is to select an existing one similar to one you want (from the Existing Formats box), click Create or Change to make changes, then change the name of the format here before you choose OK.

You can name custom formats for number, money, date, time, timestamp, and logical fields. You must give each format a unique name, regardless of the data type it applies to. For example, you cannot give a number format and a date format the same name.

Permanent

Check to save the logical format permanently so you can use it in format menus and dialog boxes whenever you use Paradox. (Paradox saves the format in the Windows registry.)

If Permanent is unchecked, the format is available only in the file (table view, form, or report) from which you specified it.

Create

Choose Create to open a Name text box where you can type in a name for your custom logical format. When you click Create, the dialog box title changes to Create Logical Format.

Change

Choose Change to modify a custom logical format. The Change button is dimmed when you choose an existing format, which cannot be changed.

Delete

Choose Delete to delete a custom logical format. The Delete button is dimmed when you choose an existing format, which cannot be changed.

Add Format

Choose Add Format if you are finished with one format, but want to stay in the dialog box to work on another. This adds your custom logical format to the Existing Formats list. (Check Permanent to save the format beyond the current session.)

Existing Formats:

Specify an existing logical format. Its name appears in the Name text box. See Predefined logical formats for more information on the choices in this list box.


Select/Create/Change Number Format dialog box

See also

Use the Select Number Format dialog box to select, create, or change number formats. Paradox adds the newly defined format to the list of existing number formats. You can then apply the new format to a number field.

Note:	Where applicable, you can right-click the format options to get the default Windows Number or Money settings. These are established by your Windows Control Panel.

To open this dialog box, right-click a number field, choose Properties, then choose Format. When you choose Create New Format, this dialog box appears.

Dialog box options

Number Format

Use these options to customize the number format:

Decimals

Choose the number of decimal places to display to the right of the decimal point. You can display up to 15 decimal places. Type in or select from the drop-down list the number of places to display.

Decimal Point

Choose how to display a decimal point. Choose period (.) or comma (,), or type in a character.

Thousand Separator

Choose how to display a thousand separator. Choose comma (,), period (.), or space, or type in a character.

Symbol

Choose the type of symbol to display with the number. Available symbols include $, inch, lb, kg, cm, and mi. Define your own symbol by typing it in the Symbol text box.

Spacing

Use Spacing to place a space between the number and the symbol that precedes it. You can specify a space between the symbol and the number for all positive values, for all negative values, for all values, or for none. Select your choice from the drop-down list.

The Spacing option is available only if you've chosen a symbol.

Positive

Use Positive to display a plus sign (+) for positive numbers. The drop-down list gives several options for where the plus sign appears.

Negative

Use Negative to display an indicator with all negative numbers. You can indicate that a number is negative using a minus sign (-) or parentheses. The drop-down list gives several options for where the minus sign or parentheses appears.

Leading Zeros

Use Leading Zeros to specify the number of digits to display before the decimal place. For example, if you enter the number 466 in a field that has Leading Zeros set to four, Paradox displays the number 0466 when you move off the field.

If you enter the number 03031 in a number field with less than five leading zeros, Paradox displays the number 3031. Using a number format with five leading zeros, however, ensures that Paradox displays the initial zero in the five-digit number. This is useful if you plan on storing zip codes in number fields.

Scale

Use Scale to multiply the number by a given power of 10. If, for example, you enter 3 in the Scale text box, you'll see the example number multiplied by 1000. Choose a negative value to divide the number by a given power of 10.

Scientific Notation

Check Scientific Notation to display the number in scientific notation format.

Show Trailing Zeros

Check Show Trailing Zeros to display digits to the right of the decimal point even when they are zero. This means that numbers with no decimal value will display as many zeros after the decimal point as you've specified in the Decimals box.

Operation:

Name

Specify an existing format or type in a name for your custom number format.

Note: An easy way to define a new format is to select an existing one similar to another one (from the Existing Formats box), click Create or Change to make changes, then change the name of the format here before you choose OK.

You can name custom formats for number, money, date, time, timestamp, and logical fields. You must give each format a unique name, regardless of the data type it applies to. For example, you cannot give a number format and a date format the same name.

Permanent

Check to save the number format permanently so you can use it in format menus and dialog boxes whenever you use Paradox. (Paradox saves the format in the Windows registry.)

If Permanent is unchecked, the format is available only in the .TV file (or saved form or report) from which you specified it.

Create

Choose Create to open the Name text box where you can type in a name for your custom number format. When you click Create, the dialog box title changes to Create Number Format.

Change

Choose Change to modify a custom number format. Note: You can change only those formats you have created. The Change button is dimmed when you choose an existing format, which cannot be changed.

Delete

Choose Delete to delete a custom number format. Note: You can delete only those formats you have created. The Delete button is dimmed when you choose an existing format, which cannot be deleted.

Add Format

Choose Add Format if you are finished with one format, but want to stay in the dialog box to work on another. This adds your custom number format to the Existing Formats list. (Check Permanent to save the format beyond the current session.)

Existing Formats:

Specify an existing number format here. Its name appears in the Name text box. See Predefined number and money formats for more information on the choices in this list box.

Example area

Refer to this area as you make your selections for an example of how your format will look.


Select/Create/Change Time Format dialog box

See also

Use the Select Time Format dialog box to select, create, or change your time formats. Paradox adds the newly defined format to the list of existing time formats. You can then apply the new format to a time field.

Note:	Where applicable, you can right-click the format options to get the default Windows Time setting. This is established by your Windows Control Panel.

To open this dialog box, right-click a Time field, choose Properties, then choose Format. When you choose Create New Format, this dialog box appears.

Dialog box options

Time Format

Use these options to customize the time format:

Leading Zero

Check the Hour, Minute, or Second check box to display a zero in front of single-digit values. This makes the time line up in a table column.

Time System

Specify a 12 Hour or a 24 Hour time system. If you choose 12 Hour, you can specify the values for Paradox to display as AM and PM.

AM/PM

Choose AM or PM to specify which values to display for a 12-hour clock.

Order

Specify the order in which the time components [image] hour (%H), minute (%M), second (%S), and AM/PM indicator (%N) [image] should appear. (The percent signs indicate variables.) Delete a value to exclude that part of the time, or type a value to include it in the time format.

Example area

Refer to this area as you make your selections for an example of how your format will look.

Operation:

Name

Specify an existing time format or type in a name for your custom time format.

Note: An easy way to define a new format is to select an existing one similar to what you want (from the Existing Formats box), make changes, then change the name of the format before you choose OK.

You can name custom formats for number, money, date, time, timestamp, and logical fields. You must give each format a unique name, regardless of the data type it applies to. For example, you cannot give a number format and a date format the same name.

Permanent

Check to save the time format permanently so you can use it in format menus and dialog boxes whenever you use Paradox. (Paradox saves the format in the Windows registry.)

If Permanent is unchecked, the format is available only in the file (table view, form, or report) from which you specified it.

Create

Choose Create to open a Name text box where you can type in a name for your custom time format. When you click Create, the dialog box title changes to Create Time Format.

Change

Choose Change to modify a custom time format.

Note:	You can change only those formats you have created. The Change button is dimmed when you choose an existing format, which cannot be changed.

Delete

Choose Delete to delete a custom time format.

Note:	You can delete only those formats you have created. The Delete button is dimmed when you choose an existing format, that cannot be deleted.

Add Format

Choose Add Format to add your custom time format to the Existing Formats list.

Existing Formats:

Specify an existing time format. Its name appears in the Name text box. See Predefined time formats for more information on the choices in this list box.


Select/Create/Change Timestamp Format dialog box

See also

Use the Select Timestamp Format dialog box to select, create, or change your timestamp formats. Paradox adds the newly defined format to the list of existing timestamp formats. You can then apply the new format to a timestamp field.

Note:	Where applicable, you can right-click the format options to get the default Windows Timestamp setting. This is established by your Windows Control Panel.

To open this dialog box, right-click a Timestamp field, choose Properties, then choose Format. When you choose Create New Format, this dialog box appears.

Dialog box options

Time Format

Use these options to customize the time format:

Leading Zero

Check the Hour, Minute, or Second check box to display a zero in front of single-digit values. This makes the time line up in a table column.

Time System

Specify a 12 Hour or a 24 Hour time system. If you choose 12 Hour, you can specify the values for Paradox to display as AM and PM.

AM/PM

Choose AM or PM to specify which values to display for a 12-hour clock.

Order

Specify the order in which the time components [image] hour (%H), minute (%M), second (%S), and AM/PM indicator (%N) [image] should appear. (The percent signs indicate variables.) Delete a value to exclude that part of the time, or type a value to include it in the time format.

Date Format:

Use these options to customize the date format:

Weekday

Specify how to display the day of the week [image] as a full word or an abbreviation. (Weekday is dimmed until you specify to display weekdays using the %W in the Order text box.)

Day

Specify whether to display the day value with or without a leading zero.

Month

Specify whether the month value should be spelled out as a word, abbreviated, or indicated by a number.

Year

Specify whether to display four digits of the year or just the last two.

Era

Check to specify values for BC and AD dates. Enter the values in the BC and AD text boxes. To display the era, you must put the %E symbol in the Order text box.

Order

Specify the order in which to display the weekday (%W), day (%D), month (%M), year (%Y), and era (%E) values. (The percent signs indicate variables.) Delete a value if you don't want that part of a date to appear, or type in a string, that you do want included in the date format. For example, type in commas or parentheses.

Case

If you have specified to display words, rather than numbers, for months and weekdays, click the Case check box to choose

Mixed: Initial uppercase format

Lower: All lowercase letters

Existing Formats:

Specify an existing timestamp format here. Its name appears in the Name text box. See Predefined timestamp formats for more information on the choices in this list box.

Operation:

Name

Specify an existing timestamp format or type in a name for your custom format.

Note: An easy way to define a new format is to select an existing one similar to what you want (from the Existing Formats box), make the modifications, then change the name of the format here before you choose OK.

You can name custom formats for number, money, date, time, timestamp, and logical fields. You must give each format a unique name, regardless of the data type it applies to. For example, you cannot give a number format and a date format the same name.

Permanent

Check to save the timestamp format permanently so you can use it in format menus and dialog boxes whenever you use Paradox. (Paradox saves the format in the Windows registry.)

If Permanent is unchecked, the format is available only in the file (table view, form, or report) from which you specified it.

Create

Choose Create to open a Name text box where you can type in a name for your custom timestamp format. When you click Create, the dialog box title changes to Create Timestamp Format.

Change

Choose Change to modify a custom timestamp format. Note: You can change only those formats you have created. The Change button is dimmed when you choose an existing format, which cannot be changed.

Delete

Choose Delete to delete a custom timestamp format. Note: You can delete only those formats you have created. The Delete button is dimmed when you choose an existing format, which cannot be deleted.

Add Format

Choose Add Format to add your custom timestamp format to the Existing Formats list.

Example area

Refer to this area as you make your selections for an example of how your format will look.


Set Range For Index dialog box

See also

Use the Set Range for Index dialog box to specify a range of records to see in a table or form.

Note:	The primary and more powerful way to filter a form is to use the filter capabilities available directly from the Filter Tables dialog box.

To open this dialog box, choose Range from the Filter Tables dialog box.

Dialog box options

Index

Displays the table index selected from the Filter Tables dialog box.

Field Values

To display only those records whose value matches exactly the value you specify, enter the value in the text box in the Field Values area. For example, if you have an index on the Country field of the Customer table, and you enter Canada as the value to match, Paradox displays only those records of the table with Canada as the Country value.

Set Range

When Set Range is checked, another text box opens so you can define the range of values to display. Enter the low value in the top text box and the high value in the bottom text box. Paradox does not recognize blanks as part of a match or range specification.

Match Partial Strings

If you only care about matching the beginning letters of a string use Match Partial Strings (for, example, if you want all names beginning with letters A to G). (Match Partial Strings is hidden until you check Set Range, and is available only if the table's index field is alpha.)

To match partial strings, check Set Range and enter low and high values. Then check Match Partial Strings to tell Paradox you do not care what the full field value is, as long as it falls within that range. Paradox looks for the strings you enter in the range value text boxes and ignores any following characters in the string.

For example, if you type AX in the first box and CZ in the second box, Paradox looks for all strings whose first two letters are AX to CZ. Axminster is included, but Allen is not. Likewise, Bloom and Czech are included but Dailey is not.

Note:	Range cannot be saved as a table property, but can be saved as part of a form's design.


Sort Record Band dialog box

See also

Use the Sort Record Band dialog box to indicate how to sort the records in a report. The sorting is done after sorting that results from any group bands.

To open this dialog box, right-click a record band and choose Sort.

Dialog box options

Fields

Select the fields to add or to remove from the Sort Order list:

Places a selected field in the Sort Order list (keyboard shortcut: Alt+A)

Removes a selected field from the Sort Order list (keyboard shortcut: Alt+R)

You do not have to put all the fields from the Fields list in the Sort Order list.

Note:	Paradox cannot sort on BLOB, BCD, logical, or bytes fields. That's why these fields are unavailable in the Fields list.

Sort Order

To move a selected field up or down in the Sort Order, click the Up arrow  [image]  or Down arrow  [image]  below the list.

The default sort order is ascending, indicated by a + in front of the field name in the Sort Order. To change to descending, double-click the field name or click the Sort Direction button; + changes to -, indicating descending sort order.

Sort Direction

Click the Sort Direction button to switch between ascending and descending sort order for the selected field in the Sort Order list.


Sort Table dialog box

See also

Use the Sort Table dialog box to sort a table.

You cannot sort SQL tables.

To open this dialog box, choose Table|Sort or Tools|Utilities|Sort.

Dialog box options

Fields

Select the fields to add or remove to the Sort Order list. All fields from the table are listed.

Sorted Table

Use these options to specify how to sort a table.

Same Table

The sort overwrites the existing sort order of the table. Keep the following in mind:

Same Table is available only if you are sorting an unkeyed table. Sorting a keyed table to the same table would conflict with the primary index established by the key, which Paradox does not allow.

If you sort the table to itself, you can cannot have any forms or reports that use the table in their data model open in View Data mode. You can have queries and forms and reports that use the table in their data model open as long as the forms and reports are open in a design window.

New Table

The sort creates a new table. Type the name of the new table in the text box that appears when you choose this option.

If you enter the name of an existing table, Paradox prompts you to confirm overwriting the existing table.

If you overwrite an existing table, you must close all windows that include that table's data before you perform the sort. You can cannot have any forms or reports that use the table in their data model open and in View Data mode. You can have queries and forms and reports that use the table in their data model open as long as the forms and reports are open in Design mode.

Sort Just Selected Fields

When you check this option, Paradox sorts only on the fields that appear in the Sort Order list. All the fields of the source table are included in the resulting sorted table, but they are not sorted beyond the fields listed in the Sort Order list.

If two or more records have identical values in these fields, Paradox cannot sort those records and places them in the table as a group, but unsorted within the group.

When you do not check this option, Paradox performs the sort first on the fields in the Sort Order List, then [image] if there are two or more records with identical values in their sorted fields [image] on the fields remaining in the Fields List (in the order in which they appear).

Display Sorted Table

Check this option to see the results of the sort immediately. Paradox opens the sorted table when you close the dialog box.

Fields

Select the fields to remove or add to the Sort Order:

Places a selected field on the Sort Order (keyboard shortcut: Alt+A).

Takes a selected field off the Sort Order (keyboard shortcut: Alt+R)

You do not have to put all the fields from the Fields list in the Sort Order list. Paradox adds the rest to the end of the list before performing the sort (unless Sort Just Selected Fields is checked).

A field is dimmed when you add it to the Sort Order list.

Note:	Paradox cannot sort on BLOB, BCD, logical, or bytes fields. These fields are unavailable in Fields.

Clear All

Removes all fields from the Sort Order list, making those fields available again in the Fields list.

Sort Order

Displays fields to include in the sort.

Sort Direction

Switches between ascending and descending sort order for the selected field in the Sort Order list.

The default sort order is ascending, indicated by a + in front of the field name in the Sort Order. To change to descending, double-click the field name or click the Sort Direction button; + changes to -, indicating descending sort order.

Change Order

Changes the order of the fields in the Sort Order list. To move a selected field up or down in the Sort Order, click the Up arrow  [image]  or Down arrow  [image]  below the list.


Structure Information dialog box

See also

Use the Structure Information dialog box to get information about a table's structure or to save that structure information to a table.

For Paradox tables, the Structure Information dialog box shows you validity checks, table lookups, secondary indexes, referential integrity, table language, and dependent tables.

For dBASE tables, the Structure Information dialog box shows you indexes and table language.

For SQL tables, the Structure Information dialog box shows you indexes and whether each field is required.

You cannot change the table structure from this dialog box. To change the table structure, choose Table|Restructure or Tools|Utilities|Restructure.

To open this dialog box, do any of the following:

Right-click the table in the Project Viewer and choose Info Structure from the menu.

Choose Tools|Utilities|Info Structure.

Choose Table|Info Structure in the Table window.

Dialog box options

Field Roster

The table's fields and field types are shown in the Field Roster.

Field Name

Specifies the name of the field.

Type

Specifies the type of the field. See Paradox field types and sizes for more information.

Size

Specifies the size of the field. See Paradox field types and sizes for more information.

Key

Specifies whether the field is a key field. See About primary indexes (key fields) for more information.

Table Properties

Use the Table Properties drop-down list to view information about the table. This list is available only for local tables. If you view a dBASE table, the Table Properties drop-down list shows only the table indexes and table language.

Validity Checks

Shows each field's defined validity checks. Move through the fields in the Field Roster to see each one's validity checks.

Table Lookup

Shows any tables that this table uses as a lookup table.

Secondary Indexes

Shows all the table's secondary indexes.

Referential Integrity

Shows whether this table refers to a parent table for valid data.

Table Language

Shows the table's language driver.

Dependent Tables

Shows any table that uses this table as a parent table for valid data.

Indexes

Shows a dBASE table's indexes.

Required Field

Shows whether this field is required to have a value in every record.

Detail Info

Select an index and choose Detail Info to see information about the index. This option is available only when you choose Secondary Indexes or Indexes in the Table Properties drop-down list.

Save As

Choose Save As to create a table that shows the structure information for the table you are working with. The structure table's fields correspond to the settings in the Structure Information dialog box. The structure table does not include information about secondary indexes, table language, and referential integrity.


Style Sheet dialog box

See also

Use this dialog box to

Associate a style sheet with a design document

Save changes you have made to design tools

Select a style sheet and choose OK to apply a style sheet, or choose Save to save changes you've made to design tools.

To open this dialog box, choose Form|Style Sheet or Report|Style Sheet. In the Form Design window, you can also right-click the form title bar and choose Style Sheet. See About style sheets for information on style sheets.

Dialog box options

Current Style Sheet

Choose the style sheet to associate with the form or report. The extension of the style sheet (.FT or .FP) depends on whether your design document is designed for the screen, or designed for the printer.

Save

Choose this button to save to the selected style sheet any changes you have made to design tools.

Save As

Choose this button to create a new style sheet based on the current style sheet and any changes you have made to design tools. Paradox opens the Save File As dialog box.


Subtract Records In dialog box

See also

Use the Subtract Records In dialog box to subtract the records in one table from those in another. Records are looked up and subtracted from the second table based on key value. The Subtract Records In dialog box indicates the table to subtract from another table.

To open this dialog box, choose Tools|Utilities|Subtract.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can use for the subtraction operation you are performing.

Alias

If the directory has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Subtract Records In <table> From dialog box

See also

Use the Subtract Records In <table> From dialog box to subtract the records in one table from those in another.

To open this dialog box, either choose OK in the Subtract Records In dialog box, or, in the Project Viewer, right-click the icon of the table to subtract from another table and choose Subtract from its menu.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to subtract records from or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files you can use for the subtraction operation you are performing.

Alias

If the directory has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Table Language dialog box

See also

Use the Table Language dialog box to override the default table language driver you set using the BDE Configuration Utility.

To open this dialog box, choose Table Language in the Table Properties panel of the Create Table or the Restructure Table dialog box, then choose Modify.

Dialog box options

Language

Choose a different language from the Language drop-down list. Each selection corresponds to a different set of language properties, including the available character set, language sort order, and upper/lower case handling.


Table Locks dialog box

See also

Use the Table Locks dialog box to see what kind of lock you have placed on a table.

For more information on table locks, see Effects of locking from the Desktop.

To open this dialog box, choose Tools|Set Locks from the Desktop.

Dialog box options

Table Name

Type the table name or select one from the list.

File Type

Displays the type of file you are working with (tables).

Directories and Drive (Or Alias)

Select a drive or alias from the Drive (Or Alias) drop-down list, then select a directory from the Directories list box. The list box to the left of these fields displays the tables in the directory you select.

Locks

Paradox shows the level of lock you have placed on the table:

No Lock

You have placed no Desktop-level locks on the table. Select No Lock to unlock a table you have locked.

Open Lock

Paradox places this lock whenever you open a table. This prevents others from putting an exclusive lock on the table before you actually start editing. They can still put a write lock on it, so you would not be able to read (view) the table.

Read Lock

You can read (view) and write to (edit) the table. All other users with sufficient rights can read [image] they can view data [image] but are locked from writing to the table.

When you place a read lock on a table, no other user can place a lock on it that prevents you from reading it [image] your right to read is guaranteed.

Write Lock

You can read and write to the table. All other users can read but cannot write to the table.

Exclusive Lock

You have read and write access to the table, and no other users have any rights of any kind. You even protect the table name with an exclusive lock. No other user can create a table with the same name.

You can get an exclusive lock only if

No other user has placed an open, read, or write lock on the table.

No other user has any form of the table open. This includes forms, reports, and queries that use the table.


Table Lookup dialog box

See also

Use the Table Lookup dialog box to specify a lookup table for a field.

To open this dialog box, select the field to define a table lookup for in the Create or Restructure dialog box. In the Table Properties panel, choose Table Lookup and choose Define.

Dialog box options

Fields

Paradox displays the fields in your table. Select the field to specify a Table Lookup for, then click the Add arrow [image] above the list. The field name appears in the Field Name box.

Add Field arrow

Adds the selected field in the Fields list to the Field Name box and replaces the existing field.

Field Name

Shows the field you are specifying the table lookup for. Choose any available field in the Fields list.

Lookup Field

Shows the first field of the table you have specified as the lookup table. Choose any table in the Lookup Table list.

Add Field arrow

Adds the selected table in the Lookup Table list and places the first field of the selected table in the Lookup Field box.

Lookup Table

Paradox shows the tables in the current directory. (Use Browse to see tables in other directories.) Select the table to use as the lookup table, then choose the Add arrow [image] above the list. The name of the first field of that table appears in the Lookup Field box.

Lookup Type

Choose the type of table lookup:

Just Current Field

Only the current field gets its value from the lookup table, even if the current table and the lookup table have other fields in common.

All Corresponding Fields

All fields of the current table that correspond to fields in the lookup table take their values from the lookup table. Corresponding fields must have identical field names and compatible field types in both tables. Only the first field of the lookup table is used as part of the validity check.

For examples of these types, see:

Example of using Just Current Field with Fill No Help

Example of using Just Current Field with Help And Fill

Example of using All Corresponding Fields with Fill No Help

Example of using All Corresponding Fields with Help And Fill

Lookup Access

Choose the type of viewing access:

Fill No Help

You cannot view the lookup table from the table you are entering. You can view the lookup table by opening it in its own window.

Help and Fill

You can view the lookup table from the table you are editing.

Drive (or Alias)

Use the list to choose an alias or your private directory.

Browse

Choose Browse to see files in other directories in the Select File dialog box.


Table Name dialog box

See also

Use the Table Name dialog box to specify a table alias for a table in a data model, query, or SQL file.

To open this dialog box, choose the name of a table after right-clicking it in the Data Model dialog box or the Data Model Designer.

Name of Table

Type the table alias in this field. A table alias

Cannot contain blanks

Can be up to 32 characters in length

Avoid ending a table alias with a number. This is because Paradox automatically adds numbers to the end of table names used more than once in a data model. (You have to right-click the table to see this).

To remove a table alias, delete the text in this text box.


Object Toolbar page (Toolbar Properties dialog box)

See also

Use the Object Toolbar page to add a control to the Object Toolbar.

To open this dialog box, right-click the background area of a Toolbar, choose Properties, then click the Object Toolbar page.

A list of registered OLE controls and native Windows controls is displayed. Controls will not display in this box unless they are registered. To register a new OLE control, see To register an OLE control.

Dialog box options

Add Toolbar

Click Add Toolbar to add additional Object Toolbars as necessary. In the highlighted area of the list box, type in the name for the new Toolbar.

Add Control

Click Add Control to add a new, registered control to the selected toolbar. Select the control to add from the Insert Control dialog box.


(Edit) Watches dialog box

See also

Edit the name of the variable to watch and choose OK.

To open this dialog box, right-click the Watches window and choose Edit.


(New) Watches dialog box

See also

Type the name of the variable to watch and choose OK.

To open this dialog box, do one of the following:

Choose Program|Add Watch from the ObjectPAL Editor menu or from the Debugger.

Right-click the Watches window and choose New.


Navigation icons

To move up a level from the selected area, click the Up One Level icon.

To create a new folder in the current directory, click the Create New Folder icon. To name the new folder, type over the default name.

To show only folder names, click the List icon.

To show folder names plus details, click the Details icon.


Window Style dialog box

See also

The Window Style dialog box gives you advanced form-design options. You specify whether you want your form to appear as a window or as a dialog box, and set its title and border properties.

To see the changes after you finish, you must save the form and reopen it.

To open this dialog box, right-click the form’s title bar and choose Window Style, or choose Form|Window Style from the Form Design window.

Dialog box options

Some of these options require ObjectPAL methods attached to your form. See the Guide to ObjectPAL and the ObjectPAL Reference for details.

Window Style

Choose how you want the form to appear.

Window

Displays the form in a window (default). Windows are contained within the boundary of the Paradox Desktop.

Dialog Box

Displays the form in a dialog box. When a form is displayed as a dialog box,

It opens in the center of the screen.

It lies on top of normal windows.

It can be moved outside the Desktop.

It cannot be resized by the user.

Frame Properties

These options are available only if you check Dialog Box as your Window Style:

Dialog Frame

Displays the form in a normal Windows dialog box. The border, colors, and other settings are determined in the Windows Control Panel.

Border

Displays the form with a black border instead of the normal Windows style. If you do not check Dialog Frame or Border, the Dialog Box appears with no border.

Thick Frame

Displays the dialog box border as a thick black line.

Title Bar Properties

These options are available only if you check Dialog Box as your Window Style and Title Bar as a Window Property. They are placed automatically if you check Window as your Window Style:

Control Menu

Places the Control Menu in the top left corner of your dialog box.

Minimize Button

Places a Minimize button in the top right corner of your dialog box.

Maximize Button

Places a Maximize button in the top right corner of your dialog box.

Window Properties

Choose the window features you want the form to have:

Title

Type a window title. This title appears under the icon when users minimize the form. It also appears on the title bar if you check Title Bar, below. If you do not type anything here, Paradox uses the form name. To have a blank title bar, type a space in the Title text box.

Title Bar

Puts a title bar on your form. If you check Window as your Window Style, Title Bar is automatically enabled and cannot be turned off.

Vertical Scroll Bar

Displays a scroll bar on the right side of your form.

Horizontal Scroll Bar

Displays a scroll bar on the bottom of your form.

Size To Fit

If you check Size To Fit, Paradox opens the form in a window of the size specified in the Page Layout dialog box. If Size To Fit is unchecked, the form opens in the Windows default size. This option is always enabled if you check Dialog Box as your Window Style.

Modal

Prevents users from working anywhere else in Paradox until the form is closed. (Users can still work in other applications, however.) This option is available only if you check Dialog Box as your Window Style.

Mouse Activates

Mouse Activates is checked by default. If you check Dialog Box as your Window Style, you can uncheck this option to let users click the form to activate it without changing the focus to it.

For example, if you have created a personalized Toolbar and you want to use the tools on that Toolbar in your form, unchecking Mouse Activates will prevent Paradox from activating the Toolbar window every time users click one of its tools.

Note: Mouse Activates is always checked and unavailable for Window style or modal Dialog Box style.

Standard Menu

When this option is checked, any form displays the standard Paradox Form window menu when you are viewing data. Standard Menu is checked by default. It is available only if you check Window as your Window Style.

If you create a menu using ObjectPAL, and want your form to use it, uncheck Standard Menu. This applies mainly to multi-form applications.


File | Close

See also

Choose File|Close to close the active child window.


File | Deliver

See also

You can deliver forms and reports so the form can be used, but the code cannot be changed.

Forms

If you create a form for others to use and you just save it, others can enter a design window and change your form.

Choose File|Deliver to let others use your form (and the code attached to it) but not change it. When you deliver a form, Paradox removes all the source code from the form. Buttons and other objects still work exactly the way you have designed them. Your code is not lost; it is protected.

When you choose File|Deliver, Paradox saves a copy of the form with an .FDL extension. The D stands for Delivered. You can still change your form using the file with the .FSL extension, but if you want others to use it without changing it, give them the delivered form. A delivered form cannot be opened in a design window or toggled into a design window.

File|Deliver is used mainly by ObjectPAL developers.

Reports

Choose File|Deliver when you want to distribute a report and protect the report design from changes.

When you choose File|Deliver, Paradox creates a new file and gives it an .RDL extension (instead of the normal .RSL extension). Your original report remains intact. The .RDL file can be used to run or print the report, but Paradox prevents it from being opened in the Report Design window.

If someone tries to open an .RDL file in the Report Design window, Paradox displays a message saying that the report design cannot be edited.

If you need to change the report design later, modify the original .RSL file, then use File|Deliver again to create a new .RDL file.


File | Exit

See also

Choose File|Exit to leave Paradox and close the application.

If you have a window open that has not been saved, Paradox displays a dialog box asking if you want to save it. Choose

Yes	To save the file. Paradox opens the Save File As dialog box if you have not yet named and saved the file.

No	To exit without saving changes you made to the file.

Cancel	To close the dialog box and go back to what you were doing in Paradox.


File | Export

See also

Choose File|Export to export the data of a table to a different file format. Paradox opens the Export Table dialog box. You can also right-click the table's name in the Project Viewer and choose Export from the menu.


File | Import

See also

Choose File|Import to import the data from a different file format to a Paradox table. Using Import, you can transfer data easily from other applications to Paradox.

When you choose Import, you see the Import dialog box, where you tell Paradox the file format of the imported table. Paradox supports importing data from any of the file formats shown on the list.

Note:	You do not need to import Paradox or dBASE tables.


File | New

See also

Choose File|New to

Design a new table, form, report, or query

Write a new ObjectPAL script, library, or SQL file

Shortcut: Right-click the appropriate Project Viewer icon or Desktop Toolbar button and choose New.

  Form

Choose File|New|Form to design a form for viewing or editing data in one or more tables. For more information, see Forms.

 Library

Choose File|New|Library to create an ObjectPAL library. A library is a Paradox object that stores custom code. Libraries are useful for storing and maintaining frequently used routines, and for sharing custom methods and variables among several forms. When you choose File|New|Library, Paradox opens the Library window. Right-click the Library window, choose Object Explorer, and choose a method from the Object Explorer. For more information, see Libraries.

  Query

Choose File|New|Query to create a new QBE (Query by Example) query. The Select File dialog box opens, where you can choose the table you want to query. When you choose a table and choose Open, Paradox opens a Query window, where you specify your query criteria. Once in the Query window, you can add or remove tables with the Add Table and Remove Table Toolbar buttons. For more information, see Queries.

  SQL

Choose File|New|SQL File to create a new SQL (Structured Query Language) query script. SQL is the standard language for storing and manipulating data in relational databases. When you choose File|New|SQL File, Paradox opens the SQL Editor. You can use SQL locally with Paradox and dBase tables as well as with remote SQL databases like InterBase and Oracle. For more information, see SQL Editor.

  Report

Choose File|New|Report to create a report on one or more tables. For more information, see Reports.

  Script

Choose File|New|Script to write an ObjectPAL script. A standalone script is a form without a window or objects inside. When you choose File|New|Script, Paradox opens the ObjectPAL Editor window, where you type the code. You can edit the methods for a standalone script as you would for any other object. For more information, see Scripts.

  Table

Choose File|New|Table to create a table. The Create Table dialog box opens. Select the table type you want from the list box and choose OK. This takes you to the Create Table dialog box. For more information, see Tables.


File | Open

See also

Choose File|Open to

Work with a table, form, or report

View or run a query

View or run an SQL statement (if you have SQL Link installed)

Edit an ObjectPAL script or library

Shortcut: Right-click the appropriate Project Viewer icon and choose Open or click the appropriate Desktop Toolbar button.

  Form

When you choose File|Open|Form, you see the Open Document dialog box. Type the name of the form you want or select it from the list. Check View The Form or Edit The Form Design (to change the way it looks), then choose Open. Paradox opens the file in the Form or Form Design window.

You can also use these steps to create a report that uses a form as the basis for its design; just be sure to choose Open As A Report in the Open Document dialog box.

  Library

Choose File|Open|Library to view or edit an ObjectPAL library. A library is a Paradox object that stores custom code. Libraries are useful for storing and maintaining frequently used routines, and for sharing custom methods and variables among several forms. When you choose File|Open|Library, Paradox displays the Open Document dialog box, where you type the file to open or select it from the list. Paradox opens the Library window. Right-click the Library window, choose Object Explorer, and choose a method from the Object Explorer.

  Query

Choose File|Open|Query to open a QBE (Query by Example). In the Select File dialog box, type the name of the query you want or select it from the list. Check Run The Query or Edit The Query and choose Open. Paradox opens the file in the Query window.

  SQL

Choose File|Open|SQL File to open an SQL (Structured Query Language) script. SQL is the standard language for storing and manipulating data in relational databases. When you choose File|Open|SQL File, Paradox opens the SQL Editor. You can use SQL locally with Paradox and dBase tables as well as with remote SQL databases like InterBase and Oracle. For more information, see SQL Editor.

  Report

When you choose File|Open|Report, you see the Open Document dialog box. Type the name of the report you want or select it from the list. Check View The Report, Edit The Report, or Print The Report and choose Open. Paradox opens the file in the Report window or Report Design window, or prints it.

You can also use this option to create a form that looks like the record band of one of your reports; just be sure to choose Open As A Form in the Open Document dialog box.

 Script

Choose File|Open|Script to view or edit a standalone ObjectPAL script. A standalone script is a form without a window or objects inside. You can edit the methods for a standalone script as you would for any other object. When you choose File|Open|Script, Paradox displays the Open Document dialog box, where you type the file to open or select it from the list. If you check Run The Script, Paradox runs the script. If you choose Edit The Script, Paradox opens the file in the ObjectPAL Editor window.

  Table

Choose File|Open|Table to open the Open Document dialog box. Type the table name you want or select it from the list, then choose Open. Paradox opens the file in the Table window.


File | Print

See also

Use File|Print to print a table, form, report, SQL script, or ObjectPAL script. You cannot print from the Project Viewer or from the query designer.

(When you choose File|Print while a table or report is active, you first see a message that the file is being prepared.) Paradox opens the Print File dialog box. Choose the options you want. When you click OK, Paradox prints the file.

Note:	When you print a table, Paradox prints your preferred report. If there is no preferred report, Paradox creates a default report in a tabular format, using the table's name as a page header, and including page numbers and the current date. If your table includes very large memo fields, you might want to change to a preferred report of the single-record style. You can set up a preferred report when the table is open by selecting Table|Preferred Document|Report.

Choose File|Printer Setup to change printer options in the Windows Printer Setup dialog box.


File | Print | Design

See also

Use File|Print|Design to print a report design. This command is available only when a report in a design window is active.

When you choose File|Print|Design, the Print File dialog box opens. Specify how many copies you want. Since a report design is on one page, Paradox ignores the page range specification.


File | Print | Report

See also

Use File|Print|Report to print a report. This command is available only when a report in a design window is active.

When you choose File|Print|Report, an expanded Print File dialog box opens. Specify the pages and number of copies you want, whether you want copies collated, and how you want overflow handled.


File | Printer Setup

See also

Choose File|Printer Setup to change printer options.

In the Printer Setup dialog box, choose the printer you want from the list. To change the configuration or properties of the selected printer, choose Modify Printer Setup to open the Windows Printer Properties dialog box.

In the Document Properties dialog box, you can choose Help for detailed information on this dialog box or see your Windows documentation.


File | Save

See also

Use File|Save periodically to save the changes in your current Paradox file to disk.

Paradox does not prompt you for a file name, once you have named the file.

The application is written to the file you most recently specified using File|Open or File|Save As. You can see the name of the file in the title bar of the child window, or if the child is maximized, inside the Paradox Desktop in the title bar of Paradox.

Note:	Save and Save As are always dimmed in a Table window. This is because

Paradox automatically saves the data you enter as soon as you leave each record.

You save a table's property changes by choosing Table|Table View Properties|Save from the Table window.

You use Tools|Utilities|Copy or Tools|Utilities|Rename to copy or rename a table.


File | Save As

See also

Choose File|Save As to specify the file name and path where you want Paradox to save your current Paradox file to disk in a new file. Use File|Save As to save your changed application in a new file without overwriting the original file.

Paradox opens the Save File As dialog box, where you can specify file name and path.

Note:	Save and Save As are always dimmed in a Table window. This is because

Paradox automatically saves the data you enter as soon as you leave each record.

You save a table's property changes by choosing Table|Table View Properties|Save Properties from the Table window.

You use Tools|Utilities|Copy or Tools|Utilities|Rename to copy or rename a table.

To save a form or report, you must be in a design window (not viewing data).


File | Send Mail

See also

Use this command to send mail over an installed MAPI mail system. For more information, see About sending mail.


File | Working Directory

See also

Choose File|Working Directory to set your working directory. Setting a working directory is the easiest way to quickly get to a group of tables, forms, queries and other objects that are in the same directory. See About directories and aliases for more information.

Effects of changing your working directory

When you change your working directory,

You see different files in the Project Viewer and in dialog boxes when you choose File|Open.

Project aliases for that working directory become available, and those for the previous working directory become unavailable.

If you have any open tables, forms, reports, scripts, libraries, or SQL files, they close automatically. If they have been changed, you are prompted to save them.

Set Working Directory dialog box options

Working Directory

Enter the location (the full path) of your working directory or choose Browse to select another directory from the Directory Browser.

Browse

Choose Browse to look for a directory using the Directory Browser.

Aliases

Choose an alias from the list if you want to change the working directory to a directory that already has an alias.


Edit | Add Reference

See also

Choose Edit|Add Reference to add a reference to the Project Viewer. Paradox opens the Select File dialog box. Select the files for which you would like to add a reference and choose OK.

Shortcut

Toolbars


Edit | Add Table

See also

Choose Edit|Add Table to add a table to the Query window. When you choose Edit|Add Table, Paradox opens the Select File dialog box. Select the table or tables you want to add to the Query window and choose OK.

Shortcut

Toolbar


Edit | Copy

See also

Copies the selected text or objects onto the Clipboard. Edit|Copy does not delete anything from your document or query.

To paste the contents of the Clipboard into your document, use either

Edit|Paste

Shift+Ins

Paste button

The contents of the Clipboard are not deleted when you paste, so you can paste as many times as you want.

Shortcut key: Ctrl+Ins

In a form or report

You can copy any object. You can also copy multiple objects if they are all in the same container. If the form or report is running, you can cut only the contents of a field object.

Select the object or objects, then choose Edit|Copy, or use the Copy Toolbar button.

Note:	If you copy a report band, you do not copy the band itself, but all of its contents.

In queries

Use Edit|Copy on expressions and example elements.

In tables

Edit|Copy is available only in Edit mode.


Edit | Copy To

See also

Choose Edit|Copy To to copy binary, memo, formatted memo, and graphic values to non-Paradox files, without using the Export command.

In this window	You can copy to a file

Design	Graphic object and selected text in a text object

Form	Any field (including graphic). In Field View or Memo View, you can copy selected text inside the field

Table	A graphic field or a binary field. In Field View on a memo or formatted memo field, you can copy selected text

ObjectPAL Editor	Selected text

To copy a field's value to an external file,

1.	Select the field you want.

2.	Choose Edit|Copy To. Paradox opens the Copy To File dialog box (or the Copy to Graphic File dialog box if you are copying a graphic object or field).

3.	Enter the file name (including full path if necessary) and extension in the New File Name text box.

4.	Choose OK. Paradox creates a new file with the name you have specified and places the contents of the selected field in it.


Edit | Cut

See also

Removes selected text or objects and places them on the Clipboard.

You can then use the Paste button or choose Edit|Paste to paste the contents of the Clipboard into another file or somewhere else in the same file.

The contents of the Clipboard are not deleted when you paste, so you can paste as many times as you want.

To delete a selection without affecting the Clipboard contents, press Del or choose Edit|Delete.

Shortcut key: Shift+Del

In a form or report

You can cut any object that can be deleted. You can also cut multiple objects if they are all in the same container and can all be deleted. If the form or report is running, you can cut only the contents of a field object.

Select the object or objects, then choose Edit|Cut, press Shift+Del, or use the Cut Toolbar button.

Note:	If you cut a report band, you do not cut the band itself, but all of its contents.

In queries

Use Edit|Cut on selection conditions and example elements.

In tables

Edit|Cut is available only in Edit mode.

In Editor windows

Use Edit|Cut on statements and code.


Edit | Delete

See also

Deletes the selected text or object.

In this window	Edit|Delete removes the selected

Table or Form	Value in the current field(s)

Query	Example element or expression for a field

Design	Object

Note:	When you delete an object, all objects contained by it are deleted also. If a text object is active in a design window, Delete removes the selected text.

Shortcut key: Del


Edit | Developer Preferences

See also

Choose Edit|Developer Preferences to customize the ObjectPAL development environment (which includes the Editor, the Object Explorer, the ObjectPAL Quick Lookup, and the Form Design window).

The Developer Preferences dialog box contains the following pages:

General

Explorer

Editor

Display

Colors


Edit | Find And Replace

See also

Choose Edit|Find And Replace to search for a text string (a word or phrase) in a selected memo or formatted memo field or in a text object.

In this window	You can

Design	Search and replace in a text object.

Form	Search in any field except graphic, OLE, or binary. To replace, you must be in Edit mode unless the field is undefined.

Table	Search in memo or formatted memo fields. To replace, you must be in Edit mode.


Edit | Insert Object

See also

Choose Edit|Insert Object to insert an object in an OLE container. Edit|Insert Object is available only when an OLE container is selected. When you choose Edit|Insert Object, Paradox opens the Insert Objectdialog box.

Paradox provides OLE containers in two ways: as a field in a table and as a design object in a form or report.

Shortcuts

Mouse	For an OLE field in a table: with the table in Edit mode and Field View, right-click the OLE field and choose Insert Object.

Mouse	For an OLE field in a form bound to a table: with the form in Edit mode, right-click the OLE field and choose Insert Object.

Mouse	For an OLE design object: with the form or report in a design window, right-click the OLE field and choose Define OLE|Insert Object.


Edit | Links

See also

Choose Edit|Links to modify the links in OLE containers. Paradox opens the Edit Links dialog box.


Edit | <OLE command>

See also

Use this command to display a secondary menu that contains the OLE commands provided by an OLE server. This command is available only when an OLE container is selected.

Paradox provides OLE containers in two ways: as a field in a table and as a design object in a form or report.

The command that appears depends on the server for the object contained in the OLE container. For example, the OLE object contains a word processing document. The Edit|<OLE command> appears as Edit|<document object> or Edit|<linked document object>, depending on whether the object is embedded or linked. The secondary menu contains the commands Edit and Open, where Edit opens the document in place for editing and Open opens the document by launching the word processor.


Edit | Paste

See also

Inserts information previously put onto the Clipboard by Edit|Cut, Edit|Copy, or other applications.

The effects of Edit|Paste depend on which window is active and whether you are designing or viewing data.

The contents of the Clipboard are not deleted when you paste, so you can paste as many times as you want.

Shortcut key: Shift+Ins

In Table and Form windows

When in Field View, choose Edit|Paste to

Insert the contents of the Clipboard into a field at the insertion point.

Replace the selected contents of the current field with the contents of the Clipboard.

In queries

Choose Edit|Paste to insert the contents of the Clipboard into a query.

In Design windows

To copy objects from the Clipboard to a document, click where you want Paradox to put the upper left corner of the object, then either click the Paste button, press Shift+Ins, choose Edit|Paste, or right-click and choose Paste.

If an object on the document is selected, the Clipboard object is pasted into the selected object. This does not work if

The data relationships between the selected object and the Clipboard are not compatible.

The Clipboard object takes up too much space and does not fit.

The selected object cannot contain the type of object currently on the Clipboard.

When the Clipboard contains text, choose Edit|Paste to

Replace the contents of a selected text object (with handles)

Replace the selected text object that is active (no handles)

Insert the contents at the insertion point in an active text object (no handles)

When the Clipboard contains a graphic, choose Edit|Paste to replace the contents of a selected graphic.

When the Clipboard contains an OLE object, choose Edit|Paste to replace the contents of a selected OLE object.

When the Clipboard contains a page you have cut or copied from a form, choose Edit|Paste to place its contents before the selected page.

Note:	Objects bring their table references with them, and merge them into your document's data model. Objects that cannot be used in the document, such as buttons or crosstabs in a report, are deleted after pasting.


Edit | Paste From

See also

Choose Edit|Paste From to paste a value from an external file into a selected Paradox field or object. You can paste from .TXT, .BMP, .PCX, .TIF, .GIF, and .EPS files.

In this window	You can paste files into

Design	Graphic or text objects, or at the insertion point in a text object

Form	Any field except OLE and autoincrement fields (you must be in Edit mode unless the field is undefined)

Table	Memo or formatted memo fields (you must be in Edit mode and in Field View) or graphic fields (you must be in Edit mode)

To paste a value from an external file in a Paradox field,

1.	Select the Paradox field you want to paste into.

2.	Choose Edit|Paste From. Paradox opens the Paste From File dialog box (or the Paste from Graphic File dialog box if you are pasting into a graphic object or field).

3.	Enter the file name (including full path if necessary) and extension in the File Name box.

4.	Choose OK. Paradox places the contents of the file in the selected field.

In the Editor

Lets you specify a text file to paste into the current method at the insertion point.


Edit | Paste Link

See also

Choose Edit|Paste Link to

Create a linked duplicate of data entered through Dynamic Data Exchange (DDE), so that any change you make to the source is automatically made to the duplicate. Paste Link is available for linking data through DDE into a query or into a large alpha field in a table.

Insert a linked object in an OLE container. See About linked OLE objects for more information.


Edit | Preferences

See also

Choose Edit|Preferences to set your Paradox preferences in the following areas:

General

Forms/Report

Designer

Query

Toolbars

Experts

Advanced

Database

BDE

Note:	These settings affect the current and future Paradox work sessions and supply default settings for object properties. In general, property settings override preferences.


Edit | Remove Reference

See also

Choose Edit|Remove Reference to remove a reference from the Project Viewer. Paradox opens the Remove Reference From Project Viewer dialog box.

Note:	Removing a reference from the Project Viewer does not delete it. The file still exists and will still appear in list boxes.

Dialog box option

Remove

Shows all references for the current working directory. Select the references you want to remove from the Project Viewer, then choose OK.

Shortcut

Toolbar


Edit | Remove Table

See also

Choose Edit|Remove Table to remove one or more tables from the Query window. When you choose Edit|Remove Table, Paradox opens the Remove Table dialog box. Select the table you want to remove and choose OK.

You can remove only one table at a time.

Shortcut

Toolbar


Edit | Save Crosstab

See also

Choose Edit|Save Crosstab to save a crosstab to a table. Paradox opens the Save Crosstab Table As dialog box. This menu command is available only when running a form that contains a crosstab.

Save Crosstab Table As dialog box options

Save In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory where you want to save the file. All files of the selected type in that directory appear in the graphics list below the Save In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Save In drop-down list and its files appear in the graphics list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file to save or select one from the list box below the Save In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Save As Type drop-down list.

Save As Type

Displays the types of files you can save.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Save In drop-down list and the tables in that directory appear in the graphics list.


Edit | Select All

See also

In Table windows

Choose Select All to select all fields of a table (the entire table). Paradox places a box around the table. If you put a memo or formatted memo into memo view by pressing F2, choose Edit|Select All to select all text in the memo or formatted memo.

In Form windows

Choose Select All to select the entire field (when in Field View).

In Design windows

Choose Select All to select all the objects within the currently selected object(s).

If no object is selected, Select All selects all top-level design objects.

If one or more objects are selected, Select All selects all objects contained by the selected objects. If selected objects do not contain other objects, nothing is selected.

In the Editor

Selects all text in the active Editor window.


Edit | Undo

See also

Shortcut key: Alt+Backspace

In Table and Form windows

Choose Edit|Undo to undo all changes to all fields in the current record and unlock the current record. If the current record has not been changed, Edit|Undo does nothing. Because Paradox updates data as soon as you move off a record, you must use Undo before you leave the record.

To discard changes to a single field, press Esc before you leave the field. Paradox restores the original contents of the field.

Caution:	You cannot use Edit|Undo to retrieve a record you have deleted. Once you delete a record in a Paradox table, there is no way to get it back except to enter it again.

In Design windows

Choose Edit|Undo to undo the last operation (such as a move, delete, resize, align, or changed property).

Some operations cannot be undone using Undo:

The Clipboard actions Copy and Paste

Object creation

Bring To Front and Send to Back

Duplicate

You can undo these easily by hand.

In the Editor

Undoes your last edit.


Edit | Undo All Edits

See also

Discards all changes since the active Editor window was last saved or opened.


Edit | Block Type

See also

Specifies how you want selected code to be blocked:

By column (you can select multiple partial lines)

By entire line (one edge of the Editor window to the other)

By stream (from the first word you want to highlight, through the last word you want to highlight, without selecting the entire first and last lines).


Edit | Block Type | Column Block

See also

Choose Column Block when you want to select a block of code by columns. This enables you to select multiple partial lines.


Edit | Block Type | Line Block

See also

Choose Line Block when you want to select a block of code by entire lines (from one edge of the Editor window to the other).


Edit | Block Type | Stream Block

See also

Choose Stream Block when you want to select a block of code by stream; that is, you can start your selection at any place in a line without highlighting the entire line, and you can end your selection on the same line or another line without highlighting that entire line.


Edit | Indent Block

See also

Indents a selected block of code.


Edit | Outdent Block

See also

Outdents a selected block of code.


Edit | Playback Keystrokes

See also

Repeats the last keystrokes you recorded, beginning at the insertion point. You can play back the last recorded keystrokes as many times as you want.

This command is dimmed if you haven't recorded any keystrokes or if you have not stopped recording.


Edit | Record Keystrokes

See also

Choose Edit|Record Keystrokes to begin recording your keystrokes. Choose it again to stop recording.


Edit | Redo

See also

If you just used the Edit|Undo command, Edit|Redo restores what you just undid.


View | Band Labels

See also

Choose View|Band Labels to control the display of band labels in a report.

When Band Labels is checked on the View menu, Paradox displays labels for the bands in your report. Band Labels is checked by default.

Having band labels visible makes it easier to select and manipulate bands with the mouse. If you have any bands sized to zero height, you cannot see them unless band labels are visible.

To remove the labels, uncheck Band Labels on the View menu. The labels disappear, though the bands are still in place.

Turn off (uncheck) Band Labels to get a better idea of what the report will look like as you are designing it.


View | Breakpoints

See also

Opens the Breakpoints window, which lists the object name, method name, and line numbers of breakpoints, and lets you remove any or all breakpoints.


View | Call Stack

See also

Opens the Call Stack window, which lists the methods and procedures called since the form started running. The most recently called routine is listed first, followed by its caller, and so on, all the way back to the first method or procedure. This option is available only when execution stops at a breakpoint.


View | Cascade Tables

See also

Overlaps multiple table query images in the Query window.

Cascading maximizes the amount of information visible in the active query image while still showing the table names of other query images.


View | Data Model

See also

Opens the Data Model dialog box, where you can view or modify the data model for a form. The data model shows the tables your design document uses and their relationships to each other.

The Data Model Toolbar button is a quick way to open the Data Model dialog box.


View | Debugger

See also

Opens the Debugger. The Debugger lets you interactively test and trace execution of commands in your methods. Start the Debugger by setting breakpoints in your code and running or compiling the form.


View | Document Source

See also

Displays a report listing the source code in the current form, report, library, or script. Paradox stores the data in a table named PAL$SRC.DB in your private directory. This table contains each object's method or event name and its source.

To use this command, check Show Developer Menus on the General page of the Developer Preferences dialog box.


View | Expanded Ruler

See also

The expanded ruler displays editing and layout buttons for use with a text object. It is used in conjunction with the horizontal ruler.

View the expanded ruler one of the following ways:

Check View|Expanded Ruler in the form run-time window to display the expanded ruler when running a form.

Choose Form|Settings, and on the Designer page, check Expanded Ruler to display it in the current window.

To view the expanded ruler in a design window,

Check View|Ruler in the design window.

To specify which rulers display by default in the design window,

Choose Form|Settings, Report|Settings, or Edit|Preferences, and on the Designer page, check the rulers you want.

Using the buttons on the expanded ruler to lay out text in a text object, you can adjust

Alignment		Choose left, centered, right, or justified to align selected text.
Tabs		Select a Tab button, then click the object's shadow above the ruler to place the tab. Slide a tab to move it, or drag it off the ruler to remove it. Types of tabs available are right, left, center, and decimal.
Line Spacing		Click the line spacing you want for the selected text. Choose 1 for single-spaced text, 2 for double-spaced, and so on.
The expanded ruler applies only to a selected text object with the text insertion point flashing.


View | Field View

See also

Choose View|Field View to toggle in and out of Field View. When your table, form, or query is in Field View, the insertion point is blinking. Whatever you type is entered at the insertion point and does not overwrite the rest of the field.

Field View makes it possible to

Place the insertion point between characters in an alpha, number, money, date, or other non-BLOB field

Select part of a field instead of the whole entry

Use navigation keys (arrows, Home, End, and so on) to move within a field instead of the whole table, form, or query

Zoom memo, formatted memo, graphic, and OLE fields to the size of the Table window

Persistent Field View

Choose View|Persistent Field View to keep your table, form, or query in Field View.

Memo View

In forms, when the insertion point is on memo or formatted memo fields, use Memo View (press Shift+F2) instead of Field View if you want to use Tab and Enter as characters (otherwise, Tab and Enter move the insertion point out of the field).

Shortcuts (Entering Field View)

Toolbar

Keyboard	F2, Ctrl+F

Mouse	Click in the field after it has been selected.

Shortcuts (Leaving Field View)

Toolbar

Keyboard	F2, Ctrl+F

Mouse	Click another field


View | Grid

See also

Choose View|Grid to see the grid in the Form Design or Report Design window.

When you check Grid, Paradox displays major grid lines and minor grid ticks.

View|Grid lets you see the grid to help you line things up by eye, or to see where objects are snapping if you have checked Design|Snap To Grid.

To change the grid setting, choose Form|Settings or Report|Settings to change the grid settings.

Tip:	In the Report Design window, if the grid is visible, you can right-click a band and choose Move Grid To Band to reorient the grid at the top left corner of the selected band.


View | Horizontal Ruler

See also

View the horizontal ruler one of the following ways:

Check View|Horizontal Ruler in the form run-time window to view the horizontal ruler when running a form.

Choose Form|Settings, and on the Designer page, check the rulers you want to display in the current window.

To view the horizontal ruler in a design window,

Check View|Ruler in the design window.

To specify which rulers display by default in the design window,

Choose Form|Settings, Report|Settings, or Edit|Preferences, and on the Designer page, check the rulers you want.

In the Form Design and Report Design windows, the ruler shows a shadow of the selected objects. You can use this ruler to align objects.

Units on the ruler can be inches or centimeters. To change the units, or the mesh of the grid, choose Form/Report|Settings, or Edit|Preferences and change the grid settings on the Designer page.

To remove the ruler, choose Horizontal Ruler on the View menu again.


View | Memo View

See also

Memo View is a type of Field View used for editing data in a memo field.

Shortcut key: Shift+F2

In forms, when the insertion point is on memo or formatted memo fields, use Memo View instead of Field View if you want to use Tab and Enter as characters (otherwise, Tab and Enter move the insertion point out of the field).


View | ObjectPAL Quick Lookup

See also

Opens a tabbed dialog box listing

All object types and their methods and procedures

Objects and their properties

ObjectPAL constants

Use this dialog box as a quick reference to the ObjectPAL language and to insert elements of the language into your code.


View | Open Current Item

See also

Choose View|Open Current Item to perform the default action for the object selected in the Project Viewer. See About the Project Viewer for more information.

Tip:	You can change the default action for forms and reports. See Forms/Reports Preferences Dialog Box for more information.

Shortcut

Mouse	Double-click the object


View | Persistent Field View

See also

Choose View|Persistent Field View to keep your table, form, or query in Field View. When your table, form, or query is in Field View, the insertion point is blinking. Whatever you type is entered at the insertion point and does not overwrite the rest of the field.

Shortcut key: Ctrl+F2

Field View makes it possible to

Place the insertion point between characters in an alpha, number, money, date, or other non-BLOB field

Select part of a field instead of the whole entry

Use navigation keys (arrows, Home, End, and so on) to move within a field instead of the whole table, form, or query

Zoom memo, formatted memo, graphic, and OLE fields to the size of the Table window

Field View

Choose View|Field View to put your table, form, or query into Field View until you move the insertion point to another field or field object.

Note:	Persistent Field View does not automatically open Memo View for memos, formatted memos, graphics, and OLE fields.


View | Ruler

See also

Check View|Ruler to display rulers in the design window. Uncheck View|Ruler to hide the rulers. To choose which rulers appear when View|Ruler is checked, choose Form|Settings or Report|Settings, and check the rulers you want displayed.

To set the default rulers for the design windows, choose Edit|Preferences and check the rulers to display on the Designer page.


View | Show Only References

See also

Check View|Show Only References to make the Project Viewer display only those objects for which you have created references.


View | Size And Position

See also

Check this command to display in the status bar the size and position of design objects as you create or resize them.


View | Table View

See also

Choose View|Table View to see a window displaying the master table for your form.

Shortcut key: F7

View|Table View is available when you view or edit data in a Form window.

 When you are viewing data in a Form window, you can toggle to a Table window by

Clicking the Table View Toolbar button

Choosing View|Table View

Pressing F7

Use the scroll bars to view any data not on the screen.

To leave the Table window and return to the Form window, either click the Quick Form Toolbar button, choose Tools|Quick Form, or press F7.


View | Tile Tables

See also

Choose View|Tile Tables to arrange multiple table query images in the Query window without overlapping.

Tiling shows you the same amount of each query image at once. This is the default arrangement.


View | Toolbars

See also

Opens the Toolbars page (Preferences or Toolbar Properties dialog box) for specifying which Toolbars display instead of or in addition to the Standard Toolbar for each Paradox window.


View | Tracer

See also

Opens the Tracer window, which lists each line of code as it executes. If the Tracer window was open when you last closed the Debugger, it opens automatically when the Debugger opens.

ObjectPAL provides procedures for controlling the Tracer.


ObjectPAL

tracerClear

tracerHide

tracerOff

tracerOn

tracerSave

tracerShow

tracerToTop

tracerWrite


View | Watches

See also

Opens the Watches window, which lets you inspect a variable's value while the form or method executes.


View | Zoom

See also

Choose View|Zoom to change the scale of a design document onscreen. You can zoom out (decrease the scale and see a larger area) or zoom in (increase the scale and see part of the form up close).

To take a step back from your design document, choose 25% or 50%.

To take a closer look at your design document, choose 200% or 400%.

There are also three automatic zoom sizes:

Fit Width	Fits the width to the window

Fit Height	Fits the height to the window

Best Fit	Fits the entire design document to the window


Search | Find

See also

Opens the Find dialog box, which you can use to search an Editor window for a specified string.

Shortcut

Ctrl+Z


Search | Find (SQL Editor)

See also

Choose Search|Find to find a particular text string (word or phrase) in your SQL statement.

When you choose Search|Find, Paradox opens the Find dialog box, where you specify the text to search for and the case sensitivity.

To search and replace text, choose Search|Replace.


Search | Find Next

See also

Searches for the next occurrence of text you specified using Find.

Find Next is dimmed if you have not searched for anything in this session.

Shortcut

Ctrl+A


Search | Find Next (SQL Editor)

See also

Moves to the next occurrence of the text you specified in the Find dialog box.

Note:	Find Next is dimmed if you have not searched for anything in the active SQL Editor window.

To search and replace text, choose Search|Replace.

Shortcut

Ctrl+A


Search | Go To Bookmark

See also

Takes you to bookmark number 1.

Note:	You can set 10 bookmarks. To get to your other bookmarks, press Ctrl+<the bookmark number>. For example, to go to your fifth bookmark, press Ctrl+5.

Shortcut

Ctrl+1


Search | Go To Line

See also

Moves to a specific line.

Choosing Search|Go To Line displays the Go To Line dialog box. Enter a line number and choose OK. If the line number is too high, the insertion point is moved to the last line.

Shortcut

Ctrl+G


Search | Incremental Search

See also

Finds the text you want, beginning from the insertion point.

Choose Search|Incremental Search, and begin typing.

Shortcut

Ctrl+S


Search | Matching Parenthesis

See also

Finds the matching parenthesis of a pair. Place the insertion point in front of the parenthesis whose mate you want to find (do not select the parenthesis). Works forward or backward.

Shortcut

Ctrl + ]


Search | Next Warning

See also

Displays the next warning message from the compiler. These warnings appear only if Program|Compiler Warnings is turned on; otherwise they are suppressed.

Shortcut

Ctrl + N

Note:	You must select Program|Run, Program|Check Syntax, or Program|Compile before you can look through the warnings they produce. Even if you have no syntax errors, and the code runs, you might have warnings. Use Search|Next Warning to step through them.


Search | Replace

See also

Choose Search|Replace to open the Find And Replace dialog box. Use the Find And Replace dialog box to search for text and replace it with a value you specify.

Shortcut

Shift + Ctrl + Z


Search | Replace (SQL Editor)

See also

Choose Search|Replace to search for text and replace it with a value you specify. When you choose Search|Replace, the Find And Replace dialog box appears. Use it to specify the text you are searching for and what you want to replace it with.

Shortcut

Shift+Ctrl+Z


Search | Replace Next

See also

Replaces the next occurrence of the text specified in the Find And Replace dialog box. Replace Next is dimmed until text has been replaced.

Shortcut

Ctrl + R


Search | Replace Next (SQL Editor)

See also

Replaces the next occurrence of the text specified in the Find And Replace dialog box.

To replace all occurrences of the text, choose Search|Replace and check Replace All.

Note:	Replace Next is dimmed if you have not replaced anything in the active SQL Editor window.

Shortcut

Ctrl + R


Search | Set Bookmark

See also

Marks a place in your code. Place the insertion point, then choose Set Bookmark. This will set bookmark number 1. The status bar will display the message "Bookmark dropped." (You cannot clear a bookmark, but you can place it in a different location.)

Shortcut

Shift + Ctrl + 1

Note:	Use Shift + Ctrl + 2 to set bookmark number 2, and so on. (Ten bookmarks are allowed; to set the 10th, use Shift + Ctrl + 0.)


Table | Data Properties

See also

Choose Table|Data Properties to display the <table> Properties dialog box, where you can change the way the selected column displays data.

The properties you see depend on the field type of the selected column.

Shortcut key: Ctrl+M


Table|Edit Data
Table | Edit Data/View Data

See also

Choose Table|Edit Data to enter data in a table. Choose Table|View Data when you are through entering data.

In Edit mode, records are automatically locked and unlocked as you edit them. This prevents one user from deleting or changing the same record at the same time as another user.

In Edit mode, changes are saved automatically every time you move to another record.

Shortcut key: F9


Table | Empty

See also

Choose Table|Empty to empty all records from a table. Then you can reuse the structure, filling it with new records. An alternative is to borrow the table's structure to create a new table.

You get a warning when you choose Table|Empty that your table will be emptied. All data will be lost. Choose Yes to continue.


Table | Filter

See also

Choose Table|Filter when you want to see only those records in a table that meet certain criteria. When you choose Table|Filter, Paradox opens the Filter Tables dialog box. To understand all the capabilities of filters, see Filters.


Table | Grid Properties

See also

Choose Table |Grid Properties to display the Grid Properties dialog box, where you can modify properties of the grid lines in a table.

Choose	To

General	Specify a color for the table's background.

Grid Lines	Hide or display heading, column, or row lines. Choose line style, color, and spacing.

Record Marker	Show or hide the current record marker, and to specify its line style and color.

Shortcut key: Ctrl+G


Table | Heading Properties

See also

Choose Table |Heading Properties to display the Heading Properties dialog box, where you can change the properties of the heading for that column.

Choose	To

General	Choose a color for the heading background

Alignment	Position a column heading in the heading area

Font	Specify typeface, size, style, and color for the heading text

Shortcut key: Ctrl+H


Table | Info Structure

See also

Use Table|Info Structure to see the structure of the selected table. You can view field types and sizes, as well as key, index, referential integrity, table language driver, password, and lookup information.

When you choose Table|Info Structure, Paradox opens the Structure Information dialog box. This dialog box displays, for viewing only, the same information that is in the Restructure Table dialog box.


Table | Notify On

See also

When Paradox is the server in a DDE link, Notify On controls when data is sent to the client application.

For example, if a Paradox field is linked to a spreadsheet cell through DDE, you have two options:

When Notify On is checked, the value in the spreadsheet is changed every time a new record is selected in the Paradox table.

When Notify On is not checked, data is sent to the client only if the client requests it.


Table | Preferred Document

See also

Choose Table |Preferred Document in a Table window to designate the documents you want to display when you click certain buttons on the Toolbar.

Choose	To identify

Form	The form to display when you click the Quick Form Toolbar button or choose Tools|Quick Form. The Choose Preferred Form dialog box appears.

Report	The report to use when you click the Quick Report Toolbar button or choose Tools|Quick Report or File|Print. The Choose Preferred Report dialog box appears.

Chart	The chart to display when you click the Quick Chart Toolbar button or choose Tools|Quick Chart. The Choose Preferred Chart dialog box appears.

Crosstab	The crosstab to display when you click the Quick Crosstab Toolbar button or choose Tools|Quick Crosstab. The Choose Preferred Crosstab dialog box appears.

If you do not identify a preferred file, Paradox creates a default document when you click a Toolbar button or choose the corresponding menu command.

Shortcut

Toolbar	Right-click the Quick Form or Quick Report Toolbar buttons.


Table | Rename

See also

Choose Table|Rename to change the name of the selected table. The Rename dialog box opens.

Warning:	Always use the Paradox Rename command to rename tables. Using the DOS RENAME command or the Windows Explorer might not rename all related files that make up a table.


Table | Restructure

See also

Choose Table|Restructure to change the structure of the selected table. You can change field types and sizes, as well as key, index, referential integrity, table language driver, password, and lookup information.

When you choose Table|Restructure, Paradox opens the Restructure Table dialog box for the type of table you have selected.

Shortcut

Toolbar


Table | Show Deleted

See also

To see deleted dBASE records, choose Table|Show Deleted (or Form|Show Deleted). When you delete a record from a dBASE table, Paradox does not erase it from the table, but simply marks it as deleted.

In a Table window, Paradox displays deleted dBASE records marked with a red "x" in the record number column.

In a Form window, when you view a deleted dBASE record the Desktop status area displays the words Record deleted after the table name.

To recover deleted dBASE records, make sure the table is in Edit mode with Show Deleted checked. Move the insertion point to the deleted record and do one of the following:

Choose Record|Undelete.

Press Ctrl+Del.

Double-click the red "x" in the record number column.

To physically remove a dBASE record from disk, restructure the table and check Pack Table.

If you delete a significant number of records from a dBASE table, you might notice that the vertical scroll bar appears somewhat out of sync with the displayed data. This is because the scroll bar treats the table as if deleted records are still present, even if Show Deleted is unchecked.

Table|Show Deleted is available only for dBASE tables. When you delete a record from a Paradox table, it is erased from the table and cannot be recovered.


Table | Sort

See also

Choose Table|Sort to sort the records of a table.

When you choose Table|Sort, Paradox opens the Sort Table dialog box, where you can specify your sorting preferences.


Table | Table View Properties

See also

Use the commands on the Table View Properties menu to save, restore, or delete the changes you have made to a table view. This menu is available only when a table is open.

Table|Table View Properties|Save

Table|Table View Properties|Restore

Table|Table View Properties|Delete


Table | Table View Properties | Delete

See also

Choose Table|Table View Properties|Delete to delete a Paradox table's .TV file (or a dBASE table's .TVF file). When you delete a table's unique property file, Paradox uses default property settings.


Table | Table View Properties | Restore

See also

Choose Table|Table View Properties|Restore to undo any property changes you have made to the Table window since they were last saved. If the properties have never been saved, Paradox restores the default view of the table. Paradox does not restore data.


Table | Table View Properties | Save

See also

Choose Table|Table View Properties|Save to save all the property changes you have made to a table, including property changes to individual fields. This saves the appearance of the table as you have changed it. Paradox saves data as it is entered, so File|Save and File|Save As are not necessary and are dimmed in the Table window.

This command is available only when a table is open.

Paradox saves the properties you define for a Paradox table in the .TV file, and the properties you define for a dBASE table in the .TVF file.

If you try to close a Table window without saving property changes, Paradox displays a dialog box asking if you want to save your changes.

Tip:	If you change properties, then change your mind about them, choose Table|Table View Properties|Restore to restore your previous properties.


Table | Strict Translation

See also

Choose Table|Strict Translation to limit available characters to the DOS character set supported by the table's language driver. These are characters common to both the OEM and ANSI character sets.

When Strict Translation is checked, you cannot move off a field where you have entered a character that is not a member of the table's DOS character set.

When Strict Translation is not checked, you can enter a character not in the set, but when you move off the field, that character changes to a character that does occur in the DOS character set supported by the table's language driver.

It is also possible that a table that has been edited with a DOS application might contain characters not found in the Windows ANSI character set. If you use Paradox for Windows to edit such a table with Strict Translation checked, a warning is issued whenever you enter Field View (in Edit mode) in a field containing non-ANSI characters. If you leave the field without editing, the characters are not changed; if you edit the field, the characters are converted to ones that are common to both the ANSI and OEM character sets.

Strict Translation can also be set for a form in the Data Model dialog box or the Data Model Designer. Right-click the table, and choose Strict Translation on the drop-down menu.


Record | Delete/Undelete

See also

Choose Record|Delete to delete the current record from the table. You must be in Edit mode.

In a Paradox table, you cannot retrieve a deleted record, so be sure you want to delete the entire record before you choose Delete.

In a dBASE table, deleting a record does not immediately remove it. You can even choose to view deleted records by choosing Table|Show Deleted.

When you delete a record in a dBASE table, Record|Delete changes to Record|Undelete. To retrieve a deleted record from a dBASE table, make sure Table|Show Deleted is checked, then select any field in the record you want to restore, and choose Record|Undelete. Double-clicking the red "x" in the record number column also works.

Shortcut key: Ctrl+Del


Record | Insert

See also

Choose Record|Insert to insert a blank record above the selected record. You can also press Ins.

When you insert a record into a keyed table, then enter a value in it, Paradox automatically moves it to its proper position in the table. (The record might move from the place where you inserted it.) Records inserted in non-keyed tables stay where they are inserted.

Using this command with a single-record form

When you work in a single-record form, inserting a record seems like inserting a blank screen. When you press Ins or choose Record|Insert, the form goes blank. This is because Paradox has both inserted and moved to the new blank record. Remember, Paradox always inserts blank records above the selected record.


Record | Locate

See also

Use the Locate commands on the Record menu to find records and values in a table. You can include wildcards in a search.

Command	Toolbar	Action

Field	Move to the field you specify. (This command is available in the Table window.)

Record number	Move to the record number you specify.

Value	Move to a field value you specify.

And Replace	Replace the specified value with another value you specify.


Record | Locate | And Replace

See also

Choose Record|Locate|And Replace to locate and change a particular value in a field. You must be in Edit mode to use Locate|And Replace.

When you choose Record|Locate|And Replace, Paradox opens the Locate And Replace dialog box, where you can type the value to search for and the value to replace it with.

When Paradox finds the value, you can say yes to replace it, or no to move to the next occurrence.

If Paradox cannot find the value you entered, "Value not found" appears on the status line.

Shortcut key: Ctrl+Shift+Z

Tip:	You get improved performance if the field you use for the Locate operation has an index. Performance is further improved if the Case Sensitive setting of the index and of the Locate operation match.


Record | Locate | Field

See also

Choose Record|Locate|Field to move to a particular field of a table. (This command is available only in the Table window.)

When you choose Record|Locate|Field, Paradox opens the Locate Field dialog box where you can select the field you want and choose OK.


Record | Locate | Record Number

See also

Use Record|Locate|Record Number to move to a particular record.

When you choose Record|Locate|Record Number, Paradox opens the Locate Record Number dialog box where you can type the number of the record you want.

The record number of a Paradox table is assigned automatically by Paradox and cannot be edited. It shows the record's position in the table.


Record | Locate | Value

See also

Choose Record|Locate|Value to move to a particular value in a field you identify.

When you choose Record|Locate|Value, Paradox opens a dialog box where you can type the value you want to find.

Shortcut key: Ctrl+Z

You can also use the Locate Field Value button on the Toolbar.

Tip:	You get improved performance if the field you use for the Locate operation has an index. Performance is further improved if the Case Sensitive setting of the index and of the Locate operation match.


Record | Locate Next

See also

Choose Record|Locate Next to search for the next occurrence of the value you last searched for.

Shortcut key: Ctrl+A

You can also use the Locate Next button on the Toolbar.


Record | Lock

See also

Choose Record|Lock to place a lock on the record you are viewing. The Desktop status bar tells you when you have locked a record.

Shortcut key: F5

You do not have to manually lock each record before making changes to it. Paradox locks a record automatically when you begin editing it. The message Record is now locked appears in the Desktop status bar. Paradox removes the lock when you leave the record.

Locking is important if you use Paradox in a multiuser environment, or if you run two Paradox sessions simultaneously. When a record is locked, other users can view it but cannot edit or delete it.

If you are locked out of the record by another user, choose Tools|Display Locks to see who has locked the record.

After you lock a record, the Lock command changes to Unlock. You must unlock records before other users can access them. Choose Record|Unlock or press Shift+F5.


Record | Lookup Help

See also

Choose Record|Lookup Help when you enter data in a field that has required values found in a lookup table.

When you choose Record|Lookup Help, the lookup table opens in a window where you can choose the value you want. You must be in Edit mode to use Record|Lookup Help.

Shortcut key: Ctrl+Spacebar


Record | Move Help

See also

Choose Record|Move Help to move a detail record to a new master record in either a 1 [image] M form or a referential integrity relationship.

In certain situations, you might have a record in one table that corresponds to a record in another table. This can happen

In a referential integrity relationship, where one record in a parent table is related to one or more records in a child table

In a multi-table form, where one record of the master table is related to one or more records in the detail table

In either of these kinds of relationships, you can use Move Help to move a dependent record from one master to a different master.

Shortcut key: Ctrl+Shift+SpaceBar

Example

Suppose you have linked Customer and Orders in a 1 [image] M relationship in a form. If you select a record in the Orders table, then choose Record|Move Help (or press Ctrl+Shift+Spacebar), you see the Customer table in a dialog box. When you choose a value from the Customer No field in this lookup table, Paradox changes the Customer No value for the selected record, moving it to a different master.


Record | Post/Keep Locked

See also

Choose Post/Keep Locked to write your changes to the current record and move the record to its place in a keyed table. Other users can see it, but the record is locked so you can continue editing it.

Use Post/Keep Locked to make sure no key violation occurs before you fill in the rest of the record.

Shortcut key: Ctrl+F5


Record menu

See also

Use the commands on the Record menu to quickly find, insert, delete, or lock records in a form. Record commands are available only when you are viewing data in a table or form (in the Table window or Form window). To use Locate|And Replace, Insert, Delete, Lock, Cancel Changes, and Post/Keep Locked, you must be in Edit mode.

  You can also use the navigation Toolbar buttons to move through records in the form.

Command	Toolbar	Action

Next	Find the next record.

Previous	Find the previous record.

Next Set	Find the next set of records.

Previous Set	Find the previous set of records.

First	Find the first record.

Last	Find the last record.

Locate	Search by field, by record number, or by field value, as well as search for values and replace them.

Locate Next	Find the next occurrence of the value you last searched for.

Insert	Insert a record.

Delete/Undelete	Delete or undelete a record.

Lock	Lock a record you are editing, then unlock it when you are through.

Post/Keep Locked	Hold a lock on a record even after you have posted (saved) its value.

Lookup Help	Display the lookup table containing valid values for a field that has a table lookup.

Move Help	Move a detail record to a new master record in either a 1 [image] M form or a referential integrity relationship.


Tools | Alias Manager

See also

Opens the Alias Manager dialog box. Use this dialog box to view, change, or add aliases.

An alias name is a name you give to a database. Once you've named it, the alias name is all you have to type in the future, rather than the entire path plus its original name. The alias name also appears in the Alias list in File|Open dialog boxes and is listed in the Project Viewer.


Tools | Data Model Designer

See also

Choose Tools|Data Model Designer to open the Data Model Designer. Use the Data Model Designer to modify the data model of a design document and to load, modify, and save new data models.

When you choose Tools|Data Model Designer, one of the following happens:

If a form or report...	Then...

Is active	Paradox opens the Data Model Designer showing the current data model) for that form or report.

Is not active	Paradox opens the Data Model Designer with the default reference model)

Note:	You can change the data model that is displayed as the reference model by choosing Design|Save As Default in the Data Model Designer.


Tools | Default Form

See also

Choose Tools|Default Form to display the active table using the default form automatically generated by Paradox.

Use the View|Table View command or Toolbar button to return to the Table window, or press F7.

If you have already opened a quick form (or you entered a Table window by toggling from the form), this toggles you to its window.

When you toggle like this, Paradox tries to put you on the same record and field in the form as you were in the table. Similarly, when you toggle back, Paradox tries to keep you on the same record and field in the table as you were in the form.

Paradox does not move through the two windows at the same time: moving in the form does not automatically update the table, and vice versa. If you click in the Table window to return from the form, you move back to the Table window, but Paradox will not move to the current record and selected field. You are on the field selected when you last worked in the Table window.

Note:	The default form is different from the preferred form which is created by the user.


Tools | Default Report

See also

Choose Tools|Default Report to display the active table using the default report automatically generated by Paradox.

To send the report to the printer, use File|Print or click the Print button.

Note:	The default report is different from the preferred report which is created by the user.


Tools | Display Locks

See also

In a multiuser environment, choose Tools|Display Locks to find all the locks currently placed on a Paradox table, and who has placed them. (Display Locks is not available for dBASE tables.)

This is especially useful if you need to see all the locks that must be removed from a table before you can begin a particular operation.

For more information, see About displaying table locks.


Tools | Experts

See also

Opens a gallery of Paradox Experts. Experts are shortcut tools for performing common tasks. An expert asks you what you want, then performs the task for you. See About Paradox experts for information.


Tools | Object Explorer

See also

Opens the Object Explorer. What you see in the Object Explorer depends on what window you're working in:

In a Form Design window

A tree-like diagram of your form that shows you the form's design objects and their relationships to one another.

Tabbed pages that show you the methods, events, and properties for the selected design object. Double-click on a method or event name on the Methods or Events pages, to open an ObjectPAL Editor window for that method or event. Use the Properties page to change an object's properties.

In a Report Design window

A tree-like diagram of your report that shows you the bands, fields, and design objects in your report and their relationships to one another.

A Properties page, where you can change the properties of the report's design objects.

In a Script or Library window

A Methods page and an Events page, where you can double-click items on the pages to open additional Script or Library windows.

Shortcut

Toolbar

Keyboard	Ctrl+Spacebar


Tools | Passwords

See also

Choose Tools|Passwords to open the Enter Password(s) dialog box, where you can specify which table passwords to use in the current Paradox session. Passwords can be defined for your tables in the Create Table or the Restructure Table dialog boxes.

When you use a password-protected table, the password can either be entered through the Enter Password dialog box or it will be requested when you open the table. Passwords are remembered for later use by the Paradox Desktop, even if you subsequently close the table.


Tools | Project Viewer

See also

Opens the Project Viewer, which lists all the files in your current working directory or database and your private directory. Use the Project Viewer to manage the Paradox objects and non-Paradox objects in your working directory or database.

The Project Viewer also allows you to display a list of available databases and to open another database.


Tools | Quick Crosstab

See also

Choose Tools|Quick Crosstab to display the form containing the preferred crosstab (which you designate using the Table|Preferred Document command). If you have not identified a preferred crosstab, or if your preferred crosstab cannot be used for some reason, Paradox opens the Define Crosstab dialog box, where you can create a default crosstab. You can toggle back to Table view with the View Table Toolbar button or View|Table View command.

You can also click the Quick Crosstab Toolbar button.

Note:	The preferred crosstab is just a form with a crosstab in it.


Tools | Quick Form

See also

Choose Tools|Quick Form to display the active table using the preferred form (which you designate using the Table|Preferred Document command). If you have not identified a preferred form, or if your preferred form cannot be used for some reason, Paradox creates a default form.

Use the View|Table View command or Toolbar button to return to the Table window, or press F7.

If you have already opened a quick form (or you entered a Table window by toggling from the form), this toggles you to its window.

When you toggle like this, Paradox tries to put you on the same record and field in the form as you were in the table. Similarly, when you toggle back, Paradox tries to keep you on the same record and field in the table as you were in the form.

Paradox only synchronizes position when you toggle back and forth; the two windows are not constantly updated. Also, the windows are not synchronized if you use the mouse to click from one window to the other.

Note:	To quickly create a form without using the preferred form, use the Tools|Default Form command.

Shortcut key: F7

You can also click the Quick Form Toolbar button.


Tools | Quick Chart

See also

Choose Tools|Quick Chart to display the active table using the form containing the preferred Chart (which you designate using the Table|Preferred Document command). If you have not identified a chart or if your chart cannot be used for some reason, Paradox opens the Define Chart dialog box, where you can create a default chart. You can toggle back to the table view using the Table View Toolbar button or View|Table View command.

Shortcut key: Ctrl+F7

You can also click the Quick Chart Toolbar button.

Note:	The preferred chart is just a form with a chart in it.


Tools | Quick Report

See also

Choose Tools|Quick Report to display the active table using the preferred report (which you designate using the Table|Preferred Document command). If you have not identified a preferred report, or if your preferred report cannot be used for some reason, Paradox prints a default report. (If your table contains long memo fields, it is a good idea to make a preferred report. See Choose Preferred Report dialog box for more information.)

To send the report to the printer, use File|Print or click the Print button.

Note:	To quickly create a report without using the preferred report, use the Tools|Default Report command.

Shortcut key: Shift+F7

You can also click the Quick Report Toolbar button.


Tools | Register OLE Control

See also

Opens the Register OLE Control dialog box, where you can specify the location and name of the .OCX control you want to register in the system registry. The .OCX file has to have self-registration. OLE controls must be registered before you can use them on a form.

Dialog box options

Look In

By default, Paradox displays the working directory. To choose another directory, use this drop-down list to browse until you reach the directory you want. All files of the selected type in that directory appear in the list below the Look In drop-down list.

If the directory you want has an alias, choose it in the Alias drop-down list. The name of the directory appears in the Look In list box and its files appear in the file list.

Choose any of the icons to navigate, create a folder, or change the display of folders.

File Name

Type the name of the file or select one from the list box below the Look In list. You don't need to type an extension; Paradox recognizes the type of file you want based on the type shown in the Files Of Type drop-down list.

Files Of Type

Displays the types of files (.OCX) you can use for the registration operation you are performing.

Alias

If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


Tools | Set Locks

See also

Choose Tools|Set Locks to place locks or to see what kind of lock you have already placed on a table.

Tools|Set Locks opens the Table Locks dialog box. When you enter a table in the Table Name text box, you see what level of lock you have placed on that table.

To place a lock on the table, choose the kind of lock you want. You can choose only one kind of lock at a time for each table.

For more information, see About locking tables.


Tools | Table Repair

Choose Tools|Table Repair to display the Table Repair Utility dialog box, which lets you rebuild a damaged table or verify a table's integrity.

Note:	Table repair is not a substitute for backups. Always make regular backups of important data.

Paradox tables consist of two sections, the header and the data blocks. The header contains information about the number of fields, passwords, write protection, sort order, and the version of Paradox that created the table. Indexes and memos are stored in separate files.

If the table header is intact, but there is damage to the data blocks, the Table Repair utility displays a list of errors in the table, then lets you reconstruct the table. If the header is damaged, you must provide additional information about the header before reconstructing the table. The Table Repair utility also lets you recover header information using an undamaged table.


Tools | Utilities

Use the Utilities menu to manage your Paradox database.

The Utilities menu contains commands that affect tables. You can add or subtract records from tables, copy, delete, rename, restructure, or sort tables, get information about a table, import data from a different file format, or export data to a different file format.

You can also copy, delete and rename other Paradox objects from the Utilities menu.

The commands available from the Tools|Utilities menu are shown below.

Add

Copy

Delete

Empty

Info Structure

Rename

Sort

Restructure

Subtract


Tools | Utilities | Add

See also

Choose Tools|Utilities|Add to add the records in one table to those in another without having to retype them. Paradox opens the Add Records In dialog box. Also, in the Project Viewer, you can right-click the name of the table you want to add records from and choose Add from its menu.

Note:	The two tables must have identical structures, except that

Number and money fields are interchangeable.

You can add from an autoincrement field to a long integer field.


Tools | Utilities | Copy

See also

Choose Tools|Utilities|Copy to make a copy of a file. Paradox opens the Copy dialog box. You can also right-click the object's name in the Project Viewer and choose Copy from its menu.

You can copy tables, forms, reports, queries, scripts, libraries, SQL files, text files, data models, and style sheets from within Paradox. When you copy a table, Paradox copies both its structure and the data contained in it.

Warning:	Always use the Paradox Copy command to copy tables. Using the DOS COPY command or the Windows Explorer might not copy all related files that make up a table. For example, the contents of memo fields are stored externally to a table and are not copied by copying the .DB file. A Paradox Copy command, however, copies all files and pointers correctly.


Tools | Utilities | Delete

See also

Choose Tools|Utilities|Delete to delete a file from disk. Paradox opens the Delete dialog box. You can also right-click the object's name in the Project Viewer and choose Delete from its menu.

You can delete tables, forms, reports, queries, scripts, libraries, SQL files, text files, data models, and style sheets from within Paradox.

Always use the Paradox Delete command to delete tables. Using the DOS DELETE command or the Windows Explorer might not delete all related files that make up a table.

Warning:	Be careful when deleting objects! You cannot undo a deletion. Make sure the table is not used in any associated objects like forms, reports, or queries. Associated documents are not deleted when you delete the table; you must delete them yourself.

Associated documents are not deleted when the table is deleted. When you next open a document bound to a table that no longer exists, you can either

Change the master table of the document.

Redefine objects in the document that refer to that table.


Tools | Utilities | Empty

See also

Choose Tools|Utilities|Empty to remove all records from a table, leaving the table structure (including all keys, indexes, validity checks, and so on) intact. Paradox opens the Empty dialog box.

You can also right-click the table's name in the Project Viewer and choose Empty from its menu.

To empty an open table, choose Empty from the Table menu.


Tools | Utilities | Info Structure

See also

Choose Tools|Utilities|Info Structure to get information about a table's structure. In the Select File dialog box, choose a table. Paradox opens the Structure Information dialog box.

If you want structure information on an open table, choose Table|Info Structure. You can also right-click the table's name in the Project Viewer and choose Info Structure from its menu.

The Structure Information dialog box shows you validity checks, table lookup, secondary indexes, referential integrity, table language, and dependent tables.

Note:	Depending on the display monitor you have or the way you set colors in the Windows Control Panel, information in the Structure Information dialog box might not be visible on your screen. For example, the contents of Referential Integrity list boxes might be gray on gray, and therefore invisible. If you are missing information, adjust your screen colors using the Windows Control Panel.

You cannot change the table structure from this dialog box. To change a table's structure, choose Tools|Utilities|Restructure.

Saving a Table's Structure to a Table

Choose the Save As button to create a table that shows the structure information for the table you are working with. The structure table's fields correspond to the settings in the Structure Information dialog box.


Tools | Utilities | Rename

See also

Choose Tools|Utilities|Rename to give a file a different name. Paradox opens the Rename dialog box. You can also right-click the object's name in the Project Viewer and choose Rename from its menu. To rename an open table, choose Rename from the Table menu.

You can rename tables, forms, reports, queries, scripts, libraries, SQL files, text files, data models, and style sheets from within Paradox.

Always use the Paradox Rename utility to rename tables. Using the DOS Rename command or the Windows Explorer might not rename all related files that make up a table (for example, the files containing table's primary index, secondary indexes, validity checks, or BLOB data). The Paradox Rename utility, however, renames all files correctly.

Be careful when renaming tables. Once renamed, a table cannot be found by associated documents. Forms, reports, or queries that refer to a table under one name will not be bound to the table under its new name. The next time you open an unbound object, Paradox asks you to supply the name of the table to which you want it to be bound.

Tip:	You can avoid problems with forms and reports by having them open a in design window while you rename the table. Paradox automatically modifies them with the new table name. (You must save the forms and reports to make the change permanent.)


Tools | Utilities | Restructure

See also

Choose Tools|Utilities|Restructure to change the structure of a table. In the Select File dialog box, choose the table to restructure. If you choose, a .DB table, Paradox opens the Restructure Paradox Table dialog box, where you can change

Field names or types

Which fields are included

Key fields

Validity checks

Lookup fields

Secondary indexes

Referential integrity

Passwords

Table language character set

If you want to restructure an open table, choose Restructure from the Table menu. You can also right-click the table's icon in the Project Viewer and choose Info Structure from its menu.

Note:	Before restructuring a table, make sure no forms or reports that use the table in their data model are open in View Data or Edit mode. If you or any other user (in a multiuser environment) have such a document open, you cannot restructure the table.


Tools | Utilities | Sort

See also

Choose Tools|Utilities|Sort to sort the data in a table. In the Select File dialog box, choose the table to sort. Paradox opens the Sort Table dialog box. You can sort into the same table or a different table.

Note:	Sorting to the same table is only available on unkeyed tables.

You can also right-click the table's name in the Project Viewer and choose Sort from its menu. To sort an open table, choose Table|Sort.


Tools | Utilities | Subtract

See also

Choose Tools|Utilities|Subtract to remove from one table records that exist in another. Paradox opens the Subtract Records In dialog box. You can also right-click the table's name in the Project Viewer. and choose Subtract from the menu.

You can subtract records only from a keyed table. Because dBASE does not support Paradox keys, you cannot subtract records from a dBASE table. Instead, use a DELETE query.

During a subtract operation, Paradox removes any record that contains a value in its key fields that exactly matches the corresponding fields of a record in the subtraction table.


Window | Arrange Icons

See also

Choose Window|Arrange Icons to reorder the arrangement of icons on the Desktop.

Windows arranges the icons across the bottom of the Desktop in a straight line, maintaining the same order it found them in, left to right.


Window | Cascade

See also

Choose Window|Cascade to overlap all open windows on the Desktop so only the title bars of inactive windows show.

The titles of all open windows appear on the Windows menu. When you choose a title to activate the window, it moves to the top of the stack.


Window | Close All

See also

Choose Window|Close All to close all open windows on the Desktop. Paradox prompts you to save any changes before closing each window.

The titles of all open windows appear on the Windows menu. Click a title to activate its window.


Window | n

See also

Choose the name of the child window you want to make active.

If the window is hidden behind another it will be brought to the top.

If the window is iconized, it will be restored or maximized (same as the currently active window) and made active.

The name you see in the list is the same name you will see on the window's title bar.


Window | Refresh

See also

Choose Window|Refresh to update the list of files in the Project Viewer. When you create, delete, or rename files from another Windows program or from a DOS prompt, the list of files in the Project Viewer becomes out of date. Choose Window|Refresh to bring the list of files up to date.

Shortcut

Keyboard	F5


Window | Tile Side-by-Side

See also

Choose Window|Tile Side-by-Side to fit all open windows side-by-side on the Paradox Desktop without overlapping. The currently active window will be the leftmost window.

The titles of all open windows appear on the Windows menu. Click a title to activate its window.


Window | Tile Top and Bottom

See also

Choose Window|Tile Top and Bottom to fit all open windows one above the other on the Paradox Desktop without overlapping. The currently active window will be the topmost window.

The titles of all open windows appear on the Windows menu. Click the title to activate its window.


Form | Add Page

See also

Choose Form|Add Page to add a blank page to a form. Paradox always adds the new page after all existing pages. You cannot add a blank page between existing pages in a form. (You can move pages to rearrange their order using Form|Rotate Pages, or use Edit|Copy and Paste to insert a blank page.)

Tip:	When working with multi-page forms, you might want to choose View|Zoom|Best Fit to see all pages of the form onscreen at the same time.

Add Page is  available only when you are designing the form, not when you are viewing data.


Form | Data Model

See also

Choose Form|Data Model to view or modify the data model for a design document. The data model shows the tables your design document uses and their relationships to each other.

When you choose Form|Data Model, Paradox opens the Data Model dialog box.

The Data Model Toolbar button is a quick way to open the Data Model dialog box.


Form | Design Form

See also

Choose Form|Design Form to create or modify the design of a form. In the Form Design window you can select objects, move them, resize them, and change their properties.

Shortcut key: F8

When you choose Form|Design Form, Paradox shows the field names, but no data. It also displays form design tools on the Toolbar.

To enter the Form Design window,

From the Desktop, choose File|New|Form or File|Open|Form (and choose Edit The Form Design)

From the Form window, either

Click the Design button [image] on the Toolbar

Choose Form|Design Form

Press F8

To leave the Form Design window and view the data, either

Click the View Data Toolbar button

Choose Form|View Data

Press F8.

Toolbars

You can add Toolbars to the design window by choosing Edit|Preferences, or View|Toolbars and checking the Toolbars you want displayed on the Toolbars page. You can move a floating Toolbar anywhere you want by dragging its title bar.


Form | Edit Data

See also

Choose Form|Edit Data to enter or edit data in a form.

Shortcut key: F9

To get into Edit mode from the Form window, either

Click the Edit Data [image] Toolbar button

Choose Form|Edit Data

Press F9

When you choose Form|Edit Data, Paradox selects the first field for editing.

Field View

In normal Edit mode, whatever you type in a field overwrites the data that's there. To change only part of a field, use Field View.

To enter Field View, either

Click the Field View [image] Toolbar button

Choose View|Field View

Press Ctrl+F

Press F2

In Field View, you can use the Left and Right arrows, as well as Backspace and Del.

To exit Field View, either click a different field or press Enter.

Persistent Field View

Use Ctrl+F2 to enter into Persistent Field View, where you can move from field to field without leaving Field View.

In Persistent Field View, press Tab, Enter, or Alt plus an arrow key to move from field to field. Press arrow keys to move character-by-character within a field.

Press Ctrl+F2 again to leave Persistent Field View.

Memo View

Use Shift+F2 on a memo or formatted memo field to open Memo View, where you can use Enter and Tab as you normally do to edit text.

Press Shift+F2 again to exit Memo View.

Leaving Edit Mode

To leave Edit mode and return to viewing the form, either

Click the Edit Data [image] Toolbar button

Choose Form|View Data

Press F9


Form | Filter

See also

Choose Form|Filter when you want to see only those records in a table that meet certain criteria, or when you want to change the order in which records are displayed.

When you choose Form|Filter, Paradox opens the Filter Tables dialog box. To understand all the capabilities of filters, see About Filters.


Form | Page

See also

Choose Form|Page to move quickly through the pages in a form to change the page layout.

You can choose any of the following options:

Next	Move to the next page.

Previous	Move to the previous page.

First	Move to the first page.

Last	Move to the last page.

Go To	Open the Go To Page dialog box, where you type the page number you want in the document.


Form | Page Layout

See also

Choose Form|Page Layout to change the page layout. Paradox opens the Page Layout dialog box.


Form | Properties

See also

Choose Form|Properties to change the properties for the form. You can change the name of the form, choose whether to display a scroll bar, and check Size To Fit. You can also change the color and pattern on the form.


Form | Rotate Pages

See also

Choose Form|Rotate Pages to move the selected page to the last page's position. For example, if you select page 2 of a five-page form and choose Form|Rotate Pages, Paradox moves page 2 to the end of the form (page 5), and moves pages 3, 4, and 5 up one position.

Rotate Pages is available only when you are designing the form, not when you are viewing data.


Form | Settings

See also

Choose Form|Settings to change Designer settings for the current document in the Settings dialog box.


Form | Show Deleted

See also

Choose Show Deleted when you are working with a dBASE table and want to view those records that have been deleted from the table.

Form|Show Deleted is available only for dBASE tables. You must be viewing data in a form.


Form | Style Sheet

See also

Choose Form|Style Sheet to save or change the style sheet used for your form. When you choose Form|Style Sheet, Paradox opens the Style Sheet dialog box.


Form | Tile Pages

See also

Choose Form|Tile Pages when you are working with a multi-page form to control the onscreen display of the pages using tiling options.

Choose:	To:

Stack Pages 	View the pages one at a time, one on top of another.

Top And Bottom	View the pages top-to-bottom, vertically down the screen. (This is the default tiling option.)

Side-By-Side	View the pages side-by-side, horizontally across the screen.

Tip:	You might not notice a difference in tiling options if you have specified a large page from the Page Layout dialog box. Try using View|Zoom to zoom out to a smaller display of pages (like 25%). You will see more than one page at a time and the tiling options will be obvious.

Tile Pages is available only when you are designing the form, not when you are viewing data.


Form | View Data

See also

Choose Form|View Data to see the data on a form.

Shortcut key: F8

To see your data,

From the Desktop, choose File|Open|Form

From the Form Design window, either

Click the View Data [image] Toolbar button

Choose Form|View Data

Press F8

When you choose Form|View Data,

Fields show the values in the tables

Table frames display as many records of each table as fit in the space you allotted

ObjectPAL methods on buttons can be executed

You can enter or edit data in undefined fields (but not in fields that contain table references)

Navigation buttons

Navigation buttons appear on the Toolbar. Click the buttons to move quickly to parts of the database you want to see.

To edit data,

Click the Edit Data [image] Toolbar button

Press F9

Choose Form|Edit Data

To return to a design window, either

Click the Design Form [image] Toolbar button

Choose Form|Design Form

Press F8

If you were in Edit mode, this automatically ends your edit session.

Toolbars

You can add Toolbars to the design window by choosing Edit|Preferences, or View|Toolbars and checking the Toolbars you want displayed on the Toolbars page. You can move a floating Toolbar anywhere you want by dragging its title bar.


Form | Window Style

See also

Choose Form|Window Style to access advanced options in designing forms. Use Window Style to:

Specify whether the form appears as a window or a dialog box

Set the form's title and border properties

When you choose Form|Window Style, the Window Style dialog box opens.

After you change the window style of your form, to see the changes you must save the form and reopen it.


Query | Ignore Changes

See also

Choose Query|Ignore Changes to allow other users to make changes to the source table(s) while Paradox runs your query and to prevent Paradox from restarting the query if they do.

To make this the default for all queries, choose Edit|Preferences, then choose Ignore Source Changes on the Query page.


Query | Lock Tables

See also

Choose Query|Lock Tables to lock all tables in your query, preventing any changes to them while Paradox runs the query. Paradox releases the locks when it finishes running the query. (If someone else is already using the table(s) you want to lock and query, Paradox can't place your locks. You'll see a message informing you that a table is locked.

To make this the default for all queries, choose Edit|Preferences, then choose Lock All Tables To Prevent Changes on the Query page.


Query | Properties

See also

Choose Query|Properties to specify how you want Paradox to run the current query. Paradox opens the Query Properties dialog box.

If you have specified a valid query, the Query Properties dialog box contains the following pages:

Answer

QBE

Sort

Structure


Query | Restart On Changes

See also

Choose Query|Restart On Changes to make Paradox restart the query when it detects a change to the source table(s).

To make this the default for all queries, choose Edit|Preferences, then choose Restart Query On Changes on the Query page.


Query | Run Query

See also

Choose Query|Run Query to run a query. If the query contains no errors, Paradox displays a window to tell you the status of the query. After Paradox completes the query, depending on the kind of query it is, Paradox either displays an Answer table or changes data in a table. See About query results for more information.

Shortcuts

Toolbar

Keyboard	F8


Query | Show SQL

See also

Choose Query|Show SQL to translate your query to Structured Query Language (SQL) and have the code displayed in the SQL Editor.

Shortcut

Toolbar


Query | Wait For DDE

See also

If Wait For DDE is on, the query refreshes every time the DDE value changes. If Wait For DDE is off, you must explicitly tell Paradox when to run the query, and it will take the current DDE value.


Report | Add Group Band

See also

Choose Report|Add Group Band to add a group band to your report. When you choose Add Group Band, Paradox opens the Define Group dialog box.

Use group bands to break your information into groups of data. Groups can be based on the value of a field, a range of values, or a specified number of records. When you group data in a report by the value of a field, you apply a sorting specification to your data.

Paradox places the first group band between the page band and the record band. When you place more group bands, Paradox places them closest to the record band. You can rearrange group bands. See To rearrange group bands.

There are certain rules about adding group bands. See About group bands for more information.


Report | Data Model

See also

Choose Report|Data Model to view or modify the data model for a design document. The data model shows the tables your design document uses and their relationships to each other.

When you choose Report|Data Model, Paradox opens the Data Model dialog box.


Report | Design Report

See also

Choose the Report|Design Report to open the Report Design window where you create or modify the design of a report.

Shortcut key: F8

When you choose Report|Design Report, Paradox shows the bands and design objects that make up the structure of the report; no data is shown. It also displays report design tools on the Toolbar.

In designing reports, you use bands to print headers and footers and to group data. You can let the data control the size of these bands and of other objects in reports.

To enter the Report Design window,

From the Desktop, choose File|New|Report or File|Open Report

From the Report window, either

Click the Design Report Toolbar button

Choose Report|Design Report

Press F8

To leave the Report Design window and view data, either click the Run Report Toolbar button, choose Report|Run Report, or press F8.

You can add Toolbars to the design window by choosing Edit|Preferences, or View|Toolbars and checking the Toolbars you want displayed on the Toolbars page. You can move a floating Toolbar anywhere you want by dragging its title bar.


Report | Filter

See also

Choose Report|Filter to see only those records in a report that meet certain conditions. For example, in the Customer table, you might want to see only the records of customers from North Carolina.

When you choose Report|Filter, Paradox opens the Filter Tables dialog box.


Report | Page

See also

Use the commands on the Page menu to move quickly to pages in a report.

Choose	To

First	Move to the first page

Last	Move to the last page

Next	Move to the next page

Previous	Move to the previous page

Go To	Open the Go To Page dialog box, where you type in a page number

Page is available only when previewing a report.

You can also use the navigation Toolbar buttons to page back and forth in the report.


Report | Page Layout

See also

Choose Report|Page Layout from the design window to open the Page Layout dialog box, where you can

Choose from a list of paper sizes

Specify a custom size

Set margins

Specify whether you are designing for the printer or the screen

Specify orientation.

The orientation setting in the Page Layout dialog box sets the orientation of the report design in Paradox, but it does not force the printer to use the selected orientation. To ensure the report prints with the same orientation you've selected in Paradox, change the orientation in the Printer Setup dialog box to match.

Whether you design for a printer or for screen determines the fonts available. When you design for a printer, formatting is based on the size of the printer font. The fonts you see onscreen are the best match possible, but might not look exactly like the fonts in the printed report.

Report|Page Layout is unavailable when you are viewing the data in a report.


Report | Properties

See also

Choose Report|Properties to change the properties for the report. You can change the name of the report, choose whether to display a scroll bar, the Standard menu, and check Size To Fit and Remove Group Repeat.


Report | Restart Options

See also

In a multiuser environment, you could be viewing a report, and another user could attempt to change data in the tables used by that report.

Report|Restart Options tells Paradox ahead of time what to do whenever another user attempts to change data used by the report. When you choose Restart Options, the Restart Options dialog box opens.


Report | Run Report

See also

Choose Report|Run Report to view data in a report.

Shortcut key: F8

To view your data,

From the Desktop, choose File|Open|Report

From the Report window, either

Click the Run Report Toolbar button

Choose Report|Run Report

Press F8

When you choose Report|Run Report, Paradox displays your report onscreen one page at a time.

While Paradox is preparing your report, the window appears empty except for a Cancel button. If you change your mind about previewing the report, choose Cancel; the window returns to document design.

Navigation buttons

Navigation buttons appear on the Toolbar when you are previewing a report. Use these to display different pages. The lower right corner of the status bar shows the current page.

To return to a design window, either click the Design Report button on the Toolbar, choose Report|Design Report, or press F8.

Toolbars

You can add Toolbars to the design window by choosing Edit|Preferences, or View|Toolbars and checking the Toolbars you want displayed on the Toolbars page. You can move a floating Toolbar anywhere you want by dragging its title bar.


Report | Settings

See also

Choose Report|Settings to change Designer settings for the current document in the Settings dialog box.


Report | Style Sheet

See also

Choose Report|Style Sheet to change the style sheet used for your report. When you choose Report|Style Sheet, Paradox opens the Style Sheet dialog box.


Design | Adjust Size

See also

Choose Design|Adjust Size to make selected design objects the same width or height.

See To adjust the size of multiple design objects.


Design | Adjust Spacing

See also

Choose Design|Adjust Spacing to adjust selected design objects so that the space between the objects is exactly the same.

See To adjust the spacing of design objects.


Design | Align

See also

Choose Design|Align to line up selected design objects.

See To align design objects.


Design | Bring To Front

See also

Choose Design|Bring To Front to move the selected design object in front of another. You might want to bring a design object to the front of the stack of objects on a design document, if

You have design objects that overlap each other

You want to rearrange the tab order of a form when it is in a design window

To bring a design object to the front,

1.	Select a design object.

2.	Choose Design|Bring To Front.

Paradox moves the design object in front, so it appears to be on top of other design objects. This might not be noticeable, unless your objects partially overlap each other.

Note:	When you change the front-to-back positions of objects in a form, you change their tab order in a design window, because objects always tab from back to front. This has no influence on the tab order when you run the form.


Design | Copy To Toolbar

See also

Choose Design|Copy To Toolbar to change the default properties for a design tool. All design objects you subsequently place with that tool have the same properties.

To copy a design object's properties to a design tool,

1.	Set a design object's properties the way you want them.

2.	Choose Design|Copy To Toolbar.

Note:	Design|Copy To Toolbar does not change the properties of any objects contained by the object you select. You must change the properties of each contained object separately.

The changes you make to the Toolbar are preserved only for the current Paradox session. To make these changes permanent, choose Form|Style Sheet or Report|Style Sheet.

See To copy an object's properties to the Toolbar for more detailed information on using the Design|Copy To Toolbar command.


Design | Current Object

See also

Choose Design|Current Object to display the pop-up menu for the currently selected object. The pop-up menu is the same as the mouse button 2, or right-click menu.

Shortcut key: Shift+F10


Design | Design Layout

See also

Choose Design|Design Layout to completely rework the design of your design document, just as if you were starting a new one.

Choosing Design Layout causes your current design to be completely replaced. Do not use the command if you want to save any existing design objects or ObjectPAL methods.

When you choose Design|Design Layout, the Design Layout dialog box appears. The options available from this dialog box depend on the kind of data model your design document has:

If your design document has a single-value relationship data model or one containing a single table, the Single-table Design Layout dialog box appears.

If your design document has a multi-value relationship, the Multi-table Design Layout dialog box appears.


Design | Duplicate

See also

Choose Design|Duplicate to replicate the selected design object.

See To duplicate a design object.


Design | Group

See also

Choose Design|Group to combine selected design objects into a group. This group, then, behaves as single design object.

See To group design objects.


Design | Send To Back

See also

Choose Design|Send To Back to move the selected design object behind another. You might want to send a design object to the back of the stack of objects on a design document, if

You have design objects that overlap each other

You want to rearrange the tab order of a form when it is in a design window

To send a design object to the back,

1.	Select a design object.

2.	Choose Design|Send To Back.

Paradox moves the object to the back, so it appears to be underneath other objects.

Note:	When you change the front-to-back positions of objects in a form, you change their tab order in a design window, because objects always tab from back to front. This has no influence on the tab order when you run the form.


Design | Snap To Grid

See also

Choose Design|Snap To Grid to line up design objects on a design document.

When you check Snap To Grid, design objects jump to the closest minor division of the grid when you move or resize them.

Design objects stay where they are until you move or resize them.

Internally generated resizes (such as when you add text to a text object or define a field object) do not snap to the grid.

To see the grid, check View|Grid. Paradox displays major grid lines and minor grid ticks. Note, however, that objects snap to the grid even if the grid is not showing.

To change the default grid settings for all form and report design windows, choose Edit|Preferences, then set the grid values on the Designer page. The values do not take effect until you open a new design window or until you close and reopen Paradox.

To temporarily change the grid setting for the current form or report design window, choose Form|Settings or Report|Settings and change the values in the Grid group on the Designer page. These settings will be discarded when you exit Paradox. The next time you start Paradox and open the design, the default grid settings will be used.


Design | Ungroup

See also

Choose Design|Ungroup to separate grouped design objects.

See To group design objects.

Note:	 If you try to ungroup a group object that contains ObjectPAL code, Paradox warns you that your code will be lost, and asks you to confirm the Ungroup.


Program | Add Watch

See also

Adds a watch to a variable. You can then track the variable’s value in the Watches window while the form or method executes. You can watch Library, Form, or Script variable types.


Program | Check Syntax

See also

Compiles and checks the syntax of the code in the active Editor window and all windows it references either directly or indirectly. If a syntax error is found, a window opens with the insertion point positioned near the error, and an error message appears in the status bar.


Program | Compile

See also

Compiles and checks the syntax of all the code in the form, library, or script. If syntax errors are found, the first Editor window containing an error is opened and an error message appears in the status bar.


Program | Compile With Debug

See also

When this command is checked, debug information is available when you run a form, library, or script. This means that execution is suspended whenever the debug( ) statement is encountered in your code. (Placing a debug( ) statement in a method or procedure has the same effect as setting a breakpoint at that line.)

Even without a debug( ) statement in your code, running a form, library, or script with this command checked lets you step through it, instead of over it, when it’s called from code in the Debugger.

You also receive more detailed error and Tracer information when Compile With Debug is turned on. Turning on Compile With Debug has the same effect as setting a breakpoint in the Editor.


Program | Compiler Warnings

See also

Use Program|Compiler Warnings to toggle the display of warning messages from the compiler.

When this command is checked, messages in the status bar warn you about undeclared variables and other conditions that might cause errors at run time. These messages are suppressed when the command is not checked.

Also, the errorShow procedure provides more detailed error information when this command is checked.


Program | Keywords

See also

Displays a cascading menu of frequently used keywords. Choose a keyword from this menu to insert it into a method without having to type it.

The keywords are basic language elements. See Basic language elements for more information on each keyword.


Program | Run

See also

Runs the current form or script. Paradox saves all attached methods, compiles the code, and leaves you in a View window. When a breakpoint is encountered, execution is halted, and the Debugger window opens.

If you are currently in a Debugger window, execution resumes from the breakpoint.

Note:	You have to set breakpoints in the code in order to run the Debugger.


Program | Toggle Breakpoint

See also

Sets a breakpoint in a method to suspend execution at a specified line of code. You can set as many breakpoints as your system memory allows. Execution will halt at each breakpoint as it is encountered.

Setting a breakpoint causes ObjectPAL to run the syntax checker on your code. The breakpoint is not set if a syntax error is found.

Breakpoints must be set at executable lines or at the end of methods and procedures. If you try to set a breakpoint at a non-executable line, it is set at the next available executable line. If an executable line cannot be found, an error message appears on the status bar ("Illegal line number").

You cannot set breakpoints on lines within the var, uses, types, and const blocks; within case statements; or on the beginning lines of methods or procedures.

Note:	If there are compile errors, you can set the breakpoint anywhere. Invalid breakpoints are removed during compile.

You cannot set breakpoints in procedures you write, but you can step through them in the Debugger by choosing Program|Step Into, or by clicking the Step Into button.

Setting a breakpoint:

You can set or delete a breakpoint by placing the insertion point anywhere in a line of code, and clicking the Toggle Breakpoint button.

Choose View|Breakpoints to open a window listing all the breakpoints set in your code.

You can also set a breakpoint by double-clicking to the left of a line of code or moving the insertion point over the area left of a line and pressing Ctrl+click.

Note:	You can set breakpoints in a library, but you cannot run the library independently. You must call the method from a form or a script.


SQL | Properties

See also

Choose SQL|Properties to control where the SQL query is performed (local or remote) and how the results are presented.

Paradox displays the following pages of the Query Properties dialog box:

Answer page

SQL page

You can also click the Query Properties button on the Toolbar.


SQL | Run SQL

See also

Choose SQL|Run SQL to execute the active SQL statement. Paradox displays a status window to tell you the status of the query and displays the Answer table or a live query view when the query is successfully completed. If you have not already selected an alias for the remote database, Paradox displays the Select Alias dialog box, where you can specify an alias before running the query.

Shortcut key: F8

You can also click the Run SQL button on the Toolbar.

The Answer table is a temporary table. It is overwritten every time you run another query and deleted when you leave Paradox. To change the options for the Answer table, choose SQL|Properties. Paradox displays the Answer page of the Query Properties dialog box, where you can choose to create an Answer table or a live query view, change the table name, and specify whether to save the table as a Paradox or dBASE table.

To create a new SQL statement, choose File|New|SQL File. To select a different SQL statement to execute, choose File|Open|SQL File.

Alias Manager Dialog Box (SQL Editor)


SQL|Select Alias (SQL Editor)
SQL | Select Alias

See also

Choose SQL|Select Alias to select the alias of the remote database you want to connect to. Paradox opens the Select Alias dialog box where you can choose one of the aliases you created in the Alias Manager dialog box.

You can also click the Select Alias button on the Toolbar.

To execute the SQL statement, choose SQL|Run SQL or press F8. You can also click the Run SQL button on the Toolbar [image].

To create an alias for a remote database, choose Tools|Alias Manager.


Help | About Paradox 7

See also

Choose Help|About Paradox 7 to open the About Paradox dialog box, which displays the version of Paradox that you are using.


Help | User's Guide Topics

See also

Choose Help|User's Guide Topics to open the User's Guide Table of Contents.


Help | ObjectPAL Reference Topics

See also

Choose Help|ObjectPAL Reference Topics to open the ObjectPAL Reference Table of Contents.


Add OLE Control (right-click menu)

See also

Opens the Insert Control dialog box where you can choose a registered OLE control to add to the Object Toolbar.


Add Page (right-click menu)

See also

Choose Add Page to add a blank page to the notebook object. Paradox always adds the new page after all existing pages. You cannot add a blank page between existing pages in a form. (You can move pages to rearrange their order using Rotate Pages, or use Copy and Paste to insert a blank page.)


Align (right-click menu)

See also

In the Form Design and Report Design windows, displays the Align Toolbar, with tools for aligning design objects.


Auto-Append (right-click menu)
Auto-Append property

See also

The Auto-Append property is available by right-clicking a table in the data model dialog box, or in the Data Model Designer. When the Auto-Append property is checked (the default), you can move to the end of a form in Edit mode and automatically insert new records simply by typing. To turn this setting off, uncheck it.

When Auto-Append is off, you can still insert records by pressing Insert, or choosing Record|Insert.


Data Dependent (right-click menu)

See also

Right-click a field and choose Data Dependent to open the Data Dependent Properties dialog box, which lets you display a specified range of values with different colors or fonts.

Alpha, number, short, long integer, date, time, timestamp, logical, autoincrement, and money field types (as well as dBASE character, number, float number, date, and logical field types) all have the Data Dependent choice.


Define Crosstab (right-click menu)

See also

You can define a crosstab in two ways:

Open the Define Crosstab dialog box and make all your decisions at once about defining fields, grouping, summarizing, and so on.

Develop the crosstab definition piece by piece from menu selections for the parts of the crosstab object that have their own menus.


Define Field (right-click menu)

See also

Right-click a field object and choose Define Field.

Choose fields from the tables in the Define Field Object dialog box. In this dialog box you can

Choose fields from other tables in the data model

Define calculated fields or special fields

Choose summaries

Click the Data Model button to add tables to the data model

Choose Paradox special fields:

Today

Now

Page Number

Number of Pages


Define Group (right click menu)

See also

Right-click a group band in a report and choose Define Group. The Define Group dialog box is displayed. In this dialog box you can specify ranges on which to group.


Define Record (right-click menu)

See also

When you right-click a record in a table frame and choose Define Record, Paradox displays the Define Table Object dialog box. Righ-click a table in this box and choose the fields you want displayed in the record.


Define Table (right-click menu)

See also

When you right-click a table frame and choose Define Table, the Define Table Object dialog box appears. The tables here are the ones you placed in the Data Model dialog box. Choose the table whose fields you want displayed.


Delete (right-click menu)

See also

When you right-click in the left-most field of a query image and choose Delete, this indicates that you want to change a table by deleting data that matches the query. For details, see About DELETE queries.


Field Layout (right-click menu)

See also

Choose Field Layout to change the layout of a multi-record object. Paradox opens the Layout Multi-Record Object dialog box.

Note:	This option is available only if the multi-record object is bound to a table.


Fields (right-click menu)

See also

When you choose Fields from a table's menu or a query's menu in the data model, you see a list of the fields in that table or query. The list also shows the field type.


Filter (right-click menu)

See also

Choose Filter to apply a filter to the selected field or field object. Paradox opens the Field Filter dialog box.


Global (right-click menu)

See also

Displays the Global Toolbar, with a button to open each type of Paradox object and save appropriate objects.


Insert (right-click menu)

See also

When you right-click in the left-most field of a query image and choose Insert, this indicates that you want to change a table by inserting data that matches the query. For details, see About INSERT queries.


Minimize Columns (right-click menu)

See also

Choose Minimize Columns to resize all the columns of a table frame object to the minimum width.


Move Grid To Band (right-click menu)

See also

When you are designing a report, you can move the grid so it starts at the top of the band you are working on. To do this,right-click the band, then choose Move Grid To Band.

When Move Grid To Band is checked, the origin of the grid is at the top of the band. Look for the zero on the vertical ruler.

Move Grid To Band is available only when either Snap To Grid or View Grid is checked.


Object (right-click menu)

See also

In the Form Design and Report Design windows, displays the Object Toolbar, with tools for applying OLE controls and native Windows controls.


Object Explorer (right-click menu)

See also

Right-click an object and choose Object Explorer to apply ObjectPAL code to an object. This is how you assign functionality to the object.


Page (right-click menu)

See also

Choose Page to move quickly through the pages in a notebook object.

You can choose any of the following options:

Next	Move to the next page.

Previous	Move to the previous page.

First	Move to the first page.

Last	Move to the last page.

Add Page	Adds a page to a Notebook Object.


Paste <OLE object on Clipboard> (right-click menu)

See also

If you have copied an OLE object to the Clipboard, you can paste it into an OLE object on a form or report. The name of this menu item changes to indicate the application that created the OLE object on the Clipboard.


Form in Project Viewer (right-click menu)

See also	Toolbar

The following commands are available when you right-click a form in the Project Viewer:

View Data

Design Form

View With

Copy

Delete

Rename


Library in Project Viewer (right-click menu)

See also	Toolbar

The following commands are available when you right-click a library in the Project Viewer:

Open Library

Copy

Delete

Rename


File in Project Viewer (right-click menu)

See also	Toolbar

The commands that appear when you right-click a non-Paradox file in the Project Viewer vary with the file.

Executable files

If the object is an executable file (with an extension such as .EXE, .COM, or .BAT), Paradox displays a menu with the following commands:

Command	Action

Run	Runs the executable file

Run W/Params	Opens the Parameters dialog box so that you can specify parameters for running the executable file.

Files associated with an application

If the object is associated with an application, Paradox displays a menu with one command on it: Run. The Run command is followed by the name of the application associated with the object.

Note:	If no application is associated with an object, Paradox does nothing when you right-click the object.

For example, suppose you use Windows File Manager to associate .WAV files with a multimedia program called NOISY.EXE. Right-clicking the BEEP.WAV object icon displays a menu with one command on it: Run Noisy.

Shortcut

Mouse	Double-click the object to run it or run the application associated with it


Query in Project Viewer (right-click menu)

See also	Toolbar

The following commands are available when you right-click a query in the Project Viewer:

Run Query

Open Query

Copy

Delete

Rename


Report in Project Viewer (right-click menu)

See also	Toolbar

The following commands are available when you right-click a report in the Project Viewer:

Run Report

Design Report

Print

Run With

Print With

Copy

Delete

Rename


Script in Project Viewer (right-click menu)

See also	Toolbar

The following commands are available when you right-click a script in the Project Viewer:

Run Script

Design Script

Copy

Delete

Rename


SQL File in Project Viewer (right-click menu)

See also	Toolbar

The following commands are available when you right-click a SQL file in the Project Viewer:

Run SQL File

Open SQL File

Copy

Delete

Rename


Table in Project Viewer (right-click menu)

See also	Toolbar

The following commands are available when you right-click a table in the Project Viewer:

View Data

Info Structure

Export

Restructure

Add

Copy

Delete

Empty

Rename

Sort

Subtract


Properties (right-click menu)

See also

Displays the property pages where you can change an object's properties.


Read Only (right-click menu)
Read-Only (right-click menu)

See also

In a table

Read-only prevents a table from being edited. Read-only tables can be viewed but not edited. (Set this property on the table's right-click menu in the Data Model dialog box or in the Data Model Designer.)

For non-master tables in a one-to-one data model relationship, Read-only is the default setting. Read-only is also the default setting for all SQL tables.

The Read-only setting is available for any table.

In a field

Choose Read-only on the field's Run Time property page to prevent the data in a field from being changed.

Read-only fields can be viewed but not edited.


Rotate Pages (right-click menu)

See also

Choose Rotate Pages, to move the selected notebook page to the last page's position. For example, if you select page 1 of a four-page notebook and choose Rotate Pages Paradox moves page 1 to the end of the notebook and moves pages 2,3, and 5 up one position.

Before rotatation

After rotation


Set (right-click menu)

See also

When you right-click in the left-most field of a query image and choose Set, this indicates that you want to perform a SET query on a group of records. For details, see About querying sets of records (SET queries).


Sort (right-click menu)

See also

Right-click a report record band and choose Sort to specify the fields you want to sort on, their order, and their sort direction. Paradox opens the Sort Record Band dialog box.

The sorting is done after sorting that results from any group bands.

Note:	You cannot sort certain reports that have a data model that contains dBASE tables. See Reports and dBASE tables for more information.


Standard (right-click menu)

See also

When checked, displays the Standard Toolbar for each window.


Text Formatting (right-click menu)

See also

Displays the Text Formatting Toolbar in forms and reports.


No help available

No help is available for the item you selected. Click [image] to view the Table of Contents of the Paradox User's Guide.


Form window

See also	Toolbar

Use the Form window to view and edit data. To open the Form window, choose Form|View Data to just view the data, or to both view and edit the data.

Shortcut key: F8

To see your data,

From the Desktop, choose File|Open|Form

From the Form Design window, either

Click the View Data [image] Toolbar button

Choose Form|View Data

Press F8

When you choose Form|View Data,

Fields show the values in the tables

Table frames display as many records of each table as fit in the space you allotted

ObjectPAL methods on buttons can be executed

You can enter or edit data in undefined fields (but not in fields that contain table references)

To edit your data, choose

Choose Form|Edit Data

Press F9.

Navigation buttons

Navigation buttons appear on the Toolbar. Click the buttons to move quickly to parts of the database you want to see.

To edit data,

Click the Edit Data [image] Toolbar button

Press F9

Choose Form|Edit Data

To return to a design window, either

Click the Design [image] Toolbar button

Choose Form|Design Form

Press F8

If you were in Edit mode, this automatically ends your edit session.

Toolbars

You can add Toolbars to the design window by choosing Edit|Preferences, or View|Toolbars and checking the Toolbars you want displayed on the Toolbars page. You can move a floating Toolbar anywhere you want by dragging its title bar.


Form Design window

See also	Toolbar

Use the Form Design window to create or modify the design of a form. In the Form Design window you can select objects, move them, resize them, and change their properties. You can also change things like layout, data fields, and links.

You cannot view or edit the data in the Form Design window.

To view data, choose Form|View Data or press F8.

To edit data, choose Form|Edit Data or press F9.

You can add Toolbars to the design window by choosing Edit|Preferences, or View|Toolbars and checking the Toolbars you want displayed on the Toolbars page. You can move a floating Toolbar anywhere you want by dragging its title bar.


Library window

See also	Toolbar

The Library window appears when you open or create a new library file (*.LDL, *.LSL) to store ObjectPAL code.

For more information on libraries, see the ObjectPAL Reference.


Query window

See also	Toolbar

You can use the Query window to retrieve information from your tables. For example, you can find out

Which customers have placed orders this month?

What is the total amount of all orders placed by each customer?

What orders have not been paid?

You can also use a query to perform calculations on your data. And you can insert, delete, and change records using INSERT, DELETE, and CHANGETO queries.

The Query window appears when you open a *.QBE file or create a new one.


Report window

See also	Toolbar

The Report window appears when you open or create a new report file (*.RSL, *.RDL) in Paradox.

You can use the Report window to print data to the screen or a printer.


Report Design window

See also	Toolbar

Use the Report Design window to create or modify the design of a report.

Shortcut key: F8

When you choose Report|Design Report, Paradox shows the bands and design objects that make up the structure of the report; no data is shown. It also displays report design tools on the Toolbar.

In designing reports, you use bands to print headers and footers and to group data. You can let the data control the size of these bands and of other objects in reports.

To enter the Report Design window,

From the Desktop, choose File|New|Report or File|Open Report

From data preview in the Report window, either

Click the Design Toolbar button

Choose Report|Design Report

Press F8

To leave the Report Design window and view data, either click the Run Report Toolbar button, choose Report|Run Report, or press F8.

You can add Toolbars to the design window by choosing Edit|Preferences, or View|Toolbars and checking the Toolbars you want displayed on the Toolbars page. You can move a floating Toolbar anywhere you want by dragging its title bar.


SQL Editor

See also

Use the SQL editor to enter, save and execute SQL statements for your server. Choose File|Open|SQL File or File|New|SQL File to open the SQL Editor.

You can also use the SQL editor to view the SQL statement that a Paradox query sends to your server. When you save an SQL statement to your local hard disk, Paradox places it in an unformatted text file with an .SQL extension.

Local SQL queries

You can also use the SQL Editor to execute SQL statements against local databases. See Using Local SQLidh_tsql_local_intro for more information.


Table window

See also	Toolbar

The Table window appears when you open or create a new Paradox, dBASE, or SQL table in Paradox.

You can use the Table window to enter data or restructure tables.


Project Viewer

See also	Toolbar

Use the Project Viewer to manage the objects in your working directory. To open the Project Viewer, do one of the following:

Choose Tools|Project Viewer.

Click the Project Viewer Toolbar button.

Options

Working Directory

The Project Viewer shows the objects in your working directory. To use a different working directory, see To change your working directory from the Project Viewer.

Managing files

Choose the type (Tables, Forms, Queries, SQL, Reports, Scripts, or Libraries) of object you want to see or choose All to see all objects in the working directory. The icon shown to the left of each object indicates the kind of object it is.

Right-click the name of an object for a menu of commands you can use on the object. The commands available depend on the object. Double-click an object to perform the default action (first item on the menu).

Tip:	You can change the default action for forms and reports. See Forms/Reports Preferences dialog box for more information.

Note:	The Project Viewer also shows objects in your private directory and those for which you created references.


Alignment page (Table window properties)

The following Alignment properties are available for tables.

Horizontal

Vertical


Design page (form and report object properties and form page properties)
Design page (object properties)

The following Design properties are available for all form and report objects and form pages. They are also available when you Ctrl+right-click a table frame or multi-record object.

Pin Horizontal

Pin Vertical

Contain Objects

Size To Fit

Selectable

If a property is not available for an object, it is disabled.


Font page (Table window properties and text and field object properties)
Font page (Table window and object properties)

The following Font properties are available for tables and for text and field objects.

Font

Font Style

Size

Effects

Color


Format page (field object properties)
Format page (object properties)

The following Format properties are available for field objects.

Date

Number

Time

Timestamp

Logical


Frame page (form and report object properties)
Frame page (object properties)

The following Frame properties are available for box, text, graphic, chart, OLE, listbox, combobox, spinbox, progress bar, trackbar, field, multi-record object, and record (within a multi-record object) objects.

Frame Color

Frame Style

Frame Thickness


General page (box, line, ellipse, notebook page, chart, and record object properties)
General page (object properties)

The following General properties are available for form pages and box, line, ellipse, notebook page, chart, and record (within a multi-record object) objects.

Name

Color

Transparent

Add Custom Color


General page (graphic, crosstab, and multi-record object properties)
General page (object properties)

The following General properties are available for graphic, crosstab, and multi-record objects.

Name

Color

Transparent

Add Custom Color

Horizontal Scroll Bar

Vertical Scroll Bar

Wide Scroll Bar


General page (OLE object properties)
General page (object properties)

The following General properties are available for OLE objects.

Name

Horizontal Scroll Bar

Vertical Scroll Bar

Wide Scroll Bar


General page (OCX, listbox, combobox, spinbox, progress bar, and trackbar object properties)
General page (object properties)

The following General properties are available for OLE Custom Controls (OCXs) and listbox, combobox, spinbox, progress bar, and trackbar objects.

Name

Color

Add Custom Color


General page (text object properties)
General page (object properties)

The following General properties are available for text objects.

Name

Color

Transparent

Add Custom Color

Design Sizing

Vertical Scroll Bar

Wide Scroll Bar


General page (field object properties)
General page (object properties)

The following General properties are available for field objects.

Name

Color

Transparent

Add Custom Color

Display Type

Define Values	(available only if Drop-Down Edit, List, Radio Buttons, or Check Box is chosen within Display Type)

Horizontal Scroll Bar

Vertical Scroll Bar

Wide Scroll Bar


General page (button object properties)
General page (object properties)

The following General properties are available for button objects.

Name

Type

Center Label


General page (table frame object properties)
General page (object properties)

The following General properties are available for table frame objects.

Name

Color

Transparent

Add Custom Color

Attached Header

Repeat Header

Horizontal Scroll Bar

Vertical Scroll Bar

Wide Scroll Bar


General page (notebook object properties)
General page (object properties)

The following General properties are available for notebook objects.

Name

Tabs On Top

Square Tabs

Horizontal Scroll Bar

Tabs Across

Number Of Pages


General page (report band, page band, and record band properties)
General page (band properties)

The following General properties are available for report bands, page bands, and record bands.

Name

Precede Page Header	(Report Band only)

Print On 1st Page	(Page Band only)

Start Page Number	(Record Band only)


General page (group band properties)

The following General properties are available for group bands.

Name

Header

Sort Order

Start Page Number


General page (form properties)

The following General properties are available for a form (when you right-click the form's title bar).

Name

Color

Add Custom Color

Size To Fit

Horizontal Scroll Bar

Vertical Scroll Bar


General page (report properties)

The following General properties are available for a report (when you right-click the report's title bar).

Name

Size To Fit

Standard Menu

Remove Group Repeat

Horizontal Scroll Bar

Vertical Scroll Bar


General page (Table window properties)

The following General properties are available for tables and table grids.

Color

Add Custom Color

Complete Display


General page (multiple objects in table frames or multi-record objects)
General page (object properties)

The following General properties are available when you Ctrl+right-click a table frame or multi-record object.

Color

Transparent

Horizontal Scroll Bar

Vertical Scroll Bar

Wide Scroll Bar

Field Display Type

Button Type

Button Style


Grid page (crosstab and table frame object properties)
Grid page (object properties)

The following Grid properties are available for crosstab and table frame objects.

Grid Style

Color

Record Divider


Grid Lines page (Table window properties)

The following Grid properties are available for a table's grid.

Heading Lines

Column Lines

Row Lines

Spacing

Query Look

Line Style

Color


Inactive Color page (notebook page properties)
Inactive Color page (object properties)

The following Inactive Color properties are available for notebook page objects.

Color

Add Custom Color


Line Style page (ellipse object properties)
Line Style page (object properties)

The following Style properties are available for ellipse objects.

Line Color

Line Style

Line Thickness


Magnification page (graphic and OLE object properties)
Magnification page (object properties)

The following Magnification properties are available for graphic and OLE objects.

Magnification


Pattern page (forms, reports, and box, ellipse, text, field, table frame, multi-record object, and record object properties)
Pattern page (object properties)

The following Pattern properties are available for forms and reports (when you right-click the title bar), form pages, and for box, ellipse, text, field, table frame, multi-record object, and record (within a multi-record object) objects.

Pattern Color

Pattern Style


Picture page (field object properties)
Picture page (object properties)

The following Picture properties are available for field objects.

Current Picture

Add Custom Picture


Raster Operation page (graphic object properties)
Raster Operation page (object properties)

The following Raster Operation properties are available for graphic objects.

Raster Operation


Record Layout page (multi-record object properties for forms)
Record Layout page (object properties for forms)

The following Record Layout properties are available for multi-record objects.

Number

Separation

Fill Order


Record Layout page (multi-record object properties for reports)
Record Layout page (object properties for reports)

The following Record Layout properties are available for multi-record objects.

Number

Separation

Fill Order


Record Marker page (Table window properties)

The following Record Marker properties are available for a table's grid.

Line Color

Show Record Marker

Line Style


Run Time page (object properties for forms)

The following Run Time properties are available for form pages and all form objects except field and button objects. If a property is not available for an object, it is disabled.

The properties available from the Run Time page take effect only when you run the form.

Visible

Read Only

Tab Stop

No Echo

Complete Display


Run Time page (field and button object properties for forms)
Run Time page (object properties for forms)

The following Run Time properties are available for field and button objects. If a property is not available for an object, it is disabled.

The properties available from the Run Time page take effect only when you run the form.

Visible

Read Only

Tab Stop

No Echo

Complete Display

Choose the Next Tab Stop


Run Time page (object properties for reports)

The following Run Time properties are available for report, record, and group bands and all report objects except text, table frame, and multi-record objects. If a property is not available for an object, it is disabled.

The properties available from the Run Time page take effect only when you run the report.

Pin Horizontal

Pin Vertical

Fit Width

Fit Height

Breakable

Shrinkable

Invisible

Delete When Empty

Show All Records

Print At Group	(object must be in group band)

Print At Page	(object must be in group band)


Run Time page (text object properties for reports)
Run Time page (object properties for reports)

The following Run Time properties are available for text objects in reports.

The properties available from the Run Time page take effect only when you run the report.

Pin Horizontal

Pin Vertical

Fit Width

Fit Height

Breakable

Shrinkable

Invisible

Orphan/Widow

Field Squeeze

Line Squeeze

Print At Group	(object must be in group band)

Print At Page	(object must be in group band)


Run Time page (table frames and multi-record object properties for reports)
Run Time page (object properties for reports)

The following Run Time properties are available for table frames and multi-record objects on reports. If a property is not available for an object, it is disabled.

The properties available from the Run Time page take effect only when you run the report.

Pin Horizontal

Pin Vertical

Fit Width

Fit Height

Breakable

Shrinkable

Invisible

Delete When Empty

Show All Columns

Show All Records

Print At Group	(object must be in group band)

Print At Page	(object must be in group band)


Style page (line object properties)
Style page (object properties)

The following Style properties are available for line objects.

Line Type

Line Ends

Line Style

Line Thickness


Text page (text and field object properties)
Text page (object properties)

The following Text properties are available for text and field objects. If a property is not available for an object, it is disabled.

Alignment

Spacing

Word Wrap


Define Chart (right-click)
Define Chart (right-click menu)

When you right-click a chart object and choose Define Chart, the Define Chart dialog box appears.

Choose the fields for the x- and y-axes, and select the Data Type.

You can define a chart in two ways:

Open the Define Chart dialog box and make all your decisions at once about defining fields, grouping, summarizing, and so on.

Develop the chart definition piece by piece from menu selections for the parts of the chart object that have their own menus.


Define Column Field (right-click)
Define Column Field (right-click menu)

Right-click the heading in a crosstab column and choose Define Column Field from the menu to specify which field's values to use as column headings across the top of the crosstab.

Note:	You can also use the Define Crosstab dialog box to do this.


Define Crosstab (right-click)
Define Crosstab (right-click menu)

To define a crosstab, right-click the upper left corner of the crosstab object and choose Define Crosstab to display the Define Crosstab dialog box.

You can define a crosstab in two ways:

Open the Define Crosstab dialog box and make all your decisions at once about defining fields, grouping, summarizing, and so on.

Develop the crosstab definition piece by piece from menu selections for the parts of the crosstab object that have their own menus.


Define Field (right-click)
Define Field (right-click menu)

Right-click a field object and choose Define Field.

Choose fields from the tables in the Define Field Object dialog box. In this dialog box you can

Choose fields from other tables in the data model

Define calculated fields or special fields

Choose summaries

Click the Data Model button to add tables to the data model

Choose Paradox special fields:

Today

Now

Page Number

Number of Pages


Define Graphic property (charts)
Define Graphic (right-click menu)

In defining a graphic, you can either choose

Paste	To place the contents of the Clipboard in the graphic object. (If the Clipboard is empty, Paste is dimmed.)

Paste From	To name a file to place in the graphic object. In the Paste From Graphic File dialog box, choose the graphic. Paradox places it in the frame.


Define Group (chart right-click menu)

Right-click a chart title and choose Define Group. The Define Field Object dialog box appears. In this dialog box you can

Choose fields from other tables in the data model

Click the Data Model button to add tables to the data model

When you group data in a chart, you create as many series in your chart as there are different values in the field you group on.

For more information on grouping in 2-D charts, see To specify an additional group field in a 2-D summary chart.


Define OLE property (charts)
Define OLE

Choose one of the following options from the OLE object's right-click menu for working with an OLE container.

Paste

Choose Paste to insert an embedded object from the data previously put on the Clipboard by an OLE server. When you insert an embedded object in an OLE container, the data is actually copied into the OLE container, and no relationship is maintained with the source of the data. See About embedded objects for more information.

Choosing Paste is the same as choosing Edit|Paste from the Desktop.

Paste Link

Choose Paste Link to insert a linked object from the data previously put on the Clipboard by an OLE server. A linked object is actually a pointer to data somewhere outside of the OLE container. Changes you make to a linked object are actually made to the source of the object. See About linked objects for more information.

Choosing Paste Link is the same as choosing Edit|Paste Link from the Desktop.

Insert Object

Choose Insert Object to insert a linked or embedded object using the Insert Object Dialog Box.

Choosing Insert Object is the same as choosing Edit|Insert Object from the Desktop.


Define Record (right-click menu)
Define Record (right click menu)

When you right-click a record in a table frame and choose Define Record, Paradox displays the Define Table/Multi-Record Object dialog box. Righ-click a table in this box and choose the fields you want displayed in the record.


Define Table (right-click menu)

When you right-click a table frame and choose Define Table, the Define Table Object dialog box appears. The tables here are the ones you placed in the Data Model dialog box. Choose the table whose fields you want displayed.


Field Layout property (charts)
Field Layout (right-click menu)

Choose Field Layout to change the layout of a multi-record object. Paradox opens the Layout MRO dialog box.

Note:	This option is available only if the multi-record object is bound to a table.


Move Grid To Band property (charts)
Move Grid To Band (right-click menu)

When you are designing a report, you can move the grid so it starts at the top of the band you are working on. To do this, right-click the band, then choose Move Grid To Band.

When Move Grid To Band is checked, the origin of the grid is at the top of the band. Look for the zero on the vertical ruler.

Move Grid To Band is available only when either Snap To Grid or Show Grid is checked.


Sort property (charts)
Sort (right-click menu)

Right-click a report record band and choose Sort to specify the fields you want to sort on, their order, and their sort direction. Paradox opens the Sort Record Band dialog box.

The sorting is done after sorting that results from any group bands.

Note:	You cannot sort certain reports that have a data model that contains dBASE tables. See Reports and dBASE tables for more information.


Window Style property (charts)
Window Style (right-click menu)

Window Style on the Form title bar's right-click menu provides advanced options in designing forms. Use Window Style to

Specify whether the form appears as a window or a dialog box

Set the form's title and border properties

When you choose Window Style, the Window Style dialog box opens.


You are in the object's menu.

Properties followed by an arrow  [image]  display other properties when you click them.

To get help on a property followed by  [image]  , first press Enter or Right arrow to see the next menu level. Then press F1 on any of these properties.

You must be at the end of a line to get help.


Add a Category property (charts)
Add A Category property

Right-click the left most column of a crosstab and choose Add A Category from the Category menu of a crosstab object to display the Define Crosstab dialog box where you can specify the fields to use as row headings, or categories.

Note:	You can also right-click the upper-left corner of the crosstab and choose Define Crosstab to open the Define Crosstab dialog box and add a category.


Add a Summary property (charts)
Add A Summary property

Right-click a summary column on the crosstab, and choose Add A Summary to display the Define Crosstab dialog box where you can

Specify the fields to perform a summary operation on, thus providing the data of the crosstab

Specify the type of summary operation to perform on each summary field you choose

Note:	You can also right-click the upper-left corner of the crosstab and choose Define Crosstab to open the Define Crosstab dialog box and add a summary.


Alignment property (charts)
Alignment property (Table Window)

In a Table window, you can change the alignment of data in a field or text in a column heading. Text and data can be justified horizontally (at the left, center, or right of the column) or vertically (at the top, middle, or bottom of the row).

To change the alignment, right-click the column heading or any value in the column, choose Properites, and choose the position on the Alignment page.

Changes apply to the selected object.

To change alignment in all columns of the table at once, press Shift+F6, choose Properties, and make the change on the Alignment page.


Alignment property (charts)
Alignment property (field or table object)

You can align values in a field or table object, text in a text object, and text in the edit region of a field object. To can do this several ways:

Use the Text Formatting Toolbar

Right-click the object, choose Properties, and change the alignment on the Text property page.

Use the alignment buttons on the expanded ruler.

Left	Lines up text at the left, with the right edge ragged

Center	Clusters text in the middle of the object

Right	Lines up text at the right, with the left edge ragged

Justify	Spreads out text so both left and right margins are straight


Alternate property (charts)
Alternate property

When labels on a chart's x-axis are too close together to read, right-click the x-axis and choose Ticks|Alternate. When Alternate is checked, Paradox displays every other label on a second line under the axis.

Alternate is available only on the x-axis. It is available in all 2-D charts except xy and 2-D rotated bar.


Detach Header property (charts)
Attached Header property

Uncheck Attached Header to separate the header area (the labels) from the body of a table. You can then

Move the header wherever you want

Move the header to another band (in a report)

Delete the header to suppress the labels

A detached table and header align with each other automatically.

To attach the header, check the Attached Header property.


Auto-Append property (charts)
Auto-Append property

The Auto-Append property is available by right-clicking a table in the data model dialog box, or in the Data Model Designer. When the Auto-Append property is checked (the default), you can move to the end of a form in Edit mode and automatically insert new records simply by typing. To turn this setting off, uncheck it.

When Auto-Append is off, you can still insert records by pressing Insert, or choosing Record|Insert.


Auto-Scale property (charts)
Auto-Scale property

Right-click a numeric axis on a chart object and choose Scale|Auto-Scale to make a numeric axis fit the range of data in a chart object. Auto-Scale is checked by default.

You can also set the range manually. To do this, uncheck Auto-Scale, then choose and set values for Logarithmic, Low Value, High Value, and Increment.


Back Wall property (charts)
Back Wall property

Choose a color and pattern for the back wall of a chart that is a 3-D chart type. Right-click the back wall of the chart, and choose Color or Pattern.

Color

Choose Color to display the Color palette, where you can choose a color or mix your own.

Pattern

Choose Pattern to select a pattern from the Style palette and the color for the pattern from the Color palette.


Background property (charts)
Background property

Right-click the background area in a chart to set its color and pattern.


Base Floor property (charts)
Base Floor property

Choose a color and pattern for the floor of a 3-D type chart. Right-click the base, and choose Color or Pattern.

Color

Choose Color to display the Color palette, where you can choose a color or mix your own.

Pattern

Choose Pattern to select a pattern from the Style palette and the color for the pattern from the Color palette.


Breakable property (charts)
Breakable property

When creating a report, you might place some objects too close to the bottom to fit on the page. Or an object might grow too large to fit entirely on a page (a table with many records or a very large memo field, for example).

To make the object split, so the first part is on one page and the second part is on another, right-click the object and choose Breakable on the Run Time page.

To make the object stay intact and be pushed to the next page when it does not fit, uncheck the Breakable property.

Some objects (charts and graphics) are never breakable.

If an object is not breakable and does not fit on one page, Paradox pushes it to the next page.

If it still does not fit on the second page, Paradox displays an error box indicating the report contains an object too large to fit.

If you are previewing a report and see a blank page unexpectedly, look at the next page to see if the object was pushed or cannot fit.


Button Type property (charts)
Button Type property

A button's type controls its functionality.

Push	A labeled rectangular button that carries out an action described by an ObjectPAL method. When the button is pressed, its value is "True." When the button is not pressed, its value is "False." Push is the default Button Type.

All button types execute their Push Button() event allowing OjbectPAL code to run. However, push buttons are more generally used for this.

Radio	A labeled round or diamond-shaped button that provides an option. Each time a user clicks the button, it toggles between being empty and being darkened. Each click also toggles its value between "False" and "True."

Check Box	A labeled square button that indicates a yes/no state. Each time a user clicks the button, it toggles between being checked and unchecked. Each click also toggles its value between "False" and "True."

Field objects as radio buttons and check boxes

You can also create a group of radio buttons or a check box from a field object. The advantage of using a field instead of a button is that a field object can post a value (the button or check box the user chooses) to the table the form is bound to. To post a value to a table with a button object, you must use ObjectPAL. See the Display Type property.


Center Label property (charts)
Center Label property

Choose Center Label to cause a push button or notebook page to automatically keep its label centered. If the button has no label, this option is not available.

If you move the label away from a centered position, this property is automatically turned off. Turning it back on on the object's General property page, or in the Object Explorer tabbed pane, will re-center the label.


Next Tab Stop property (charts)
Choose The Next Tab Stop property

You can specify the tab order of objects at Run Time with the Choose The Next Tab Stop property on an object's Run Time property page.

Choose the name of the next design object that you want to receive focus when the user presses Tab.

This property is available only if the Tab Stop property is checked. If an object's Tab Stop property is unchecked, its name does not appear on the Next Tab Stop list for any other object. By default Tab Stop is not checked for pushbuttons.


Color property (charts)
Color property

You can change the color of an object or the selected part of an object (this includes parts of tables).

When you choose Color, Paradox displays the Color palette. You can apply any color on the palette to the object. When you choose the color you want, the palette disappears and the object is changed to that color


Color palette

Use the Color palette to specify the color of an object and to create custom colors. To open the Color palette, right-click an area of the chart and choose Color. Click a color on the palette.


Column Lines property (charts)
Column Lines property

In a Table window you can hide or display the lines between columns in Table View. When Column Lines is checked (the default), the lines show. Uncheck Column Lines to hide the lines.

Note:	To change the grid lines when they are hidden, choose Table|Grid Properties.

You can choose the line style and spacing for these lines.

Color

You can change the color of all the space around rows and columns in a table, as well as the color of any grid lines marking rows and columns.

To change the color of the space, choose the color on the General property page.

To change the color of the lines, choose the color from the Grid Lines property page.


Complete Display property (charts)
Complete Display property

Memo and formatted memo field types have a Complete Display property. This is available in a Table window on the General property page, and on a design object's Run Time property page in a Form Design window.

Paradox stores memo and formatted memo fields in a separate file (with the .MB extension), not in the table itself. The table contains a portion of the field (this is the size you specify from the Create Table dialog box), and a pointer to the .MB file.

Check Complete Display to display all the record values all the time.

Uncheck Complete Display to display only the value of the current field. Paradox moves through records more quickly when Complete Display is unchecked because it does not have to access the .MB file.

Memos in dBASE tables

If you're working with a dBASE memo field, Paradox does not store any memo data in the .DBF file. Because of this, when you uncheck Complete Display on dBASE memo fields, you do not see any of the memo. Instead, you see a marker indicating the memo field contains data. When you select the field, Paradox displays the memo value from the .DBT file.

To display a memo while running a form

When you run a form with a memo field, you'll see only as many characters displayed in the memo as are specified in the table's structure. These characters are followed by an ellipsis (…) to indicate that there is more information. To view the full memo, move to it and enter Field View. Paradox locates the rest of the memo in the .MB file and displays it.


Conditional property (charts)
Conditional property

You can print a specific object in a report's group header at the beginning of each group, at the top of the page when the group continues across a page break, or both.

Print at Group displays the object at the beginning of each group, but not at the top of each page (unless a group begins at the top of the page).

Print at Page displays the object at the top of the page whenever a group breaks across pages. The object is never displayed on the first page of the report. This setting is useful for a text object that indicates that a group has been continued to the next page.

The Conditional property affects only the specified object. To control how an entire group band prints, use its Header property.


Contain Objects property (charts)
Contain Objects property

When one object exists completely within the borders of another, it can be contained by the outside object. Contained objects move when you move their containers, and are deleted when you delete their containers. When users tab between objects on a form, they tab to all objects within a container before tabbing to any objects outside the container.

Choose Contain Objects on the Design property page to ensure that objects contained inside are moved when you move their surrounding object. When this option is checked, objects inside the container can be dragged out of it, but you cannot move the container without moving its contained objects. Properties applied to the container, however, still affect only the container, not the objects in it (unless you use Ctrl+right-click). If you want to delete an object but not the objects it contains, turn off Contain Objects and then choose Del.

Note:	You cannot resize an object smaller than the objects it contains.


Data Type property (charts)
Data Type

Use Data Type to switch among Tabular, 1-D Summary, and 2-D Summary charts.

You can also specify data type in the Define Chart dialog box.

When you right-click a chart object and choose Data Type, you can choose

Tabular	The default. A tabular chart takes its data directly from the table, rather than summarizing the data in the table.

1-D Summary	A 1-D Summary chart analyzes one type of data in light of another.

2-D Summary	A 2-D Summary chart summarizes information by more than one category.

Note:	Changing the data type causes the chart object to change. The object's menu changes according to data type as well.

Tip:	You probably do not want to put a summary chart in the record band if the chart is bound to the master table. Doing this will cause exactly the same chart to be repeated for each record in the report.


Date Format property (charts)
Date Format property

Undefined and date fields have a Date Format property. Choose this property to change the format in which Paradox displays dates in the selected field.

When you choose Date Format, Paradox displays a list of available predefined date formats. Choose a format to apply to the selected field, or click the top of the list to open a dialog box for defining your own customized format.


Define X-Value (chart right-click menu)

Right-click the X-Axis in a chart and choose Define X-Value to change the field you want charted along the X-axis. The Define Field Object dialog box opens, where you can choose from other tables in the data model.


Define Y-Value (chart right-click menu)

Right-click a series in a chart and choose Define Y-Value to change the field you want reflected in the series. The Define Field Object dialog box opens, where you can choose from other tables in the data model.


Delete When Empty property (charts)
Delete When Empty property

The Delete When Empty property is only avalilable for objects containing data in reports.

When Delete When Empty is checked, if the design object shows no data in the report, it does not appear when the report is previewed or printed.

When Delete When Empty is unchecked, the object appears even if it shows no data.


Design property (charts)
Design properties

All design objects have the Design property page available. The Design properties only apply to the object in the design window. These properties help you work with objects in the Form Design or Report Design windows.

The Design choices available differ depending on the object. For example, Contain Objects is not available for a line because a line is incapable of containing another object. On the other hand, some objects (like tables) are always containers, and you cannot uncheck the Contain Objects property.

Pin Horizontal prevents the object from moving left or right across the design.

Pin Vertical prevents the object from moving up or down.

Size To Fit causes an object to expand or contract automatically in the design window based on the object's contents.

Contain Objects causes within the selected container to move with their container.

Selectable allows the object to be selected with a mouse click.


Design Sizing property (charts)
Design Sizing property

The way you create a text object determines how Paradox initially sets its sizing option. You can override the automatic setting by right-clicking the text object and choosing Properties. You have three Design Sizing choices on the General page:

Fixed Size	Fixed Size objects do not grow (or shrink) horizontally or vertically to fit the amount of text they contain.

Click the Text tool, then drag to place a frame in the design area. As you type, Paradox automatically wraps the text at the right border of the frame. When you reach the bottom of the frame, Paradox scrolls the text upward so you can view the text you are entering.

To change the size of the object, select it and resize it manually. In a fixed-size text object, Word Wrap must be checked on the Text property page. To make all the text available when the form is run, add scroll bars.

Fit Text	Fit Text objects grow or shrink to fit the amount of text they contain.

If you choose Fit Text and Word Wrap for a text object, the object grows or shrinks vertically to fit the amount of text it contains. Text wraps at the right side of the frame.

If you choose Fit Text without Word Wrap, the object can only be one line. It grows or shrinks horizontally to fit the amount of text it contains.

Click the Text tool, then click in the design area and begin typing. Paradox creates a single-row text object that expands to the right until you press Enter, moving the insertion point to a new line. As you continue typing, the text wraps automatically at the right border that you defined by pressing Enter. The text expands downward until you finish typing. The text object shrinks in height if you remove text. Otherwise, the text object grows and shrinks horizontally with the text.

Note: If you try to resize this type of text object with Word Wrap on, you can resize it only horizontally. If Word Wrap is off, you cannot resize the text object at all. Right-click the object and choose the Fixed Size property before resizing it.

Resizing restrictions with Fit Text

You cannot resize a text object horizontally if Fit Text is checked and Word Wrap is unchecked.

You cannot resize a text object vertically if Fit Text is checked.

Grow Only	Grow Only objects grow but do not shrink to fit the amount of text they contain.

If you choose Grow Only and Word Wrap for a text object, the object grows vertically to fit the amount of text it contains. Text wraps at the right side of the frame.

If you choose Grow Only without Word Wrap, the object can only be one line. It grows horizontally to fit the amount of text it contains.

Click the Text tool, then click in the design area and begin typing. Paradox creates a single-row text object that expands to the right until you press Enter, moving the insertion point to a new line. As you continue typing, the text wraps automatically at the right border that you defined by pressing Enter. The text expands downward until you finish typing. Unlike Fit Text, the Grow Only text object never shrinks unless you manually resize it.


Display Type property (charts)
Display Type property

Use the properties on the Display Type property to set the display type of a field object on a document.

Right-click the field object and choose Properties. Choose a display type from the Display Type drop-down menu:

Labeled	A field with its field label displayed, along with the value of the current record. The label and edit region cannot be removed or deleted from the field.

Unlabeled	A field without a label.

Drop-Down Edit	A list of values users can select from or type in their own value. The list box drops down when the user selects the arrow. (This property is available only for forms.)

List	A list of values users can select from. This type of list has no type-in box. List is always in full view.

To enter the values for the list items, click the Define Values button after choosing the display type

Radio Buttons	A list of values with a round or diamond-shaped button beside each value. Users click a button to select a value. Only one value can be selected at a time.

Changing the text in the label of a button does not alter its value. To alter the value of the button, click the Define Values button after choosing the display type.

Check Box	A check box that has one value when the user checks it and another value when the user unchecks it.

Changing the label of the check box does not alter its value. To alter the value of the check box, click the Define Values button after choosing the display type.


Editing property (charts)
Editing property

In ObjectPAL, this read-only property of a manager or TV window indicates whether you are in Edit mode.


Elevation property (charts)
Elevation property

Options|Elevation lets you change the angle from which you view a 3-D chart. Choose 15 degrees to look nearly straight down on it. Choose 75 degrees to view it nearly head-on.

This option is available for all 3-D charts except 3-D pie and 3-D columns.

Right-click the upper left corner of the chart object and choose Options|Elevation view or change this property.


Explode property (charts)
Explode property

Choose Explode to make the selected slice appear separated from the rest of the pie chart.


Field Squeeze property (charts)
Field Squeeze property

In a text object, check Field Squeeze on the Run Time property page to push or pull an embedded object. When you run the report, Paradox extracts the text value of the field and wraps it in its position within the line of text within the text object. The text following the field value is correctly spaced.

Field Squeeze is available only inside a text object in a report.


Fields property (charts)
Fields property

When you choose Fields from a table's menu or a query's menu in the data model, you see a list of the fields in that table or query. The list also shows the field type.


Filter property (charts)
Filter

Choose Filter to apply a filter to the selected field or field object. Paradox opens the Field Filter dialog box.


Fit Height property (charts)
Fit Height property

When you right-click an object in a report design and choose Properties, the Fit Height property appears on the Run Time page.

If you check Fit Height, Paradox expands objects in a report vertically to show all of their contents when you run the report.

A text object fits font height when Word Wrap is not checked. It expands to fit all the text and contained objects when Word Wrap is checked. Extra lines can be added. Even if all text fits at design time without scroll bars, if the text object has contained objects that grow or shrink, this can cause the text object to change size.

A field object expands to fit the data (whether it is text or graphic or OLE). If the field is a button-style field (radio or check box), it expands to show all buttons.

A record, box, or ellipse expands to show all contained objects (for example, a table or a text object that expands). If the contained objects are Fit Height, the container tries to maintain white space from the bottom of the lowest object to the bottom of the container.

If you uncheck the Fit Width or Fit Height of an object, be sure the object itself is big enough to show all that you want it to. It's a good idea to preview the report, then resize the object in the Report Design window to get its sizing right.

Tip:	Unchecking Fit Height for an object in a report can speed up previewing.


Fit Width property (charts)
Fit Width property

When you right-click an object in a report design and choose Properties, the Fit Width property appears on the Run Time page.

If you check Fit Width, Paradox sizes the object when you run the report to fit the width of its contents. The result depends on the type of object.

A text object grows or shrinks to exactly fit the size of its text and contained objects. Fit Width is available for text objects only when Word Wrap is not checked.

A field object fits the width of the text or graphic stored in the database. If the field is a button-style field (radio or check box), it expands to show all buttons.

A record, box, or ellipse expands to show all contained objects. If the contained objects are Fit Width, they can cause this object (the container) to widen, maintaining the white space from the rightmost object to the rightmost edge.

If you uncheck the Fit Width or Fit Height property of an object, be sure the object itself is big enough to show all that you want it to. It's a good idea to preview the report, then resize the object in the Report Design window to get its sizing right.

Tip:	Unchecking Fit Width for an object in a report can speed up previewing.


Font property (charts)
Font property

Font lets you change typeface, size, style, and color from pop-up selection lists.

Font	The typefaces available from the Font list depend on the fonts installed on your system. In a form or report, they also depend on whether you are designing for the screen or for the printer. Standard typefaces include Helvetica, Times Roman, Courier, and System.

Choose the typeface you want for the selected area of the table.

Note: If you are designing for the printer, the font displayed on the screen is a best match to a printer font on the selected printer. The screen font may not match the printer font exactly, resulting in anomalies where the object seems too big or too small.

Size	Displays a menu of available type sizes (in points). Choose the size you want for the selected text.

Font Style	Displays the available text styles.

Choose	To

Normal	Remove all style attributes from the text

Bold	Display the text in a heavier style

Italic	Display the text at a slanted angle

Bold Italic	Displays the text in both Bold and Italic

Effects	Displays the available text effects.

Underline	Display the text with a horizontal line beneath it

Strikeout	Display the text with a horizontal line running through it

Color	Changes the color of the selected text.


Font palette

Use the Font palette to specify typeface, size, and style. To open the Font palette, click the snap at the top of any font menu. The Font palette stays on the Desktop until you click the snap again to close it.

To change a font using the Font palette, select the field or text object you want to change, and choose the options you want from the palette. The selected text changes as you choose options.

Choose:	To:

Typeface	Select the typeface you want. The typefaces available reflect the fonts you installed on your system. Typefaces preceded by a 'TT' are True Type fonts. Typefaces preceded by a mini printer are printer fonts.

Size	Select the point size you want.

Style	Change the text style. Choose from the following options:

Normal: Removes all style attributes from the text.

Bold: Displays the text in a heavier style.

Italic: Displays the text at a slanted angle.

Strikeout: Displays the text with a horizontal line running through it.

Underline: Displays the text with a horizontal line beneath it.


Format of X-Value property
Format of X-Value

Use Format of X-value to change the way x-axis values are displayed on some charts.

When you right-click a chart and choose Label|Format of X-value, you can choose to display x-axis values in any of the number formats listed. To define your own format, click the top of the list. The appropriate dialog box opens.

Label Format is available only for 2-D and 3-D pie and columns charts.


Format of X-Value property (charts)
Format Of X-Value

Use Format of x-value to change the way x-axis values are displayed on some charts.

When you right-click a chart and choose Label|Format of x-value, you can choose to display x-axis values in any of the number formats listed. To define your own format, click the top of the list. The appropriate dialog box opens.

Label Format is available only for 2- and 3-D pie and column charts.


Frame property (charts)
Frame property

Many objects are surrounded by a frame. Objects that have frames have a Frame property page.

To change the frame properties, right-click the object, choose Properties. Click the Frame tab and choose the color, style, or thickness of the frame.

Color displays color palette for choosing the color of the frame.

Style displays the types of frames available.

Thickness displays a Thickness palette if your design document is designed for the screen, or a menu of thicknesses if it is designed for the printer.

From each palette, choose a frame property (either click it or move to it and press Enter). Paradox changes the frame of the selected object(s).

Note:	Frame styles that are unavailable are dimmed on the palette. Some line and frame styles can be applied only when the line or frame is set to the thinnest choice.

Tip:	Text objects have no frame by default. Before you customize the color or thickness of a text object frame, choose a frame style. Then the color and thickness settings will take effect.


Frame Palette

When you right-click a chart area and choose Frame|Style, the Frame palette appears.

Choose the frame style. Paradox changes the frame of the selected object(s) and removes the palette from the screen. Frame styles that are unavailable are dimmed on the palette. Some line and frame styles can be applied only when the line or frame is set to the thinnest choice.


Full Size property (charts)
Full Size property

The Full Size property is a read-only property telling you how big the object would be if all of it showed. The full size of an object is the area within its frame. An object's full size may be bigger than the object; in which case, it is a scrollable or (in the case of bitmap and OLE) pannable object. Nonscrollable objects generally have full size smaller than size.

In reports, if you set Fit Height or Fit Width, the object will expand so that the full size fits inside the frame in the indicated dimension.


Chart Type property (charts)
Chart Type property

A wide variety of chart types are available. Right-click the upper left corner of the chart object to change the chart type and customize the chart display.


Grid property (charts)
Grid property

Use the Grid property to configure the grid in a table frame or crosstab. It has submenus for

Grid style

Record dividers (whether they should appear at run time [image] table frames only)

Color


Grid Lines property (charts)
Grid Lines property

You can customize the grid in numerous ways. Choose Table|Grid Properties, and click the Grid Lines page. You can control what lines are displayed:

Hide or display a line in the heading area by choosing Heading Lines.

Hide or display the vertical lines of the grid by choosing Column Lines.

Hide or display horizontal lines between the records of the table by choosing Row Lines.

You can specify what the lines look like:

Query Look makes the header of a table have the same style as that found in queries.

Line Style specifies the type of lines.

Color changes the color of the lines.

Spacing specifies the number of lines between each column or row. You can display single, double, triple, 3D, or no lines.

On table objects or crosstab objects, Grid Style can be single, double, triple, 3D, or None. Paradox applies your chosen style to the whole object.

To change the grid style and color, right-click the object, choose Properties, then change the grid properties on the Grid page.

Tip:	Choose None for reports, because printing the grid can take a long time on many printers.


Heading Lines property (charts)
Heading Lines property

In a Table window you can hide or display the grid lines under all column headings. When Heading Lines is checked (the default), the lines show. Uncheck Heading Lines to hide any line under your column headings.

You can choose the line style and spacing for these lines.

Color

You can change the color of all the space around rows and columns in a table, as well as the color of any grid lines marking rows and columns.

To change the color of the space, choose Color from the General property page.

To change the color of the lines, choose Color from the Grid Lines property page.


Header property (charts)
Header property

You can print a group heading at the beginning of each group, at the top of the page when the group continues across a page break, or both. This property is available on the group band General property page.

On Page And Group prints the group heading at the beginning of each group and at the top of a page when the group is continued across page breaks.

Individual objects in headings marked Page And Group can appear at the start of groups, at the page continuation, or both, depending on the setting of their Conditional property.

On Group Only prints the group heading at the beginning of each group, but not at the top of a page when the group is continued across page breaks.

The Header property affects the entire group band. To control how a specific object prints, use its Conditional property.


High Value (right-click)

Right-click a chart's numeric axis and choose Scale|High Value to specify the highest value to display the axis. When you check High Value, a dialog box opens where you type the high value.

You can specify a high value when all your data points are low numbers and you want to display only the range they fall in, giving better resolution in that range. Manual scaling also prevents Paradox from automatically rescaling for every new data set (for example, scrollable charts in forms, or detail charts).

High Value is available only when Scale|Auto-Scale is unchecked.

Note:	If Logarithmic is checked, Low Value must be >0.


Horizontal Scroll Bar property (charts)
Horizontal Scroll Bar property

Horizontal Scroll Bar places a horizontal scroll bar at the bottom of a crosstab, table, graphic, or OLE object.

For information on using scroll bars in forms and reports, see the following topics:

About scroll bars in forms

About scroll bars in reports


Increment property (charts)
Increment property

Right-click a chart's numeric axis and choose Scale|Increment to change the space between tick marks on numeric axis.

When you check Increment, a dialog box opens where you type the number of units you want between tick marks on the selected axis.

Note:	Paradox does not accept an increment smaller than it can display.

Increment is available only when Scale|Auto-Scale is unchecked.


Invisible property (charts)
Invisible property

Check Invisible on the object's Run Time property page to make Paradox suppress the display of an object at run time.

Using invisible objects in designs

Invisible objects can be used to control the growing and shrinking of other objects. When you want an object that grows to push other objects that are not directly beneath or beside it, you can add a line beneath or beside it that extends far enough to push the other object.

This behaves like any other line, but you do not want to see it (it is only for formatting), so you make it invisible. This is the same as placing a transparent white color on the line, but you can see it at design time, and it is slightly more efficient at run time.

Similarly, you might want to take advantage of the formatting properties of a box (for example, grouping some objects that should all go on the same page and putting them in an unbreakable box) but not see the box. Again, this is the same as a transparent white frame, but you can see it at design time, and it is more efficient at run time.

When you check Invisible, Paradox hides the object, but not any objects contained by it.


Label Format property (right-click)
Label Format (right-click)

Label Format is available only for 2-D and 3-D pie and columns charts.

Right-click the chart, and choose Label|Label Format to change the way values on the y-axis are displayed on some charts. You can choose to display y-axis values as percent values or in the units used in the table, or not display them at all.


Label Location property (charts)
Label Location property

Use Label Location to specify where you want to show y values for all data points on a chart.

Label Location is available for xy, 2-D bar, 2-D rotated bar, and 2-D line charts.

To see the labels, first right-click the upper left corner of the chart object and check Options|Show Labels. Then right-click the chart again, choose Label|Label Location, and choose the position you want. The positions available depend on the chart type.


Left Wall property (charts)
Left Wall property

Right-click the left wall of a 3-D chart to choose a color and pattern for the left wall of the chart.

Color

Choose Color to display the Color palette, where you can choose a color or mix your own.

Pattern

Choose Pattern to select a pattern from the Style palette and the color for the pattern from the Color palette.


Legend Position property (charts)
Legend Position property

Right-click a chart's legend, and choose Legend Position to specify the location of the legend (at the right or along the bottom of the chart).

Legends are available for all 2-D charts except pies and columns. They are also available for 3-D stacked bar, rotated bar, and Area charts.

To display a legend, right-click the upper-left corner of the chart and choose Options|Show Legend.


Line Ends property (charts)
Line Ends property

You can place arrows on the ends of lines. When you choose Line Ends on the line object's Style property page, you can choose

No Arrow	Does not place an arrow at either end of the line. (This is the default choice. It is also the only choice for a line that has the Line Type|Curved property checked.)

On One End	Places an arrow on one end of the line. Because you create a line by clicking and dragging with the mouse, Paradox places the arrow on the end of the line where you released the mouse. The arrow points in the direction you dragged to create the line.

On Both Ends	Places arrows on both ends of the line.


Line Spacing property (charts)
Line Spacing property

In text or memo fields, Line Spacing specifies how far apart lines of text are spaced. You can choose the number of lines separating each column or row. The choices are 1, 1.5, 2, 2.5, or 3 lines.


Line Squeeze property (charts)
Line Squeeze property

If a text object's Line Squeeze property is checked on its Run Time property page, and if only one field is embedded in a text object and the field value is blank, Paradox blanks out the entire line of text that contains the blank field.

Line Squeeze is available only inside a text object in a report.


Line Style property (charts)
Line Style property

Line style can apply to line objects as well as to Table window grid lines. Line style is also part of the line property on ellipses and the lines in charts.

Line Style displays a selection of different types of lines, including dashed lines of varying length. When you choose a style, all selected lines are changed to that style.


Line Type property (charts)
Line Type property

Paradox gives you the option of drawing straight or curved lines. A straight line is the default. This is what you see when you click the Line tool, then drag across the design.

If you want the drawn line to be curved, choose Curved from the Line Type area of the Style property page. Paradox curves the line. (You cannot choose this property if the No Arrow property is not checked for the Line Ends.)


List property (charts)
List property

Choose List to modify the contents of a list object. Paradox opens the Define List dialog box. Fields that have a display type of List or Drop-Down Edit contain list objects.


Logarithmic property (charts)
Logarithmic property

Use Scale|Logarithmic to make a chart's numeric axis logarithmic. Logarithmic is unchecked by default.

Note:	Before you check Logarithmic, make sure all data values to be charted are positive (>0). If Auto-Scale is not checked, make sure Low Value and High Value are positive values.

Right-click a numeric axis on a chart object and choose Scale to view or change this property.


Logical Format property (charts)
Logical Format property

dBASE logical fields have the Logical Format choice on their menu. Choose it to select which values to accept in the logical field. Choose one of the pairs in the list of predefined logical formats or click the top of the list to open a dialog box where you can define your own custom formats.


Low Value property (charts)
Low Value property

Use Scale|Low Value to specify the lowest value to display along a chart's numeric axis. When you check Low Value, a dialog box opens where you type the low value.

You can specify a low value when all your data points are high numbers and you want to display only the range they fall in, giving better resolution in that range. Manual scaling also prevents Paradox from automatically rescaling for every new data set (for example, scrollable charts in forms, or detail charts).

Low Value is available only when Scale|Auto-Scale is unchecked.

Note:	If Logarithmic is checked, Low Value must be >0.

Right-click a numeric axis on a chart object and choose Scale to view or change this property.


Magnification property (charts)
Magnification property

Choose the Magnification property page to size a graphic or OLE object to fit in its container. Paradox proportionally resizes the object.

25% or 50% shrinks the displayed object

100% restores its original size

200% or 400% expands the displayed object

Best Fit shrinks the object to fit in the field while retaining the proportions of the original object. When you choose Best Fit, changing the column width or row height changes the size of the object.

Tip:	For fastest performance, display graphic and OLE objects at 100%. Best Fit usually gives the slowest performance.


Marker property (charts)
Marker property

Use Marker to change the way data points are indicated along an xy or 2-D line chart.

Right-click the line on the chart to see the Marker property. Choose a marker style and size.

If you choose a solid marker, you can change its color by right-clicking the line and choosing Color.

Choose Line from the line's menu to change the style, color, or thickness of the line.


Max Groups property (charts)
Max Groups property

The Max Groups property controls the number of groups (series) a 2-D summary chart displays. By default, Paradox displays 8 groups. If your data has too many groups to display clearly, you might want to see only the first few groups.

Choose Max Groups, and choose a number from the list. Or click the top of the list to open a dialog box, then type in a higher number.

Right-click the upper left corner of a 2-D summary chart object to change the Max Groups property.


Max X-Values property (charts)
Max x-values property

Max x-values is the maximum number of x-values represented on the x-axis. If your data has more x-values, the chart must scroll.

To set Max x-values, right-click the upper left corner of the chart and choose Max x-values. check a value from one to eight, or click the ellipsis at the top of the menu to enter your own value.


Methods property (charts)
Methods property

Choose Methods to apply ObjectPAL code to an object. This is how you assign functionality to the object.


Min X-Values property (charts)
Min x-values property

Min x-values is the minimum number of values represented on the x-axis.

To set Min x-values, right-click the upper left corner of the chart and choose Min x-values. check a value from one to eight, or click the ellipsis at the top of the menu to enter your own value.


No Echo property (charts)
No Echo property

Choose No Echo on the Run Time property page if you do not want to the contents of a field.

No Echo is useful for a field where users type in a password. They can enter data, but it is not displayed.


Number Format property (charts)
Number Format property

Numeric chart labels have a Number Format property. Choose this property to change the format in which Paradox displays numbers in the selected field or chart.

When you choose Number Format, Paradox displays a list of available predefined number formats. in the Select Number Format dialog box. Choose a format to apply to the selected field, or click the Create button to define your own customized format.


Object Name property (charts)
Object Name property

An object's name appears at the top of its menu. When the object is selected, its name appears on the status bar. Paradox names an object with its type and a number. For example, #ellipse32 or #box3.

Why name objects?

The name of a selected object appears on the status bar and in some error messages. Naming objects can help you determine which object is selected in a complicated design.

In a form, all design objects can have ObjectPAL methods attached to them. ObjectPAL refers to objects by name. If the name of an object begins with the pound character (#), then you need not name the object explicitly when referring to its children in ObjectPAL.

In a report, you can use object names in defining calculated fields.

See To change the name of a design object.

Automatic numbering of design objects

Paradox numbers objects within a design document sequentially, from the first object created to the most recent. For example, when you create a form, the form itself is #1, and the page is #2. The first design object you place on a form is #3.

Suppose you create a new form and place a labeled field object on it. Because a labeled field object is made up of three parts, you can right-click it in three different places, as shown in the following figure. Each part of the labeled field is a separate object and has a different sequential number.


OLE Command property (charts)
OLE Command property

Choose an OLE command fromt the OLE object's right-click menu to manipulate the object in an OLE container. The ways you can manipulate an object depend on the kind of OLE server associated with the object.

For example, if the OLE container contains a word processing document, two commands are available: Edit Documnt and Open Document. Edit opens the document for in-place editing, and Open opens the document by launching the word processor.

If you insert the word document and link it, the OLE menu commands change to Edit Document Link and Open Document Link.

For more information about inserting objects in OLE containers, see

About embedded OLE objects

About linked OLE objects


Orphan/Widow property (charts)
Orphan/Widow property

An orphan is a single line of text at the bottom of a page that has been separated from the paragraph it begins.

A widow is a single line of text at the top of the page that has been separated from the paragraph it ends.

If a text object is breakable, you will probably encounter orphans and widows. Check Orphan/Widow on the objects Run Time property page to prevent orphans and widows.


Pattern property (charts)
Pattern property

Use the properties on the Pattern menu to change the color or fill pattern of an object. A pattern will show up only if the underlying object has a color other than transparent white.

Color is where you choose the color for the pattern.

Style is where you choose the pattern style.

Make your choice from each palette (either click it or move to it and press Enter). Paradox applies the pattern to the selected object(s).


Pattern Palette

When you right-click an object and choose Pattern|Style, the Pattern palette appears.

Choose the pattern. Paradox fills the selected object(s) with that pattern and removes the palette from the screen.


Picture (Field Object) property (charts)
Picture (Field Object) property

Choose the Picture property page to specify a character string that acts as a template for the values that can be entered in this field object. Choose a standard picture from the drop-down list under Current Picture, or, click Add Custom Picture to open the Picture Assistance dialog box and create a custom picture.

This property is not available

In reports.

For field objects bound to BLOB or autoincrement fields, nor for summary, calculated, or special field objects.

For field objects with a Display Type of List, Checkbox, or Radio Button.

If the field object is bound to a field that has a picture. See About Pictures and Picture string characters for more information.


Pin Horizontal property (run time for charts)
Pin Horizontal property (run time)

Pin Horizontal is one of the properties on the Run Time property page, which establishes the behavior of a report at run time (when you view or print the document).

Choose Pin Horizontal to pin an object to its horizontal position relative to its container. This means that expanding or contracting objects cannot move the pinned object horizontally.

To speed up previewing of a report, pin as many objects as possible.


Pin Horizontal property (design window for charts)
Pin Horizontal property (design window)

Choose Pin Horizontal on the Design property page to prevent an object from moving left or right by accidental mouse moves. It can still be moved by choosing Align from the menu.

When you pin an object horizontally, you can move it up or down across the design, but Paradox prohibits you from moving it left or right. Also, the object does not automatically become contained by other objects that surround it.


Pin Vertical property (run time for charts)
Pin Vertical property (run time)

Pin Vertical is one of the properties on the Run Time property page, which establishes the behavior of a report at run time (when you view or print the document).

Choose Pin Vertical to pin an object to its vertical position relative to its container. This means that expanding or contracting objects cannot move the pinned object vertically.

To speed up previewing of a report, pin as many objects as possible.


Pin Vertical property (design window for charts)
Pin Vertical property (design window)

Choose Pin Vertical on the Design property page to prevent an object from moving up or down by accidental mouse moves. It can still be moved by choosing Align from the menu.

When you pin an object vertically, you can move it left or right on the design, but Paradox prohibits you from moving it up or down. Also, the object does not automatically become contained by other objects that surround it.


Precede Page Header property (charts)
Precede Page Header property

Right-click the report band and choose Precede Page Header on the General page to print the report header before the page header. If Precede Page Header is unchecked, the report header appears after the page header.

This is not visible in the Report Design window because the bands themselves do not move. When you preview or print the report, the report band and page band will be in the order you choose from the report band's menu.


Print On 1st Page property (charts)
Print On 1st Page property

Right-click the page band and choose Print On First Page on the General property page to print the contents of the page band on the first page of the report.

You can set this separately for the page header and footer.


Query Look property (charts)
Query Look property

Check this property to make the header of a table have the same style as that found in queries. Choose Table|Grid Properties, click Propeties, and check Query Look on the Grid Lines page.


Raster Operation property (charts)
Raster Operation property

When you define a graphic object, you identify a source graphic (a file) to be placed in a destination (your computer's screen). Most often, Paradox assumes you want an unchanged copy of the source placed on the screen.

Suppose, however, you want the source graphic and the screen to interact. You might want to make the source graphic transparent, so the color of the page shows through it, or you might want to invert the color of the source graphic. When you want to achieve these types of effects, use the graphic object's Raster Operation properties.

Raster operations define how Paradox combines the source graphic with the destination, inverting, combining, including or excluding colors to your specifications. Paradox uses the Boolean AND, OR, and XOR comparison operators to combine individual pixels of color during raster operations.

To use a raster operation, choose it from the Graphic's Raster Operations property page.

Demonstration

To see the effects of these raster operations, open RASTEROP.FSL in your SAMPLE subdirectory (or wherever you installed the ObjectPAL sample applications).

Source Copy	Copies an unchanged source graphic to the destination

Source Paint	Combines the source graphic and the destination using the Boolean OR operator

Source And	Combines the source graphic and the destination using the Boolean AND operator

Source Invert	Combines the source graphic and the destination using the Boolean XOR operator

Source Erase	Inverts the colors of the destination and combines it with the source graphic using the Boolean AND operator

Not Source Copy	Inverts the colors of the source graphic and copies it to the destination

Not Source Erase	Combines the source graphic and the destination using the Boolean OR operator

Merge Paint	Inverts the colors of the source graphic and combines it with the destination using the Boolean OR operator

To see an example of using raster operations, see Example of creating a mask for a graphic.


Read Only property (charts)
Read Only property

In a table

Read Only prevents a table from being edited. Read Only tables can be viewed but not edited. (Set this property on the table's right-click menu in the Data Model dialog box or in the Data Model Designer.)

For non-master tables in a one-to-one data model relationship, Read Only is the default setting. Read Only is also the default setting for all SQL tables.

The Read Only setting is available for any table.

In a field

Choose Read Only on the field's Run Time property page to prevent the data in a field from being changed.

Read Only fields can be viewed but not edited.


Record Divider property (charts)
Record Divider property

Places horizontal lines between records of a table frame. The lines help you scan across the records of large table frames.


Record Layout property (charts)
Record Layout property

Right-click the multi-record object and choose Properties, then click the Record Layout tab. Here you can specify the layout of records in a multi-record object.

You can specify

The number of records across and down

The vertical and horizontal spacing between the records

The fill order in which the records appear: Top-down, then left-right or Left-right, then top-down


Record Marker property (charts)
Record Marker property

You can choose to display or hide a record marker in a table to display a horizontal line beneath the current record, and you can customize the lines color and thickness.

Choose Table|Grid Properties, and click the Record Marker page.

Show Record Marker	When Show is checked on the Grid Lines property page, the record marker is visible.

Line Style	Displays the Line Stylepalette. When you choose a line style, Paradox displays the record marker in that style.

Color	When you choose a color, Paradox displays the record marker in that color.


Remove Group Repeats property (charts)
Remove Group Repeats property

To retain or suppress repeated group values within a record band,, choose Report|Properties, and check Remove Group Repeats on the report's General property page.

When Remove Group Repeats is not checked, Paradox displays the value of the grouped field for each record, including duplicates, in the record band.

When Remove Group Repeats is checked, Paradox prints the value for the first record of the group only.

Remove Group Repeats requires a group band in the report design, even if you know the records are ordered because the table is keyed or you've used Sort Record Band. But you can add a group band, then delete all the objects in it, and shrink its header and footer to nothing. This gives nearly the same effect [image] except that now the table breaks on group changes.


Remove This Y-Value property (charts)
Remove This Y-Value property

Use Remove This Y-Value to remove a series from a chart. This is quicker than opening the Define Chart dialog box and removing one of the Y-values.

When you right-click a series (a bar, for example) and choose Remove This Y-Value, the series is no longer displayed, and the field is no longer on the Y-Value fields list in the Define Chart dialog box.

This option is available with Tabular and 1-D Summary data types.


Repeat Header property (charts)
Repeat Header property

When a table breaks across several pages or several groups, you can repeat the table header at the top of each page or group. Paradox checks a table frame's Repeat Header property by default.

To prevent the header from repeating at the top of each page or group, right-click the table frame, choose Properties, and uncheck Repeat Header property on the General page. This property is not available for a table frame with a detached header.


Rotation property (charts)
Rotation property

Options|Rotation lets you turn a chart around its vertical axis by the number of degrees you choose. Choose 15 degrees to see the chart mostly from the front. Choose 75 degrees to see it mostly from the right end.

This option is available for all 3-D charts except 3-D pie and 3-D columns.

Right-click the upper left corner of the chart object to view or change this property.


Row Lines property (charts)
Row Lines property

In a Table window you can hide or display the lines between records. When Row Lines is unchecked (the default), no lines appear between the records. Check Row Lines on the grid's Grid Lines property page to display lines between all records in the table.

You can choose the line style and spacing for these lines.

Color

You can change the color of all the space around rows and columns in a table, as well as the color of any grid lines marking rows and columns.

To change the color of the space, choose Color from the grid's General property page.

To change the color of the lines, choose Color from the grid's Grid Lines property page.


Scale property (charts)
Scale property

Choose Scale to multiply the number by a given power of 10. If, for example, you enter 3 in the Scale text box, you will see the example number multiplied by 103. Choose a negative value to divide the number by a given power of 10.


Selectable property (charts)
Selectable property

When the Selectable property is checked on the object's Design property page, you can select any object by clicking it. Uncheck Selectable to prevent the object from being selected by a mouse click. You can still select any objects that the object contains, and you can still right-click the object or click it in the Object Explorer.

Selectable is on by default.


Series property (charts)
Series property

When you place a new chart object on a form or report, undefined series (for example, line, bar, area or column) appear in the undefined object. Right-click each series separately to choose a field to define them and to format their display. To choose a field, choose Define Y-Value from the series menu.

Tabular or 1-D summary Y-axis values

While the data type of the chart is tabular or 1-D summary, you can add more series to the original undefined series by right-clicking the Y-axis area, choosing Define New Y-Value from its menu, and choosing additional fields from the Define New Y-Value menu.

2-D summary Y-axis values

While the data type of the chart is 2-D summary, you can only choose one field for the single series allowed for this data type.

Formatting the series, including type override

Besides choosing the field whose values you want to be the particular series' values, you can format that series' display by choosing display options from its menu. For example, you can choose Type Override with some chart types to make one series a different type from the other series.


Show property (charts)
Show Record Marker property

Check Show record marker on the grid's Record Marker property page to display a line indicating the current record. Paradox displays a thin, black line under the selected record.

You can also choose the line style and color for this line from the Line Style and Color palettes on the Record Marker property page.


Show All Columns property (charts)
Show All columns property

When Show All columns is checked and you are viewing data, the table frame expands to show all columns of the table.

When this property is not checked, the table frame behaves like a fixed-width table when you are viewing data.


Show All Records property (charts)
Show All Records property

Table frames and multi-record objects both have the Run Time property Show All Records for reports. When this property is checked on a table frame, Paradox expands the object vertically down the page, creating as many pages as necessary to show all records of the table.

When Show All Records is checked and you are viewing data, a table frame or multi-record object will keep expanding, until all data in the group is displayed.

A table frame expands vertically.

On a multi-record object, the way in which the object expands is determined by the options you choose on the Record Layout property page. If you choose Top Down, then Left-Right, Paradox creates additional columns. If you choose Left-Right, then Top-Town, Paradox creates additional rows.

When Show All Records is not checked, the table frame or multi-record object can still expand, but you will see a fixed number of records when viewing data. To keep the table frame or multi-record object from expanding, uncheck the record object's Fit Height property on the Run Time property page.

Show All Records applies only to tables and multi-record objects.


Show Axes property (charts)
Show Axes property

Options|Show Axes toggles on and off the display of tick marks along a chart's axes. On is the default.

When Show Axes is checked, Paradox displays tick marks along a chart's axes. Uncheck Show Axes to display a chart without tick marks.

This option is available for all charts except pies and columns.

Right-click the upper left corner of the chart object to view or change this property.


Show Grid property (charts)
Show Grid property

Options|Show Grid toggles the display of the grid on and off. On is the default.

When Show Grid is checked, Paradox displays the grid lines on the chart as dotted lines. Uncheck Show Grid to display a chart without grid lines.

This option is available for all 2-D charts except 2-D pie and 2-D columns. It is not available for any 3-D charts.

Right-click the upper left corner of the chart object to view or change this property.


Show Labels property (charts)
Show Labels property

Options|Show Labels toggles on and off the display of y values at all data points in a chart. Off is the default.

When Show Labels is checked, Paradox shows the y values.

This option is available for these chart types:

xy

2-D bar, rotated bar, and line

3D bar, rotated bar, ribbon, and step

Right-click the upper left corner of the chart object to view or change this property.


Show Legend property (charts)
Show Legend property

Options|Show Legend toggles the legend on and off. Off is the default.

When Show Legend is checked, Paradox shows a legend that indicates the colors of chart elements and what they represent.

This option is available for all 2-D charts except pie and columns. It is also available for 3-D stacked bar, rotated bar, and Area charts.

Right-click the upper left corner of the chart object to view or change this property.


Show Title property (charts)
Show Title property

Options|Show Title toggles the display of a chart's title on and off. On is the default.

Right-click the upper left corner of the chart object to view or change this property.


Shrinkable property (charts)
Shrinkable property

Sometimes, when an object in a report (such as a box or a report band) begins near the bottom of a page, it has enough room for all contained objects, but not for the whitespace below the last object.

To ignore this final whitespace, check Shrinkable on the objects Run Time property page. The object shrinks it to fit on the current page by clipping off the whitespace.

When Shrinkable is checked, it takes precedence over

Breakable (when checked)

Fit Height (when unchecked)


Size property (charts)
Size property

Choose Size on the Font menu of a chart area, to change the font size. Paradox displays a list of available point sizes. Check one from the list.


Size To Fit property (charts)
Size To Fit property

Fields, tables, graphic, and OLE objects in design documents use the Size To Fit Design property. If you check Size To Fit on the objects Design property page, the object automatically grows or shrinks to fit the size of its contents.

For example, suppose you create a small field object, then define it as Customer No. If Size To Fit is checked, the field label and edit region automatically resize to fit the definition, and the whole field object resizes around them. If you redefine it as Qty, the field automatically shrinks to fit the smaller definition.

Size To Fit can work slightly differently on different objects.

Field objects

Choose Size To Fit if you want a field to expand or contract in the design window as a result of the its contents getting larger or smaller. (This can happen when you make changes to the field object properties such as display type, font, or size.)

For example, a labeled field needs more room than an unlabeled field.

If you change display types from an unlabeled field to a labeled field without checking Size To Fit, the field remains the same size and the label object and field object compete for space.

If you change display types and check Size To Fit, the field object expands to accommodate the new label.

When Size To Fit is checked, the field resizes when you

Change display type

Redefine the field

Change font

Change frame

Move or resize anything contained in the field

If you manually resize the field, it stays that size until you do one of the above four actions.

It is a good idea to have Size To Fit on if you resize a field label or redefine the field.

Table objects

Size To Fit causes a table frame to expand to fit all fields in the table. If you leave this unchecked, the table frame retains the size and shape you created when you placed it.

Paradox automatically places a horizontal scroll bar and unchecks Size To Fit when you:

Manually resize the table

Add more fields to the table than will fit in the form

Graphic and OLE objects

Use Size To Fit with graphic and OLE objects to make them fit the data they are designed to display. To resize graphic and OLE objects, you must first uncheck Size To Fit.

Window objects

When check Size to Fit is checked on the General property page for a form or report, Paradox automatically sizes the window to fit the size of the design.

The effect of choosing Size To Fit might not be apparent unless your page size is smaller than your screen display size.

Note:	The window frame and the page size may differ. To change the page size, choose Form|Page Layout.


Slice property (charts)
Slice property

Right-click individual slices in a pie chart to change

The color of the slice

The pattern (its color and style)

Check Explode to make the selected slice appear separated from the rest of the pie.


Sort Order property (charts)
Sort Order property

The Sort Order property is available on the group band's General property page.

Choose Sort Order|Ascending to print the groups in A to Z or numeric order.

Choose Sort Order|Descending to print the groups in Z to A or reverse numeric order.

Sort Order is not available for a group band that is defined on a number of records.


Spacing property (charts)
Spacing property

Choose one of the following Spacing options for the grid lines separating table columns: Single, Double, Triple, 3D, or None. Paradox applies your selection to the whole table.

To change grid properties, choose Table|Grid Properties. The Spacing property is on the Grid Lines property page.

To hide the line under all column headings or between columns, uncheck Heading Lines or Column Lines on the Grid Lines menu.

To display lines between records, check Row Lines.

To change the line style, choose Line Style.

Color

You can change the color of the space around rows and columns in a table, as well as the color of any grid lines marking rows and columns.

To change the color of the space, choose Color from the grid's General property page.

To change the color of the lines, choose Color from the grid's Grid Lines property page.


Standard Menu property (charts)
Standard Menu property

Check this property on the form or report General property page to make Paradox display the standard Paradox Report window menu when you are viewing data. Standard Menu is checked by default. This property is useful primarily if you are manipulating this document using ObjectPAL and want to display your own menu while the document is previewed.


Start Page Numbers property (charts)
Start Page Numbers property

Start Page Numbers makes Paradox begin a new page and reset the page number to one when the band is reached. Check this property on the page band's General property page.

When you choose to restart page numbers for each group, Paradox changes to a page number format that shows page within group (1-1, 1-2, 1-3...2-1, 2-2, 2-3...). You can not modify this format.


Strict Translation property (charts)
Strict Translation property

Choose Table|Strict Translation to limit available characters to the DOS character set supported by the table language driver. These are characters common to both the OEM and ANSI character sets.

When Strict Translation is checked, you cannot move off a field where you have entered a character that is not a member of the table's DOS character set.

When Strict Translation is not checked, you can enter a character not in the set, but when you move off the field that character changes to a character that does occur in the DOS character set supported by the table's language driver.

It is also possible that a table that has been edited with a DOS application may contain characters not found in the Windows ANSI character set. If you use Paradox to edit such a table with Strict Translation checked, a warning is issued whenever you enter Field View (in Edit mode) in a field containing non-ANSI characters. If you leave the field without editing, the characters are not changed; if you edit the field, the characters are converted to ones that are common to both the ANSI and OEM character sets.

Strict Translation can also be set for a form in the Data Model dialog box or the Data Model Designer. Right-click the table, and choose Strict Translation on the drop-down menu.


Style property (charts)
Style property

Radio buttons and check boxes

A button's style controls its visual display. Paradox provides the following styles for radio buttons and check boxes. The button style choices are displayed below the button type on the button's General property page.

Borland: radio buttons and check boxes look like the ones you see in many Borland products. Radio buttons are diamond shapes, and check boxes are gray, with a three-dimensional look.

Windows: radio buttons and check boxes look like the ones you see in some older Windows products. Radio buttons are standard circles, and check boxes are squares.

Windows 3D: radio buttons and check boxes look like the ones you see in many Windows products. Radio buttons are gray three-dimensional circles, and check boxes are squares.

Frame style

Objects that can have frames have Frame property page containing a Frame Style palette. To choose a frame style, click it or move to it and press Enter. Paradox changes the frame of the selected object(s). Frame styles that are unavailable are dimmed on the palette. Some line and frame styles can be applied only when the line or frame is set to the thinnest choice.

Pattern style

Objects that can be filled with a pattern have a Pattern menu containing a Pattern Style palette. To choose a pattern style, click it or move to it and press Enter. Paradox fills the selected object(s) with that pattern. If choosing a pattern style does not seem to have any effect, make sure the object's foreground and background colors are different.


Style property (charts)
Style property

Font Style displays a list of available font styles (like Bold or Italic). Font Styles are available on a text object's Font property page.


Tab Stop property (charts)
Tab Stop property

Users can tab from one object to another on a form.

Right-click an object and choose Properties. On the Run Time property page, check Tab Stop to include the object in the tab sequence. Fields, buttons, and charts have a Tab Stop property.

When Tab Stop is checked, users can move to the object by using the Tab key, arrow keys, or ObjectPAL.

When users tab to a field in Edit mode, they can edit it.

When users tab to a chart, they can scroll it.

When users tab to a button, they can press Enter to activate the button.

Users must tab to all objects within a container before they can tab to any objects outside the container.


Text property (charts)
Text property

The Text property page is available for any design object that includes text. This property defines the alignment, line spacing, and word wrap properties of the text object.

Paradox treats text as a design element much like any other design element. Use the Text tool to place text in the design. You create text inside a frame.

Text objects in Paradox design documents behave differently, depending on how you create them.

You can click the Text tool, then click in the design area and begin typing. Paradox creates a single-row text object that expands to the right until you press Enter, moving the insertion point to a new line. As you continue typing, the text wraps automatically at the right border that you defined by pressing Enter, and expands downward until you finish typing and click somewhere else in the design area. This is a Fit Text type of text object.

You can click the Text tool, then drag to place a frame in the design area. As you type, Paradox automatically wraps the text at the right border of the frame. When you reach the bottom of the frame, Paradox scrolls the text upward so you can view the data you are entering. This is a Fixed Size type of text object.


Text property (charts)
Text property

When you right-click a chart title or subtitle, you can choose Title|Text or Subtitle|Text to open the Enter Title or Enter Subtitle dialog box, where you type the title or subtitle.

When you right-click a chart axis, you can choose Title|Text to enter a label for the axis.


Thickness property (charts)
Thickness property

You can change the thickness of a line or a frame.

The Line Thickness and Frame Thickness properties display a thickness palette if you are designing for the screen, or drop-down list showing point sizes if you are designing for the printer.

To change the Thickness property, right-click line on a 2D line chart, and choose Line Thickness.


Time Format property (charts)
Time Format property

Undefined and time fields have a Time Format property. Choose this property on the object's Format property page to change the format in which Paradox displays the time in the selected field.

When you choose Time, Paradox displays a list of available predefined time formats. Choose a format to apply to the selected field, or click Create New Format to open a dialog box for defining your own customized format.


Timestamp Format property (charts)
Timestamp Format property

Undefined and time fields have a Timestamp Format property. Choose this property on the object's Format property page to change the format in which Paradox displays the timestamp in the selected field.

Choose Timestamp Format to change the display format of a time/date field. Choose a predefined timestamp format to apply to the selected field, or click Create New Format to open a dialog box for defining your own customized format.


Title Box property (charts)
Title Box property

When you place a new chart object on a form or report, the title is "Undefined Chart." Right-click the title area to

Open the Define Chart dialog box

Choose a field whose values you want to group the summary values by (2-D summary charts only)

Define a title

Define a subtitle

Format the display of the title area (color and pattern)


Type Override property (charts)
Type Override property

Choose Type Override to quickly change the selected series (line, bar, or area) in a chart to a different display type from the rest of the chart. You can make the selected series display as a 2-D bar, 2-D line, or 2-D area chart, while the other series remain as they are.

For example, in a bar chart with two series, you can select one series and make it display as a line instead of a bar.

Type Override is available for any 2-D bar, 2-D line, or 2-D area or rotated bar chart.

Right-click the series to change it to a different display type.


Typeface property (charts)
Typeface property

Choose Typeface to display a menu of available typefaces. Standard typefaces include Helvetica, Times, Courier, and System.

The typefaces available from the Typeface menu depend on the fonts installed on your system. In a form or report, they also depend on whether you are designing for the screen or for the printer.

Note:	If you are designing for the printer, the font displayed onscreen is a best match to a printer font on the selected printer. The screen font may not match the printer font exactly, resulting in anomalies where the object seems too big or too small.


Update Now property (charts)
Update Now property

Choose Update Now from an OLE objects right-click menu to immediately make the appearance of a linked object in an OLE container match that of its source. A linked object is actually a pointer to data somewhere outside of the OLE container. Paradox provides OLE containers in two ways: as a field in a table and as a design object in a form or report.


Use Default property (charts)
Use Default property

When you define a chart, Paradox uses the table title for the chart title by default. For axis titles, it uses the field names you defined for those axes.

You can change a chart or axis title by right-clicking it and choosing Title|Text, then typing the title you want in the Enter Title dialog box. You can also give the chart a subtitle by choosing Subtitle|Text and typing a subtitle.

To return to the default title, right-click the chart or axis title and choose Title|Use Default. To get your own title back again, uncheck Title|Use Default.

Checking Subtitle|Use Default removes any subtitle you created for the chart. To get it back, uncheck Subtitle|Use Default.

Note:	If Data Type|2-D Summary is checked, the subtitle shows the grouping field name.


Variable Height (Columnar) property (charts)
Variable Height (columnar) property

Choose Variable Height (columnar) to expand or contract individual records in a multi-record object when you print or preview reports. This means that the multi-record object does not display the records in a fixed-size grid. Using the Variable Height (columnar) property, you can usually fit more records on a single page than you can without this property.

Note:	Variable Height(columnar) is not available unless you first check the Top-Down, Then Left-Right setting.


Vertical Scroll Bar property (charts)
Vertical Scroll Bar property

Vertical Scroll Bar places a vertical scroll bar at the right of a crosstab, table, graphic, OLE, or text object. The Vertical Scroll Bar property is available on an object's General property page.

On table and crosstab objects, vertical scroll bars scroll through data, not the underlying image. That's why the vertical scroll bar does nothing when you click it in a design window. When you are viewing data, the vertical scroll bar acts like the navigation buttons on the Toolbar to move forward and backward through records or sets of records.

For information on using scroll bars in forms and reports, see the following topics:

About scroll bars in forms

About scroll bars in reports


Visible property (charts)
Visible property

Visible is one of the properties on the Run Time property page, which affects the behavior of a form at run time (when you view the document).

Visible is checked by default. If you uncheck it, Paradox hides the object (and all objects contained by it) when you run (view) the form.

This feature is useful mainly for ObjectPAL developers who want to create forms in which objects are visible only when needed.

Unlike Run Time|Invisible (used in reports on lines and boxes), Visible makes the children of the object disappear, as well as the object itself.


Wide Scroll Bar property (charts)
Wide Scroll Bar property

Check Wide Scroll Bar on an objects General property page to make a design object's horizontal and vertical scroll bars wide.


Word Wrap property (charts)
Word Wrap property

Word Wrap is a property of field objects and text boxes available on the object's Text property page.

Fields	Choose Word Wrap if you want the contents of a field (all fields except graphic and OLE) to display in more than one line when they exceed the width of the field object.

Text	All text objects have the Word Wrap option on their menus. Choose this if you want Paradox to wrap text automatically at the text object's frame. If Word Wrap is turned off, you can have only one line of text in the text object. Pressing Enter does not create a new line.


X-Axis property (charts)
X-Axis property

Before Paradox can display a chart, you must must provide some information. This includes defining the x-axis and y-axis values. You can right-click the axis areas individually.

Right-click the x-axis area and choose Define X-Value from its menu. Paradox displays a list of available fields from table(s) in the document's data model. (Some fields or tables might be meaningless along the x-axis and therefore not included in this list.) In the Define Field Object dialog box, choose the field whose values you want displayed across the bottom of the chart.

You can also right-click the x-axis to choose

Title	To change the x-axis label

Ticks	To change the way tick marks are labeled along the x-axis


Y-Axis property (charts)
Y-Axis property

Before Paradox can display a chart, you must provide some information. This includes defining the x-axis and y-axis values. You can right-click the axis areas individually.

Right-click the y-axis area and choose Define Y-Value from its menu. Paradox displays a list of available fields from the table(s) in the document's data model. (Some fields or tables might be meaningless along the y-axis and therefore not included in this list.) In the Define Field Object dialog box, choose the field whose values you want displayed along the left side of the chart. You can add more than one y-axis value.

You can also right-click the y-axis to choose

Title	To change the y-axis label

Scale	To adjust the scale of the y-axis

Ticks	To change the way tick marks are labeled along the y-axis


Z-Axis property (charts)
Z-Axis property

Right-click the Z-Axis on a 3-D chart to change the Font used in its label. You can change

Typeface

Size

Style

Color


Debugger

See also	Toolbar

The ObjectPAL Debugger lets you interactively test and trace execution of commands in your methods.

Using the Debugger, you can

Set breakpoints so you can execute instructions up to a certain point, then stop and see what has happened.

Inspect or watch variables to make sure values are being manipulated as you intended.

Execute a method one line at a time (called single-stepping), or step over methods and procedures that you know are bug-free.

List, and optionally view, the methods and procedures on the call stack; that is, those called since your form started running.

The Debugger environment

The debug environment includes the Debugger window, and the Watches, Breakpoints, Tracer, and Call Stack windows. You can position and size these windows to your liking and then choose Properties|Save Debug State.

You can set preferences for the Debugger in the Developer Preferences dialog box. For example, you can choose to have the Debugger open automatically when you are in design mode, or when you are running a form. To set your developer preferences, choose Edit|Developer Preferences.

Starting the Debugger

Although you can open the Debugger window before running code by clicking the Debugger Window button from the Editor Toolbar, you can use the Debugger only when execution is suspended at a breakpoint. To suspend execution and run code in the Debugger, you must either

Set a breakpoint in the Editor before you run the code

Use the DEBUG statement in your code and run it with Properties|Compile With Debug turned on

Once execution is suspended in the Debugger, Program|Compile With Debug must be turned on if you want to step through, instead of stepping over, code in a form, library, or script called from the code in the Debugger.

To start the Debugger by using breakpoints,

1.	Open the Editor window for the method or procedure you want to debug.

2.	Set a breakpoint on the line or lines where you want to suspend execution.

3.	Run your form.

When the breakpoint is reached, the debugger window opens and displays the method with the breakpoint. A method or built-in procedure executes until it reaches a breakpoint [image] the line containing the breakpoint does not execute. The gray triangle indicates which line will execute next.

While execution is suspended at a breakpoint, the pointer turns into a stop sign whenever you move it over the form being debugged. The stop sign is a reminder that you are in debug mode for that form and can only proceed under the control of the Debugger.

The Debugger pop-up menu

Right-click anywhere in the Debugger window to display the Debugger pop-up menu. This menu contains most of the commands from the Program menu.


Executing code in the Debugger

See also	Toolbar

When execution is halted at a breakpoint, you can continue execution in debug mode with the following commands.

Run

Run resumes execution from the breakpoint and continues to run until the next breakpoint is encountered. Choose Program|Run, click the Run button on the Debugger Toolbar, or press F8.

Run to Cursor

Run To Cursor continues execution of the method to the insertion point. Move the insertion point to the desired location in your code and choose Program|Run To Cursor, or press Shift+F8.

Shortcut	Move the pointer over a line, right-click to display the pop-up menu, and select Run To Cursor.

Run to EndMethod

Run to EndMethod continues execution to the end of the current method. Choose Program|Run To EndMethod, click the Run To EndMethod button on the Debugger Toolbar, or press Ctrl+F8. The rest of the method executes and control returns to the Debugger.

Step Over

Step Over single-steps through a method, treating procedures and custom methods as single steps. Choose Program|Step Over, click the Step Over button, or press F7.

Step Into

Step Into single-steps through every line in a method and every line in the procedures and custom methods the method calls. Choose Program|Step Into, click the Step Into button, or press Shift+F7. You must turn on Compile With Debug on the Program menu to step through code called from the Debugger.

Stop Execution

Execution halts execution in the Debugger. A dialog box appears stating that execution is stopped. Choose OK to halt execution in the Debugger and return to view mode. Click the Design button to return to design mode.

Close

File|Close closes the Debugger and returns control to the running form. You can also choose View|Debugger.


Edit | Save Debug State

See also

Choose Edit|Save Debug State to save the Debugger environment in its current state. The Debugger environment includes the Debugger window, and the Watches, Breakpoints, Tracer, and Call Stack windows.

Any of these windows you have open when you choose Edit|Save Debug State are automatically opened whenever you start the Debugger. The size and position of these windows are also saved, whether or not they were open when the debug state was saved. The debug state is saved to the registry and is reinstated each time you start Paradox.


View | Source

See also

Choose View|Source in the Debugger to display another method's code in an Editor window. This is a quick way to move to a specific method for a specific object. Select one of the methods listed in the Method List dialog box to load it in the Debugger.


Program | Run

See also

Choosing Program|Run in the Debugger is the same as choosing Program|Run from the Editor.


Program | Run to Cursor

See also

Choose Program|Run to Cursor in the Debugger to continue execution to the insertion point. Move the insertion point to the desired location in your code and choose Program|Run To Cursor.


Program | Run to EndMethod

See also

Choose Program|Run to EndMethod in the Debugger to continue execution to the end of the current method, disregarding any additional breakpoints.


Program | Step Over

See also

Program|Step Over lets you single-step through a method, treating procedures and custom methods as single steps. This command is available only when execution stops at a breakpoint.


Program | Step Into

See also

Program|Step Into single-steps through every line in a method and every line in the procedures and custom methods the method calls. This command is available only when execution stops at a breakpoint.


Program | Stop Execution

See also

Program|Stop Execution halts execution in the Debugger. A dialog box appears stating that execution is stopped. Choose OK to return to view mode. Click the Design button to return to design mode. This command is available only when execution is suspended at a breakpoint.


Program | Inspect

See also

To inspect variables and constants when execution is halted at a breakpoint., and optionally change a variable's value, choose Program|Inspect from the Debugger. You can also click the Inspect button or press Ctrl+I. You can inspect Library, Form, Script, or Report variable types.

If the insertion point is next to or inside an assigned variable, a dialog box opens displaying the current value of that variable. If you want to change the variable, type a new value and choose OK.

If the insertion point is not currently in an assigned variable, a dialog displays the variable nearest to the breakpoint. Either choose OK to inspect the variable shown, or type in the name of the variable you want to inspect. You can also drag the mouse to select an item to inspect.


Program | Add Watch

See also

Choosing Program|Add Watch in the Debugger is the same as choosing Program|Add Watch in the Editor.


Program | Toggle Breakpoint

See also

Choosing Program|Toggle Breakpoint in the Debugger is the same as choosing Program|Toggle Breakpoint in the Editor.


Program | Origin

See also

Program|Origin displays the method containing the current breakpoint with the insertion point on the line containing the breakpoint.

When execution suspends at a breakpoint, the Debugger displays the method containing the breakpoint. At this time, you can navigate through your code in the Debugger window, or even display another method in the Debugger. Program|Origin is useful when you want to return quickly to the breakpoint where execution was halted. Debug|Origin is available only when execution is suspended at a breakpoint.


Tracer window

See also	ObjectPAL	Commands

The ObjectPAL Tracer lists each ObjectPAL statement as it executes, providing a record of what happened and when. By default, the Tracer lists only methods and procedures that you have attached code to. However, you can choose to trace any or all of a form's built-in event methods, whether or not they have ObjectPAL code attached.


ObjectPAL

tracerClear

tracerHide

tracerOff

tracerOn

tracerSave

tracerShow

tracerToTop

tracerWrite


Tracer Window menu commands

See also	ObjectPAL

File|Close

File|Save

File|Save As

File|Print

File|Printer Setup

File|Print

File|Clear

Properties|Trace On

Properties|Built in Events

Properties|Show Code


File | Clear

See also

Deletes all tracer output generated so far.


File | Close

See also

Closes the Tracer window.


File | Save

See also

Saves the contents of the Tracer window.


File | Save As

See also

Saves the contents of the Tracer window.


File | Print

See also

Opens the Editor Print Layout dialog box, from which you can print the contents of the Script, Tracer, and Method windows. Click OK when you're ready to print.


File | Printer Setup

See also

Opens the Printer Setup dialog box, where you can select a printer or change other Windows printer settings.


Tracer Properties|Trace On
Properties | Trace On

See also

Choose Properties|Trace On to turn tracer output off and on without closing the Tracer window.

With Properties|Show Code turned on, tracer output consists of each line of code executed in all methods, procedures, and libraries. With Properties|Show Code turned off, tracer output consists only of messages output from tracerWrite statements and any built-in event methods checked in the Select Built-in Event Methods For Tracing dialog box.


Tracer Properties|Built-in Events
Properties | Built-in Events

See also

Displays a dialog box listing all the built-in event methods. Check a built-in method to display information about the method in the Tracer window as it executes.

Checking a built-in method indicates that you want that method traced; unchecked methods are not traced. It does not matter whether or not the method has code attached to it [image] if it is checked it will be traced.

When the box labeled "form prefilter" is checked, methods are traced as they execute for the form and the intended target object; otherwise methods are traced only for the target object.


Properties | Show Code

See also

Choose Properties|Show Code to control whether each line of code is listed in the Tracer as it executes. With Show Code turned off, tracer output consists only of messages output from tracerWrite statements and any built-in event methods checked in the Select Built-in Event Methods For Tracing dialog box.


Watches window

See also

The Watches window lets you inspect a variable's value in the Watches window while the form or method executes.

Watching a variable is similar to inspecting a variable, except you can watch a variable's value change as your code executes. You can watch simple types; more complex types, like arrays, must be inspected. You watch variables of the Form, Script, and Report types, but you cannot changes their values.

To watch a variable,

1.	In the Debugger window, place the insertion point next to or inside a variable name.

2.	Choose Program|Add Watch, or click the Add Watch button. The Watch window opens.

Using the Watches window

Right-click anywhere in the Watches window to display its menu. From this menu you can add or remove variables you want to watch, edit the name of a variable being watched, or change the value of a watched variable. You must use the menu to perform any of these actions. Typing anything in the Watches window opens the Change Value dialog box for the selected variable.

To add a variable to watch, choose New and type the name of the variable you want to watch.

To edit the name of a watched variable, choose Edit and change the name of the watched variable.

Choose Change to change the value of a variable. The Change Value dialog box opens. Type a new value for the variable and press OK.

Choose Remove to remove the currently selected variable from the Watches window.

Choose Remove All to remove all variables from the Watches window.


New

See also

Right-click anywhere in the Watches window to display its menu, and choose New to add a variable to watch.


Edit

See also

Right-click on a watched variable and choose Edit to change the name of the watched variable.


Change

See also

Right-click on a watched variable and choose Change to change the value of a variable.


Remove

See also

Right-click on a watched variable and choose Remove to remove it from the Watches window.


Remove All

See also

Right-click anywhere in the Watches window and choose Remove All to remove all watched variables from the Watches window.


Breakpoints window

See also

The Breakpoints window lists all the breakpoints in your code for the active form, library, or script.

Right-click a breakpoint for a menu that lets you remove one or all breakpoints.


Remove

See also

Right-click a listed breakpoint and choose Remove to remove that breakpoint.


Remove All

See also

Right-click anywhere in the Breakpoints window and choose Remove All to remove all breakpoints.


Call Stack window

See also

The Call Stack window lists the methods and procedures containing custom code that were called before the current breakpoint was reached. This list is referred to as the call stack. The most recently called routine is listed first, followed by its caller and so on, all the way back to the first method or procedure.

Any method or procedure on the call stack can be viewed in the Debugger. Just right-click the method or procedure and choose Inspect Context. If you have the Watches window open, the watched variables are updated to reflect their values at that scope.


Inspect Context

See also

Any method or procedure listed in the Call Stack window can be viewed in the Debugger. Just right-click the method or procedure you want to view and choose Inspect Context.


Data Model Designer (current data model)

See also	Commands

Use the Data Model Designer to modify the data model of a design document and to save, load and print data models. Choose Tools|Data Model Designer to open the Data Model Designer.

If View|Current Data Model is checked, the Data Model Designer shows the data model of the active form or report.

For information on using the Data Model Designer, see the following topics:

About data models

About the Data Model Designer

To add a table to the data model

To view two data models at one time

To save a data model in the Data Model Designer


Data Model Designer (reference model)

See also	Commands

Use the Data Model Designer to modify the data model of a design document and to save, load and print data models. Choose Tools|Data Model Designer to open the Data Model Designer.

If View|Reference Model is checked, the Data Model Designer displays a data model that you can modify and save to disk independently of a form or report. This data model can be a reference when you're working with other data models in the Form Design window or Report Design window.  You can view it, borrow from it, or use it directly in a design document.

For information on using the Data Model Designer, see the following topics:

About data models

About the Data Model Designer

To add a table to the data model

To view two data models at one time

To save a data model in the Data Model Designer

Data Model Designer (split view)


Data Model Designer (split view)

See also	Commands

Use the Data Model Designer to modify the data model of a design document and to save and load data models. Choose Tools|Data Model Designer to open the Data Model Designer.

If View|Current Data Model and View|Reference Control are checked, the Data Model Designer shows two panes:

The top pane shows the currently loaded reference data model.

The bottom pane shows the data model of the active form or report.

Note:	From this view, only the data model of the active form or report can be modified. To change the reference data model, choose View|Reference Model only, then File|Open, or, right-click the pane background.

Tip:	If you have difficulty seeing the Reference Model pane, enlarge the pane by dragging the border between the panes down, or by resizing the Data Model Designer window.

With both panes displayed, you can drag and drop tables from the Reference Model pane to the Current Data Model pane.

For information on using the Data Model Designer, see the following topics:

About data models

About the Data Model Designer

To view two data models at one time

To copy items from the reference data model

To add a table to the data model

To load a data model

To save a data model in the Data Model Designer


Data Model Designer menu commands

See also

File|Open

File|Close

File|Save

File|Save As

File|Print

Edit|Delete

View|Current Data Model

View|Reference Model

View|Reference Control

Design|Add Table

Design|Unlink

Design|Link

Design|Accept Changes

Design|Cancel Changes

Design|Save As Default

Design|Restore Default

Design|Current Table


File | Open

See also

Choose File|Open to load a previously saved data model into the Data Model Designer. Paradox opens the Select File dialog box. From the Select File dialog box, choose a data model and choose OK.

The effect of choosing File|Open depends on the mode of the Data Model Designer:

If View|Current Data Model is checked,

Paradox loads a data model, replacing the data model of the active form or report. Choose Design|Accept Changes to change the data model of the active form or report. Choose Design|Cancel Changes to cancel the changes.

If View|Reference Model is checked,

Paradox loads a reference data model.

Shortcut

Right-click the background of the window and choose a data model from the list.

If View|Reference Control is checked,

Paradox loads the data model file in the current data model pane.


File | Save

See also

Choose File|Save to save a data model to disk. The effect of choosing File|Save depends on the mode of the Data Model Designer:

If View|Current Data Model is checked,

Paradox opens the Save File As dialog box. Use this dialog box to save the form's or report's data model to disk.

If View|Reference Model is checked,

Paradox saves changes you have made to the currently loaded data model to disk.

If View|Reference Control is checked,

Paradox saves the changes made to the current data model pane.


File | Save As

See also

Choose File|Save As to save a copy of a data model under a different name. Paradox opens the Save File As dialog box. The effect of choosing File|Save As depends on the mode of the Data Model Designer:

If View|Current Data Model is checked,

Use the Save File As dialog box to save the form's or report's data model to disk. Specify the file name and directory where you want to create the new reference data model.

If View|Reference Model is checked,

Use the Save File As dialog box to specify the file name and directory where you want to copy the currently loaded reference data model. After saving the data model, if you want to use it as your reference data model, choose Design|Save As Default.

If View|Reference Control is checked,

the File|Save As operation pertains only to the Current Data Model pane.


File | Close

See also

Choose File|Close to close the Data Model Designer.


File | Print

See also

Choose File|Print to print the currently loaded data model.

Shortcut:

Toolbar


Edit | Delete

See also

Choose Edit|Delete to remove a selected table from the data model. For a table to be deleted, it must not be linked to another table. (First select the detail table. and choose Design|Unlink if the table you want to remove is linked.)

Shortcuts:

Keyboard	Del

Toolbar


View | Current Data Model

See also

Choose View|Current Data Model to display the data model of the active form or report. See Data Model Designer (Current Data Model) for more information.


View | Reference Model

See also

Choose View|Reference Model to display a reference data model. See Data Model Designer (Reference Model) for more information.


View | Reference Control

See also

Check View|Reference Control to split the Data Model Designer into two panes. The bottom pane of the window shows the data model of the active form or report. The top pane of the window shows the currently loaded reference data model.

Important:	From this view, only the data model in the bottom pane can be modified. All menu commands and Toolbar buttons work on only the data model in the bottom pane.

View|Reference Control can be checked only when View|Current Data Model is checked. See Data Model Designer (split view) for more information.


Design | Accept Changes

See also

After you finish making changes, choose Design|Accept Changes to change the data model for the active form or report. This menu command is available only when View|Current Data Model is checked.

Shortcuts:

Keyboard	F9

Toolbar


Design | Add Table

See also

Choose Design|Add Table to add tables to the data model. Paradox opens the Select File dialog box.

Shortcuts:

Keyboard	Alt+A

Toolbar


Design | Unlink

See also

Choose Design|Unlink to unlink a selected detail table.

Shortcuts:

Keyboard	Alt+U

Toolbar


Design | Link

See also

Select a detail table and choose Design|Link to view or modify the link between two tables. Paradox opens the Define Link dialog box.


Design | Cancel Changes

See also

Choose Design|Cancel Changes to undo changes you have made to a data model.

Shortcuts:

Keyboard	Esc

Toolbar


Design | Save As Default

See also

Choose Design|Save As Default to save the default appearance of the Data Model Designer. Choose this command when you want the Data Model Designer to always appear the way it does now. The data model you save as a default acts as a reference when you're working with other data models in the Form Design or Report Design windows.

When you choose Design|Save As Default, Paradox records

The name of the reference data model

The size and position of the Data Model Designer

Which commands from the View menu have been checked

Then, whenever you choose Tools|Data Model Designer, the Data Model Designer will appear the same as it did when you saved the defaults.


Design | Restore Default

See also

Choose Design|Restore Default to restore the appearance of the Data Model Designer to the appearance it had when you last chose Design|Save As Default. This is equal to restoring the default, or reference data model.


Design | Current Table

See also

Choose Design|Current Table to view and change properties of the selected table.

Shortcut

Keyboard	F6

Mouse	Right-click the table


Object Explorer window

See also

The Object Explorer is your entryway to the ObjectPAL Editor. It also lets you view an object tree for the current form, and, in addition, gives you a developer's interface to properties, which you can change in the explorer.

The two panes share four menus:

The File menu, for closing the Object Explorer

The Edit menu containing editing commands and Developer Preferences command.

The View menu, used to specify what part of the Object Explorer to view, whether to hide the main menu, and whether to temporarily pin the Object Explorer to the Desktop.

The Help menu, for getting help on using the Object Explorer.

You can view both the object tree and the Object Explorer tabbed right pane (showing the object's methods, properties and events), or you can view them individually. These choices are available on the Object Explorer View menu. You can also adjust the size of the panes by dragging the border between the two.

The object tree displays information for the current document; the tabbed pane displays information for the selected object. If you select another object or document, the contents of the Object Explorer change to reflect the new object or document.

The object tree

The object tree shows the hierarchical relationships among objects in the current form. It works like the Windows Explorer: click on a plus (+) icon to expand that node of the tree; click on a minus (-) icon to collapse it. When fully expanded the object tree shows all objects you've placed in the current form. You can move and copy objects in the object tree using the right-click menu. You can also right-click the objects in the object tree to change their properties.

For information on using the object tree, see About the object tree in the ObjectPAL Reference help.

The tabbed pane

The tabbed pane contains separate pages to show what custom methods, events, and properties are attached to an object. It lets you change the properties for an object and open individual Editor windows to edit Methods and Events.

For information on using the tabbed pane, see About the tabbed pane in the ObjectPAL Reference help.


File | Close

See also

Closes the Object Explorer window.


Edit | Undo

See also

If you just deleted a design object from the object tree, Undo cancels the deletion, and the object is returned to the same location.

Note:	Undo is NOT available from the tabbed pane of the Object Explorer. Any deletion you perform from the Methods or Events page you cannot undo.


Edit | Cut

See also

Deletes the selected design object in the object tree and puts it on the Clipboard. You can then use Edit|Paste to paste it somewhere else (on the same form or on another form).

Note:	Cut is not available from the tabbed pane of the Object Explorer.


Edit | Copy

See also

Makes a copy of the selected object in the object tree and puts it on the Clipboard.

Note:	Copy is not available from the tabbed pane of the Object Explorer.


Edit | Paste

See also

Pastes the contents of the Clipboard to the selected object in the object tree.

If the container object cannot accept the object because of containership rules, or because the object is too big, you'll hear a beep, and the paste will not be done. If the object selected to be the container object is not an appropriate container for the object you want to paste, then Paste is not available.

Note:	Paste is not available from the tabbed pane of the Object Explorer.


Edit | Delete

See also

Deletes the selected object from the object tree or deletes the method or event selected on a Methods or Events page. A deletion from a Methods or Events page is permanent. A deletion from the object tree can be undone (choose Edit|Undo).


View | Object Tree

See also

Hides the tabbed pane of the Object Explorer and displays only the object tree.


View | Tabbed Pane

See also

Hides the object tree and displays only the tabbed pane of the Object Explorer.


View | Both

See also

Displays both sides of the Object Explorer: the object tree and the tabbed pane.


View | Hide Menu

See also

Hides the menu across the top of the Object Explorer. To display the menu again, choose Show Menu from the Object Explorer's Control menu (upper left corner).


View | View All

See also

This command is a toggle. When checked, View All shows you all built-in event methods appropriate to the objects you select. When View All is not checked, only a "beginner's" subset of built-in event methods is shown.

The setting applies only to the current session and temporarily overrides the ObjectPAL Level setting in the Developer Preferences dialog box (Edit|Developer Preferences).


View | Pin Explorer

See also

Keeps the Object Explorer pinned to the Desktop (open on the Desktop) while you work in the Form Design window or an Editor window during your work on the current form or until you uncheck Pin Explorer by choosing it again (it's a toggle). When you move focus from the current form to another form or another part of Paradox, Pin Explorer is automatically unchecked, and the Object Explorer closes.

If Pin Explorer is unchecked, the Object Explorer closes when you move focus outside the Form Design window, unless you have checked the Keep Pinned preference in the Developer Preferences dialog box, Explorer page (Edit|Developer Preferences).


Help | Object Explorer Help

See also

Opens a Help topic that explains the Object Explorer.


The ObjectPAL Editor

See also

When you open an Editor window, some default text appears, and the insertion point is positioned on line two so you can begin typing right away. By default, keywords appear in bold and comments in italics.

Customizing the Editor

You can customize the Editor by choosing Edit|Developer Preferences and choosing your preferences on the various pages of the Developer Preferences dialog box. Many options are available, such as color highlighting, incremental search, smart tab indent, and so on. You can also choose BRIEF or Epsilon keymaps, instead of the Paradox default. See below.

F1 help

For help on any element of the ObjectPAL language, place the insertion point in an ObjectPAL word and press F1. If there is only one Help topic for the word, the topic opens. If there is more than one, you'll get a list of topics to choose from.

Shift+F1 help

For a listing of keystrokes that correspond to the keymap you choose in the Developer Preferences dialog box, place the insertion point on a blank space in the Editor and press Shift+F1.

Keystroke mappings

You can choose from three keystroke mappings in the ObjectPAL Editor:

The default Paradox keymap

BRIEF

Epsilon

Of the three, the default is the only CUA keymap. The BRIEF and Epsilon mappings do not allow standard menu access through hotkeys, and standard MDI keys are not available.

Menus

Using the BRIEF and Epsilon keymaps, you can access the menus by pressing F10 or by pressing and releasing the Alt key. This moves the focus to the menu. Then press the shortcut key for the wanted menu.

The Default keymap allows menu access as for BRIEF and Epsilon, but in addition the menus can be reached by the standard Alt+Key combination, for example, Alt+E for the Edit menu.

Standard MDI system keys

Standard MDI system keys are only available for the Default keymap. Examples of these keys are:

Ctrl+F6	The MDI window toggle

Alt+F6 	The SDI window toggle

Ctrl+F4	Closing an MDI window

See About the Editor in the ObjectPAL Reference help for more information about the Editor.


Paradox default keymap

See also

If you're using the Paradox default keystroke mapping (Developer Preferences dialog box, Display page) the keystrokes in the left column will perform the actions shown on the right.

Left Arrow	Move cursor left one column.
Right Arrow	Move cursor right one column.
Up Arrow	Move cursor one line up.
Down Arrow	Move cursor one line down.
Home	Move cursor to start of line.
End	Move cursor to end of line.
Page Up	Move cursor up one page.
Page Down	Move cursor down one page.
Backspace	Delete character to the left of the cursor.
Delete	Delete character to the right of the cursor. (On the cursor if box-shaped cursor).
Insert	Toggle insert / overstrike mode.
Tab	Inserts a tab, or indents to indent of previous line if smart-tab is turned on.
Ctrl+Left Arrow	Move cursor left one word.
Ctrl+Right Arrow	Move cursor right one word.
Ctrl+Up Arrow	Scroll window up one line.
Ctrl+Down Arrow	Scroll window down one line.
Ctrl+Home	Move cursor to start of editor.
Ctrl+End	Move cursor to end of editor.
Ctrl+Page Up	Move cursor to top of screen.
Ctrl+Page Down	Move cursor to bottom of screen.
Ctrl+Backspace	Delete the word to the left of the cursor.
Ctrl+Delete	Delete the word to the right of the cursor.
Ctrl+Tab	Smart tab, indents to the indent of the previous line.
Shift+Left Arrow	Select from the character to the left of the cursor.
Shift+Right Arrow	Select from character to the right of the cursor.
Shift+Up Arrow	Select from one line up.
Shift+Down Arrow	Select from one line down.
Shift+Home	Select to start of line.
Shift+End	Select to end of line.
Shift+Page Up	Select to previous page.
Shift+Page Down	Select to next page.
Shift+Tab	Move cursor back one tab position.
Ctrl+Shift+Left Arrow	Select from the word to the left of the cursor.
Ctrl+Shift+Right Arrow	Select from the word to the right of the cursor.
Ctrl+Shift+Home	Select from start of editor.
Ctrl+Shift+End	Select from end of editor.
Ctrl+Shift+Page Up	Select from start of screen.
Ctrl+Shift+Page Down	Select from end of screen.
Ctrl+Ins	Copy to Clipboard.
Shift+Del	Cut to Clipboard.
Shift+Ins	Paste from Clipboard.
Ctrl+C	Copy to Clipboard.
Ctrl+X	Cut to Clipboard.
Ctrl+V	Paste from Clipboard.
Alt+Backspace	Undo.
Alt+Delete	Redo.
Ctrl+]	Find matching parenthesis.
F1	Context sensitive help.
F2	Save the source into the form. Nothing is saved to disk however.
F3	Inspect the variable at cursor (Debugger only).
F5	Go To Line.
F7	Step Over (Debugger only).
F8	Run.
F9	Check syntax.
Shift+F2	Save the source and close the editor.
Shift+F3	View callstack (toggle).
Shift+F7	Step into (Debugger only).
Shift+F8	Run to cursor (Debugger only).
Shift+F9	Compile the form.
Ctrl+F3	Toggle breakpoint.
Ctrl+F5	Next Warning.
Ctrl+F8	Run to endMethod (Debugger only).
Ctrl+F9	Deliver.
Ctrl+A	Find next.
Ctrl+B	Toggle breakpoint.
Ctrl+D	Deliver.
Ctrl+G	Go To line.
Ctrl+I	Inspect the variable at cursor. (Debugger only)
Ctrl+L	Replace All.
Ctrl+N	Next warning.
Ctrl+R	Replace next.
Ctrl+S	Incremental search.
Ctrl+W	Add watch of variable at cursor.
Ctrl+Y	Delete current line.
Ctrl+Z	Find first.
Ctrl+Shift+I	Indent block.
Ctrl+Shift+U	Outdent block.
Ctrl+Shift+R	Record key macro.
Ctrl+Shift+P	Playback key macro.
Ctrl+Shift+Z	Replace first.
Ctrl+Shift+ 0	Set bookmark number 0.
Ctrl+Shift+ 1	Set bookmark number 1.
Ctrl+Shift+ 2	Set bookmark number 2.
Ctrl+Shift+ 3	Set bookmark number 3.
Ctrl+Shift+ 4	Set bookmark number 4.
Ctrl+Shift+ 5	Set bookmark number 5.
Ctrl+Shift+ 6	Set bookmark number 6.
Ctrl+Shift+ 7	Set bookmark number 7.
Ctrl+Shift+ 8	Set bookmark number 8.
Ctrl+Shift+ 9	Set bookmark number 9.
Ctrl+ 0	Go To bookmark number 0.
Ctrl+ 1	Go To bookmark number 1.
Ctrl+ 2	Go To bookmark number 2.
Ctrl+ 3	Go To bookmark number 3.
Ctrl+ 4	Go To bookmark number 4.
Ctrl+ 5	Go To bookmark number 5.
Ctrl+ 6	Go To bookmark number 6.
Ctrl+ 7	Go To bookmark number 7.
Ctrl+ 8	Go To bookmark number 8.
Ctrl+ 9	Go To bookmark number 9.
Ctrl+K+B	Set start of block (Persistent blocks must be on).
Ctrl+K+C	Copy block to Clipboard.
Ctrl+K+E	Change word under cursor to lowercase.
Ctrl+K+F	Change word under cursor to uppercase.
Ctrl+K+H	Hide block.
Ctrl+K+I	Indent block.
Ctrl+K+K	Set end of block (Persistent blocks must be on).
Ctrl+K+L	Mark current line.
Ctrl+K+N	Uppercase block.
Ctrl+K+O	Lowercase block.
Ctrl+K+R	Read block from file.
Ctrl+K+S	Save form.
Ctrl+K+T	Mark word under cursor.
Ctrl+K+U	Outdent block.
Ctrl+K+V	Move block  (Persistent blocks must be on).
Ctrl+K+W	Write block to file.
Ctrl+K+Y	Delete current block.
Ctrl+O+C	Set column block.
Ctrl+O+G	Go To line.
Ctrl+O+I	Set inclusive block.
Ctrl+O+K	Set non inclusive block.
Ctrl+O+L	Set line block.
Ctrl+O+O	Toggle case of block.


BRIEF keymap

See also

If you selected the BRIEF keystroke mapping in the Developer Preferences dialog box (Display page) the keystrokes in the left column will perform the actions shown on the right.

Left Arrow	Moves (or extends selection) one column left of cursor.
Right Arrow	Moves (or extends selection) one column right of cursor.
Up Arrow	Moves (or extends selection) one line up from cursor.
Down Arrow	Moves (or extends selection) one line down from cursor.
Home	Moves (or extends selection) to start on line, then start of screen, then start of editor.
End	Moves (or extends selection) to end of line, then end of screen, then end of editor.
Page Up	Moves (or extends selection) one page up.
Page Down	Moves (or extends selection) one page down.
Backspace	Delete character to the left of the cursor.
Delete	Delete character to the right of the cursor. (On the cursor if box shaped cursor).
Tab	Inserts a tab, or indents block if a block exists.
Ctrl+Left Arrow	Moves (or extends selection) one word left of cursor.
Ctrl+Right Arrow	Moves (or extends selection) one word right of cursor.
Ctrl+Home	Moves (or extends selection) to top of screen.
Ctrl+End	Moves (or extends selection) to bottom of screen.
Ctrl+Page Up	Moves (or extends selection) to start of editor.
Ctrl+Page Down	Moves (or extends selection) to end of editor.
Ctrl+Backspace	Delete the word to the left of the cursor.
Alt+Backspace	Delete the word to the right of the cursor.
Shift+Home	Moves (or extends selection) to left of screen.
Shift+End	Moves (or extends selection) to right of screen.
Shift+Tab	Moves back to previous tab, or outdents block if a block exists.
Insert	Paste from Clipboard.
Minus (Num Keypad)	Cut block to Clipboard, cut current line if no block is selected.
Plus (Num Keypad)	Copy block to Clipboard; copy current line if no block is selected.
Star (Num keypad)	Undo.
F1	<Not assigned. Reserved for later use>
F5	Find first.
F6	Replace first.
F7	Record key macro.
F8	Playback key macro.
F9	Run.
F10	Set focus on menu.
F11	Step over (Debugger only).
F12	Step into (Debugger only).
Alt+F2	Zoom window.
Alt+F3	Inspect variable at cursor (Debugger only).
Alt+F5	Reverse search first.
Alt+F6	Reverse replace first.
Alt+F7	Run to cursor (Debugger only).
Alt+F8	Run to endMethod (Debugger only).
Alt+F10	Syntax check.
Ctrl+F3	View callstack.
Ctrl+F4	Add watch of variable at cursor.
Ctrl+F5	Toggle case sensitive in search.
Ctrl+F6	Toggle advanced match in search.
Ctrl+F8	Toggle breakpoint.
Ctrl+F9	Run.
Ctrl+F10	Compile the form.
Shift+F5	Search next.
Shift+F6	Replace next.
Ctrl+B	Scroll current line to bottom of window.
Ctrl+C	Scroll current line to center of window.
Ctrl+D	Scroll window one line down.
Ctrl+E	Scroll window one line up.
Ctrl+K	Delete to beginning of line.
Ctrl+M	Enter key.
Ctrl+N	Next warning.
Ctrl+S	Incremental search.
Ctrl+T	Scroll current line to top of window.
Ctrl+U	Redo.
Alt+A	Start non-inclusive block marking.
Alt+C	Start column marking.
Alt+D	Delete line.
Alt+E	View Object Explorer.
Alt+G	Go To line.
Alt+H	Help.
Alt+I	Toggle insert / overwrite mode.
Alt+K	Delete to end of line.
Alt+L	Start line marking.
Alt+M	Start inclusive block marking.
Alt+O	Save form as.
Alt+R	Read block from file.
Alt+S	Search first.
Alt+T	Replace first.
Alt+U	Undo.
Alt+W	Write block to file, or if no block save form to disk.
Alt+X	Close editor without saving code.
Alt+ 0	Set bookmark number 0.
Alt+ 1	Set bookmark number 1.
Alt+ 2	Set bookmark number 2.
Alt+ 3	Set bookmark number 3.
Alt+ 4	Set bookmark number 4.
Alt+ 5	Set bookmark number 5.
Alt+ 6	Set bookmark number 6.
Alt+ 7	Set bookmark number 7.
Alt+ 8	Set bookmark number 8.
Alt+ 9	Set bookmark number 9.
Alt+J+ 0	Go To bookmark number 0.
Alt+J+ 1	Go To bookmark number 1.
Alt+J+ 2	Go To bookmark number 2.
Alt+J+ 3	Go To bookmark number 3.
Alt+J+ 4	Go To bookmark number 4.
Alt+J+ 5	Go To bookmark number 5.
Alt+J+ 6	Go To bookmark number 6.
Alt+J+ 7	Go To bookmark number 7.
Alt+J+ 8	Go To bookmark number 8.
Alt+J+ 9	Go To bookmark number 9.
Ctrl+Q+[	Find matching parenthesis.
Ctrl+Q+]	Find matching parenthesis.
Ctrl+O+O	Toggle case of block.


Epsilon keymap

See also

If you selected the Epsilon keystroke mapping in the Developer Preferences dialog box (Display page) the keystrokes in the left column will perform the actions shown on the right.

Left Arrow	Move cursor left one column.
Right Arrow	Move cursor right one column.
Up Arrow	Move cursor one line up.
Down Arrow	Move cursor one line down.
Home	Move cursor to top of screen.
End	Move cursor to bottom of screen.
Page Up	Move cursor up one page.
Page Down	Move cursor down one page.
Backspace	Delete character to the left of the cursor.
Delete	Delete character to the right of the cursor. (On the cursor if box shaped cursor).
Insert	Toggle insert / overstrike mode.
Tab	Inserts a tab, or indents to indent of previous line if smart-tab is turned on.
Ctrl+Left Arrow	Move cursor left one word.
Ctrl+Right Arrow	Move cursor right one word.
Ctrl+Home	Move cursor to start of editor.
Ctrl+End	Move cursor to end of editor.
Esc+Left Arrow	Move cursor to start of line.
Esc+Right Arrow	Move cursor to end of line.
F1	Context sensitive help.
F2	Save the source into the form. Nothing is saved to disk however.
F3	Inspect the variable at cursor (Debugger only).
F5	Go To Line.
F6	Add watch of variable at cursor.
F7	Step Over (Debugger only).
F8	Run.
F9	Undo.
Shift+F2	Save the source and close the editor.
Shift+F3	View callstack (toggle).
Shift+F7	Step into (Debugger only).
Shift+F8	Run to cursor (Debugger only).
Shift+F9	Compile the form.
Ctrl+F3	Toggle breakpoint.
Ctrl+F5	Next Warning.
Ctrl+F8	Run to endMethod (Debugger only).
Ctrl+F9	Undo.
Ctrl+F10	Redo.
Ctrl+A	Move cursor to start on line.
Ctrl+B	Move cursor left one column.
Ctrl+D	Delete character to the right of the cursor. (On the cursor if box shaped cursor).
Ctrl+E	Move cursor to end of line.
Ctrl+F	Move cursor right one column.
Ctrl+H	Delete character to the left of the cursor.
Ctrl+K	Delete current line and copy/append to Clipboard.
Ctrl+L	Scroll current line to center of window.
Ctrl+M	Enter.
Ctrl+N	Move cursor one line down.
Ctrl+P	Move cursor one line up.
Ctrl+S	Incremental search.
Ctrl+T	Switch the 2 characters on each side of the cursor.
Ctrl+V	Move cursor down one page.
Ctrl+W	Delete block and copy/append to Clipboard.
Ctrl+Y	Paste from Clipboard.
Ctrl+Z	Scroll one line up.
Ctrl+_	Context sensitive help.
Ctrl+X,  (	Record key macro.
Ctrl+X,  )	Record key macro.
Ctrl+X,  E	Playback key macro.
Ctrl+X,  G	Go To line.
Ctrl+X,  I	Read block from file.
Ctrl+X,  U	Undo.
Ctrl+X,  W	Write block to file.
Ctrl+X,  Tab	Indent block.
Ctrl+X,  Ctrl+F	View method explorer (toggle).
Ctrl+X,  Ctrl+I	Indent block.
Ctrl+X,  Ctrl+N	Next warning.
Ctrl+X,  Ctrl+R	Redo.
Ctrl+X,  Ctrl+S	Save form.
Ctrl+X,  Ctrl+T	Switch current and previous line.
Ctrl+X,  Ctrl+U	Undo.
Ctrl+X,  Ctrl+W	Write block to file.
Ctrl+X,  Ctrl+X	Exchange cursor and block marker.
Alt+B	Esc,  B	Move cursor left one column.
Alt+C	Esc,  C	Uppercase word.
Alt+D	Esc,  D	Delete word and copy/append to Clipboard.
Alt+F	Esc,  F	Move cursor right one word.
Alt+L	Esc,  L	Lowercase word.
Alt+M	Esc,  M	Move cursor to first character on current line.
Alt+T	Esc,  T	Switch the words before and after the cursor.
Alt+U	Esc,  U	Uppercase word.
Alt+V	Esc,  V	Move cursor to previous page.
Alt+W	Esc,  W	Copy block to Clipboard.
Alt+Z	Esc,  Z	Scroll window one line down.
Alt+ ,	Esc,   ,	Move cursor to top of window.
Alt+ .	Esc,   .	Move cursor to end of window.
Alt+ \	Esc,  \	Delete white space on both sides of cursor.
Alt+ )	Esc,  )	Find the matching parenthesis.
Alt+ <	Esc,  <	Move cursor to start of editor.
Alt+ >	Esc,  >	Move cursor to end of editor.
Alt+ ?	Esc,  ?	Context sensitive help.
Alt+ %	Esc,  %	Replace first.
Alt+ *	Esc,  *	Replace first (advanced match).
Alt+ &	Esc,  &	Replace first (match string).
Alt+ @	Esc,  @	Set marker to current cursor position.
Alt+Backspace	Esc,  Backspace	Delete word left of cursor and copy/append to Clipboard.
Alt+Tab	Esc,  Tab	Indents to indent of previous line.
Alt+Ctrl+B	Esc,  Ctrl+B	Find matching parenthesis.
Alt+Ctrl+F	Esc,  Ctrl+F	Find matching parenthesis.
Alt+Ctrl+H	Esc,  Ctrl+H	Delete the word left of cursor and copy/append to Clipboard
Alt+Ctrl+R	Esc,  Ctrl+R	Search first (backward, advanced match).
Alt+Ctrl+S	Esc,  Ctrl+S	Search first (forward, advanced match).
Alt+Ctrl+W	Esc,  Ctrl+W	Append to the keyboard (until next non Clipboard action).
Alt+Ctrl+ \	Esc,  Ctrl+ \	Block indent.


If the directory you want has an alias, you can select it in the Alias drop-down list. The name of the selected directory appears in the Look In drop-down list and the files in that directory appear in the file list.


View the Form opens the form in its view window.


Edit the Form Design opens the form in its design window.


Print the Report prints the form as a report if you also choose Open as Report.


Open as a Report opens the form as a report. This is a quick way to use a form layout to specify the layout of a report.


Run the Query runs the query and displays the Answer table.


Edit the Query opens the query in its design window.


View the Report opens the report in its view window.


Edit the Report Design opens the report in its design window.


Print the Form prints the report as a form if you also choose Open as Form.


Open as a Form opens the report as a form. This is a quick way to use a report layout to specify the layout of a form.


Run the Script runs the script.


Edit the Script opens the script in its design window.


Run the Query runs the query and displays the Answer table.


Edit the Query opens the query in its design window.


Opens a form or report using a different master table [image] a different table from the one on which it was originally designed. When you choose Change Table, Paradox opens the Select File dialog box, where you specify the new master table.


Empty Desktop Toolbar

See also

The following buttons appear on the Standard Toolbar when the Desktop is empty or contains an open Project Viewer. Click a button below to see specific information on it.

Open or Create Table			Open or Create Form
Open or Create Report			Open or Create Query
Open or Create SQL File			Open or Create Script
Open or Create Library			Add Reference
Remove Reference			Project Viewer
Experts
Like the menus, the Toolbar changes when the active window changes. Each window has a unique Toolbar.


Open or Create

To open an object of this type, click the button to display the Open dialog for this file type. Choose the file you want to open. To create a new instance of the object, right-click the button and choose New from the menu that appears.


Data Model Designer Toolbar

See also

The Toolbar in the Data Model Designer provides shortcuts to common menu commands. Click a button below to see specific information on it.

Load Data Model			Save Data Model
Print Data Model			Add Table
Remove Selected Table			Unlink Selected Table
Accept Changes			Cancel Changes
Help


Form Toolbar

See also

All actions performed by Toolbar buttons can be performed through menu commands or shortcut keys. Toolbars are provided to speed up your operations. The Standard Toolbar buttons which appear when a Form window is active are listed below. Click a button to see specific information on it.

Print			Cut to Clipboard
Copy to Clipboard			Paste from Clipboard
View Data			Design Form
Locate Field Value			Locate Next
First Record			Previous Record Set
Previous Record			Next Record
Next Record Set			Last Record
Filter			Field View
Edit Data			Table View
Project Viewer			Experts
The six buttons that control movement among records (First Record, Previous Record, and so on) are called navigation buttons.


Form Design Toolbar

See also

The Standard Toolbar for a Form Design window has all the tools you need to place objects on forms and manipulate them. You can modify the layout of the Toolbar and define the default settings of each tool. Click a tool below to see specific information on it.

OLE custom controls and native Windows controls are design objects available only in Form Design windows. To view these toolbar buttons, click the down scroll arrow. To switch back, click the up scroll arrow. OLE custom controls and native Windows controls are tools which are also available on the Object Toolbar. See Object Toolbar for information on the native Windows controls that come with Paradox.

When you are in the Form Design window, click a design object from the Toolbar to use it in the form. The pointer changes to the shape of the tool you choose. Click and drag the pointer in the design window to create the object.

To create more than one object of the same type, hold Shift down while you click the tool you want. The tool remains active until you click another tool.

Click a button below to see specific information on it.

Print			Cut to Clipboard
Copy to Clipboard			Paste from Clipboard
View Data			Design Form
Selection Arrow			Box tool
Line tool			Ellipse tool
Text tool			Graphic tool
OLE tool			Button tool
Field tool			Table Frame tool
Multi-Record tool			Chart tool
Crosstab tool			Notebook tool
Filter			Data Model
Object Explorer			Project Viewer
Experts
  Click to view the Object Toolbar


Object Toolbar

See also

You can embed OLE Custom Controls and native Windows controls on forms. Paradox supplies the native Windows controls on the Object Toolbar by default. OLE Custom Controls, purchased separately from third-party vendors, can be registered through Paradox and added to this Toolbar.

The Object Toolbar contains two pages. The first page contains the Form Design tools such as the Table Frame tool, Box tool, and so on. For more information on these tools, see the Standard Toolbar Form Design Toolbar. The second page contains OLE Controls you have added to the Toolbar as well as the native Windows controls that come with Paradox.

You may also create your own tabbed page on the Object Toolbar. See To add a page to the Object Toolbar.

The native Windows controls that come with Paradox are listed below. Click a button to see specific information on it.

List Box			Combo Box
Spin Box			Progress Bar
Trackbar
 Click to view the Standard Toolbar


Library window Toolbar

See also

The Standard Toolbar for the Library window provides some shortcuts to common menu commands. Click a button below to see specific information on it. For information on libraries, see Libraries.

Print			Cut to Clipboard
Copy to Clipboard			Paste from Clipboard
Check Syntax			Compile
Go To the Next Warning			Add Watch
Toggle Breakpoint			Open/Close the Object Explorer
Open/Close the Debugger Window			Open/Close the Watches Window
Open/Close the Breakpoints Window			Open/Close the Tracer Window
Open/Close the Call Stack Window			Open/Close the ObjectPAL Quick Lookup
Project Viewer			Experts


ObjectPAL Debugger Toolbar

See also

The Toolbar in the ObjectPAL Debugger window provides some shortcuts to common menu commands. Click a button below to see specific information on it.

Stop Execution			Run
Run to the End of This Method			Step Over Procedures and Methods
Step Into Procedures and Methods			Add Watch
Toggle Breakpoint			Inspect Variables
Open/Close the Debugger Window			Open/Close the Watches Window
Open/Close the Breakpoints Window			Open/Close the Tracer Window
Open/Close the Call Stack Window			Open/Close ObjectPAL Quick Lookup


ObjectPAL Editor Toolbar

See also

The Standard Toolbar for the ObjectPAL Editor window provides some shortcuts to common menu commands. This Toolbar is available when you are editing an ObjectPAL method in a form, library, or script.

Click a button below to see specific information on it.

Print			Cut to Clipboard
Copy to Clipboard			Paste from Clipboard
Run			Design
Check Syntax			Compile
Go To the Next Warning			Save Source and Exit the Editor
Add Watch			Toggle Breakpoint
Open/Close the Object Explorer			Open/Close the Debugger Window
Open/Close the Watches Window			Open/Close the Breakpoints Window
Open/Close the Tracer Window			Open/Close the Call Stack Window
Open/Close the ObjectPAL Quick Lookup			Project Viewer
Experts


Query window Toolbar

See also

The Standard Toolbar for a Query window is available whenever a Query window is active. The Toolbar provides some shortcuts to common menu commands, as well as a method of joining tables with example elements. Click a button below to see specific information on it.

Cut to Clipboard			Copy to Clipboard
Paste from Clipboard			Run Query
Join Tables			Query Properties
Sort Answer Table			Show SQL
Add Table			Remove Table
Field View			Project Viewer
Experts


Report Toolbar

See also

All actions performed by the Standard Toolbar buttons for a Report window can be performed in other ways, either through menu commands or shortcut keys. The Toolbar is provided to speed up your operations. Click a button below to see specific information on it.

Print			Run Report
Design Report			First Page
Previous Page			Next Page
Last Page			Go To Page
Project Viewer			Experts
The buttons that control movement among the pages of the report are called navigation buttons.


Report Design Toolbar

See also

The Standard Toolbar for the Report Design window has all the tools you need to place and manipulate objects on reports. You can define the default settings of each design object tool to suit your needs (see Design|Copy toToolbar for more information). Click a tool below to see specific information on it.

Print			Cut to Clipboard
Copy to Clipboard			Paste from Clipboard
Run Report			Design Report
Selection Arrow			Box tool
Line tool			Ellipse tool
Text tool			Graphic tool
OLE tool			Field tool
Table Frame tool			Multi-record tool
Chart tool			Crosstab tool
Add Group Band			Insert Page Break
Filter			Data Model
Object Explorer			Project Viewer
Experts
Click a tool to use it in your design document. The pointer changes to the shape of the tool you choose.


SQL Editor Toolbar

See also

The Standard Toolbar for a SQL Editor window provides some shortcuts to common menu commands. Click a button below to see specific information on it.

Print			Cut to Clipboard
Copy to Clipboard			Paste from Clipboard
Run SQL			Find
Find Next			Select Alias
Query Properties			Project Viewer
Experts


Table window Toolbar

See also

Use the Toolbar buttons as quick shortcuts for navigating through the table or performing menu commands. As you point to each button, tool tips appear with the name of the button.

The following figure shows the buttons available on the Table window's Standard Toolbar, which displays when a table is selected in the Desktop. The buttons that control movement among records are collectively called navigation buttons. Click a button below to see specific information on it.

Print			Cut to Clipboard
Copy to Clipboard			Paste from Clipboard
Restructure			Locate Field Value
Locate Next			First Record
Previous Record Set			Previous Record
Next Record			Next Record Set
Last Record			Filter
Field View			Edit Data
Quick Form			Quick Report
Quick Chart			Quick Crosstab
Project Viewer			Experts


Text Formatting Toolbar

See also

The Text Formatting Toolbar contains tools for formatting text within a text object. Use this Toolbar to select the font size and style, line spacing, alignment, and font characteristics such as bold, italics, underline, or strikeout.

To display the Text Formatting Toolbar, do one of the following:

Choose View|Toolbars, and check Text Formatting.

Right-click the empty area of any Toolbar, and check Text Formatting from the menu.

Choose Edit|Preferences and check Text Formatting on the Toolbars page.

Regardless of which method you choose to display the Text Formatting Toolbar, it is displayed every time you open a Form or Report Design Window.

Click a button below to see specific information on it.

Typeface
Size
Bold			Italic
Underline			Strikeout
Align Text Left			Center Text
Align Text Right			Justify Text
Line Spacing


Align Toolbar

See also

Use the Align Toolbar to manipulate objects in a Form or Report Design window. With the Align Toolbar, you can

Group and ungroup objects.

Layer, or stack objects.

Duplicate objects.

Adjust the width and height of multiple objects.

Adjust the horizontal and vertical spacing between objects.

Align multiple objects on a design document.

Display the grid and snap objects to the grid.

To display the Align Toolbar, do one of the following:

Choose View|Toolbars, and check Align.

Right-click the empty area of any Toolbar, and check Align from the menu.

Choose Edit|Preferences and check Align on the Toolbars page.

Regardless of which method you choose to display the Align Toolbar, it is displayed every time you open a Form or Report Design Window.

Click a button below to see specific information on it.

Group Objects			Bring To Front
Send To Back			Duplicate Object
Adjust To Minimum Width			Adjust To Maximum Width
Adjust To Minimum Height			Adjust To Maximum Height
Adjust Horizontal Spacing			Adjust Vertical Spacing
Align Objects To Left			Align Objects To Centers
Align Objects To Right			Align Objects To Top
Align Objects To Midlines			Align Objects To Bottom
Grid On/Off			Snap To Grid


Global Toolbar

See also

Use the Global Toolbar's buttons as quick shortcuts for performing commonly used menu commands.

To display the Global Toolbar, do one of the following:

Choose View|Toolbars, and check Global.

Right-click the empty area of any Toolbar, and check Global from the menu.

Choose Edit|Preferences and check Global on the Toolbars page.

You may choose either method listed above to display the Global Toolbar. The Global Toolbar is always displayed regardless of the active window.

The following figure shows the buttons available on the Global Toolbar. Click a button below to see specific information on it.

Save			Open or Create Table
Open or Create Form			Open or Create Report
Open or Create Query			Open or Create SQL File
Open or Create Script			Open or Create Library
Data Model			Object Explorer
Project Viewer


Selection Arrow

See also

Use the Selection Arrow [image] to select design objects in a Form Design or Report Design window. You select a design object to move, resize, edit, or otherwise manipulate it.

When you select a design object, handles appear around it. When you pass the pointer over a handle, the pointer changes shape to show the direction of movement possible. Drag the handles to change an object's size or shape.

Some objects cannot be resized using the handles, but still show the handles to indicate they are selected.

Multiple selection

When you select more than one object, you can move them all or change their properties all at once. You select multiple objects in different ways.

Shift+click selects isolated objects.

Hold down Shift while you click objects to select them. You can select as many objects as you want this way, adding them one at a time. Deselect objects by clicking them again.

Shift+drag selects objects by surrounding them with an imaginary box (sometimes called marquee selection).

Hold down Shift while you drag the mouse diagonally to create an imaginary box around the objects. When you release the mouse, the objects you enclosed are selected.

Edit|Select All selects everything in the design window. Or, if an object is already selected, Edit|Select All selects all objects contained in it.

Selection Arrow properties

The Selection Arrow has no modifiable properties.


Box tool

Use the Box tool [image] to place a box of any size or shape on a form or report.


Button tool

Use the Button tool [image] to place a button on a form. You can add ObjectPAL code to control the behavior of the button when a user clicks it, or let the Button Expert create code for you for commonly-used pushbutton actions.

The Button tool is available only in the Form Design window.


Chart tool

Use the Chart tool [image] to place a chart on a form or report. Run the Chart Expert to guide you in creating your graphs.


Combo Box tool

Use the Combo Box tool [image] to place a combo box on a form. A combo box is a list box with a drop-down edit region.

The Combo Box tool is a native Windows control that behaves like an OLE Control.


Crosstab tool

Use the Crosstab tool [image] to place a crosstab on a form or report.


Ellipse tool

Use the Ellipse tool [image] to place a circle or ellipse on a form or report.


Field tool

Use the Field tool [image] to place a field object on a form or report, and bind it to a field from a table. The Field Expert will guide you in creating and defining your field.


Graphic tool

Use the Graphic tool [image] to place a graphic on a form or report.

You can paste a graphic from the Windows Clipboard, or choose a .BMP, .PCX, .TIF, .GIF, or .EPS file.


Line tool

Use the Line tool [image] to place horizontal, vertical, and diagonal lines on a form or report.


List Box tool

Use the List Box tool [image] to place a list box on a form.

The List Box tool is a native Windows control that behaves like an OLE Control.


Multi-Record tool

Use the Multi-record tool [image] to place a multi-record object on a form or report.

A multi-record object is a repeating pattern of fields. You specify the layout for one record, then tell Paradox how many times across and down the page you want the pattern to repeat, and Paradox lays out your data for you.


OLE tool

Use the OLE tool [image] to place an OLE object on a form or report.


Progress Bar tool

Use the Progress Bar tool [image] to place a progress bar on a form. A progress bar displays the progress of a process.

The Progress Bar tool is a native Windows control that behaves like an OLE Control.


Spin Box tool

Use the Spin Box tool [image] to place a spin box on a form. A spin box is a box with an edit region containing Up and Down buttons to increment or decrement a value.

The Spin Box tool is a native Windows control that behaves like an OLE Control.


Notebook tool

Use the Notebook tool [image] to place a notebook object on a form.


Table Frame tool

Use the Table Frame tool [image] to place a table frame object on a form or report. You can associate the table object to a table that contains data by right-clicking the table object and selecting the Define Table option.


Text tool

Use the Text tool [image] to place a text object in the design of your form or report. You create a frame which will contain your text. Let theText Expert guide you in setting the properties of the text such as typeface, size, color, justification, special effects, and so on.


Trackbar tool

Use the Trackbar tool [image] to place a trackbar on a form. A trackbar is a mouse-controlled slider.

The Trackbar tool is a native Windows control that behaves like an OLE Control.


Help button

Clicking the Help [image] button is the same as pressing F1.


Join Tables button

To join two tables using the Join Tables [image] button,

1.	Click the Join Tables button. When you move the pointer over a query image, the pointer changes to a join symbol.

2.	Click the corresponding field of each table. Paradox places example elements that join the tables.

After you click the two corresponding fields, Paradox returns the mouse pointer to normal behavior. To return the mouse pointer to normal behavior without joining the tables, click the Join Tables button again.


Save Source and Exit the Editor button

Clicking the Save Source and Exit the Editor [image] button is the same as choosing File|Save and then File|Close.


Typeface

Choose the typeface you want for the selected text.

The typefaces available from the drop-down font list depend on the fonts installed on your system. In a form or report, they also depend on whether you are designing for the screen or for the printer. Standard typefaces include Helvetica, Times Roman, Courier, and System.

Note:	If you are designing for the printer, the font displayed on the screen is a best match to a printer font on the selected printer. The screen font may not match the printer font exactly, which may result in letters which are unevenly spaced or difficult to read on screen.


Font size

Choose the font size you want for the selected text from the drop-down list of point sizes.


Align Text Left

Aligns the text to the left edge of the object.


Center Text

Centers the text between the left and right edges of the object.


Align Text Right

Aligns the text to the right edge of the object.


Justify Text

Aligns the text at both the left and right edges of the object.


Line Spacing

In text or memo fields, Line Spacing specifies how far apart lines of text are spaced. You can choose the number of lines separating each column or row. The choices are 1, 1.5, 2, 2.5, or 3 lines.


Bold

Applies the Bold style to the selected text.


Italic

Applies the Italic style to the selected text.


Underline

Applies the Single Underline style to the selected text.


Strikeout

Applies the Strikeout style to the selected text.


Adjust To Minimum Width

Adjusts the size of multiple design objects to the width of the narrowest object. You must select more than one object to use this feature.

See To adjust the size and spacing of multiple design objects


Adjust To Maximum Width

Adjusts the size of multiple design objects to the width of the widest object. You must select more than one object to use this feature.

See To adjust the size and spacing of multiple design objects


Adjust To Minimum Height

Adjusts the size of multiple design objects to the height of the shortest object. You must select more than one object to use this feature.

See To adjust the size and spacing of multiple design objects


Adjust To Maximum Height

Adjusts the size of multiple design objects to the to the height of the tallest object. You must select more than one object to use this feature.

See To adjust the size and spacing of multiple design objects


Adjust Horizontal Spacing

Adjusts selected design objects so that the horizontal space between the objects is exactly the same.

See To adjust the spacing of design objects.

Note:	Design|Adjust Spacing overrides any Pin Horizontal or Pin Vertical properties you've set for the selected objects.


Adjust Vertical Spacing

Adjusts selected design objects so that the vertical space between the objects is exactly the same.

See To adjust the spacing of design objects.

Note:	Design|Adjust Spacing overrides any Pin Horizontal or Pin Vertical properties you've set for the selected objects.


Align Objects To Left

Moves selected design objects so each object's left side aligns with the left side of the leftmost object. You must select multiple objects to use this feature.

See To align design objects.


Align Objects to Centers

Moves selected design objects to align their midpoints vertically. You must select multiple objects to use this feature.

See To align design objects.


Align Objects to Right

Moves selected design objects so each object's right side aligns with the right side of the rightmost object. You must select multiple objects to use this feature.

See To align design objects.


Align Objects To Top

Moves selected design objects so each object's top aligns with the top of the highest object. You must select multiple objects to use this feature.

See To align design objects.


Align Objects To Midlines

Moves selected design objects to align their midpoints horizontally. You must select multiple objects to use this feature.

See To align design objects.


Align Objects To Bottom

Moves selected design objects so each object's bottom aligns with the bottom of the lowest object. You must select multiple objects to use this feature.

See To align design objects.


About keyboard commands

Most Paradox mouse operations have keyboard equivalents. These keyboard commands usually have an abbreviated series of keystrokes called shortcuts.

General Keys

Menu command keys

Application access keys

Control menu keys

Help system keys

Dialog box keys

Shortcuts in Tables and Forms

Navigation and selection keys

Table operation shortcuts

Form window shortcuts

Edit mode keys

Memo View keys

Function Key Actions

Function keys in tables

Function keys in forms

Function keys in queries

Function keys in the Editor and Debugger windows

Special Procedures

Rotating columns in a table

Selecting multiple fields

Super Tab operations


Menu command keys

See also

Use the following keys to access the menus in Paradox.

Use	To

Alt	Select the menu bar

Alt then Hyphen	Open the child window Control Menu.

Alt then Spacebar	Open the Paradox Control Menu

Arrow keys	Select menu items

Enter or 	Open the selected menu

Esc	Exit from a menu without choosing a command

Each menu name has an underlined letter. To open a menu, press Alt plus the underlined letter. For example,

Alt+F	Opens the File menu

Alt+M	Opens the Form menu

To choose a command from a menu, select it with the arrow keys and press Enter. Or press the underlined letter (also referred to as the access key) in the command name. For example, when the File menu is open, press the letter O to open a file, S to save a file, or X to exit Paradox and unload it from memory.


Application access keys

See also

Use	To

Esc	Close a Control menu but leave the Control-menu box selected. Press Esc a second time to deselect the Control-menu box.

Alt+Esc	Display the next application on the Windows desktop. This will restore a minimized application. The name of the application will not be shown before displaying it.

Ctrl+Esc	Access the Start button on the taskbar.

Alt+Hyphen	Open the active window's Control Menu.

Alt+Spacebar	Open the Paradox Control menu which allow you to Restore, Move, Size, Minimize, Maximize or Close Paradox. The Restore option is available only if the Paradox window has been minimized.To move the Paradox window, choose Move, use the arrow keys to reposition the window, and press Enter when you finish.

Alt+Tab	Display the next application on the Windows desktop. This will restore a minimized application. The icons of all loaded applications are displayed in a box. Hold down Alt and press Tab repeatedly until the icon you want is selected, then release Alt.


Control menu keys

See also

The Control menu opens when you click the icon at the left end of a window title bar.

Use	To

Alt+Hyphen	Open the active window's Control menu.

Alt+Spacebar	Open the Paradox Control menu which allow you to Restore, Move, Size, Minimize, Maximize or Close Paradox. The Restore option is available only if the Paradox window has been minimized.To move the Paradox window, choose Move, use the arrow keys to reposition the window, and press Enter when you finish.

Alt+F4	Close the window. Windows prompts you for confirmation if your current work is unsaved.

Esc	Close a Control menu but leave the Control-menu box selected. Press Esc a second time to deselect the Control-menu box.

Ctrl+Esc	Access the Start button on the taskbar.


Help system keys

See also

To access Help, press the F1 key. Depending on the current context,

When	Press F1 to display help for

In a menu	The selected command.

In a dialog	That dialog.

In a child window	That window.

Empty desktop	Paradox User's Guide Help topics.

ObjectPAL editor	The keyword that the cursor is at, if available.

When a help topic is displayed, you may use the keys listed below to navigate within a Help topic, between topics, and within the Help system,

Use	To

Esc	Close the current Help window.

Tab	Move to the next underlined Help topic. For a jump, press Enter. For a glossary definition, press Enter once to see the definition; press Enter again to make it go away.

Shift+Tab	Move to the previous underlined Help topic. For a jump, press Enter. For a glossary definition, press Enter once to see the definition; press Enter again to make it go away.

Scroll down one line (if a vertical scrollbar is displayed).

Scroll up one line (if a vertical scrollbar is displayed).

PgUp, PgDn	Scroll the Help window (if vertical scrollbars are displayed).

Alt+C	Display the Help Contents for the current Help topic.

Alt+B	Return to the last Help screen you viewed.

Alt+I	Search for a particular term in the Help index.


Dialog box keys

See also

Use	To

Esc	Cancel a dialog box, leaving the settings unchanged. Same as the Cancel button.*

Spacebar	Select. (Same as left-click.) Depending on the context, pressing the Spacebar can:

Toggle a selected check box.

Set a selected option button.

Select an item in a list box or drop down list box.

Activate a push button.

Ctrl+Spacebar	Select non-contiguous items in a multi-select list box. (Same as Ctrl+Left-click.)

Shift+Spacebar	Select a contiguous group of items in a multi-select list box. (Same as Shift+Left-click.)

Enter	Activate a selected command button.

Tab	Move to the next named option or group of options. Or press Alt plus an underlined letter in the option name to choose that option directly.

Shift+Tab	Move to the previous named option or group of options.

 and 	Depending on the context, the up and down arrows can:

Select a radio button.

Highlight a selection list item. Or press the first letter of the item name to select the first item in the list beginning with that letter.

Move to another check box inside a group of check boxes.

Alt	Drop a list down for the selected list box.

F1	Display context-sensitive Help on the dialog box.

Alt+F4	Closes the dialog box.

F3	Super Back Tab. In multi-region dialog boxes, Super Back Tab moves backward from panels with tables in them to other panels. (Tab and Shift+Tab move among objects or fields within the region.)

F4	Super Tab. In multi-region dialog boxes, Super Tab moves forward from panels with tables in them to other panels. (Tab and Shift+Tab move among objects or fields within the region.)

* If there is no Cancel button, ESC will not close the dialog. Use the Close or OK buttons as appropriate instead.


Rotating columns in a table

See also

To rotate the order of a table's columns with the keyboard,

1.	Select the column to move.

2.	Press Ctrl+R.

This moves the selected column to the last place on the right of the table.

You can rotate the order of columns in a Table window and when viewing data in table frames in a Form window.


Selecting multiple fields

See also

You can select multiple fields across rows and columns in a Table window by dragging a box around the ones you want. Fields selected this way must be adjoining.

To select a group of fields using the keyboard,

1.	Select the field where you want to begin (do not enter Field View).

2.	Hold down Shift while using the arrow keys to place a box around the fields you want.

Selecting all fields

To select all fields in the table (the entire table), choose Edit|Select All. Paradox places a box around the whole table.

Note:	You can select multiple fields in a Table window only.


Function keys in tables

See also

Key	Action

F1	Displays Help for the Table window..

F2	Field View

Shift+F2	Memo View**

Ctrl+F2	Persistent Field View

Ctrl+F3	Refresh data

F5	Lock record

Shift+F5	Post record

Ctrl+F5	Post/Keep Lock

F6	View current field's right-click menu

Shift+F6	View penetrating properties

F7	Quick form

Shift+F7	Quick report

Ctrl+F7	Quick chart

F9	Edit/End edit

F10	View Menu

Shift+F10	View current field's right click menu

F11	Previous record

Shift+F11	Previous set

Ctrl+F11	First record

F12	Next record

Shift+F12	Next set

Ctrl+F12	Last record

*When viewing SQL data, you must press Ctrl+F3 to perform a data refresh. Changes made by others do not automatically refresh the screen.

**For alpha fields containing DDE links or OLE fields containing OLE information, Shift-F2 launches the server application.

For additional keys, see

Table Operation Shortcuts

Navigation and Selection Keys

Keyboard Actions in Table Windows


Function keys in forms

See also

Key	Action

F1	Displays Help

F2	Field View

Shift+F2	Memo View (& OLE)

Ctrl+F2	Persistent Field View

F3	Super Back Tab

Ctrl-F3	Refresh data*

Shift+F3	Previous Page

F4	Super Tab

Shift+F4	Next Page

F5	Lock record

Shift+F5	Post record

Ctrl+F5	Post/Keep Lock

F6	View current object's right-click menu

Shift+F6	Penetrating properties (Design window )

F7	Table View

F8	Design Form/View Data toggle

F9	Edit/End Edit**

F10 	Menu

Shift+F10	View current object's right-click menu

F11	Previous record

Ctrl+F11	First record

Shift+F11	Previous set

F12	Next record

Ctrl+F12	Last record

Shift+F12	Next set

Ctrl+Spacebar	Object Explorer (Design window )

Alt+Spacebar	View current object's property sheet.

*When viewing SQL data, you must press Ctrl+F3 to perform a data refresh. Changes made by others do not automatically refresh the screen.

**If you press F9 in the Form Design window, Paradox opens the form in Edit mode. This is a shortcut to pressing F8 (View Data) followed by F9 (Edit Data).

For additional keys, see Form window Shortcuts.


Function keys in queries

See also

Key	Action

F1	Displays Help

F2	Field View

Ctrl+F2	Persistent Field View

F3	Moves to the previous table image

F4	Moves to the next table image

F5	Tells Paradox that you are about to define an Example element

F6	Check/uncheck toggle [image]. The check type (Check or CheckPlus) is specified on the Query page of the Preferences dialog. If pressed when in the column on the far left, F6 will check/uncheck all fields in the table.

Shift+F6	Cycle checks [image], [image], [image], [image] and

F8	Run query

F10	Menu


Function keys in the Editor and Debugger windows

See also

The editor supports the following keystroke mappings,

The default Paradox keymap

BRIEF keymap

Epsilon keymap

For more information on customizing the editor and editor menus, see The ObjectPAL Editor.


Super Tab operations

See also

Use Super Tab (F4) and Super Back Tab (F3) to move among panels in multi-region windows and dialog boxes.

Create/Restructure dialog box

The Field Roster is one panel in a multi-region dialog box. You use Tab or Shift+Tab to move from column to column in the Field Roster. The Table Properties panel [image] its list boxes and buttons [image] is another panel in this multi-region dialog box. Tab and Shift+Tab move through all the objects in the Table Properties panel, then through all other buttons in the dialog box.

Press Super Back Tab (F3) to move from the Field Roster panel to the Help button.

Press Super Tab (F4) to move from the Field Roster panel to the Table Properties panel.

To return to the Field Roster panel from the Table Properties panel, press Shift+Tab until you get back (you see no insertion point or highlighted box in the Table Properties panel). Or Tab forward through all objects in the Table Properties panel and the dialog box until you reach the Field Roster panel.

Query images

In multi-table queries, use Super Tab (F4) to move forward among the query table images. (Tab and Shift+Tab move right and left among fields within a query image.) Use Super Back Tab (F3) to move backward.

Multi-table forms

In multi-table forms, use Super Tab (F4) to move forward among the table objects. (Tab and Shift+Tab move right and left among fields within a table object.) Use Super Back Tab (F3) to move backward.

Other multi-region dialog boxes

In dialog boxes that contain embedded table images, Super Tab and Super Back Tab move you out of the table. (Tab and Shift+Tab move right and left among fields within a table.)

Key	Action

F3	Super Back Tab

F4	Super Tab


Table operation shortcuts

See also

Key combination	Action

Alt+Backspace	Undo

Ctrl+A	Locate Next

Ctrl+D	Ditto (repeat value in same field in record above)

Ctrl+F	Field View (same as F2)

Ctrl+G	Change grid properties

Ctrl+H	Change heading properties

Ctrl+Ins	Copy to the clipboard

Ctrl+Shift+H	Change properties for all headings

Ctrl+L	Lock the current record

Ctrl+Shift+L	Post record

Ctrl+M	Change field properties

Ctrl+Shift+M	Change properties for all fields

Ctrl+R	Rotate columns

Ctrl+T	Memo View

Ctrl+Z	Locate value

Ctrl+Shift+Z	Locate and replace

Del	Clear or delete (as appropriate)

Shift+Del	Cut to the clipboard

Shift+Ins	Paste from the clipboard

Spacebar	Enter current date, time, or both in date, time, or timestamp fields. You must press the Spacebar for each part of the field's format.

For additional keys, see

Keyboard Actions in Table Windows

Function Keys in Tables

Navigation and Selection Keys


Form window shortcuts

See also

Key combination	Action

Ctrl+A	Locate next

Ctrl+D	Ditto (repeat the value in same field from the previous record)

Ctrl+F	Field View

Ctrl+Ins	Copy to the clipboard

Ctrl+L	Lock the current record

Ctrl+Shift+L	Post changes made to the current record

Ctrl+R	Rotate columns (on table frame)

Ctrl+T	Memo View

Ctrl+Z	Locate Value

Ctrl+Shift+Z	Locate and replace

Del	Clear or delete (as appropriate)

Shift+Del	Cut to the clipboard

Shift+Ins	Paste from the clipboard

For additional keys, see Function Keys in Forms.


Navigation and selection keys

See also

This table shows the keys you can use to navigate with when you are looking at data in forms and tables. Make sure Num Lock is off when you use Alt in combination with a keypad key. Field view and non-field-view keys are listed.

Key	Non-field view	Field view
PgUp	Up one set of records	Up one set of records
Ctrl+PgUp	Left one screen	Left one screen
PgDn	Down one set of records	Down one set of records
Ctrl+PgDn	Right one screen	Right one screen
Home	First field of record	Beginning of field
Shift+Home	Select to first field of record*	Select to beginning of field
Ctrl+Home	First field of first record	First field of first record
Alt+Home	First field of record	First field of record
End	Last field of record	End of field
Shift+End	Select to last field of record*	Select to end of field
Ctrl+End	Last field of last record	Last field of last record
Alt+End	Last field of record	Last field of record
	Left one field	Left one character
Shift	Select left one field*	Select left one character
Ctrl	First column	Left one word
Ctrl+Shift	Select to first field of record	Extend selection left one word
Alt	Left one field	Left one field
	Right one field	Right one character
Shift	Select right one field*	Select right one character
Ctrl	Last column	Right one word
Ctrl+Shift	Select to last field of record	Extend selection right one word
Alt	Right one field	Right one field
	Up one field	Up one line in multi-line field or up one record in single-line field
Shift	Select up one field*	Select up one line within multi-line field or up one record in single-line field
Alt	Up one field	Up one field
	Down one field	Down one line within multi-line field or down one record in single-line field
Shift	Select down one field*	Select down one line within multi-line field or down one record in single-line field
Alt	Down one field	Down one field
* Multiple selection of fields is available only in tables, not in forms.


Edit mode keys

See also

This table shows the keys to use while editing. Entering Field View does not change the action of these keys.

Key	Action

Ins	Insert record

Shift+Ins	Paste (same as Edit|Paste)

Ctrl+Ins	Copy (same as Edit|Copy)

Del	Delete selected text (same as Edit|Delete)

Shift+Del	Cut (same as Edit|Cut)

Ctrl+Del	Delete record*

Backspace	Delete character to the left or delete selected text

Ctrl+Backspace	Delete word to left

Alt+Backspace	Undo record edit (same as Edit|Undo)

Esc	Undo field edit

Tab	Post value and move to next field

Shift+Tab	Post value and move to previous field

Enter	Post value and move to next field

Ctrl+Spacebar	Lookup Help (if defined.)**

Ctrl+Shift+Spacebar	Move Help (if applicable).***

*For dBASE tables only, Ctrl+Del acts as toggle to delete/undelete a record. For more information, see Record|Delete/Undelete

**For more information on Table Lookup and Lookup Help, see About Table Lookups.

***For more information on Move Help, see Record|Move Help.


Memo View keys

See also

This table shows the keys to use while editing a memo or formatted memo field.

Key	Action in Memo

Tab	Insert tab character in text

Enter	Insert carriage return in text

PgUp	Up one screen

Ctrl+PgUp	Position cursor to top left of current screen

PgDn	Down one screen

Ctrl+PgDn	Position cursor to bottom left of current screen

Home	Beginning of line

Shift+Home	Select to beginning of line

Ctrl+Home	Beginning of memo field

End	End of line

Control+End	End of memo field.

Shift+End	Select to end of line

Left one character

Shift	Select left one character

Ctrl	Left one word

Right one character

Shift	Select right one character

Ctrl	Right one word

Up one line

Shift	Select up one line

Down one line

Shift	Select down one line

Shift+Ins	Paste from clipboard

Ctrl+Ins	Copy to clipboard

Del	Delete selected text

Shift+Del	Cut to clipboard

Backspace	Delete left character

Ctrl+Backspace	Delete left word

Alt+Backspace	Undo record edit

Esc	Undo memo edit


Glossary

A

active

alias

alpha field

ANSI

Answer table

arithmetic operators

ascending order

ASCII

asymmetrical outer join

axis

B

band

BDE

binary field

bind

blank field

BLOB

C

cascade

check box

checkmark

client

Clipboard

command

comparison operator

composite key

concatenate

constant

contain

container object

crosstab

Crosstab tool

D

data

data integrity

data model

data type

database

DDE

default

default action

default value

define

dependent tables

descending order

design document

design object

design window

Desktop

detail table

dialog box

drop-down list box

E

event

example element

exclusive link

F

field

field type

field value

Field View

file

file name

font

footer

form

function

function keys

G

grid

group (n.)

group (v.)

group band

GroupBy operator

H

handle

header

highlight

I-J

icon

inclusion operator

inclusive link

index

K

key

keycode

keyword

L

library

link

list box

lock

logical operator

logical value

lookup table

M

Main menu

master table

method

multi-record

multi-value relationship

N

normalized data structure

number field

O

object

ObjectPAL

OEM

OLE

OLE container

OLE server

operator

outer join

P

picture

pop-up definitions

primary index

private directory

prompt

properties

prototyping

Q

query

query by example (QBE)

query operators

query statement

R

record

record number

referential integrity

report

reserved words

restructure

S

script

secondary index

selection condition

server

set

set comparison operator

short field

single-value relationship

special field

SQL

string

structure

summary operator

syntax error

T

table

table frame

table header

table language driver

Toolbar

U-V

validity check

variable

W

wildcard operators

working directory

X-Y-Z

zoom


active, defined
active

The object or window to which the next keystroke or mouse action will apply.


alias, defined
alias

A name you assign to a database in addition to its original name. When you use an alias, you don't need to specify the directory path.


align left, defined
align reft

The text is aligned so that its left edge line at the left margin. This is the most typical alignment type.


align right, defined
align right

The text is aligned so that its left edge line at the left margin.


align center, defined
align center

The text is aligned so that its left edge line at the left margin.


align justify, defined
align justify

The text is aligned so that its left edge line at the left margin.


alpha field, defined
alpha field

A field containing letters, numbers, or a combination of both.


ANSI, defined
ANSI

American National Standards Institute. The character set supported by Windows.


Answer table, defined
Answer table

A temporary table used to store the results of a query.


arithmetic operators, defined
arithmetic operators

The +, -, *, /, and ( ) operators used to construct arithmetic expressions in queries and calculated fields.


ascending order, defined
ascending order

A sort order: alphabetic order in alpha fields (most often A to Z case-sensitive, but the order depends on the language driver you are using); low to high in numeric fields, earliest to latest in date fields.


ASCII, defined
ASCII

American Standard Code for Information Interchange. A sequence of 128 standard characters.


asymmetrical outer join, defined
asymmetrical outer join

A query in which an inclusive link is specified for only one of the tables involved.


axis, defined
axis

The horizontal or vertical line that defines the range of values plotted on a chart. The x-axis is the horizontal line. The y-axis is the vertical line.


band, defined
band

A repeating horizontal section of a report design. The Report Design window shows the report band, page band, and record band by default. Group bands are optional.


BDE, defined
BDE

Borland Database Engine (formerly IDAPI). Paradox uses this database engine to access and deliver data. BDE maintains information about your PC's environment in the BDE configuration file (usually called IDAPI32.CFG). Use the BDE Configuration Utility to change the settings in this configuration file.


binary field, defined
binary field

A field used to store data Paradox cannot interpret. A common use of a binary field is to store sound.


bind, defined
bind

To associate a form or report with one or more tables. The document then takes its data from the table(s) to which it is bound.


blank field, defined
blank field

A field that does not contain a value.


BLOB, defined
BLOB

Binary large object. Field types that can contain BLOBs include binary, memo, formatted memo, graphic, and OLE. Certain rules apply to these fields as a whole, and they are sometimes discussed collectively as BLOB fields.


cascade, defined
cascade

To use referential integrity to update child tables when a value changes in the parent table.


check box, defined
check box

A box you can check or uncheck to set an option. You can check more than one check box in a set.


checkmark, defined
checkmark

The symbol [image] used in query statements to indicate that a field is to be displayed in the Answer table.


client, defined
client

The application that starts a DDE or OLE conversation and usually receives data from the other application, called the server.


Clipboard, defined
Clipboard

A temporary area used to copy and paste information from one location to another.


command, defined
command

A word on a menu or button that you choose to perform an action.


comparison operator, defined
comparison operator

In a query, the operators (<, >, <=, >=, and =) you can use to compare two values.


composite key, defined
composite key

A key comprised of two or more fields of a Paradox table which, together, provide a unique value for the table.


concatenate, defined
concatenate

To combine two or more alphanumeric values using the + operator.


constant, defined
constant

A specific, unchanging value used in calculations.


contain, defined
contain

To place one object within another object so that the behavior of the contained object is controlled by the container object.


container object, defined
container object

An object that completely surrounds and controls the behavior of all objects within it. When you move a container, its contained objects also move; when you delete a container, its contained objects are also deleted.


crosstab, defined
crosstab

An object that lets you summarize the data in one field by expressing it in terms of two other fields, presenting it in a spreadsheet-like structure.


Crosstab tool, defined
Crosstab tool

A Toolbar tool that creates crosstab objects.


data, defined
data

The information in a table.


data integrity, defined
data integrity

The assurance that only valid data can be entered in a field and that links between common fields in separate tables cannot be broken; supported by validity checks and referential integrity.


data model, defined
data model

A diagram of table relationships in a design document. A data model identifies the tables and defines the relationships between them.  See About data models for more information.


data type, defined
data type

The kind of data a field can contain.

Paradox data types are alpha, number, money, short, long integer, BCD, date, time, timestamp, memo, formatted memo, graphic, OLE, logical, autoincrement, binary, and bytes.

dBASE data types are character, float, number, date, logical, memo, OLE, and binary.


database, defined
database

An organized collection of information; in Paradox, a collection of related tables, forms, and reports in a given directory.


DDE, defined
DDE

Dynamic Data Exchange. A way for two or more applications to share data.


default, defined
default

What Paradox automatically does or looks like in the absence of an overriding command.


default action, defined
default action

The choice that Paradox determines to be the most logical or safest and the one that will be carried out unless otherwise specified. Default actions are performed by double-clicking an object or its icon.


default value, defined
default value

In validity checks, the value automatically entered in a field if no other value is entered.


define

To attach a design object to data from a table. For example, you define a field object in a form as a field in a table.


descending order

A sort order: reverse alphabetical order in alpha fields (most often Z to A, case-sensitive, but the order depends on the language driver you are using); high to low in numeric fields, latest to earliest in date fields.


design document

A form or report that you create or modify in a design window.


design object

An object you can place in design documents (forms and reports). You create design objects using Toolbar tools in a design window.


dependent tables, defined
dependent tables

Tables that depend on the current table for referential integrity.


design window, defined
design window

The window where you create or modify the design of a document. If you are viewing data in a Form or Report window, press F8 or click the Design button to open the corresponding design window for that document.


designed for the printer, defined
designed for the printer

A form or report for which you have chosen the Printer option from the Page Layout Dialog Box. Such forms and reports use screen style sheets that have a file name extension of .FP.


designed for the screen, defined
designed for the screen

A form or report for which you have chosen the Screen option from the Page Layout Dialog Box. Such forms and reports use screen style sheets that have a file name extension of .FT.


Desktop, defined
Desktop

The main window in Paradox.


detail table, defined
detail table

In multi-table relationships, the table whose records are subordinate to those of the master table. In a data model, the detail table is the one being pointed to by another table. For example, in the following data model, all of the tables except CUSTOMER.DB are detail tables.


dialog box, defined
dialog box

A box that requests user input or provides information. Many dialog boxes present options to choose among before you can perform an action; others display warnings or error messages.

All dialog boxes require interaction with the user; a modal dialog box, however, keeps the focus until you respond to it.


drop-down list box, defined
drop-down list box

A single-line text box that opens to display more choices when you click the arrow beside it.


event, defined
event

The action that triggers an ObjectPAL method. For example, pushing a button or clicking the mouse are events.


example element, defined
example element

A character or group of characters that represents a value in a field of a query.


exclusive link, defined
exclusive link

In a query, the use of an example element to retrieve from one table only those records that match the records in another table.


field, defined
field

A column of information in a table. A collection of related fields makes up one record.


field type, defined
field type

The type of data a field can contain.

Paradox data types are alpha, number, money, short, long integer, BCD, date, time, timestamp, memo, formatted memo, graphic, OLE, logical, autoincrement, binary, and bytes.

dBASE data types are character, float, number, date, logical, memo, OLE, and binary.


field value, defined
field value

The data contained in one field of a record. If no data is present, the field is considered blank.


Field View, defined
Field View

A mode that lets you move through a field character by character. Use this mode to view field values that are too large to be displayed in the current field width, or to edit a field value. Pressing F2 puts you into Field View.


file, defined
file

A collection of information stored under one name on a disk. For example, Paradox tables are stored in files.


file name, defined
file name

When entering a file name, you can simply type the name of the file; or, you can specify the file name combined with a drive, path, alias, or a combination of these elements. Some examples of valid file names:

File name	Description

MYFILE.DB	File name

D:\MYFILE.DB	File name combined with drive

:MYWORK:MYFILE.DB	File name combined with alias

:MYWORK:\PHONEDIR\MYFILE.DB	File name combined with alias and path


font, defined
font

A design applied to all characters. Fonts are typically available in different sizes, measured in points; 1 point equals 1/72 of an inch. Font styles usually include bold, italic, and underline.


footer, defined
footer

Information that appears at the bottom of every page of a report. Footers are created in the page bands, report, and group bands of Paradox reports.


form, defined
form

An alternate presentation of a table's data. A multi-table form can display data from several tables at once.


function, defined
function

A built-in formula that performs computations or determines the status of ObjectPAL, Paradox, or your computer system.


function keys, defined
function keys

The 12 keys across the top of the keyboard labeled F1 through F12. (Some keyboards have 10 function keys at the left.) These keys provide fast access to Paradox operations.


grid, defined
grid

A network of horizontal and vertical lines available in all design windows as aids for placement of design objects. You can show or hide the grid, as well as resize it.


group, defined
group

In a report or query, a set of records that either

Have the same value in one or more fields

Fall within a range of values

Are displayed in a fixed number of records


group, defined
group

To collectively identify various design objects as a single entity.


group band, defined
group band

The section of a report that defines the group and repeats for every group of records.


GroupBy operator, defined
GroupBy operator

In a query, the operator (indicated by [image] ) that groups records by a field without displaying the field's values in the Answer table.


handle, defined
handle

A position on a design object that lets you change an object's size or shape. When you select a design object, handles appear around it. When you pass the pointer over a handle, the pointer changes shape to show the direction of movement possible. Drag the handles to change an object's size or shape.


header, defined
header

Information that appears at the top of every page of a report. Headers are created in the page, report, and group bands of Paradox reports.


highlight, defined
highlight

To select by dragging the mouse across a line or lines of text.


icon, defined
icon

A graphical representation of an object.


inclusion operator, defined
inclusion operator

The symbol ! used with an example element to include a complete set of records in the Answer table, whether or not they match records in another table.


inclusive link, defined
inclusive link

A query whose answer includes all the values in a field of one table, whether or not there are matching values in the linked field of another table.


index, defined
index

A file that determines an order in which Paradox can access the records in a table. A Paradox table's key establishes its primary index.


inspect, defined
inspect

To right-click an object to see its menu.


key, defined
key

A field or group of fields in a Paradox table used to order records or ensure referential integrity. Establishing a key has three effects:

The table is prevented from containing duplicate records.

The records are maintained in sorted order based on the key fields.

A primary index is created for the table.


keycode, defined
keycode

A code that represents a keyboard character in ObjectPAL scripts. A keycode can be an ASCII number, an IBM extended keycode number, or a string representing a keyname known to Paradox.


keyword, defined
keyword

A word reserved for use with certain commands in ObjectPAL.


landscape, defined
landscape

Printing is along the path of the paper feed.


library, defined
library

A Paradox object that stores custom ObjectPAL code. Libraries are useful for storing and maintaining frequently used routines and for sharing custom methods and variables among forms, scripts, and other libraries.


link, defined
link

To establish a relationship between tables by linking corresponding fields.


list box, defined
list box

A list of selectable items in a dialog box.


lock, defined
lock

A device you place on a table in a multi-user environment that prevents other users from viewing, changing, or locking the table.


logical operator, defined
logical operator

One of three operators (AND, OR, or NOT) that can be used in queries.


logical value, defined
logical value

A value (True or False) assigned to an expression when it is evaluated.


lookup table, defined
lookup table

A table that assures that a value entered in one table matches an existing value in another table.


Main menu, defined
Main menu

The menu bar across the top of the Paradox Desktop.


master table, defined
master table

In a multi-table relationship, the primary table of your data model. If you have only one table in your data model, that table is the master table. In a multi-table data model, the master table is the one pointing to another table. For example, in the following data model, all of the tables except VENDORS.DB are master tables.


method, defined
method

ObjectPAL code attached to an object that defines the object's response to an event.


modal, defined
modal

A modal dialog box keeps the focus until you respond to it. You cannot move nor resize a modal dialog box.


multi-record, defined
multi-record

Refers to an object that displays several records at once in a form or report.


multi-value relationship, defined
multi-value relationship

A multi-value relationship exists between tables if, for every record in one table, no records, one record, or more than one record from another table is related to it. In a data model, a multi-value relationship is indicated by this symbol: . For example, in the following data model, a multi-value relationship exists between CUSTOMER.DB and ORDERS.DB, and between ORDERS.DB and LINEITEM.DB. See Multi-value relationships for more information.


normalized data structure, defined
normalized data structure

An arrangement of data in tables in which each record includes the fewest number of fields necessary to establish unique categories. Rather than using a few redundant fields to provide all possible information within a single table, normalized tables distribute information over many tables using fewer fields. Normalized tables provide more flexibility in terms of analysis.


number field, defined
number field

A field that can contain only numbers, a sign, and a decimal point.


object, defined
object

A table, form, report, query, script, library, or SQL file. All entities that can be manipulated in Paradox are objects.


ObjectPAL, defined
ObjectPAL

The Paradox application language.


OEM, defined
OEM

Stands for Original Equipment Manufacturer and refers to the character set your computer uses.


OLE, defined
OLE

Object linking and embedding. Use OLE to insert files from OLE servers into Paradox tables or OLE objects.


OLE container, defined
OLE container

An application that requests the services of and cooperates with an OLE server to offer the user a way to view and edit objects created by that server. Paradox provides OLE container services in the form of the OLE field type in a table and an OLE container object in a form.


OLE server, defined
OLE server

An application that provides services to and cooperates with an OLE client to offer the user a way to view and edit objects created by that server. Paradox provides OLE server services in the form of a table that can be embedded in a document edited by an OLE client.


operator, defined
operator

A symbol that represents an operation to be performed on a value or values. For example, the + operator represents addition, and the * operator represents multiplication.


outer join, defined
outer join

A type of query that uses the inclusion operator (!) to retrieve all records in a table, whether or not they match records in another table.


picture, defined
picture

A pattern of characters that defines what you can type into a field during editing or data entry.


pop-up definitions, defined
pop-up definitions

Introduce you to terms that might be unfamiliar or words that Paradox uses in a special way.


portrait, defined
portrait

Printing is crosswise to the feeding of the paper through the printer.


primary index, defined
primary index

An index on the key fields of a Paradox table. A primary index

Determines the location of records

Lets you use the table as the detail in a link

Keeps records in sorted order

Speeds up operations


private directory, defined
private directory

A nonshared directory for storing temporary objects, such as Answer tables. The default private directory is PRIVATE, created below the main Paradox directory on your hard drive, or on your network home directory if you have no hard drive. You can change to another private directory if you want.


prompt, defined
prompt

Instructions displayed on the screen. Prompts ask for information or guide you through an operation.


properties, defined
properties

The attributes of an object. You can right-click an object to view or change its properties.


prototyping, defined
prototyping

A process of application development in which small parts or the general structure of an application are designed and tested interactively. These models are then used as the basis for building the finished system.


query, defined
query

A way to retrieve data from your tables. See Queries.


query by example (QBE), defined
query by example (QBE)

The method of retrieving data by providing an example of what you are looking for.


query operators, defined
query operators

The reserved words Paradox uses in queries. See Query operators for more information.


query statement, defined
query statement

One or more filled out query images in the Query window.


record, defined
record

A horizontal row in a Paradox table that contains a group of related fields of data.


record number, defined
record number

A unique number that identifies each record in a Paradox table.


referential integrity, defined
referential integrity

A way of ensuring that the ties between like data in separate tables cannot be broken.


report, defined
report

A Paradox database object that displays data in a format that you specify. Reports, which can contain data from many tables, are flexible, powerful, and easy to use. They can be previewed onscreen before being printed.


reserved words, defined
reserved words

The names of commands, keywords, functions, system variables, and operators. These words may not be used as ObjectPAL variable or array names.


restructure, defined
restructure

To change the structure of an existing table. You can change the field names, field types, field order, key, indexes, validity checks, referential integrity, password protection, table language, and table lookup.


script, defined
script

A Paradox object that consists of ObjectPAL code in its own file, not attached to a form.


secondary index, defined
secondary index

An index used for linking, querying, and changing the view order of tables.


selection condition, defined
selection condition

Expressions typed in the fields of a query image to specify the conditions that records must meet to appear in the Answer table or live query.


server, defined
server

The application that responds to the calling application, or client, in a DDE or OLE conversation. The server usually sends data to the client.


set, defined
set

In a query, the specific group of records you intend to query.


set comparison operator, defined
set comparison operator

One of the reserved words (ONLY, NO, EVERY, EXACTLY) used to compare a defined set of records to other records.


short field, defined
short field

A Paradox field type that can contain numbers from -32,768 through 32,767 with no decimal values.


single-value relationship, defined
single-value relationship

A single-value relationship exists between tables if, for every record in one table, no records or only one record from another table is related to it. In a data model, a single-value relationship is indicated by this symbol: . For example, in the following data model, a single-value relationship exists between LINEITEM.DB and STOCK.DB, and between STOCK.DB and VENDORS.DB. See Single-value relationships for more information.


special field, defined
special field

A field (placed in a design document) that contains information about a table or design. Special fields include Today, Now, and Page Number.


SQL, defined
SQL

Structured Query Language (abbreviated SQL and commonly pronounced "sequel"). The standard language for storing and manipulating data in relational databases.


string, defined
string

An alphanumeric value, or an expression consisting of alphanumeric characters.


structure, defined
structure

The arrangement of fields in a table.


summary operator, defined
summary operator

One of the operators (AVERAGE, COUNT, MAX, MIN, or SUM) that retrieves data from groups of records in queries.


syntax error, defined
syntax error

An error caused by an incorrectly expressed statement.


tab well, defined
tab well

The tab well is the upper half of the Horizontal Ruler where tabs, margins, and indents are displayed for a text object.


table, defined
table

A structure made up of rows (records) and columns (fields) that contains data.


table frame, defined
table frame

A frame representing a table in a form or report design. A table frame looks like its source table, but a table frame is not a table. Create a table frame with the Table tool [image].


table header, defined
table header

Paradox tables consist of two sections: the header and the data blocks. The header contains information about the number of fields, passwords, write protection, sort order, and the version of Paradox that created the table. Indexes and memos are stored in separate files.


table language driver, defined
table language driver

Determines the table's sort order and available character set. The BDE Configuration Utility lets you set the default language driver for Paradox and dBASE tables.


Toolbar, defined
Toolbar

The set of buttons and tools for frequently performed tasks. The Toolbar is under the menu bar and changes according to the window you are using.

To get quick help on what a tool or button does, point to it [image] Paradox displays a description of the button in the status line.


validity check, defined
validity check

A constraint on the values you can enter in a field.


variable, defined
variable

A place in memory to store data temporarily.


wildcard operators, defined
wildcard operators

Special characters Paradox uses to match patterns in queries or when locating values.


working directory, defined
working directory

The default data directory Paradox uses to open and save files.


zoom, defined
zoom

To change the scale of a design screen. You can zoom out (decrease the scale and see a larger area) or zoom in (increase the scale and see part of the design up close).


Alias Manager dialog box (SQL Link driver)

See also

Use the Alias Manager dialog box to create or modify aliases for remote database directories, or to connect to or disconnect from the target SQL server.

You are working with an alias for a SQL Link driver. The settings in the Alias Manager dialog box reflect the information stored in your BDE configuration file. Refer to the documentation for more information on using the driver selected in the Driver Type list box.

Note:	If you are working with an ODBC driver connection, some of the options below are not available.

Dialog box options

Public Alias

Check this check box to make an alias a public alias [image] available from all applications that use BDE. Uncheck this check box to make an alias a project alias [image] available only to Paradox applications in the current directory.

Database Alias

Choose an alias from the list. To create a new SQL Link driver alias, choose New, then choose the appropriate driver type, then type the new alias name.

Alias configuration options

Driver Type

To create an SQL Link driver alias, choose the appropriate driver type from the list.

Server Name

The name of the target SQL server.

User Name

The default name for accessing the SQL server.

Open Mode

The mode in which SQL Link opens the SQL database. Can be READ/WRITE (default) or READ ONLY.

Schema Cache Size

The number of SQL tables whose schema information will be cached. Can be any whole number from 0 to 32 (default=8).

Langdriver

The language driver used to display SQL data to Paradox (U.S. default=blank). Choose the language driver that uses the same character set in which the server passes data to Paradox, and a collation sequence that matches your server's collation sequence. [more]

SQLqrymode

SQL query mode; the method for handling queries to SQL data. Can be NULL (blank setting, which is the default), SERVER, or LOCAL. [more]

SQLpassthru Mode

SQL pass-through mode; specifies whether or not Paradox users can access the SQL server via both QBE and the SQL Editor (pass-through SQL) in the same alias connection. Can be NOT SHARED, SHARED AUTOCOMMIT (default), or SHARED NO AUTOCOMMIT. [more]

Password

Type the password needed to connect to the server. Asterisks (*) represent the characters you type.

Show options

Show Public Aliases Only

Click this button if you want to see only public aliases.

Show Project Aliases Only

Click this button if you want to see only project aliases.

Show All Aliases

Click this button if you want to see both public and project aliases.

Connect

Choose Connect to log on to the server named in the Server Name text box, using the current User Name and Password. Depending on your server, this may take a while.

Disconnect

Choose Disconnect to log off the server named in the Server Name text box.

New

Choose New to open an empty box where you can type in a new alias name. After you click New, the button becomes the Keep New button.

Keep New

Choose Keep New if you want this to be a temporary alias, existing only until you exit. Then click OK to close the Alias Manager dialog box.

Note:	Choosing Keep New does not close the dialog box. It lets you save the alias temporarily when you click OK. If you click Cancel, whatever you saved with Keep New is deleted.

Choose Keep New if you are creating several aliases and do not want to re-open this dialog box to create each one. Then choosing Save As will save them all.

Remove

Choose Remove to tag the selected alias for removal. The alias is removed when you exit the box or when you choose Save As and overwrite the current file containing the alias.

Save As

Choose Save As if you want your new alias to be permanent [image] usable any time you use Paradox. You will see the Save File As dialog box. Unless you choose a different configuration file, Paradox stores saved aliases in your default BDE configuration file.

Note:	The message, "File already exists. Overwrite?", appears when you click Save As and choose a file name. Choose Yes. Paradox appends the aliases to the file; it does not replace the ones already there.

OK

Choose OK if you want to save any changes you have made in the dialog box, but only for the current Paradox session.

Cancel

Cancels only the changes in type-in boxes. Any changes you made with Save As remain.


Alias Manager dialog box (InterBase SQL Link)

See also

Use the Alias Manager dialog box to create or modify aliases for local, network, or remote database directories. You can also choose to connect or disconnect from a server. Most of the options described below are available only if you have installed a Borland SQL Link driver and have chosen the INTRBASE option from the Driver Type list.

The settings in this dialog box reflect the information stored in your BDE configuration file.

Dialog box options

Public Alias

Check this check box to make an alias a public alias [image] available from all applications that use BDE. Uncheck this check box to make an alias a project alias [image] available only to Paradox applications in the current directory.

Database Alias

Choose an alias from the list. To create a new InterBase alias, choose New, then choose the INTRBASE driver type, then type the new alias name.

Alias configuration options

Driver Type

To create an InterBase alias, choose INTRBASE.

Server Name

The name of the target InterBase SQL server, usually a path that includes the server name.

User Name

The default name for accessing the InterBase SQL server.

Open Mode

The mode in which SQL Link opens the InterBase database. Can be READ/WRITE (default) or READ ONLY.

Schema Cache Size

The number of SQL tables whose schema information will be cached. Can be any whole number from 0 to 32 (default=8).

Langdriver

The language driver used to display SQL data to Paradox (U.S. default=blank). Choose the language driver that uses the same character set in which the server passes data to Paradox, and a collation sequence that matches your server's collation sequence. [more]

SQLqrymode

SQL query mode; the method for handling queries to SQL data. Can be NULL (blank setting, which is the default), SERVER, or LOCAL. [more]

SQLpassthru Mode

SQL pass-through mode; specifies whether or not Paradox users can access the InterBase SQL server via both QBE and the SQL Editor (pass-through SQL) in the same alias connection. Can be NOT SHARED, SHARED AUTOCOMMIT (default), or SHARED NO AUTOCOMMIT. [more]

Schema Cache Time

The time (in seconds) that a table list is cached. A value of -1 causes the schema list to be cached until the database is closed and reopened.

Password

Type the password needed to connect to the server. Asterisks (*) represent the characters you type.

Show options

Show Public Aliases Only

Click this button if you want to see only public aliases.

Show Project Aliases Only

Click this button if you want to see only project aliases.

Show All Aliases

Click this button if you want to see both public and project aliases.

Connect

Choose Connect to log on to the server named in the Server Name text box, using the current User Name and Password. Depending on your server, this may take a while.

Disconnect

Choose Disconnect to log off the server named in the Server Name text box.

New

Choose New to open an empty box where you can type in a new alias name. After you click New, the button becomes the Keep New button.

Keep New

Choose Keep New if you want this to be a temporary alias, existing only until you exit. Then click OK to close the Alias Manager dialog box.

Note:	Choosing Keep New does not close the dialog box. It lets you save the alias temporarily when you click OK. If you click Cancel, whatever you saved with Keep New is deleted.

Choose Keep New if you are creating several aliases and do not want to re-open this dialog box to create each one. Then choosing Save As will save them all.

Remove

Choose Remove to tag the selected alias for removal. The alias is removed when you exit the box or when you choose Save As and overwrite the current file containing the alias.

Save As

Choose Save As if you want your new alias to be permanent [image] usable any time you use Paradox. You will see the Save File As dialog box. Unless you choose a different configuration file, Paradox stores saved aliases in your default BDE configuration file.

Note:	The message, "File already exists. Overwrite?", appears when you click Save As and choose a file name. Choose Yes. Paradox appends the aliases to the file; it does not replace the ones already there.

OK

Choose OK if you want to save any changes you have made in the dialog box, but only for the current Paradox session.

Cancel

Cancels only the changes in type-in boxes. Any changes you made with Save As remain.


Alias Manager dialog box (Informix SQL Link)

See also

Use the Alias Manager dialog box to create or modify aliases for local, network, or remote database directories. You can also choose to connect or disconnect from a server. Most of the options described below are available only if you have installed a Borland SQL Link driver and have chosen the INFORMIX option from the Driver Type list.

The settings in this dialog box reflect the information stored in your BDE configuration file.

Dialog box options

Public Alias

Check this check box to make an alias a public alias [image] available from all applications that use BDE. Uncheck this check box to make an alias a project alias [image] available only to Paradox applications in the current directory.

Database Alias

Choose an alias from the list. To create a new Informix alias, choose New, then choose the INFORMIX driver type, then type the new alias name.

Alias configuration options

Driver Type

To create an Informix database alias, choose INFORMIX from the list.

Server Name

The name of the target Informix SQL server.

Database

The name of the target Informix database.

User Name

The default name for accessing the Informix SQL server.

Open Mode

The mode in which SQL Link opens the Informix database. Can be READ/WRITE (default) or READ ONLY.

Langdriver

The language driver used to display SQL data to Paradox (U.S. default=blank). Choose the language driver that uses the same character set in which the server passes data to Paradox, and a collation sequence that matches your server's collation sequence. [more]

Schema Cache Size

The number of SQL tables whose schema information will be cached. Can be any whole number from 0 to 32 (default=8).

SQLqry Mode

SQL query mode; the method for handling queries to SQL data. Can be NULL (blank setting, which is the default), SERVER, or LOCAL. [more]

Date Mode

The format in which the Informix driver sends dates to the server. Must match the Informix server's DBDATE environment variable. Can be either 0 (MDY; default) or 1 (DMY).

Password

Type the password needed to connect to the server. Asterisks (*) represent the characters you type.

Show options

Show Public Aliases Only

Click this button if you want to see only public aliases.

Show Project Aliases Only

Click this button if you want to see only project aliases.

Show All Aliases

Click this button if you want to see both public and project aliases.

Connect

Choose Connect to log on to the server named in the Server Name text box, using the current User Name and Password. Depending on your server, this may take a while.

Disconnect

Choose Disconnect to log off the server named in the Server Name text box.

New

Choose New to open an empty box where you can type in a new alias name. After you click New, the button becomes the Keep New button.

Keep New

Choose Keep New if you want this to be a temporary alias, existing only until you exit. Then click OK to close the Alias Manager dialog box.

Note:	Choosing Keep New does not close the dialog box. It lets you save the alias temporarily when you click OK. If you click Cancel, whatever you saved with Keep New is deleted.

Choose Keep New if you are creating several aliases and do not want to re-open this dialog box to create each one. Then choosing Save As will save them all.

Remove

Choose Remove to tag the selected alias for removal. The alias is removed when you exit the box or when you choose Save As and overwrite the current file containing the alias.

Save As

Choose Save As if you want your new alias to be permanent [image] usable any time you use Paradox. You will see the Save File As dialog box. Unless you choose a different configuration file, Paradox stores saved aliases in your default BDE configuration file.

Note:	The message, "File already exists. Overwrite?", appears when you click Save As and choose a file name. Choose Yes. Paradox appends the aliases to the file; it does not replace the ones already there.

OK

Choose OK if you want to save any changes you have made in the dialog box, but only for the current Paradox session.

Cancel

Cancels only the changes in type-in boxes. Any changes you made with Save As remain.


Alias Manager dialog box (Oracle SQL Link)

See also

Use the Alias Manager dialog box to create or modify aliases for local, network, or remote database directories. You can also choose to connect or disconnect from a server. Most of the options described below are available only if you have installed a Borland SQL Link driver and have chosen the ORACLE option from the Driver Type list.

The settings in this dialog box reflect the information stored in your BDE configuration file.

Dialog box options

Public Alias

Check this check box to make an alias a public alias [image] available from all applications that use BDE. Uncheck this check box to make an alias a project alias [image] available only to Paradox applications in the current directory.

Database Alias

Choose an alias from the list. To create a new Oracle alias, choose New, then choose the ORACLE driver type, then type the new alias name.

Alias configuration options

Driver Type

To create an Oracle alias, choose ORACLE.

Server Name

The name of the target Oracle server.

User Name

The default name for accessing the Oracle server.

Net Protocol

Network transport used to communicate with the database server. [more]

Open Mode

The mode in which SQL Link opens the Oracle database. Can be READ/WRITE (default) or READ ONLY.

Schema Cache Size

The number of SQL tables whose schema information will be cached. Can be any whole number from 0 to 32 (default=8).

Langdriver

The language driver used to display SQL data to Paradox (U.S. default=blank). Choose the language driver that uses the same character set in which the server passes data to Paradox, and a collation sequence that matches your server's collation sequence. [more]

SQLqrymode

SQL query mode; the method for handling queries to SQL data. Can be NULL (blank setting, which is the default), SERVER, or LOCAL. [more]

SQLpassthru Mode

SQL pass-through mode; specifies whether or not Paradox users can access the InterBase SQL server via both QBE and the SQL Editor (pass-through SQL) in the same alias connection. Can be NOT SHARED, SHARED AUTOCOMMIT (default), or SHARED NO AUTOCOMMIT. [more]

Password

Type the password needed to connect to the server. Asterisks (*) represent the characters you type.

Show options

Show Public Aliases Only

Click this button if you want to see only public aliases.

Show Project Aliases Only

Click this button if you want to see only project aliases.

Show All Aliases

Click this button if you want to see both public and project aliases.

Connect

Choose Connect to log on to the server named in the Server Name text box, using the current User Name and Password. Depending on your server, this may take a while.

Disconnect

Choose Disconnect to log off the server named in the Server Name text box.

New

Choose New to open an empty box where you can type in a new alias name. After you click New, the button becomes the Keep New button.

Keep New

Choose Keep New if you want this to be a temporary alias, existing only until you exit. Then click OK to close the Alias Manager dialog box.

Note:	Choosing Keep New does not close the dialog box. It lets you save the alias temporarily when you click OK. If you click Cancel, whatever you saved with Keep New is deleted.

Choose Keep New if you are creating several aliases and do not want to re-open this dialog box to create each one. Then choosing Save As will save them all.

Remove

Choose Remove to tag the selected alias for removal. The alias is removed when you exit the box or when you choose Save As and overwrite the current file containing the alias.

Save As

Choose Save As if you want your new alias to be permanent [image] usable any time you use Paradox. You will see the Save File As dialog box. Unless you choose a different configuration file, Paradox stores saved aliases in your default BDE configuration file.

Note:	The message, "File already exists. Overwrite?", appears when you click Save As and choose a file name. Choose Yes. Paradox appends the aliases to the file; it does not replace the ones already there.

OK

Choose OK if you want to save any changes you have made in the dialog box, but only for the current Paradox session.

Cancel

Cancels only the changes in type-in boxes. Any changes you made with Save As remain.


Alias Manager dialog box (Sybase SQL Link)

See also

Use the Alias Manager dialog box to create or modify aliases for local, network, or remote database directories. You can also choose to connect or disconnect from a server. Most of the options described below are available only if you have installed a Borland SQL Link driver and have chosen the SYBASE option from the Driver Type list.

The settings in this dialog box reflect the information stored in your BDE configuration file.

Dialog box options

Public Alias

Check this check box to make an alias a public alias [image] available from all applications that use BDE. Uncheck this check box to make an alias a project alias [image] available only to Paradox applications in the current directory.

Database Alias

Choose an alias from the list. To create a new Sybase or Microsoft SQL Server alias, choose New, then choose the SYBASE driver type, then type the new alias name.

Alias configuration options

Driver Type

To create a Sybase or Microsoft SQL Server database alias, choose SYBASE from the list.

Database

The name of the target database.

Server Name

The name of the target SQL Server.

User Name

The default name for accessing the SQL Server.

Open Mode

The mode in which SQL Link opens the Informix database. Can be READ/WRITE (default) or READ ONLY.

Schema Cache Size

The number of SQL tables whose schema information will be cached. Can be any whole number from 0 to 32 (default=8).

BLOB Edit Logging

Enables or disables the logging of BLOB edits. Can be TRUE (default) or FALSE. When FALSE, this option helps minimize BLOB space requirements and increase performance.

Langdriver

The language driver used to display SQL data to Paradox (U.S. default=blank). Choose the language driver that uses the same character set in which the server passes data to Paradox, and a collation sequence that matches your server's collation sequence. [more]

SQLqry Mode

SQL query mode; the method for handling queries to SQL data. Can be NULL (blank setting, which is the default), SERVER, or LOCAL. [more]

Password

Type the password needed to connect to the server. Asterisks (*) represent the characters you type.

Show options

Show Public Aliases Only

Click this button if you want to see only public aliases.

Show Project Aliases Only

Click this button if you want to see only project aliases.

Show All Aliases

Click this button if you want to see both public and project aliases.

Connect

Choose Connect to log on to the server named in the Server Name text box, using the current User Name and Password. Depending on your server, this may take a while.

Disconnect

Choose Disconnect to log off the server named in the Server Name text box.

New

Choose New to open an empty box where you can type in a new alias name. After you click New, the button becomes the Keep New button.

Keep New

Choose Keep New if you want this to be a temporary alias, existing only until you exit. Then click OK to close the Alias Manager dialog box.

Note:	Choosing Keep New does not close the dialog box. It lets you save the alias temporarily when you click OK. If you click Cancel, whatever you saved with Keep New is deleted.

Choose Keep New if you are creating several aliases and do not want to re-open this dialog box to create each one. Then choosing Save As will save them all.

Remove

Choose Remove to tag the selected alias for removal. The alias is removed when you exit the box or when you choose Save As and overwrite the current file containing the alias.

Save As

Choose Save As if you want your new alias to be permanent [image] usable any time you use Paradox. You will see the Save File As dialog box. Unless you choose a different configuration file, Paradox stores saved aliases in your default BDE configuration file.

Note:	The message, "File already exists. Overwrite?", appears when you click Save As and choose a file name. Choose Yes. Paradox appends the aliases to the file; it does not replace the ones already there.

OK

Choose OK if you want to save any changes you have made in the dialog box, but only for the current Paradox session.

Cancel

Cancels only the changes in type-in boxes. Any changes you made with Save As remain.


LANGDRIVER settings

Long driver name	Short name	Character set	Collation seq.

Paradox 'ascii'	ascii	DOS code page 437	Binary

Paradox 'intl'	intl	DOS code page 437	Paradox 'intl'

Paradox 'intl' 850	intl850	DOS code page 850	Paradox 'intl' 850

Paradox 'nordan'	nordan	DOS code page 865	Paradox 'nordan'

Paradox 'nordan40'	nordan40	DOS code page 865	Paradox 'nordan40'

Paradox 'swedfin'	swedfin	DOS code page 437	Paradox 'swedfin'

Paradox ANSI INTL	ANSIINTL	ISO8859.1 (ANSI)	Paradox 'intl'

Paradox ESP 437	SPANISH	DOS code page 437	Paradox ESP 437

Paradox ISL 861	iceland	DOS code page 861	Paradox ISL 861

Pdox ANSI INTL850	ANSII850	ISO8859.1 (ANSI)	Pdox 'intl' 850

Pdox ANSI NORDAN40	ANSINOR4	ISO 8859.1 (ANSI)	Pdox 'nordan40'

Pdox ANSI SWEDFIN	ANSISWFIN	ISO 8859.1 (ANSI)	Pdox 'swedfin'

Pdox ESP ANSI	ANSISPAN	ISO 8859.1 (ANSI)	PDox ESP437

SQL Link ROMAN8	BLROM800	ROMAN8	Binary

Borland ENU Latin-1	BLLT1US0	ISO 8859.1 (ANSI)	Binary


SQLQRYMODE settings

Setting	Meaning

NULL (blank setting)	Server-local mode (default). Query goes first to the server. If the server is unable to perform the query, the query is performed at the Desktop.

SERVER	Server-only mode. Query is sent to the server. If the server is unable to perform the query, the query fails.

LOCAL	Local-only mode. Query is always performed at the Desktop.


SQLPASSTHRU MODE settings

NOT SHARED
(blank setting) (Default for InterBase, Oracle, Sybase)
Pass-through SQL and non-pass-through SQL do NOT share the same connection.

SHARED AUTOCOMMIT
(Default for Informix)
Pass-through SQL and non-pass-through SQL will share the same connection, and (as long as you are not in an explicit client transaction or batch mode) pass-through SQL will be automatically committed.

SHARED NOAUTOCOMMIT
Pass-through SQL and non-pass-through SQL share the same connection, but pass-through statements will not be automatically committed.


NET PROTOCOL settings

Value	Description

3270	IBM 3270 protocol

APPC	IBM APPC LU 6.2 protocol

ASYNC	Asynchronous (dial-up) access protocol

DECNET	Digital Equipment Corporation DECnet protocol

NAMED PIPES	Named Pipes protocol, as used by OS/2

NETBIOS	NetBios protocol, as used by LAN Manager and other PC LANs

SPX/IPX	SPX/IPX protocol, as used by Novell NetWare

TCP/IP	Transport Control Protocol/ Internet Protocol, as used by Unix and VAX workstations

VINES	Banyan VINES protocol


Database Information dialog box

See also

Use the Database Information dialog box to view or modify the connection parameters you set for accessing remote servers. You need to modify these parameters when

You connect to a server for the first time in a session

You change connections to access data in a different location

Paradox displays the parameter settings you entered in the Alias Manager dialog box. In most cases, all you need to add or modify is the user name and password.

Dialog box options

Database Alias

Paradox displays the alias name you entered in the Alias Manager dialog box, or specified when you tried an operation against a remote database.

Server Name

Paradox displays the full path of the database specified in the alias. If necessary, type a new path for the database, including the name of the server.

User Name

Type the name of the user recognized by the database server.


Default BDE configuration file

The BDE configuration file used at Paradox startup. The default configuration file is listed in the Windows registry.

The BDE configuration file that comes with Paradox is called IDAPI32.CFG. However, you can give your BDE configuration file any name as long as it ends in ".CFG" and is no more than 12 characters long.


ODBC driver connection

A connection from your BDE application to an ODBC driver. The connection requires your BDE application, a vendor-supplied ODBC driver, the Microsoft ODBC Driver Manager, a BDE alias on the workstation side, and an ODBC data source on the server side.

Once you create an ODBC driver connection, it appears on the list of available drivers in the BDE Configuration Utility. This enables you to set up an alias for the target ODBC data source and connect to it through your BDE application.


About SQL

See also

SQL (Structured Query Language) [image] descended from SEQUEL (or Structured English QUEry Language) [image] is a language for constructing relational database management systems (RDBMS) on any hardware platform. It is now the standard language for network queries across different hardware and software platforms.

SQL servers run on local area network (LAN) file-server systems, minicomputers, and mainframes. They handle requests in logical units of work called transactions. Transaction processing protects your data against conflicts that may arise when more than one person is working on a table at the same time.

In SQL, all transactions can be explicitly ended with a command to either accept or discard the changes. Once you are satisfied that no errors occurred during the transaction, you can end that transaction with a COMMIT command. The database then changes to reflect the operations you have just performed. If an error occurs, you can abandon the changes with the ROLLBACK command.


Transaction

A transaction is a group of related operations that must all be performed successfully before the database management system will finalize any changes to the database.


SQL terminology

See also

SQL	Paradox	Description

Table	Table	A structure of rows (records) and columns (fields) that contains information.

Row	Record	A group of columns (fields) in a table that contain related information about a single record.

Column	Field	A category of information (column) in a table that cuts across all rows in the table.


Preparing to connect to an SQL database

See also

Before you can begin to access an SQL database you must complete the following steps:

Action to complete	Description

Enable SQL database access	Make sure you have a valid user ID and password on the SQL server, and at least Read access privileges for the SQL database. See your database administrator.

Install necessary client software	Install any client software libraries required to communicate with the SQL server. Test software is usually included. Make sure this test software can successfully connect to the SQL server before using an SQL alias.

Install an SQL driver 	Install an SQL driver for your SQL server; Paradox supports Borland SQL Links as well as ODBC.

Configure the SQL driver	When you first install the SQL driver it uses all the default driver settings. Make sure these default settings are right for your server installation before you create any aliases for your SQL database. For details, see Help for the BDE Configuration Utility, installed in the Paradox Program Group.

Create at least one SQL alias	Your SQL database alias includes your user name and password on the target SQL server, and is required to access any SQL data. A generic SQL alias is automatically created the first time you modify the default link driver parameters after installation. See the Borland SQL Links Help or Help for the BDE Configuration Utility.


Connecting to the SQL server

See also

The first time you try to query or view a table in your SQL database through Paradox, the Database Information dialog box appears. To complete the connection, enter your password in the Database Information dialog box and click OK.

If the connection is successful, Paradox continues with the operation you requested. The connected database remains connected until you either exit Paradox or manually disconnect.

Connecting manually

If you want to connect to a database without first performing a database action, you can connect manually through the Alias Manager:

1.	Choose Tools|Alias Manager to open the Alias Manager dialog box.

2.	Choose the desired alias from the Database Alias drop-down list. Paradox displays the alias and its connection parameters.

3.	If necessary, modify the alias connection parameters. Then enter your password and choose Connect. If the connection is successful, the Alias Manager displays "Connection is successful. Database is open."

4.	To close the Alias Manager dialog box, click OK.

Disconnecting manually

To disconnect from the SQL server without exiting Paradox, redisplay the Alias Manager, select the appropriate alias, and choose Disconnect.


Changes in the Desktop (SQL)
Changes in the Desktop

See also

Since Paradox supports the use of SQL operations against local (Paradox or dBASE) tables, the SQL Editor is visible in the Toolbar whether you have an SQL driver installed or not. When an SQL driver is installed, Paradox is said to be SQL-enabled.

The Desktop changes in a number of ways:

New icons

Whenever you access the SQL server you see the SQL hourglass.

Working directories

Since you cannot store objects such as documents, queries, reports, and forms on SQL servers, you cannot set an SQL server as the location for your working directory.

You might want to set up a local directory to hold all the forms, reports, .TVS files, and queries you use when you work with a particular SQL database. Once you connect to that database you can then open the local directory and put your working tools at your fingertips. You can also easily apply the tools across other SQL databases.

Refreshing data displays

When you are using local tables, as soon as one user makes a change to a shared database all users see their view of the data refreshed. However, when you are working on an SQL server, this does not occur.

If you are working with indexed SQL tables, you can update the active window by pressing Ctrl+F3 periodically. Ctrl+F3 shows any updates made to a table while you are viewing it.


Using Table windows with SQL data
Using Table windows

See also

When Paradox is SQL-enabled, Table windows change in the following general ways:

Table windows of SQL data do not display record numbers; the scroll box is always in the center of the vertical scroll bar.

Because of differences in how indexing functions in an SQL environment, there are minor differences in the Filter Tables dialog box:

If an SQL table has any indexes, it will always be viewed in order by some index (you can select which one). This allows fast and reliable updates.

Filter expressions on SQL tables can include arithmetic operators.

When you query an SQL table using QBE, Paradox stores the SQL table properties in a file with the extension .TVS. This helps distinguish them from Table window property files for Paradox tables (which end in .TV) and dBASE tables (which end in .TVF).

Note:	.TVS files for SQL tables are not automatically deleted when you delete the SQL table. Also, if you change your private directory the table will no longer be displayed with the properties you set.

If you try to view an SQL table when someone else is editing data, you may have to wait until the other user is finished editing.


Using Form windows with SQL data
Using Form windows

See also

When Paradox is SQL-enabled, Form windows change in the following ways:

Because of differences in how indexing functions in an SQL environment, there are minor differences in the Filter dialog box.

Since SQL driver record locking follows different rules than in Paradox or dBASE, editing and posting of changes to SQL data is different.


Changes in QBE (SQL)
Changes in QBE

See also

The characteristic behavior of SQL update queries means that updates to SQL data are performed either completely or not at all. When you use QBE to perform updates on SQL data, Paradox does not generate any of the following auxiliary tables:

CHANGED.DB	INSERTED.DB

DELETED.DB	ERRORCHG.DB

ERRORINS.DB	ERRORDEL.DB

For detailed information on how to use QBE to query and update SQL data, see About querying SQL data.


About querying SQL data

See also

Paradox provides several different ways to perform operations against SQL data:

Users who are unfamiliar with SQL can frame queries to SQL tables in QBE, through Paradox forms, or by setting up reports. They can also view and edit data directly through Table windows and Form windows.

Users who are familiar with SQL can pass SQL statements directly to the database through the SQL Editor window.

ObjectPAL programmers can use ObjectPAL methods that support SQL, even embedding SQL statements if necessary.

Note:	You can also use the SQL Editor window to perform SQL operations against local (Paradox or dBASE) data. For further information, see About Local SQL.


Using QBE to query SQL data

See also

Query by example (QBE) provides you with a graphical format that helps you show what kind of information you want in your Answer table. When you use QBE to query a table in an SQL database, Paradox attempts to translate your query to an equivalent SQL statement and pass it to the SQL server. If successful, the server processes your query, then passes the answer set back to you through the SQL driver. The SQL Editor lets you view the equivalent SQL statement for the query at any time during query construction, or after it is processed.

Note:	If the SQL database does not support an equivalent SQL statement for a QBE query, a message confirms that the query is processing in the QBE environment.

Querying an SQL table works exactly the same way as querying a local table in Paradox:

1.	Choose File|New|Query.

2.	Select the Alias to the SQL server you want to query.

3.	Select the SQL table you want to query.

4.	Fill out the Query image, specifying data selection criteria.

5.	Press F8 (Run) or click the Run Query button to process your query.

Note:	You cannot interrupt a query while it is processing as long as the SQL hourglass is visible. The size of the SQL table determines query retrieval time.

Borland SQL Links also supports the use of queries that join SQL tables with local tables, or SQL tables from different SQL databases (heterogeneous queries). Heterogeneous queries are always processed according to QBE rules.

Once you become familiar with the syntax of SQL queries, you may prefer to use the SQL Editor to write SQL statements and send them directly to your server. This type of query is always processed by the rules of your SQL server. For more information, see Using pass-through SQL.

Note:	QBE queries sent to an SQL server are automatically under transaction control. However, if you run the SQL equivalent of a QBE query, those SQL statements are not under automatic transaction control. Non-QBE transactions must be explicitly begun and either committed or rolled back.

To view the SQL translation for a query you constructed using QBE,

1.	Connect to the SQL database as described in Connecting to the SQL server.

2.	Use QBE to construct a query to the SQL database.

3.	Open the SQL Editor window in either of the following ways:

Choose Query|Show SQL.

Click the SQL button.

Depending on the type of query you just created, the SQL translation will be one of the following types of statements:

Desired result of query	Equivalent SQL statement

Display specific data	SELECT

Add new data	INSERT

Change existing data	UPDATE

Remove existing data	DELETE


Using pass-through SQL

See also

Programmers familiar with SQL can use the SQL Editor window to directly enter, execute, or save an SQL statement on a remote SQL server. In Paradox, this is called "using pass-through SQL." The remote SQL server performs all error or syntax checking. You can save the SQL statement to a disk file (the SQL Editor automatically saves the file with the extension .SQL), and then later load, modify, or execute it.

The following topics describe two alternatives to using pass-through SQL:

Using QBE to query SQL data

About Local SQL

For information about the SQL Editor, see About the SQL Editor.


Creating an SQL table

See also

When you create an SQL table,

You specify the driver type in the Table Type dialog box after choosing File|New|Table.

You can define the table structure (fields & types), specify required fields, and define indexes. Other features of Paradox tables, such as validity checks and referential integrity, are not supported on SQL tables.

On the Create Table dialog box, the Dec field is the number of decimal places for numeric fields.

You name indexes as described in Creating indexes on SQL tables.

When you use an SQL table in Paradox, the table should have a unique index. If it does not have a unique index and you insert a record, you may not be able to view the record until you close the table and reopen it. To add a unique index, choose Utilities|Restructure.

You can create an SQL table using pass-through SQL in the SQL Editor, as described in Using pass-through SQL.


Creating indexes on SQL tables

See also

You can use Paradox to create and modify indexes on SQL tables.

To create an index for an SQL table,

1.	Display the Create Table or the Restructure Table dialog box.

2.	Choose Define Index.

Paradox displays the Define Index dialog box.

When you use an SQL table in Paradox, the table should have a unique index. If it does not have a unique index and you insert a record, you may not be able to view the record until you close the table and reopen it.

Naming SQL Indexes

For most database servers, index names must be unique for all tables in a database (or in some other predefined workspace). Index names must start with a letter, not a number. When you create an index on an SQL table, Paradox prefixes the index name with the table name to ensure that the index name is unique.

Sybase note:	Sybase index names do not need to be unique within a database, so Paradox does not prefix Sybase index names with table names.

When you create an SQL index and choose OK from the Define Index dialog box, Paradox supplies the prefix "<table>_" for the index name. For example, if you are creating the index "last_name" on the Customer table, Paradox gives the index the name "customer_last_name".

You can include the table name with the index name or omit it:

If you type the index name following "<table>_", Paradox prefixes the index name with the table name and an underscore.

If you delete "<table>_", Paradox omits the table name from the index name. If the index name is not unique, an error will occur when Paradox saves the table.

This index naming scheme also affects copying and restructuring.


Restructuring an SQL table

See also

When you restructure an SQL table using Paradox, you can add, modify, and drop indexes. You cannot otherwise change the structure of a table on a server with Paradox, unless you use pass-through SQL.

When you use an SQL table in Paradox, the table should have a unique index. If it does not have a unique index and you insert a record, you may not be able to view the record until you close the table and reopen it.

Prefixing the Index Name with the Table Name

Paradox prefixes some index names with the table name, as described in Creating indexes on SQL tables. These index names are also affected when you restructure an SQL table as follows:

If you create a new index during a restructure, Paradox prefixes the index name with the table name unless you delete the "<table>_" string from the index name.

If you modify an index during a restructure, Paradox does not modify the index name, unless you rename the index as part of your modification.

If you choose Save As during a restructure, Paradox renames all index names with the new table name, even if the index names are not prefixed with the current table name. (Otherwise, a duplicate index name would be guaranteed.) For example, suppose the EMPLOYEE table contains the following indexes:

EMPLOYEE_DEPT_NO

EMPLOYEE_EMP_NO

FULL_NAME

JOB

If you restructure the table and save it as MY_DEPT, Paradox renames the indexes as follows:

MY_DEPT_DEPT_NO

MY_DEPT_EMP_NO

MY_DEPT_FULL_NAME

MY_DEPT_JOB

Note:	If, during a restructure operation, you add an index and omit the "<table>_" string or modify an index name in any way, Paradox does not prefix the index name with the table name during the Save As operation.

For example, suppose you restructure an InterBase table EMPLOYEE which contains an index EMPID. While saving the index, you change the index name to DEPT105_EMPID. When you choose Save As, Paradox saves the table and does not prefix the DEPT105_EMPID index name with the new table name.


About the SQL Editor

See also

The SQL Editor is a full featured text editor that includes color highlighting, smart tab indent, and many other features. It also supports BRIEF- and Epsilon-style editing.

Use the SQL Editor window to directly enter, execute, or save an SQL statement. This is sometimes called pass-through SQL. You specify the SQL statement in your server's dialect. The SQL server performs all error or syntax checking and executes the statement without any involvement by Paradox.

The SQL Editor appears when you open or create a new SQL file.

As you work with the SQL Editor, you can use the keyboard or the SQL Editor Toolbar.

By default, keywords appear in bold, and comments in italics. You can change colors and text attributes in the Developer Preferences dialog box on the Colors page.

Note:	The SQL Editor does not automatically wrap lines of text. A line extends to the right as you type until you press Enter to begin a new line.

Customizing the Editor

You can customize the SQL Editor by choosing Edit|Developer Preferences and choosing your preferences on the various pages of the Developer Preferences dialog box. Many options are available, such as color highlighting, incremental search, smart tab indent, and so on. You can also choose BRIEF or Epsilon keymaps, instead of the Paradox default. See below.

Shift+F1 help

For a listing of keystrokes that correspond to the keymap you choose in the Developer Preferences dialog box, place the insertion point on a blank space in the SQL Editor and press Shift+F1.

Keystroke mappings

You can choose from three keystroke mappings in the SQL Editor:

The default Paradox keymap

BRIEF keymap

Epsilon keymap

Of the three, the default is the only CUA keymap. The BRIEF and Epsilon mappings do not allow standard menu access through hotkeys, and standard MDI keys are not available.

Menus

Using the BRIEF and Epsilon keymaps, you can access the menus by pressing F10 or by pressing and releasing the Alt key. This moves the focus to the menu. Then press the shortcut key for the wanted menu.

The Default keymap allows menu access as for BRIEF and Epsilon, but in addition the menus can be reached by the standard Alt+Key combination, for example, Alt+E for the Edit menu.

Standard MDI system keys

Standard MDI system keys are only available for the Default keymap. Examples of these keys are:

Ctrl+F6	The MDI window toggle

Alt+F6 	The SDI window toggle

Ctrl+F4	Closing an MDI window

For more information on keys, see To move around the SQL Editor with the keyboard.


To open the SQL Editor

See also

To open the SQL Editor, do one of the following:

To enter (and execute) a new SQL statement,

Choose File|New|SQL Statement or right-click the Open SQL Script button and choose New.

To open (and edit or execute) an existing .SQL file,

Choose File|Open|SQL Statement, click the Open SQL Script button, or right-click the Open SQL Script button and choose Open.

To view the SQL equivalent of an open QBE query,

Choose Query|Show SQL or click the Open SQL Script button.


To move around the SQL Editor with the keyboard

See also

Use the following keys to move around in the SQL Editor:

Ctrl+left arrow	Moves the cursor one word to the left.

Ctrl+right arrow	Moves the cursor one word to the right.

Home	Moves the cursor to the beginning of a line.

End	Moves the cursor to the end of a line.

Ctrl+Home	Moves the cursor to the beginning of the text.

Ctrl+End	Moves the cursor to the end of the text.

Page up	Moves one screenful back.

Page down	Moves one screenful forward.

Backspace	Deletes the character to the left of the cursor.

Delete	Deletes the character to the right of the cursor.

Insert	Has no effect because the SQL Editor is always in insert mode. As you type, characters are pushed to the right. You cannot overwrite characters.

Ctrl+C	Copies selected text to the clipboard.

Ctrl+X	Copies selected text to the clipboard and deletes it from the window.

Ctrl+V	Pastes text from the clipboard into your method.

Tab	Inserts a Tab character and pushes text to the right.


To select text in the SQL Editor

See also

You can select a block of text by dragging with the mouse, using the arrow keys with Shift held down, or clicking with Shift held down to extend the selection.

To select a word, double-click it.

To select an entire line, click to the left of the line and drag the insertion point. (The mouse is in position when the I-beam changes to an arrow.)

To select a block of text, either

Click and drag the mouse

Press Shift and use the arrow keys

Click to indicate the starting position, then press Shift to extend the selection

The keymapping you choose in the Developer Preferences dialog box also affects selection.

When text is selected, what happens when you type a character (or paste from the Clipboard) depends on whether you checked Overwrite Blocks in the Developer Preferences dialog box.


To search for text in the SQL Editor

See also

To find and/or replace text in an SQL Editor window,

Choose Search|Find or Search|Replace.

You can use these two commands to search for text from the insertion point forward (or backward if you check the Backwards option). The Find And Replace dialog box (displayed with Search|Replace) lets you replace the specified text with a specified value.


To exit the SQL Editor

See also

Double-click the SQL Editor's Control menu (or choose Close from the SQL Editor window's Control menu.

To run your statement from the SQL Editor window, which closes the SQL Editor, click the Run SQL button.

To save an SQL statement before you exit, use File|Save or Save As. For more information, see To save an SQL statement.


About SQL statements

See also

SQL statements are the instructions you use to communicate with databases on SQL servers. If you are only accessing one remote server, you can use the particular SQL syntax required by that server. If you are accessing several servers and/or Paradox and dBASE tables on your local system, you can use Local SQL. (For more information, see About Local SQL.)

You can create SQL statements by typing them directly into the SQL Editor or you can run a query using QBE and display the SQL equivalent of that query in the SQL Editor. For instructions, see To view the SQL translation of a QBE query.

Note:	Before you can access a database on an SQL server, you must give the database an alias. For instructions, see To create a new alias.


To specify an alias in the SQL Editor

See also

Before running an SQL statement, you must specify the alias that the statement will run against. To specify an alias, do one of the following:

Choose SQL|Select Alias.

Click the Select Alias button.

Paradox opens the Select Alias dialog box, where you can choose one of the aliases you created in the Alias Manager dialog box or the BDE Configuration Utility.

If you do not specify an alias, Paradox uses the alias :WORK:.

You can include aliases in the text of the SQL statement only if you are using Local SQL.

If you need to join local and remote tables (in a heterogeneous join), specify a local alias, then include the remote alias in the text of the SQL statement by using Local SQL.


To enter an SQL statement

See also

To enter an SQL statement, type the statement in the SQL Editor. You can enter multiple SQL statements if your server allows it and you include only one SELECT statement.

You can include aliases in the text of the SQL statement only if you are using Local SQL.

Use the following commands on the Edit menu to select, locate, and replace text:

Command	Description

Find	Search for strings of text in your code.

Find Next	Search for the next occurrence of the text you specified using Find.

Replace	Search for text and replace it with a value you specify.

Replace Next	Replace the next occurrence of the text specified using Replace.

Select All	Select all text in the SQL Editor window.


To run an SQL statement

See also

To run an SQL statement that you have typed in the SQL Editor window, do one of the following:

Click the Run SQL button.

Choose SQL|Run SQL.

The SQL server performs all error or syntax checking and executes the statement.

If your SQL statement is a query, the query results are displayed in an Answer table.

Note:	Before running an SQL statement, specify the alias the statement will run against by choosing SQL|Select Alias.


To save an SQL statement

See also

Choose File|Save or File|Save As.

When you save an SQL statement to your local hard disk, Paradox places it in an unformatted text file with an .SQL extension.

If the Prompt To Save option in the Developer Preferences dialog box is not checked, you are not prompted to save your changes when you close an SQL Editor window or run SQL code from an open SQL Editor window.

If the Prompt To Save option in the Developer Preferences dialog box (Display page) is checked, a confirmation dialog box lets you save or cancel your changes when you close an SQL Editor window or run a query from an open SQL Editor window.


To view the SQL translation of a QBE query

See also

When you use QBE to query an SQL table, SQL Links attempts to translate your query to an equivalent SQL statement and pass it to the SQL server. The server processes your query, then passes the answer set back to you through SQL Links. Paradox lets you view the equivalent SQL statement for the query at any time during query construction, or after it is processed.

To view the SQL translation for a QBE query,

1.	Connect to the SQL database as described in Connecting to the SQL server.

2.	Use QBE to construct a query to the SQL database.

3.	Open the SQL Editor window in one of the following ways:

Choose Query|Show SQL.

Click the SQL button.

Paradox opens the SQL Editor and displays the SELECT statement for your query.

Note:	If the SQL database does not support an equivalent SQL statement for a QBE query, a message confirms that the query is processing in the QBE environment.

Depending on the type of query you create, the SQL translation will be one of the following types of statements:

Desired query result	SQL statement

Display specific data	SELECT

Add new data	INSERT

Change existing data	UPDATE

Remove existing data	DELETE


About Local SQL

See also

The Borland Database Engine (BDE) enables access to both local and remote database tables through Local SQL (Structured Query Language). Local SQL (sometimes called "client-based SQL") is a subset of ANSI-92 SQL enhanced to support Paradox and dBASE (standard) naming conventions for tables and fields (called "columns" in SQL).

Local SQL lets you use SQL to query "local" standard database tables that do not reside on a database server (specifically Paradox or dBASE tables) as well as "remote" SQL servers. Local SQL is also essential to make multi-table queries across both local standard tables and those on remote SQL servers.

Naming conventions

For a summary of naming conventions for tables and columns, syntax enhancements, and syntax limitations for Local SQL, see Naming conventions.

SQL statements

The SQL statements are broken down into two different categories: Data Manipulation Language (DML) and Data Definition Language (DDL).

DML statements are used for selecting, inserting, updating, and deleting table data. Syntax and usage examples are included.

DDL statements are used for creating, altering, and dropping tables, and for creating and dropping indexes. The DDL transforms directly into BDE function calls. Syntax and usage examples are included.

For a complete introduction to ANSI-standard SQL, see one of the many third-party books.


Naming conventions (Local SQL)

See also

ANSI-standard SQL confines each table or column name to a single word comprised of alphanumeric characters and the underscore symbol (_). Local SQL, however, is enhanced to support more comprehensive names.

Tables

Local SQL supports full file and path specifications for table names. Table names with path or file-name extensions must be enclosed in single or double quotation marks. For example,

SELECT * FROM 'PARTS.DBF'

SELECT * FROM "C:\SAMPLE\PARTS.DBF"

Local SQL also supports BDE aliases for table names. For example,

SELECT * FROM ":PDOX:TABLE1"

If you omit the file extension for a local table name, the table is assumed to be the table type specified in the Default Driver setting in the System page of the BDE Configuration Utility, or the default driver type for the standard alias associated with the query or table.

Finally, Local SQL permits table names to duplicate SQL keywords as long as those table names are enclosed in single or double quotation marks. For example,

SELECT PASSID FROM "PASSWORD"

Columns

Local SQL supports Paradox multi-word column names and column names that duplicate SQL keywords as long as those column names are

Enclosed in single or double quotation marks

Prefaced with an SQL table name or table correlation name

For example, the following column name is two words:

SELECT E."Emp Id" FROM EMPLOYEE E

In the next example, the column name duplicates the SQL DATE keyword:

SELECT DATELOG."DATE" FROM DATELOG


About Data Manipulation Language (DML) statements

See also

With some restrictions, Local SQL supports the following statements for data manipulation:

SELECT, for retrieving existing data

INSERT, for adding new data to a table

UPDATE, for modifying existing data

DELETE, for removing existing data from a table

The following sections describe functions available to DML statements in Local SQL.

Aggregate functions

String functions

Date function

Operators

Updateable (live) queries

For additional illustrative examples, see:

DML examples


Live query views (SQL)

See also

SQL Links offers expanded support for both single table and multi-table live query views.

Restrictions on live queries

Single-table queries or views are updateable provided that:

There are no JOINs, UNIONs, INTERSECTs, or MINUS operations.

There is no DISTINCT key word in the SELECT.

Everything in the SELECT clause is a simple column reference or a calculated field, no aggregation is allowed.

There is no GROUP BY or HAVING clause.

There are no subqueries that reference the table in the FROM clause and no correlated subqueries.

Any ORDER BY clause can be satisfied with an index.

Restrictions on live joins

Live joins depend upon composite cursors. Live joins may be used only if:

All joins are left-to-right outer joins or inner joins.

All joins are equi-joins.

All join conditions can be satisfied by indexes (for Paradox and dBASE).

Output ordering is not defined.

The query contains no elements listed above that would prevent single-table updatability.

Constraints

You can constrain any live query view by checking Constrained Updates on the SQL page of the Query Properties dialog box. An error will then be returned whenever a modify or insert would cause a new record to disappear from the result set.

Calculated fields

For live query views with calculated fields, the calculated field is updated whenever dependent fields are updated.


Heterogeneous joins

See also

Local SQL supports joins of tables in different database formats; such a join is called a "heterogeneous join."

When you perform a heterogeneous join, you may select a local alias. To select an alias, choose SQL|Select Alias. If you have not selected an alias, Local SQL will attempt to find the table in the current directory of the database which is being used. For example, the alias :WORK: might be the database handle passed into the function.

When you specify a table name after selecting a local alias:

For local tables, specify either the alias or the path.

For remote tables, specify the alias.

The following statement retrieves data from a Paradox table and a dBASE table:

SELECT DISTINCT C.CUST_NO, C.STATE, O.ORDER_NO

FROM "CUSTOMER.DB" C, "ORDER.DBF" O

WHERE C.CUST_NO = O.CUST_NO

You can also use BDE aliases in conjunction with table names.


INSERT

See also

In Local SQL, INSERT can insert a list of values or values can be obtained from a SELECT statement, a query that returns row values.

Examples

The following statement adds a row to a table, assigning values to two columns:

INSERT INTO EMPLOYEE_PROJECT (EMP_NO, PROJ_ID) VALUES (52, "dgpii");

The next statement uses SELECT to specify values to insert into a table:

INSERT INTO PROJECTS

SELECT * FROM NEW_PROJECTS

WHERE NEW_PROJECTS.START_DATE > "6-JUN-1994";


UPDATE

See also

There are no restrictions on or extensions to the ANSI-standard UPDATE statement.


DELETE

See also

There are no restrictions on or extensions to the ANSI-standard DELETE statement.


SELECT

See also

The SELECT statement is used to retrieve data from one or more tables. A SELECT that retrieves data from multiple tables is called a "join." Local SQL supports the following form of the SELECT statement:

SELECT [DISTINCT] column_list

FROM table_reference

[WHERE search_condition]

[ORDER BY order_list]

[GROUP BY group_list]

[HAVING having_condition]

[UNION select_expr]

Except as noted elsewhere, all clauses are handled as in ANSI-standard SQL. Clauses in square brackets are optional.

The column_list indicates the columns from which to retrieve data. For example, the following statement retrieves data from two columns:

SELECT PART_NO, PART_NAME

FROM PARTS

Choose one of the following topics for more information on using SELECT:

FROM clause

WHERE clause

ORDER BY clause

GROUP BY clause

HAVING clause

UNION clause

Heterogeneous joins


FROM clause (SELECT statement)

See also

The FROM clause specifies the table or tables from which to retrieve data. Table_reference can be a single table, a comma-delimited list of tables, or can be an inner or outer join as specified in the SQL-92 standard. For example, the following statement specifies a single table:

SELECT PART_NO

FROM "PARTS.DBF"

The next statement specifies a left outer join for table_reference:

SELECT * FROM PARTS LEFT OUTER JOIN INVENTORY

ON PARTS.PART_NO = INVENTORY.PART_NO


WHERE clause (SELECT statement)

See also

The optional WHERE clause reduces the number of rows returned by a query to those that match the criteria specified in search_condition. For example, the following statement retrieves only those rows with PART_NO greater than 543:

SELECT * FROM PARTS

WHERE PART_NO > 543

The WHERE clause can include the IN predicate, followed by a parenthesized list of values. For example, the next statement retrieves only those rows where a part number matches an item in the IN predicate list:

SELECT * FROM PARTS

WHERE PART_NO IN (543, 544, 546, 547)


ORDER BY clause (SELECT statement)

See also

The ORDER BY clause specifies the order of retrieved rows. For example, the following query retrieves a list of all parts listed in alphabetical order by part name:

SELECT * FROM PARTS

ORDER BY PART_NAME ASC

The next query retrieves all part information ordered in descending numeric order by part number:

SELECT * FROM PARTS

ORDER BY PART_NO DESC

Calculated fields can be ordered by correlation name or ordinal position. For example, the following query orders rows by FULL_NAME, a calculated field:

SELECT LAST_NAME || ', ' || FIRST_NAME AS FULL_NAME, PHONE,

FROM CUSTOMER

ORDER BY FULL_NAME


GROUP BY clause (SELECT statement)

See also

The GROUP BY clause specifies how retrieved rows are grouped for aggregate functions.


HAVING clause (SELECT statement)

See also

The HAVING clause specifies conditions records must meet to be included in the return from a query. It is a conditional expression used in conjunction with the GROUP BY clause. Groups that do not meet the expression in the HAVING clause are ommitted from the result set.

Subqueries are supported in the HAVING clause. A subquery works like a search condition to restrict the number of rows returned.

In addition to scalar comparison operators ( =, <, > ... ) additional predicates using IN, ANY, ALL, EXISTS are supported.


UNION clause (SELECT statement)

See also

The UNION clause combines the results of two or more SELECT statements to produce a single Answer table.


Aggregate functions (SQL)

See also

The following ANSI-standard SQL aggregate functions are available to Local SQL for use with data retrieval:

SUM(), for totaling all numeric values in a column

AVG(), for averaging all non-NULL numeric values in a column

MIN(), for determining the minimum value in a column

MAX(), for determining the maximum value in a column

COUNT(), for counting the number of values in a column that match specified criteria

COUNT(*), for counting non-NULL numeric values in a column

Complex aggregate expressions are supported, such as:

SUM( Field * 10 )

SUM( Field ) * 10

SUM( Field1 + Field2 )


String functions (SQL)

See also

Local SQL supports the following ANSI-standard SQL string manipulation functions for retrieval, insertion, and updating:

UPPER(), to force a string to uppercase

LOWER(), to force a string to lowercase

TRIM(), to remove repetitions of a specified character from the left, right, or both sides of a string

SUBSTRING() to create a substring from a string


substring

SUBSTRING() takes a string and creates a substring of that string.

SELECT SUBSTRING( CUSTNAME FROM 1 FOR 10 ) FROM CUSTOMER

This query return the first 10 characters of the CUSTNAME column.

You could also use the SUBSTRING expression SUBSTRING( CUSTNAME FROM 1), which starts returning characters at the specified number and continues to the end.


Date functions (SQL)
Date functions

See also

Local SQL supports the EXTRACT() function for isolating a single numeric field from a date/time field on retrieval using the following syntax:

EXTRACT (extract_field FROM field_name)

For example, the following statement extracts the year value from a DATE field:

SELECT EXTRACT(YEAR FROM HIRE_DATE)

FROM EMPLOYEE

You can also extract MONTH, DAY, HOUR, MINUTE, and SECOND using this function.

Note:	EXTRACT does not support the TIMEZONE_HOUR or TIMEZONE_MINUTE clauses.


Operators (SQL)

See also

Local SQL supports the following operators:

Type	Operator

Arithmetic	+, –, *, /

Comparison	<, >, =, <>, IS NULL, IS NOTNULL, >=, =<

Logical	AND, OR, NOT

String concatenation	||

String pattern match	LIKE


DML examples

See also

The DML syntax supports these clauses:

SELECT FROM, WHERE, ORDER BY, GROUP BY, and HAVING

The following aggregates are supported:

SUM, AVG, MIN, MAX, COUNT

The following operators are supported:

+, -, *, /, =, < >, IS NULL, IS NOTNULL, >=, =<, AND, OR, NOT, ||, LIKE

UPDATE, INSERT, DELETE operations are fully supported.

The following examples show DML statements used with standard databases:

Example 1: UPDATE

update goods
set city = 'Santa Cruz'
where goods.city = 'Scotts Valley'

Example 2: INSERT

insert
into goods ( part_no, city )
values ( 'aa0094', 'San Jose' )

Example 3: DELETE

delete
from goods
where part_no = 'aa0093'

Example 4: SELECT used to join

The following example illustrates how the SELECT statement is supported as an equivalent to a JOIN:

select distinct p.part_no, p.quantity, g.city
from parts p, goods g
where p.part_no = g.part_no
and p.quantity > 20
order by p.quantity, g.city, p.part_no

A SELECT statement that contains a join must have a WHERE clause in which at least one field from each table is involved in an equality check.

Example 5: Sub-selects

Sub-select queries are supported. The following example illustrates this syntax:

select p.part_no
from parts p
where p.quantity in
(select i.quantity
from inventory i
where  i.part_no = 'aa9393')

Example 6: GROUP BY

The following examples illustrate the GROUP BY clause:

select part_no, sum(quantity) as PQTY
from parts
group by part_no

Note:	Aggregates in the SELECT clause must have GROUP BY clause if a projected field is used, as shown in the first example above.

Example 7: ORDER BY

The following example illustrates the ORDER BY with a DESCENDING clause:

select distinct customer_no
from c:\data\customer
order by customer_no descending


About Data Definition Language (DDL) statements

See also

Local SQL supports Data Definition Language (DDL) for creating, altering, and dropping tables, and for creating and dropping indexes.

Views are supported.

Local SQL does not permit the substitution of variables for values in DDL statements.

The following DDL statements are supported:

CREATE TABLE

ALTER TABLE

DROP TABLE

CREATE INDEX

DROP INDEX

CREATE VIEW

For additional illustrative examples see:

DDL examples


CREATE TABLE

See also

CREATE TABLE is supported with the following limitations:

Column definitions based on domains are not supported.

Constraints are limited to PRIMARY KEY for Paradox. Constraints are unsupported in dBASE.

For example, the following statement creates a Paradox table with a PRIMARY KEY constraint on the LAST_NAME and FIRST_NAME columns:

CREATE TABLE "employee.db"

(

LAST_NAME CHAR(20),

FIRST_NAME CHAR(15),

SALARY NUMERIC(10,2),

DEPT_NO SMALLINT,

PRIMARY KEY(LAST_NAME, FIRST_NAME)

)

The same statement for a dBASE table should omit the PRIMARY KEY definition:

CREATE TABLE "employee.dbf"

(

LAST_NAME CHAR(20),

FIRST_NAME CHAR(15),

SALARY NUMERIC(10,2),

DEPT_NO SMALLINT

)

Creating Paradox and dBASE tables

You create a Paradox or dBASE table using Local SQL by specifying the file extension when naming the table:

".DB" for Paradox tables

".DBF" for dBASE tables

If you omit the file extension for a local table name, the table created is the table type specified in the Default Driver setting in the System page of the BDE Configuration Utility.

Data type mappings for CREATE TABLE

The following table lists SQL syntax for data types used with CREATE TABLE, and describes how those types are mapped to Paradox and dBASE types by the BDE:

SQL Syntax	BDE Logical	Paradox	dBASE
SMALLINT	fldINT16	Short	Number (6,10)
INTEGER	fldINT32	Long Integer	Number (20,4)
DECIMAL(x,y)	fldBCD	BCD	N/A
NUMERIC(x,y)	fldFLOAT	Number	Number (x,y)
FLOAT(x,y)	fldFLOAT	Number	Float (x,y)
CHARACTER(n)	fldZSTRING	Alpha	Character
VARCHAR(n)	fldZSTRING	Alpha	Character
DATE	fldDATE	Date	Date
BOOLEAN	fldBOOL	Logical	Logical
BLOB(n,1)	fldstMEMO	Memo	Memo
BLOB(n,2)	fldstBINARY	Binary	Binary
BLOB(n,3)	fldstFMTMEMO	Formatted memo	N/A
BLOB(n,4)	fldstOLEOBJ	OLE	OLE
BLOB(n,5)	fldstGRAPHIC	Graphic	N/A
TIME	fldTIME	Time	N/A
TIMESTAMP	fldTIMESTAMP	Timestamp	N/A
MONEY	fldFLOAT, fldstMONEY	Money	Number (20,4)
AUTOINC	fldINT32, fldstAUTOINC	Autoincrement	N/A
BYTES(n)	fldBYTES(n)	Bytes	N/A
x = precision (default: specific to driver)

y = scale (default: 0)

n = length in bytes (default: 0)

1-5 = BLOB subtype (default: 1)


ALTER TABLE

See also

Local SQL supports the following subset of the ANSI-standard ALTER TABLE statement. You can add new columns to an existing table using this ALTER TABLE syntax:

ALTER TABLE table ADD column_name data_type [, ADD column_name data_type ...]

For example, the following statement adds a column to a dBASE table:

ALTER TABLE "employee.dbf" ADD BUILDING_NO SMALLINT

You can delete existing columns from a table using the following ALTER TABLE syntax:

ALTER TABLE table DROP column_name [, DROP column_name ...]

For example, the next statement drops two columns from a Paradox table:

ALTER TABLE "employee.db" DROP LAST_NAME, DROP FIRST_NAME

ADD and DROP operations can be combined in a single statement. For example, the following statement drops two columns and adds one:

ALTER TABLE "employee.dbf" DROP LAST_NAME, DROP FIRST_NAME, ADD FULL_NAME CHAR[30]


DROP TABLE

See also

DROP TABLE deletes a Paradox or dBASE table. For example, the following statement drops a Paradox table:

DROP TABLE "employee.db"


CREATE INDEX

See also

CREATE INDEX enables users to create indexes on tables using the following syntax:

CREATE INDEX index_name ON table_name (column [, column ...])

Using CREATE INDEX is the only way to create indexes for dBASE tables. For example, the following statement creates an index on a dBASE table:

CREATE INDEX NAMEX ON "employee.dbf" (LAST_NAME)

Paradox users can create only secondary indexes with CREATE INDEX. Primary Paradox indexes can be created only by specifying a PRIMARY KEY constraint when creating a new table with CREATE TABLE.

Note:	The index created in nonmaintained, nonunique, not case-sensitive, and in ascending order. If the table has a primary key, then a maintained index is created.


DROP INDEX

See also

Local SQL provides the following variation of the ANSI-standard DROP INDEX statement for deleting an index. It is modified to support dBASE and Paradox file names.

DROP INDEX table_name.index_name | PRIMARY

The PRIMARY keyword is used to delete a primary Paradox index. For example, the following statement drops the primary index on EMPLOYEE.DB:

DROP INDEX "employee.db".PRIMARY

To drop any dBASE index, or to drop secondary Paradox indexes, provide the index name. For example, the next statement drops a secondary index on a Paradox table:

DROP INDEX "employee.db".NAMEX


CREATE VIEW

See also

A view creates a virtual table from a SELECT statement. You can look at just the data you need within this movable frame or window on the table, while the technical underpinnings are hidden. Instead of entering a complex qualified SELECT statement, the user simply selects a view.

CREATE VIEW describes a view of data based on one or more underlying tables in the database. The rows to return are defined by a SELECT statement that lists columns from the source tables. A view does not directly represent physically stored data. It is possible to perform select, project, join, and union operations on views as if they were tables.

CREATE VIEW enables users to create views on tables by using the following syntax:

CREATE VIEW view_name [ (column_name [, column_name]...)]

CREATE VIEW is supported in conjunction with the Client Data Repository (CDR). The CDR stores the SELECT statement that defines the view.

The "WITH CHECK OPTION" is supported to create a constrained view.

Views of Views are supported. However, the CASCADE/LOCAL view attribute is not supported, because all updateable views CASCADE the constraints.


DDL examples

See also

The following examples show the use of DDL statements with standard databases.

Example 1a: DDL (DROP TABLE)

When the table name contains a period "." character, enclose the name in quotation marks:

drop table "c:\data\customer.db"

Example 1b: DDL (DROP TABLE)

No quotation marks are used if the table name does not contain the "." character:

drop table clients

Example 2: DDL (CREATE INDEX)

create index part on parts (part_no)

Paradox: Paradox primary indexes can be created only when creating the table. Secondary indexes are created as case insensitive and maintained, when possible.

dBASE: dBASE indexes are created as maintained. The Index name specified is the tag name.

For more information about different types of indexes, see DbiAddIndex in the Borland Database Engine Online Reference.

Example 3: DDL (DROP INDEX)

The syntax for drop index is tablename.indexname:

drop index parts.part_no

Paradox: For Paradox only, the syntax tablename.primary indicates the primary index:

drop index parts.primary


Ordering a SQL Links disk set

See also

SQL Links 3.0 provides you with a single user/developer license.

Borland's SQL Links Deployment License is required to distribute SQL Links with any applications and is available with Paradox Client/Server Edition. This deployment license allows a single client/server developer to deploy an unlimited number native SQL Links 3.0 with his/her applications to an unlimited number of servers for use by end-users.

To order a SQL Links disk set,

In the U.S., please fax your order to 510-657-0186. For faster service, call toll-free 1-800-682-9229.

In Canada, please fax your order to 1-800-825-2225. For faster service, call toll-free 1-800-461-3327.

Or, choose File|Print Topic to print this topic, complete the information, and mail it to:

U.S. Customers	Canadian Customers

SQL Links Order Processing	Borland Canada

Borland International, Inc.	200 Konrad Crescent

100 Borland Way	Markham, Ontario

P. O. Box 660005	Canada L3R8T9

Scotts Valley, CA 95067-0005

(Please print)

Product Name_________________________________________________________

Name________________________________________________________________

Company Name________________________________________________________

Street Address_________________________________________________________

City______________________________________________   State______________

Zip/Postal Code_____________________   Country___________________________

Daytime Phone (________)_______________________________________________

     (in case we have a question about your order)

The cost of the SQL Links disk set is U.S.$9.95 plus $5.00 shipping and handling and sales tax where applicable.*

SQL Links disk	$   9.95	*Residents in CA, CO, CT, DC, FL, GA, IL, MA, MD, MI,

State sales tax	$_______	 MN, MO, MC, NJ, NY, OH, PA, TN, TX, UT, VA, WA:

Freight*	$    5.00	 Please add appropriate sales tax. CO, MI, NY, PA,

TOTAL	$_______	 TX, WA residents: please add tax to freight charges

Please make your check payable to Borland International, Inc. and enclose it with this form. Or fill in your credit card name, number, expiration date, your printed name, and signature.

___ Check enclosed	___ MasterCard	___ Visa	___ American Express

Card number  __ __ __ __ - __ __ __ __ - __ __ __ __ - __ __ __ __

Expiration date __ __ - __ __

Name as it appears on the card___________________________________________

Signature_____________________________________________________________

Please allow two to three weeks for delivery. Pricing and offer good in the United States only.

For international orders: Please refer to the Borland Registration card for the telephone number of the Borland office nearest you. Prices and shipping may vary by country.