博文

VFP命令系列教程---BEGIN TRANSACTION 命令(2006-04-30 12:42:00)

摘要:BEGIN TRANSACTION 命令 启动一个事务处理。仅对数据库中的表支持事务处理。 有关如何在数据库中创建和增加表的详细信息,请参阅CREATE DATABASE 和 ADD TABLE。
BEGIN TRANSACTION
备注
为了保存所做的修改并终止事务处理,应发出 END TRANSACTION 命令。如果事务处理失败(如服务器有故障或工作站有故障,以及没有提交事务处理就退出 Visual FoxPro),或者用户发出 ROLLBACK 命令,事务处理中的文件就恢复成原状态。
事务处理最深可嵌套五层,如果要进行第六层嵌套,则产生错误。
当修改一个数据库的记录,而该数据库又是事务处理的一部分时,网络上的其他用户在您终止事务处理之前无法访问(读或写)这些记录。
如果网络上的其他用户要访问您已经修改的记录,就必须等待您终止事务处理。在记录可用之前,用户将一直收到“记录不可用...请等待”的消息。因此,减小事务处理长度或在其他用户不需要访问期间进行事务处理就变得非常重要。
所有 IDX 索引文件 (非结构化, 或非基于 CDX 索引) 在事务处理期间必须关闭。在事务处理中只支持结构化索引。
在事务处理期间不支持下列命令和函数:
命令和函数
ADD TABLE                                   DELETE CONNECTION
APPEND PROCEDURES               DELETE DATABASE
CLEAR ALL           ......

阅读全文(6141) | 评论:0

VFP命令系列教程---AVERAGE 命令(2006-04-30 12:35:00)

摘要:计算数值表达式或字段的算术平均值。AVERAGE [ExpressionList] [Scope] [FOR lExpression1] [WHILElExpression2] [TO VarList | TO ARRAY ArrayName] [NOOPTIMIZE] 参数 ExpressionList 指定求平均值的表达式。ExpressionList 可以是用逗号分隔的表字段或包含表字段的数值表达式。 Scope 指定求平均值的记录或记录范围。只有在指定范围内的记录才参加求平均值运算。Scope 子句可以为 :ALL、NEXT nRecords、RECORD nRecordNumber 和 REST。默认的 Scope(范围)为所有记录。 包含 Scope 子句的命令仅处理活动工作区中的表。 FOR lExpression1 指定只有满足逻辑条件 lExpression1 的记录才参与计算。这样可以筛选出不想要的记录。 如果 lExpression 是可优化的表达式,Rushmore 技术将优化 AVERAG FOR 查询。若要获得最佳性能,应在 FOR 子句中使用可优化的表达式。有关 Rushmore 可优化表达式的详细内容,请参阅 SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。 WHILE lExpression2 指定只要逻辑表达式 lExpression2 为“真”(.T.),记录就参与运算。直到遇到第一个使 lExpression2 计算得“假”(.F.) 为止。 TO VarList 指定保存平均值结果的内存变量或数组元素的列表。 TO ARRAY ArrayName 指定保存平均值结果的一维数组。一维数组可以在使用 AVERAGE 命令前创建。 如果指定数组不存在,Visula FoxPro 将自动创建该数组。如果数组存在,但大小不能包含所有结果,Visula FoxPro 将自动根据信息量增加数组大小。 NOOPTIMIZE 取消 AVERAGE 命令的 Rushmore 优化。有关的详细内容,请参阅 SET OPTIMIZE 和 用 Rushmore 查询优化数据访问速度。 备注 除非包含可选的表达式列表,否则选定表的所......

阅读全文(6430) | 评论:0

VFP命令系列教程---ASSERT 命令(2006-04-30 12:34:00)

摘要:ASSERT 命令 若指定的逻辑表达式为假 (.F.),则显示一个调试消息框。ASSERT lExpression [MESSAGE cMessageText] 参数 lExpression 指定一个逻辑表达式 lExpression。若求值后 lExpression 为假 (.F.),则显示一个调试消息框;若求值后 lExpression 为真 (.T.),则不显示。 cMessageText 指定调试对话框中显示的文本。如果您省略 cMessageText,则显示默认文本;默认文本中包括当前中断所在的 ASSERT 语句的行号和所在的过程。 备注 如果 SET ASSERTS 命令设置为 OFF ,则本命令被忽略。 信息框包括 取消, 调试, 忽略, 全部忽略 按钮。下表列出选择各按钮后的动作。 按钮 动作 调试 程序的执行被挂起,同时显示“Visual FoxPro 调试器”窗口,其中的“跟踪”窗口处于激活状态。 取消 结束程序的执行 忽略 程序继续执行 ASSERT 命令后面的命令。 全部忽略 程序继续执行 ASSERT 命令后面的命令,并且 SET ASSERTS 设置为 OFF。所以,从此往后的所有 assert 命令都被忽略,除非再次将 SET ASSERTS 设置为 ON。......

阅读全文(4209) | 评论:0

VFP命令系列教程---APPEND PROCEDURES 命令(2006-04-30 11:04:00)

摘要:APPEND PROCEDURES 命令 将文本文件中的存储过程追加到当前数据库中。
APPEND PROCEDURES FROM FileName   [AS nCodePage] [OVERWRITE]
参数
FileName
指定文本文件,函数将追加其中的存储过程。

AS nCodePage
指定要追加其存储过程的文本文件所在的代码页。Visual FoxPro 在复制文本文件的内容时,自动将文本文件的内容转换成指定的代码页。 如果指定的 cCodePage 值无效,Visual FoxPro 将产生错误信息。可以使用 GETCP() 函数显示“代码页”对话框,并从中指定文本文件的代码页,此文本文件包含要追加的存储过程。 如果忽略 AS nCodePage,Visual FoxPro 将复制文本文件的内容,并自动将文本文件内容转化成 Visual FoxPro 的当前代码页。您可以用 CPCURRENT() 函数设置 Visual FoxPro 的当前代码页。 如果 nCodePage 值为零,Visual FoxPro 将假定文本文件的代码页与当前数据库的代码页相同,不进行代码页转换。

OVERWRITE
指定用文本文件中的过程改写数据库中的当前存储过程。如果忽略参数 OVERWRITE,将不改写数据库中的当前存储过程,文本文件中的存储过程追加到当前存储过程中。

备注
APPEND PROCEDURES 不能用于分发的可执行程序中。如果你的程序使用该命令, 将产生错误, "此功能不可用"。
使用 append procedures 命令,可以用编程方式修改数据库中的存储过程。运行 APPEND PROCEDURES 时,数据库必须是打开的,并且为当前数据库,否则 Visual FoxPro 将产生错误信息。
注意   要面查看或存储过程, 使用数据库设计器。

示例
下面的示例先打开数据库 testdata,然后创建一个包含单个备注字段的临时表 mytable,用 replace 命令把存储过程 myprocedure 存入备注字段中。接着使用 copy memo 命令创建包含备注字段......

阅读全文(5142) | 评论:0

VFP命令系列教程---APPEND MEMO 命令(2006-04-30 11:01:00)

摘要:APPEND MEMO 命令 将文本文件的内容复制到备注字段中。
APPEND MEMO MemoFieldName FROM FileName[OVERWRITE] [AS nCodePage]
参数
MemoFieldName
指定备注字段名,文件内容将追加到此备注字段中。

FROM FileName
指定文本文件,其内容将复制到备注字段中。此参数必须包含完整的文本文件名,包括扩展名。

OVERWRITE
用文件的内容替换备注字段当前的内容。

AS nCodePage
指定复制到备注字段中的文本文件的代码页。Visual FoxPro 复制文本文件的内容,并在将数据复制到备注字段的过程中,自动将数据从指定代码页转换成备注字段所在表的代码页。如果包含备注段的表没有使用代码页标记,Visual FoxPro 自动将数据从指定代码页转换到当前 Visual FoxPro 代码页。

如果指定的 nCodePage 值无效,Visual FoxPro 将产生一条错误信息。您可以使用 GETCP() 函数显示“代码页”对话框,并从中指定要追加的表或文件的代码页。
如果忽略 AS nCodePage 子句,或者指定 nCodePage 值为零,将不转换文本文件的代码页。

备注
如果忽略参数 OVERWRITE,文本文件的全部内容将追加到当前记录的指定备注字段中。

示例
在下面的示例中,先将备注字段 notes 的内容复制到文件 test.txt 中,然后将 test.txt 的内容追加到备注字段,最后用 test.txt 的内容改写备注字段中的内容。
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee                     && 打开 Employee 表
WAIT WI......

阅读全文(5649) | 评论:0

VFP命令系列教程---APPEND GENERAL 命令(2006-04-30 10:58:00)

摘要:APPEND GENERAL 命令 从文件中导入 OLE 对象并将其放入通用字段中。
APPEND GENERAL GeneralFieldName [FROM FileName]
   [DATA cExpression] [LINK] [CLASS OLEClassName]
参数
GeneralFieldName
指定放置 OLE 对象的通用字段名。可以用带有表别名的字段名来指定在非当前工作区中打开的表的通用字段。

FROM FileName
指定包含 OLE 对象的文件。必须给出文件全名,包括扩展名。如果文件不在当前目录或当前文件夹中,还需要给出文件的路径。

DATA cExpression
指定字符表达式,此表达式作为一个字符串存入 OLE 对象的通用字段中。OLE 对象必须能接收和处理字符串。例如,不能往 Paintbrush. 的图片对象中存入字符串。

LINK
建立 OLE 对象和包含对象的文件间的链接。OLE 对象出现在通用字段,但对象定义仍在文件中。如果省略 LINK,OLE 对象将嵌入到通用字段中。

CLASS OLEClassName
指定 OLE 对象是 OLE 类,而非其默认类。
当包含 OLE 对象的文件的扩展名与默认的扩展名不同而且你想为类强制行为时, 你可以指定一个类名。如果默认的扩展名可用于多个 Automation 服务程序, 包括 class 来指定一个特定的服务程序。

备注
如果在通用字段中已有一个 OLE 对象,它将被源文件中的 OLE 对象取代。要从通用字段中移去 OLE 对象, 使用不带额外参数的 APPEND GENERAL GeneralFieldName (GeneralFieldName 是要清除的通用字段)。
关于 Visual FoxPro 中的 OLE 对象的更多信息, 参见添加 OLE。

示例
以下示例从 excel 目录或文件夹中导入 microsoft excel 图表,存入通用字段 mygenfield 中。
CREATE TABLE MyGenTbl (mygenfield G)

阅读全文(7597) | 评论:1

VFP命令系列教程---APPEND FROM 命令(2006-04-30 10:42:00)

摘要:APPEND FROM 命令 从一个文件中读入记录,追加到当前表的尾部。
APPEND FROM FileName | ?   [FIELDS FieldList] [FOR lExpression]
   [[TYPE] [DELIMITED [WITH Delimiter | WITH BLANK | WITH TAB
      | WITH CHARACTER Delimiter] | DIF | FW2 | MOD | PDOX | RPD |
      SDF | SYLK | WK1 | WK3 | WKS | WR1 | WRK | CSV | XLS | XL5
      [SHEET cSheetName] | XL8 [SHEET cSheetName]]] [AS nCodePage]
参数
FileName
指定从哪个文件中读入记录。如果给出的文件名不包含扩展名,则将文件默认为 Visual FoxPro 表,扩展名为 .DBF。如果文件是 Visual FoxPro 表,无论SET DELETED 为何种设置,表中标记为删除的记录也将添加到当前表中。

?
显示打开对话框,从中可以选择从哪个表中读入记录。

FIELDS FieldList
指定添加哪些字段数据。

FOR lExpression
为当前选定表中每一条 lExpression 为“真”(.T.) 的记录追加新记录,直至达到当前选定表的末尾。如果省略 FOR,则整个源文件记录都追加到当前表中。

TYPE
指定源文件类型。如果指定的源文件类型不是 Visual FoxPro 表,则必须指定文件类型,但不必包括 TYPE 关键字。您可以从各种类型文件(包括分隔 ASCII 文本文件)中读入信息添加到表中,在这些文件中可以指定字段分隔符。

如果要追加的源文件扩展名不是默认的扩展名,源文件名必须包括文件扩展名。例如,Microsoft......

阅读全文(32118) | 评论:4

VFP命令系列教程---APPEND FROM ARRAY 命令(2006-04-30 10:27:00)

摘要:APPEND FROM ARRAY 命令 对数组中的每一行,添加一条记录到当前选定表中,并从相应的数组行中取出数据添加到记录中。
APPEND FROM ARRAY ArrayName [FOR lExpression]
   [FIELDS FieldList | FIELDS LIKE Skeleton | FIELDS EXCEPT Skeleton]
参数
ArrayName
指定数组名,该数组包含要复制到新记录中的数据。命令将把数组中所有的行都追加到表中。

FOR lExpression
为数组中用于追加的记录指定条件。在 lExpression 条件表达式中必须包含目标字段名。
在数组中的行追加到表中的记录之前,先检查与 lExpression 中指定的目标字段对应的数组元素是否满足 lExpression 中的条件。如果数组元素满足条件,则将记录追加表中。
如果数组元素不满足条件,这一数组行不追加到表中,并继续检查下一行。

FIELDS FieldList
指定只有 FieldList 中的字段才从数组进行更新。FieldList 中的第一个字段用数组第一个元素的内容更新,第二个字段用第二个元素更新,依此类推。

FIELDS LIKE Skeleton
指定从数组中更新与字段梗概 Skeleton 匹配的字段。

FIELDS EXCEPT Skeleton
指定从数组中更新所有与字段梗概 Skeleton 不匹配的字段。
字段梗概 Skeleton 支持通配符。例如,为了指定从数组更新所有以字母A与P开头的字段,可以用:
APPEND FROM ARRAY aMyArray FIELDS LIKE A*,P*
LIKE 子句可以同 EXCEPT 子句组合使用:
APPEND FROM ARRAY aMyArray FIELDS LIKE A*,P* EXCEPT PARTNO*

备注
在 APPEND FROM ARRAY 命令中,备注字段和通用字段将被忽略。如果表处于打开状态并被共享使用,在追加记录时,APPEND FROM ARRAY......

阅读全文(5521) | 评论:0

VFP命令系列教程---APPEND 命令(2006-04-30 10:13:00)

摘要:APPEND 命令 在表的末尾添加一个或多个新记录。
APPEND [BLANK] [IN nWorkArea | cTableAlias] [NOMENU]
参数
BLANK
在当前表的末尾添加一个空记录。Visual FoxPro 在发出 APPEND BLANK 命令时并不打开编辑窗口。
可以使用 BROWSE、CHANGE 或 EDIT 命令编辑新记录。

IN nWorkArea
指定要添加新记录的表所在的工作区。

IN cTableAlias
指定要添加新记录的表的别名。

如果省略 nWorkArea 和 cTableAlias,新记录将添加到当前选定工作区的表中。如果发出 APPEND 命令,空记录将添加到由 nWorkArea 或 cTableAlias 指定的工作区的表中,并且自动选定该表;如果发出 APPEND BLANK 命令,空记录将添加到指定的 nWorkarea 或 cTableAlias 工作区的表中,但不选定表。

NOMENU
指定将表菜单标题从系统菜单栏中删除,以避免改变编辑窗口的格式。

备注
当发出 APPEND 或 APPEND BLANK 命令,并且没有在当前选定工作区中打开表时,将显示一个打开对话框,您可以在对话框中选择需要添加记录的表。

APPEND 命令打开一个编辑窗口,您可以在其中输入一个或多个新记录。增加新记录后,Visual FoxPro 将自动修改打开的所有索引。

示例
以下示例用 append blank 命令创建一个有 10 条记录的表,记录中包含有随机值,然后显示表的最大值和最小值。
CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10  && 添加 10 条记录
   APPEND BLANK
   REPLACE cValue WITH 1 + 100 * RAND()  && 插入随机值
ENDFOR CLEAR<......

阅读全文(7329) | 评论:0

VFP命令系列教程---ALTER TABLE – SQL 命令(2006-04-30 10:09:00)

摘要:以编程方式修改表的结构。ALTER TABLE TableName1 ADD | ALTER [COLUMN] FieldName1 FieldType [( nFieldWidth [, nPrecision])] [NULL | NOT NULL] [CHECK lExpression1 [ERROR cMessageText1]] [AUTOINC [NEXTVALUE NextValue [STEP StepValue]]] [DEFAULT eExpression1] [primary key | UNIQUE [COLLATE cCollateSequence]] [REFERENCES TableName2 [TAG TagName1]] [NOCPTRANS] [NOVALIDATE] 或者ALTER TABLE TableName1 ALTER [COLUMN] FieldName2 [NULL | NOT NULL] [SET DEFAULT eExpression2] [SET CHECK lExpression2 [ERROR cMessageText2]] [ DROP DEFAULT ] [ DROP CHECK ] [ NOVALIDATE ] 或者ALTER TABLE TableName1 [DROP [COLUMN] FieldName3] [SET CHECK lExpression3 [ERRORcMessageText3]] [DROP CHECK] [ADD primary key eExpression3 [FOR lExpression4] TAG TagName2 [, COLLATE cCollateSequence]] [DROP primary key] [ADD UNIQUE eExpression4 [[FOR lExpression5] TAG TagName3 [ COLLATE cCollateSequence]]] [DROP UNIQUE TAG TagName4] [ADD foreign key [eExpression5] [FOR lExpression6] TAG TagName......

阅读全文(13385) | 评论:0