Professional Documents
Culture Documents
Dokumen - Tips Manual-Foxpro 2023
Dokumen - Tips Manual-Foxpro 2023
Parameters
DatabaseName
If SAFETY is set to ON and the database name you specify has the same path and name as
an existing database, Visual FoxPro displays a warning dialog box that prompts you to
specify a new path or name for the database.
Displays the Create dialog box from which you can specify the name of the database to
create.
Remarks
A database file has a .dbc extension. The associated database memo files have a .dct extension, and
the associated index files have a .dcx extension.
The database is opened exclusively, regardless of the setting of SET EXCLUSIVE. Because CREATE
DATABASE opens the database after it has been created, you do not have to issue a subsequent
OPEN DATABASE command.
If CREATE DATABASE is issued without any of its optional arguments, the Create dialog box is
displayed, allowing you to specify a name for the database.
Example
This example creates a database named people. A table named friends is created and is
automatically added to the database. DISPLAY TABLES is used to display the tables in the database,
and DISPLAY DATABASES is used to display information about the tables in the database.
http://slidepdf.com/reader/full/manual-foxpro 1/36
7/22/2019 Manual Foxpro
This topic has not yet been rated - Rate this topic
Opens a database.
Parameters
FileName
Specifies the name of the database to open. If you don't specify an extension for the file
name, Visual FoxPro automatically assigns a .dbc extension. If you omit FileName, the Open
dialog box is displayed. You can specify a path name as part of the database name.
Note Visual FoxPro will not recognize a path name properly if a disk or directory name
contains an exclamation point (!).
Displays the Open dialog box from which you can choose an existing database or enter the
Opens the database in exclusive mode. If you open the database exclusively, other users
cannot access it and will receive an error if they try to gain access. If you do not include
EXCLUSIVE or SHARED, the current SET EXCLUSIVE setting determines how the database is
opened.
SHARED
Opens the database in shared mode. If you open the database for shared use, other users
have access to it. If you do not include EXCLUSIVE or SHARED, the current SET EXCLUSIVE
setting determines how the database is opened.
NOUPDATE
Specifies that no changes can be made to the database. In other words, the database is
read-only. If you omit NOUPDATE, the database is opened with read/write access.
http://slidepdf.com/reader/full/manual-foxpro 2/36
7/22/2019 Manual Foxpro
Tables contained in the database are not affected by NOUPDATE. To prevent changes to a
table in the database, include NOUPDATE in USE when you open the table.
VALIDATE
Specifies that Visual FoxPro ensures that references in the database are valid. Visual FoxPro
checks to see that tables and indexes referenced in the database are available on disk.
Visual FoxPro also checks to see that referenced fields and index tags exist in the tables and
indexes.
Remarks
While the database is open, all tables contained in it are available. However, the tables are not
implicitly opened. You must open them with USE.
When USE executes, Visual FoxPro looks for the table within the current database. If the table isn't
found, Visual
database has FoxPro then
the same looks
name as for a table
a table outside
outside thethe database.
database, theThis
tablemeans
in thethat if a table
database in a
is found
first.
You cannot open a database that has been opened exclusively by another user.
Example
In the following example, OPEN DATABASE is used to open the testdata database. DISPLAY
DATABASE is used to display information about the tables in the database.
CLOSE DATABASES
SET PATH TO (HOME(2) + 'Data\') && Sets path to database
OPEN DATABASE testdata && Open testdata database
DISPLAY DATABASE && Displays table information
This topic has not yet been rated - Rate this topic
Parameters
TO PRINTER [PROMPT]
http://slidepdf.com/reader/full/manual-foxpro 3/36
7/22/2019 Manual Foxpro
In Visual FoxPro, you can include the optional PROMPT clause to display a Print dialog box
before printing starts. Place PROMPT immediately after TO PRINTER.
TO FILE FileName
Directs output from LIST DATABASE to the file specified with FileName. If the file already
exists and SET SAFETY is ON, Visual FoxPro displays a prompt asking if you want to
overwrite the file.
ADDITIVE
Appends to the end of the named file. If you omit ADDITIVE, then the file is overwritten with
the value of the expression.
NOCONSOLE
Suppresses output to the main Visual FoxPro window or to the active user-defined window.
Remarks
Example
This example creates a database named people. A table named friends is created and is
automatically added to the database. DISPLAY TABLES is used to display the tables in the database,
and LIST DATABASES is used to list information about the tables in the database.
This topic has not yet been rated - Rate this topic
Displays information about the current database or fields, named connections, tables, or views in
the current database.
http://slidepdf.com/reader/full/manual-foxpro 4/36
7/22/2019 Manual Foxpro
Parameters
TO PRINTER [PROMPT]
In Visual FoxPro, you can include the optional PROMPT clause to display a Print dialog box
before printing starts. Place PROMPT immediately after TO PRINTER.
TO FILE FileName
Directs output from DISPLAY DATABASE to the file specified with FileName. If the file
already exists and SET SAFETY is ON, Visual FoxPro displays a prompt asking if you want to
overwrite the file.
ADDITIVE
Appends to the end of the named file. If you omit ADDITIVE, then the file is overwritten with
the value of the expression.
NOCONSOLE
Suppresses output to the main Visual FoxPro window or to the active user-defined window.
Remarks
Example
The following example creates a database named people. A table named friends is created and
is automatically added to the database. DISPLAY TABLES is used to display the tables in the
database, and DISPLAY DATABASES is used to display information about the tables in the database.
http://slidepdf.com/reader/full/manual-foxpro 5/36
7/22/2019 Manual Foxpro
Parameters
The FieldType parameter is a single letter indicating the field's data type. Some field data
types require that you specify nFieldWidth or nPrecision, or both. The following table lists
the values for FieldType and whether nFieldWidth and nPrecision are required.
The nFieldWidth and nPrecision parameters are ignored for D, T, I, Y, L, M, G, and P data
types. The nPrecision parameter defaults to zero (no decimal places) if nPrecision is not
included for the N or F types. The nPrecision parameter defaults to the number of decimal
places specified by the setting of the SET DECIMALS command if nPrecisionis not included
for the B type.
http://slidepdf.com/reader/full/manual-foxpro 6/36
7/22/2019 Manual Foxpro
CHECK lExpression1
Specifies a validation rule for the field. The lExpression1 parameter must evaluate to a
logical expression and can be a user-defined function or a stored procedure. Visual FoxPro
checks the validation rule specified in the CHECK clause when a blank record is appended.
ERROR cMessageText1
Specifies an error message. Visual FoxPro displays this message when the validation rule
specified with the CHECK clause generates an error. The message displays only when data is
changed within a Browse window or Edit window.
AUTOINC [NEXTVALUE NextValue [STEP StepValue]]
Enables autoincrementing for the field. NextValue specifies the start value and can be a
positive or a negative integer value ranging from 2,147,483,647 to -2,147,483,647. The
default value is 1. You can set NextValue using the Next Value spin box in Fields tab of the
Table Designer.
StepValue specifies the increment value for the field and can be a positive, nonzero integer
value ranging from 1 to 255. The default value is 1. You can set StepValue using the Step
spin box in the Fields tab of the Table Designer.
If you use the AUTOINC clause to turn on autoincrementing for a field and specify a default
value, Visual FoxPro stores the default value in the table but does not use it. Visual FoxPro
uses the default value if you use the ALTER TABLE - SQL command to remove
autoincrementing for the field.
http://slidepdf.com/reader/full/manual-foxpro 7/36
7/22/2019 Manual Foxpro
The TagName1 parameter clause specifies an index tag name for the parent table
in TableName2. Index tag names can contain up to 10 characters. If you omit
the TAGclause, the relationship is established using the primary index key of the parent
table. If the parent table does not have a primary index, Visual FoxPro generates an error.
NOCPTRANS
Prevents translation to a different code page for character and memo fields. You can
specify NOCPTRANS only for character and memo fields. This creates what appears to be
Character (binary) and Memo (binary) data types in the Table Designer.
FieldName2 ...
Specifies one or more additional fields and attributes.
PRIMARY KEY eExpression2 TAG TagName2
Specifies any field or combination of fields in the table for creating a primary index. You
cannot use this PRIMARY KEY clause if you previously created a primary index for a field
because a table can have only one primary index. If you include more than one PRIMARY
KEY clause in a CREATE TABLE statement, Visual FoxPro generates an error.
The TagName2 parameter specifies a name for the primary index tag in eExpression2. Index
tag names can contain up to 10 characters.
The TagName3 parameter specifies a name for the candidate index tag in eExpression3.
Index tag names can contain up to 10 characters.
The TagName4 parameter specifies the name for the foreign index key tag . Index tag names
can contain up to 10 characters.
The TagName5 parameter specifies the name of the index tag for the parent table
in TableName3 and establishes a relation based on the index tag. Index tag names can
contain up to 10 characters. If you omit the TAG clause, the relationship is established by
default using the primary index key of the parent table.
CHECK lExpression2
http://slidepdf.com/reader/full/manual-foxpro 8/36
7/22/2019 Manual Foxpro
Specifies the table validation rule. The lExpression2 parameter must evaluate to a logical
expression and can be a user-defined function or a stored procedure.
ERROR cMessageText2
Specifies an error message for the table validation rule in lExpression2. Visual FoxPro
displays this message when the table validation rule generates an error. The message
displays only when data is changed within a Browse window or Edit window.
FROM ARRAY ArrayName
Specifies the name of an existing array whose contents are the name, type, precision, and
scale for each field in the table. You can use the FROM ARRAY clause instead of specifying
individual fields in the CREATE TABLE - SQL statement. For the proper format of the
contents of the array, see AFIELDS( ) Function.
Remarks
The new table opens in the lowest numbered available (unused) work area and can be accessed by
its alias. The new table opens exclusively, regardless of the current setting of the SET
EXCLUSIVE command.
If a database is open and you do not include the FREE clause, the new table is added to the
database. You cannot create a new table with the same name as a table in the database.
If the table is converted to another code page, the fields for which NOCPTRANS has been specified
are not translated.
If a database is not open when you create the new table, including
the NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY, or REFERENCES clauses generates an
error.
Tables created in the Visual FoxPro OLE DB Provider using CREATE TABLE are placed in the default
folder of the calling application, unless you specify another location.
Note The CREATE TABLE syntax uses commas to separate certain CREATE TABLE options. You
must place the NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY, and UNIQUE clauses within
the parentheses containing the column definitions.
If you omit NULL and NOT NULL, the current setting of the SET NULL command determines if null
values are allowed in the field. However, if you omit NULL and NOT NULL but include
the PRIMARY KEY or UNIQUE clause, Visual FoxPro disregards the current setting of SET NULL,
and the field defaults to NOT NULL.
Visual FoxPro generates an error if the validation rule specified in the CHECK clause does not allow
for a blank field value in an appended record.
Null values and duplicate records are not permitted in a field used for a primary or candidate index.
However, Visual FoxPro does not generate an error if you create a primary or candidate index for a
http://slidepdf.com/reader/full/manual-foxpro 9/36
7/22/2019 Manual Foxpro
field that supports null values. Visual FoxPro generates an error if you attempt to enter a null or
duplicate value into a field used for a primary or candidate index.
Note Candidate indexes, created by including the UNIQUE option (provided for ANSI
compatibility) in CREATE TABLE – SQL or ALTER TABLE – SQL commands, are not the same as
indexes created in the INDEX command with the UNIQUE option. An index created in
the INDEX command using the UNIQUE option allows duplicate index keys; candidate indexes do
not allow duplicate index keys. For more information about the UNIQUE option in
the INDEX command, see INDEX Command.
For NextValue, an empty value is interpreted as 0 and causes incrementing to begin with 0
+ StepValue.
The StepValue incremental value is always positively added. If you want to use a negative
automatically incrementing series, you should begin with a negative NextValue and step towards 0
using the StepValue increment value. For example, if NextValue equals -2147483647, the first step
produces a value of -2147483646.
CREATE TABLE recognizes all the fields available in the AFIELDS( ) function and turns on
autoincrementing in the table when StepValue is greater than zero.
Examples
Example 1
The following example creates a new database named mydata1 and uses CREATE TABLE to create
three tables: Salesman, Customer , and Orders. The FOREIGN KEY andREFERENCES clauses in
the second CREATE TABLE command create a persistent one-to-many relationship between
the Salesman and Customer tables. The DEFAULT clauses in the third CREATE TABLE command
establish default values, and the CHECK and ERROR clauses establish business rules for entering
data into specific fields. The MODIFY DATABASE command displays the relationship between the
three tables.
CLOSE DATABASES
CLEAR
CREATE DATABASE mydata1
http://slidepdf.com/reader/full/manual-foxpro 10/36
7/22/2019 Manual Foxpro
Example 2
The following example uses NOCPTRANS to prevent translation to a different code page. The
example creates a table named "mytable" that contains two character fields and two memo fields.
The second character field, "char2", and the second memo field, "memo2", include NOCPTRANS to
prevent translation.
Example 3
The following example creates a Customer table with a field called myField that has Integer data
type and uses automatically incrementing field values:
http://slidepdf.com/reader/full/manual-foxpro 11/36
7/22/2019 Manual Foxpro
-or-
ALTER TABLE TableName1 ALTER [COLUMN] FieldName2 [NULL | NOT NULL] [SET DEFAULT
eExpression2]
[SET CHECK lExpression2 [ERROR cMessageText2]] [ DROP DEFAULT ] [ DROP CHECK
] [ NOVALIDATE ]
-or-
Parameters
Modifies the structure of a table. The TableName1 parameter specifies the name of the
table to be modified.
A single table can contain up to 255 fields. If one or more fields allow null values, the limit
decreases by one field to 254 fields.
Using ALTER COLUMN resets the collating sequence to the default. You should index the
table again with the desired collating sequence after performing ALTER COLUMN. You can
also use the COLLATE clause in the ALTER TABLE command when appropriate (primary key
or foreign key).
Specifies the field type, field width, and field precision (number of decimal places) for the
new or modified field.
http://slidepdf.com/reader/full/manual-foxpro 12/36
7/22/2019 Manual Foxpro
FieldType is a single letter indicating the field's data type. Some field data types require that
you specify nFieldWidth or nPrecision, or both. The following table lists the values
for FieldType and whether nFieldWidth and nPrecision are required:
The nFieldWidth and nPrecision parameters are ignored for D, T, I, Y, L, M, G, and P types.
The nPrecision parameter defaults to zero (no decimal places) if nPrecision is not included
for the N, F, or B types.
StepValue specifies the increment value for the field and can be a positive, nonzero integer
value ranging from 1 to 255. The default value is 1. You can set StepValue using the Step
spin box in the Fields tab of the Table Designer.
You cannot specify a default value if you use the AUTOINC clause to turn on
autoincrementing for a field. Visual FoxPro generates an error message if you specify values
for both the AUTOINC and DEFAULT clauses.
http://slidepdf.com/reader/full/manual-foxpro 13/36
7/22/2019 Manual Foxpro
primary index tag or candidate index tag has the same name as the field. For more
information about primary and candidate indexes, see Setting a Primary or Candidate Index.
COLLATE cCollateSequence
Specifies a collation sequence other than the default setting, MACHINE.
The cCollateSequence parameter must be a valid Visual FoxPro collation sequence. For more
information about setting collation sequences, see Optimization of International
Applications and SET COLLATE Command.
REFERENCES TableName2 [TAG TagName1]
Specifies the parent table to which a persistent relationship is established. The parent table
cannot be a free table.
The TagName1 parameter clause specifies an index tag name for the parent table
in TableName2. Index tag names can contain up to 10 characters. If you omit
the TAGclause, the relationship is established using the primary index key of the parent
table. If the parent table does not have a primary index, Visual FoxPro generates an error.
NOCPTRANS
Prevents translation to a different code page for character and memo fields. You can
specify NOCPTRANS only for character and memo fields. This creates what appears to be
Character (binary) and Memo (binary) data types in the Table Designer.
NOVALIDATE
Specifies that Visual FoxPro allows changes to the table structure that can violate the data
integrity of the table. By default, Visual FoxPro prevents ALTER TABLE from making such
changes to the table structure. To override the default behavior, include
the NOVALIDATE option.
ALTER [COLUMN] FieldName2
Specifies the name of a field to modify. You need to include multiple ALTER
COLUMN clauses to change more than one property of a field in a single ALTER
TABLEcommand. For more information about how ALTER COLUMN clauses are structured,
see the examples in this topic.
SET DEFAULT eExpression2
Specifies a new default value for an existing field. The data type of eExpression2 must be the
same as the data type for the field.
You cannot specify a default value if you use the AUTOINC clause to turn on
autoincrementing for a field. Visual FoxPro generates an error message if you specify values
for both the AUTOINC and SET DEFAULT clauses.
http://slidepdf.com/reader/full/manual-foxpro 14/36
7/22/2019 Manual Foxpro
If index key or trigger expressions reference the field, the expressions become invalid when
the field is removed. In this case, an error is not generated when the field is removed, but
the invalid index key or trigger expressions generate errors at run time.
You can use lExpression4 to specify a filter expression where only records that satisfy the
condition are available for display and access. Primary index keys are created in the index
file just for those records that match the filter expression. You should avoid using
the FOR clause to create a primary index; the uniqueness of a primary key is enforced only
for those records that match the condition specified in the FOR clause. Instead, use
the INDEX command with a FOR clause to create a filtered index.
Rushmore Query Optimization optimizes an ALTER TABLE ... FOR lExpression4 command if
the lExpression4 expression can be optimized. For the best performance, use an optimizable
expression in the FOR clause. For more information, see SET OPTIMIZE and Using Rushmore
Query Optimization to Speed Data Access.
The TagName2 parameter specifies the name of the primary index tag. Index tag names can
contain up to 10 characters. If you omit TAG TagName2, and eExpression3 is a single field,
the primary index tag has the same name as the field specified in eExpression3.
http://slidepdf.com/reader/full/manual-foxpro 15/36
7/22/2019 Manual Foxpro
You can use the lExpression5 parameter to specify a filter expression where only records
that satisfy the condition are available for display and access. Candidate index keys are
created in the index file just for those records that match the filter expression.
You can use the lExpression6 parameter to specify a filter expression where only records
that satisfy the condition are available for display and access. Foreign index keys are created
in the index file just for those records that match the filter expression.
the TAG
parent TagName5
table. clause
Index tag namesto establish a relationship
can contain based onIfanyou
up to 10 characters. existing index
omit the TAGtagclause,
for the
Visual FoxPro establishes the relationship using the parent table's primary index tag.
DROP FOREIGN KEY TAG TagName6 [SAVE]
Deletes a foreign key whose index tag is TagName6. You can use SAVE to keep the index
tag in the structural index. If you omit SAVE, the index tag is deleted from the structural
index.
RENAME COLUMN FieldName4 TO FieldName5
Makes it possible for you to change the name of a field in the table.
The FieldName4 parameter specifies the name of the field to be renamed.
The FieldName5 paramter specifies the new name of the field.
Caution Exercise care when renaming table fields because index expressions, field and
table validation rules, commands, functions, and so on might refer to the original field
names.
Remarks
You can use ALTER TABLE to modify the structure of a table that has not been added to a
database. However, Visual FoxPro generates an error if you include the DEFAULT,FOREIGN
KEY, PRIMARY KEY, REFERENCES, or SET clauses when modifying a free table.
http://slidepdf.com/reader/full/manual-foxpro 16/36
7/22/2019 Manual Foxpro
ALTER TABLE might rebuild the table by creating a new table header and appending records to the
table header. For example, changing the type or width of a field can cause the table to rebuild.
After a table is rebuilt, field validation rules are executed for any fields whose type or width is
changed. If you change the type or width of any field in the table, the table rule is executed.
If you modify field or table validation rules for a table that has records, Visual FoxPro tests the new
field or table validation rules against the existing data and issues a warning on the first occurrence
of a field or table validation rule or of a trigger violation.
You cannot specify a value or expression in the DEFAULT clause if you turn on autoincrementing for
a field.
To remove autoincrementing, use ALTER TABLE - SQL to change COLUMN but do not include
the AUTOINC clause.
Field validation should remain enabled for autoincrementing fields. You might want to use
validation to return a new autoincrementing value.
When you change a table that does not contain an autoincrementing field to include one, either by
using ALTER TABLE or the Table Designer, autoincrementing begins with the next added row.
Previous rows in the table are not updated with autoincrementing values starting with the first
record. You need to make sure that no conflicts occur as a result.
ALTER TABLE might not produce consistent results when used with Visual FoxPro cursors created
by the CREATE CURSOR command. In particular, you can create a Visual FoxPro cursor with
features, such as long field names, that are normally available only with tables that are part of a
database container. ALTER TABLE saves a temporary copy of the cursor, so the rules that apply to
free tables also apply, and any features requiring database support are lost or changed in an
unpredictable manner. Therefore, you should generally avoid using ALTER TABLE with Visual
FoxPro cursors unless you have tested and understood the outcome.
If you omit NULL and NOT NULL, the current setting of the SET NULL command determines if null
values are allowed in the field. However, if you omit NULL and NOT NULL but include
the PRIMARY KEY or UNIQUE clause, Visual FoxPro disregards the current setting of SET NULL,
and the field defaults to NOT NULL.
Visual FoxPro generates an error if the validation rule specified in the CHECK clause does not allow
for a blank field value in an appended record.
Null values and duplicate records are not permitted in a field used for a primary or candidate index.
If you are creating a new field using ADD COLUMN, Visual FoxPro does not generate an error if you
create a primary or candidate index for a field that supports null values. However, Visual FoxPro
generates an error if you attempt to enter a null or duplicate value into a field used for a primary or
candidate index.
Note Candidate indexes, created by including the UNIQUE option (provided for ANSI
compatibility) in CREATE TABLE – SQL or ALTER TABLE – SQL commands, are not the same as
http://slidepdf.com/reader/full/manual-foxpro 17/36
7/22/2019 Manual Foxpro
indexes created in the INDEX command with the UNIQUE option. An index created in
the INDEX command using the UNIQUE option allows duplicate index keys; candidate indexes do
not allow duplicate index keys. For more information about the UNIQUE option in
the INDEX command, see INDEX Command.
If you modify an existing field, and the primary index expression or candidate index expression
consists of fields in the table, Visual FoxPro checks the fields to see if they contain null values or
duplicate records. If they do, Visual FoxPro generates an error and the table is not altered.
If the table is converted to another code page, the fields for which NOCPTRANS has been specified
are not translated.
Example
Example 1 adds a field called Fax to a Customer table and allows the field to have null values.
Example 2 makes the Cust_id field the primary key of the Customer table.
Example 3 adds a field validation rule to the Quantity field of the Orders table so that values in
the Quantity field must be non-negative.
Example 4 adds a one-to-many persistent relation between the Customer and Orders tables
based on the primary key Cust_id in the Customer table and a new foreign key
index Cust_id in the Orders table.
Example 5 removes the field validation rule from the Quantity field in the Orders table.
Example 6 removes the persistent relation between the Customer and Orders tables, but keeps
the Cust_id index tag in the Orders table.
Example 7 adds a field called Fax2 to the Customer table and prevents the field from containing
null values. The new structure of the table is displayed. Two ALTER COLUMNclauses are used to
allow the field to have null values and set the default value for the field to the null value. Note that
multiple ALTER COLUMN clauses are required to change more than one property of a field in a
single ALTER TABLE command. The new field is then removed from the table to restore the table to
its original state.
* Example 1
SET PATH TO (HOME(2) + 'Data\') && Sets path to table.
ALTER TABLE Customer ADD COLUMN Fax c(20) NULL
* Example 2
ALTER TABLE Customer ADD PRIMARY KEY Cust_id TAG Cust_id
ALTER TABLE Customer ALTER COLUMN Cust_id c(5) PRIMARY KEY
* Example 3
ALTER TABLE Orders;
ALTER COLUMN Quantity SET CHECK Quantity >= 0;
ERROR "Quantities must be non-negative"
http://slidepdf.com/reader/full/manual-foxpro 18/36
7/22/2019 Manual Foxpro
* Example 4
ALTER TABLE Orders;
ADD FOREIGN KEY Cust_id TAG Cust_id REFERENCES Customer
* Example 5
ALTER TABLE Orders ALTER COLUMN Quantity DROP CHECK
* Example 6
ALTER TABLE Orders DROP FOREIGN KEY TAG Cust_id SAVE
* Example 7
CLEAR
ALTER TABLE Customer ADD COLUMN Fax2 c(20) NOT NULL
DISPLAY STRUCTURE
ALTER TABLE Customer;
ALTER COLUMN Fax2 NULL;
ALTER COLUMN Fax2 SET DEFAULT .NULL.
ALTER TABLE Customer DROP COLUMN Fax2
The following example uses NOCPTRANS to prevent translation to a different code page. The
example creates a table named "mytable" that contains two character fields and two memo fields.
The second character field, "char2", and the second memo field, "memo2", include NOCPTRANS to
prevent translation.
Appends a new record to the end of a table that contains the specified field values. The INSERT SQL
command has three syntaxes:
Use the first syntax to insert specified values into the specified fields in the table.
Use the second syntax to insert the contents of elements from an array, memory variables,
or properties of an object that match the field names in the table.
Use the third syntax to insert rows from an SQL SELECT command into the specified fields
in the table.
-or-
http://slidepdf.com/reader/full/manual-foxpro 19/36
7/22/2019 Manual Foxpro
INSERT INTO dbf_name FROM ARRAY ArrayName | FROM MEMVAR | FROM NAME ObjectName
-or-
Parameters
Specifies the name of the table to which the new record is appended. dbf_name can include
a path and can be a name expression.
If the table you specify is not open, Visual FoxPro opens it in a new work area, and the new
record is appended to the table. The new work area is not selected; the current work area
remains selected.
If the table you specify is open, INSERT appends the new record to the table. If the table is
open in a work area other than the current work area, it is not selected after the record is
appended; the current work area remains selected.
While the command is executing, the current work area becomes the area into which the
new record is being inserted. In other words, when the INSERT command is executed, it is
in the context of the table being inserted into, regardless of what the current work area was
before the command was issued.
Specifies the names of the fields in the new record into which the values are inserted.
Specifies the field values inserted into the new record. If you omit the field names, you must
specify the field values in the order defined by the table structure. If SET
NULLis ON, INSERT attempts to insert null values into any fields not specified in
the VALUES clause.
Specifies the array whose data is inserted into the new record.
The contents of the elements of the array, starting with the first element, are inserted into
the corresponding fields of the record. The contents of the first array element are inserted
into the first field of the new record; the contents of the second array element are inserted
into the second field, and so on.
http://slidepdf.com/reader/full/manual-foxpro 20/36
7/22/2019 Manual Foxpro
When you include the FROM ARRAY clause, Visual FoxPro disregards any default values for
fields.
FROM MEMVAR
Specifies that the contents of memory variables are inserted into fields with the same
names as the variables. If a variable does not exist with the same name as the field, the field
is left empty.
Specifies a valid Visual FoxPro object, whose property names match the field names in the
table for which you want to insert a new record containing the object's property values. You
can specify any valid Visual FoxPro object, which you would typically create using
the SCATTER...NAME command.
When specifying
FoxPro disregardsanthe
object, if theleaves
field and table ithas a field
blank that
as an does match
APPEND BLANKan command
object property, Visual
was called.
Note If the type of an object's property does not match the field type in the table, Visual
FoxPro generates a data type mismatch error. Use caution when specifying objects derived
from Visual FoxPro classes because many native properties have types that might differ
from the fields you are working with and cannot be changed.
When specifying an object, if an autoincrementing field exists in the table, you cannot have
an object property that matches the autoincrementing field unless you use SET
AUTOINCERROR OFF for the data session. Otherwise, Visual FoxPro generates an error. If
you use SCATTER...NAME to create the object while SET AUTOINCERROR is set to ON, you
can use the REMOVEPROPERTY( ) function to remove any autoincrementing properties to
avoid generating an error. For more information, seeREMOVEPROPERTY( ) Function.
Specifies the fields to select from a table or cursor to be inserted into another table or
cursor. The SELECT statement cannot contain any nonSQL clauses, for
example, INTO or TO clauses such as the following:
Visual FoxPro updates the _TALLY system variable with the number or rows inserted.
Remarks
After executing the INSERT command, Visual FoxPro positions the record pointer on the new
record.
http://slidepdf.com/reader/full/manual-foxpro 21/36
7/22/2019 Manual Foxpro
When you use INSERT with a SELECT statement, you must make sure that the data you insert is
compatible with the data types in the table into which you are inserting. Visual FoxPro attempts to
convert the data types in the SELECT cursor into the data types in the corresponding table or cursor
column into which it is being inserted. If the inserted data is not compatible, precision might be lost,
date data types converted to character data types, and so on.
Examples
Example 1
The following example opens the employee table and adds one record.
USE employee
INSERT INTO employee (emp_no, fname, lname, officeno) ;
VALUES (3022, "John", "Smith", 2101)
Example 2
The following example uses USE to open the Customer table in the testdata database
and SCATTER to copy the contents of the current record to variables. COPY STRUCTUREcopies the
table structure to a new table named cust2. INSERT inserts a new record into the cust2 table
from memory variables. SELECT retrieves the data from cust2, andBROWSE displays the new
record. To clean up, USE with no table specified closes the table in the current work area,
and DELETE removes cust2.dbf .
CLOSE DATABASES
CLEAR
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer
SCATTER MEMVAR
COPY STRUCTURE TO cust2
INSERT INTO cust2 FROM MEMVAR
SELECT CUST2
BROWSE
USE
DELETE FILE cust2.dbf
Example 3
The following example inserts data from the OrdersArchive table from a SELECT statement
performed on the Orders table.
http://slidepdf.com/reader/full/manual-foxpro 22/36
7/22/2019 Manual Foxpro
Parameters
FROM [DatabaseName!]TableName
DatabaseName! specifies the name of a non-current database containing the table. You
must include the name of a database containing the table if the database is not the current
database. Include the exclamation point (!) delimiter after the database name and before
the table name.
Specifies that Visual FoxPro marks only certain records for deletion.
FilterCondition specifies the criteria that records must meet to be marked for deletion. You
can include as many filter conditions as you like, connecting them with the AND or OR
operator. You can also use the NOT operator to reverse the value of a logical expression, or
use EMPTY( ) to check for an empty field.
Remarks
Records marked for deletion aren't physically removed from the table until PACK is issued. Records
marked for deletion can be recalled (unmarked) with RECALL.
If SET DELETED is set to ON, records marked for deletion are ignored by all commands that include
a scope.
You can determine the number of records marked for deletion by checking the value of the _TALLY
system variable immediately after the DELETE - SQL command.
Unlike DELETE, DELETE - SQL uses record locking when marking multiple records for deletion in
tables opened for shared access. This reduces record contention in multiuser situations, but may
reduce performance. For maximum performance, open the table for exclusive use or use FLOCK( ) to
lock the table.
http://slidepdf.com/reader/full/manual-foxpro 23/36
7/22/2019 Manual Foxpro
http://slidepdf.com/reader/full/manual-foxpro 24/36
7/22/2019 Manual Foxpro
DatabaseName1! specifies the name of a non-current database containing the table. You
must include the name of the database containing the table if the database is not the
current one. Include the exclamation point (!) delimiter after the database name and before
the table name.
Specifies the columns that are updated and their new values. If you omit the WHERE clause,
every row in the column is updated with the same value.
FilterCondition specifies the criteria that records must meet to be updated with new values.
You can include as many filter conditions as you like, connecting them with the AND or OR
operator. You can also use the NOT operator to reverse the value of a logical expression, or
use EMPTY( ) to check for an empty field.
Remarks
UPDATE - SQL can only update records in a single table. Note that subqueries are supported in
UPDATE – SQL.
You can determine the number of records updated by checking the value of the _TALLY system
variable immediately after the UPDATE - SQL command.
Unlike REPLACE, UPDATE - SQL uses record locking when updating multiple records in a table
opened for shared access. This reduces record contention in multiuser situations, but may reduce
performance. For maximum performance, open the table for exclusive use or use FLOCK( ) to lock
the table.
Example
The following example opens the customer table in the testdata database. UPDATE -SQL is used
to set all of the values in the maxordamt field to 25.
CLOSE DATABASES
http://slidepdf.com/reader/full/manual-foxpro 25/36
7/22/2019 Manual Foxpro
Character Operators
Visual Studio .NET 2003
This topic has not yet been rated - Rate this topic
You can join and compare character data using the character operators +, -, and $. The following
table lists the character expression operators in order of precedence.
Character Operators
+ Concatenation. Joins two strings, a string and a field, or ? 'Good ' + 'morni
a string and a variable.
http://slidepdf.com/reader/full/manual-foxpro 26/36
7/22/2019 Manual Foxpro
Logical Operators
Visual Studio .NET 2003
Logical operators work with all data types and return a Logical value. The following table lists the
logical operators in order of precedence.
Logical Operators
Note The Not Equal operator ( # ) can be used to perform XOR comparison (such as lVarX # lVarY).
Relational Operators
Visual Studio .NET 2003
Relational operators work with all data types and return a Logical value. The following table lists the
relational operators.
Relational Operators
http://slidepdf.com/reader/full/manual-foxpro 27/36
7/22/2019 Manual Foxpro
The == operator can be used when an exact comparison of character strings is needed. If two
character expressions are compared with the == operator, the expressions on both sides of the ==
operator must contain exactly the same characters, including blanks, to be considered equal. The
SET EXACT setting is ignored when character strings are compared using ==. See SET EXACT for
more information on using the == operator to compare character strings.
You also can use the equal to (=) operator to determine if two object references refer to the same
object. The following example demonstrates a simple usage:
CLEAR ALL
X = CREATEOBJECT('Form')
Y = CREATEOBJECT('Form')
? X = Y && Displays false (.F.)
Z = X
? X = Z && Displays true (.T.)
Numeric Operators
Visual Studio .NET 2003
This topic has not yet been rated - Rate this topic
Numeric operators function with all numeric values. The following table lists the numeric operators
in order of precedence.
Numeric Operators
**, ^ Exponentiation ? 3 ** 2
? 3 ^ 2
http://slidepdf.com/reader/full/manual-foxpro 28/36
7/22/2019 Manual Foxpro
? 14 / 7
% Modulus (remainder) ? 15 % 4
IF lExpression [THEN]
Commands
[ELSE
Commands]
ENDIF
Parameters
lExpression
Specifies the logical expression that is evaluated. If lExpression evaluates to true (.T.), any
commands following IF or THEN and preceding ELSE or ENDIF (whichever occurs first) are
executed.
If lExpression is false (.F.) and ELSE is included, any commands after ELSE and
before ENDIF are executed.
If lExpression is false (.F.) and ELSE isn't included, all commands
between IF and ENDIF are ignored. In this case, program execution continues with
the first command following ENDIF.
Remarks
You can nest an IF ... ENDIF block within another IF ... ENDIF block.
Comments preceded by && can be placed on the same line after IF, THEN, ELSE, and ENDIF. These
comments are ignored during compilation and program execution.
Example
http://slidepdf.com/reader/full/manual-foxpro 29/36
7/22/2019 Manual Foxpro
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && Open customer table
This topic has not yet been rated - Rate this topic
Parameters
Var
Specifies a variable or an array element that acts as the counter. The variable or array
element doesn't have to exist before FOR ... ENDFOR is executed.
nInitialValue TO nFinalValue
nInitialValue is the initial value of the counter; nFinalValue is the final value of the counter.
STEP nIncrement
Commands
http://slidepdf.com/reader/full/manual-foxpro 30/36
7/22/2019 Manual Foxpro
Specifies the Visual FoxPro commands to be executed. Commands can include any number
of commands.
EXIT
Transfers control from within the FOR ... ENDFOR loop to the command immediately
following ENDFOR. You can place EXIT anywhere between FOR and ENDFOR.
LOOP
Returns control directly back to the FOR clause without executing the statements between
LOOP and ENDFOR. The counter is incremented or decremented as if ENDFORwere
reached. LOOP can be placed anywhere between FOR and ENDFOR.
Remarks
A variable or an array element is used as a counter to specify how many times the Visual FoxPro
commands inside the FOR ... ENDFOR loop are executed.
The Visual FoxPro commands after FOR are executed until ENDFOR or NEXT is reached. The
counter MemVarName is then incremented by the value of nIncrement. If you omit the STEP clause,
the counter is incremented by 1. The counter is then compared with nFinalValue. If the counter is
less than or equal to nFinalValue, the commands following the FOR clause are executed again. If the
counter is greater than nFinalValue, the FOR ... ENDFOR loop is exited and program execution
continues with the first command following ENDFOR or NEXT.
Note The values of nInitialValue, nFinalValue, and nIncrement are only read initially. However,
changing the value of the counter MemVarName inside the loop affects the number of times the
loop is executed.
If the value of nIncrement is negative and the initial value nInitialValue is greater than the final
value nFinalValue, the counter is decremented each time through the loop.
Example
Example 2 uses memory variables for the initial, final, and STEP values to display all even-numbered
records from 2 through 10 in customer.
* Example 1
CLEAR
FOR gnCount = 1 TO 10
? gnCount
ENDFOR
* Example 2
SET TALK OFF
http://slidepdf.com/reader/full/manual-foxpro 31/36
7/22/2019 Manual Foxpro
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer && Opens Customer table
STORE 2 TO gnI && Initial value
STORE 10 TO gnJ && Final value
STORE 2 TO K && Step value
FOR gnCount = gnI TO gnJ STEP K
GOTO gnCount && Move record pointer
DISPLAY company && Display company name
ENDFOR
Executes a set of commands for each element in a Visual FoxPro array or collection.
Property Values
Var
Group
A Visual FoxPro array, an OLE array, a Visual FoxPro collection, or an OLE collection.
Commands
EXIT
Transfers control from within the FOR EACH ... ENDFOR loop to the command immediately
following ENDFOR. You can place EXIT anywhere between FOR EACH and ENDFOR.
LOOP
http://slidepdf.com/reader/full/manual-foxpro 32/36
7/22/2019 Manual Foxpro
Returns control directly back to the FOR EACH clause without executing the statements
between LOOP and ENDFOR. LOOP can be placed anywhere between FOR EACH and
ENDFOR.
Examples
The following examples demonstrate how FOR EACH is used to enumerate elements in a Visual
FoxPro array, an OLE array, and a set command buttons assigned to an object array.
In the following example, a Visual FoxPro variable array is created and FOR EACH is used to display
the contents of each element in the array.
DIMENSION cMyArray(3)
cMyArray[1] = 'A'
cMyArray[2] = 'B'
cMyArray[3] = 'C'
In the following example, an instance of Microsoft Excel is created, and a new workbook is
added. FOR EACH is used to display the name of each worksheet in the workbook. This example
requires that Microsoft Excel be properly installed on the machine on which the example is run.
oExcel = CREATE("Excel.Application")
oExcel.Workbooks.ADD
? oMyVar
NEXT oMyVar.name
In the following example, five command buttons are placed on a form. FOR EACH is used to display
the buttons on the form and specify the captions, font styles and positions of each button.
PUBLIC oMyObject
oMyObject = CREATEOBJECT("frmTest")
oMyObject.SHOW
FOR i = 1 to 5
THIS.AddObject('THIS.MyArray[i]',;
'COMMANDBUTTON')
ENDFOR
http://slidepdf.com/reader/full/manual-foxpro 33/36
7/22/2019 Manual Foxpro
oButton.Visible = .T.
NEXT
j = 1
****** FOR EACH - ENDFOR ******
FOR EACH oButton IN THIS.MyArray
oButton.top = j * 30
j = j + 1
ENDFOR
j = 1
****** EXIT ******
FOR EACH oButton IN THIS.MyArray
oButton.Caption = "test" + str(j)
j = j+1
IF j > 3
EXIT
ENDIF
NEXT
j = 1
****** LOOP ******
FOR EACH oButton IN THIS.MyArray
IF j > 3
LOOP
ENDIF
j = j + 1
oButton.Left = 25
NEXT
ENDPROC
ENDDEFINE
DO WHILE lExpression
Commands
http://slidepdf.com/reader/full/manual-foxpro 34/36
7/22/2019 Manual Foxpro
[LOOP]
[EXIT]
ENDDO
Parameters
lExpression
Specifies a logical expression whose value determines whether the commands between DO
WHILE and ENDDO are executed. As long as lExpression evaluates to true (.T.), the set of
commands are executed.
Commands
Specifies the set of Visual FoxPro commands to be executed as long as lExpression evaluates
to true (.T.).
LOOP
Returns program control directly back to DO WHILE. LOOP can be placed anywhere
between DO WHILE and ENDDO.
EXIT
Transfers program control from within the DO WHILE loop to the first command following
ENDDO. EXIT can be placed anywhere between DO WHILE and ENDDO.
Remarks
Commands between DO WHILE and ENDDO are executed for as long as the logical
expression lExpression remains true (.T.). Each DO WHILE statement must have a corresponding
ENDDO statement.
Comments can be placed after DO WHILE and ENDDO on the same line. The comments are ignored
during program compilation and execution.
Example
In the following example, the number of products in stock priced over $20 is totaled in the DO
WHILE loop until the end of the file (EOF) is encountered. The DO WHILE loop is exited and the total
is displayed.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products && Opens Products table
SET TALK OFF
gnStockTot = 0
http://slidepdf.com/reader/full/manual-foxpro 35/36
7/22/2019 Manual Foxpro
IF EOF( )
EXIT
ENDIF
IF unit_price < 20
SKIP
LOOP
ENDIF
gnStockTot = gnStockTot + in_stock
SKIP
ENDDO && Ends loop
CLEAR
? 'Total items in stock valued over 20 dollars:'
?? gnStockTot
http://slidepdf.com/reader/full/manual-foxpro 36/36