Visual FoxPro (VFP) 程序设计教程
前言:为什么学习 VFP?
Visual FoxPro 是由 Microsoft 开发的一款功能强大的关系型数据库管理系统和第四代编程语言,尽管它已经不再是微软的主流产品,并且在 2025 年停止了官方支持,但在以下领域仍有其独特的价值:

- 维护和升级遗留系统:许多企业(尤其是在中国、欧洲和拉美的特定行业)的核心业务系统仍然基于 VFP 构建,学习 VFP 是维护这些系统、修复 Bug 和进行功能扩展的必备技能。
- 快速原型开发:VFP 拥有极高的开发效率,其“所见即所得”的表单设计器和集成的数据库环境,使得快速开发中小型桌面应用程序非常便捷。
- 学习和理解数据库原理:VFP 是学习关系型数据库理论、SQL 语言和事件驱动编程思想的优秀工具,概念清晰,易于上手。
第一部分:基础入门
第一章:Visual FoxPro 概述
- 什么是 VFP?
- 一个集成的、面向对象的、事件驱动的数据库应用开发环境。
- 它既是数据库管理系统,也是一个编程语言。
- VFP 的核心特点
- 强大的数据引擎:处理速度快,对 xBase 语言家族(如 dBase, FoxPro)有良好的兼容性。
- 可视化开发工具:包含表单设计器、报表设计器、菜单设计器等,无需编写大量代码即可构建用户界面。
- 事件驱动编程:程序的执行由用户操作(如点击按钮)或系统事件(如计时器)触发。
- 集成的语言和环境:语言、调试器、项目管理器等无缝集成。
- 安装与启动
- 版本:推荐使用 VFP 9.0 SP2,这是功能最完善、最稳定的版本。
- 下载:可以从 MSDN 或第三方可信网站获取安装包。
- 启动:安装后,通过开始菜单或命令行
vfp9.exe启动。
第二章:VFP 语言基础
- 常量与变量
- 常量:在程序运行过程中保持不变的值,如:
123(数值),"Hello"(字符),.T.(逻辑真),{^2025-10-27}(日期)。 - 变量:在程序运行过程中可以改变的值,使用
STORE或 赋值。STORE 10 TO nAge, nCount lcName = "张三"
- 常量:在程序运行过程中保持不变的值,如:
- 数据类型
- Character (C): 字符串,如
"你好"。 - Numeric (N): 数值,如
14,100。 - Logical (L): 逻辑值,
.T.(真),.F.(假),.NULL.(空)。 - Date (D): 日期,如
{^2025-10-27}。 - DateTime (T): 日期时间,如
{^2025-10-27 10:30:00}。 - Currency (Y): 货币类型。
- Double (B): 双精度浮点数。
- Character (C): 字符串,如
- 运算符
- 算术运算符:, , , ,
^(或 )。 - 关系运算符:,
<>(或 ),>,<,>=,<=, (包含于), (精确等于)。 - 逻辑运算符:
AND(与),OR(或),NOT(或 ) (非)。
- 算术运算符:, , , ,
- 常用函数
- 数值函数:
ABS(),INT(),ROUND(),SQRT()。 - 字符函数:
LEN(),SUBSTR(),LEFT(),RIGHT(),ALLTRIM()(非常重要,用于去除字符串首尾空格),IIF()(条件函数)。 - 日期函数:
DATE(),TIME(),DATETIME(),YEAR(),MONTH(),DAY(),TTOC()(日期转字符),CTOT()(字符转日期时间)。 - 类型转换函数:
TTOC(),CTOT(),VAL()(字符转数值),STR()(数值转字符),DTOC()(日期转字符),CTOD()(字符转日期)。
- 数值函数:
第二部分:数据库与表操作
第三章:自由表与数据库
- 自由表
- 创建:
CREATE TABLE 学生 (学号 C(10), 姓名 C(8), 性别 C(2), 出生日期 D) - 修改结构:
MODIFY STRUCTURE - 打开表:
USE 学生 - 关闭表:
USE
- 创建:
- 数据库
- 数据库是表的集合,可以包含表之间的关系、视图和关系。
- 创建数据库:
CREATE DATABASE 学生管理 - 打开数据库:
OPEN DATABASE 学生管理 - 添加自由表到数据库:
ADD TABLE 学生 - 在数据库中直接创建表:
CREATE 课程(此时表自动属于当前打开的数据库)
- 表的索引
- 索引是提高查询和排序速度的关键。
- 主索引:不允许有重复值,一个表只能有一个。
- 候选索引:不允许有重复值,一个表可以有多个。
- 普通索引:允许有重复值。
- 唯一索引:允许有重复值,但在索引中只保留第一个。
- 创建索引:
INDEX ON 学号 TAG 学号 PRIMARY(创建主索引) - 设置主控索引:
SET ORDER TO 学号
第四章:数据操作
- 数据浏览与修改
- 浏览数据:
BROWSE(这是最常用的命令,会打开一个可编辑的窗口) - 追加记录:
APPEND BLANK(追加空记录),APPEND FROM ...(从其他文件追加) - 编辑记录:
REPLACE 学号 WITH "2025001"(替换当前记录)
- 浏览数据:
- 记录指针
GO TOP/GO BOTTOM:指针移动到首/尾记录。SKIP n:指针向下/上移动 n 条记录。? RECNO():显示当前记录号。
- SQL 查询语言
VFP 对 SQL 有很好的支持,这是数据查询的核心。
- 基本查询:
SELECT * FROM 学生 WHERE 性别 = "男" ORDER BY 出生日期 DESC
- 多表连接查询:
SELECT 学生.姓名, 课程.课程名, 成绩.分数 ; FROM 学生!学生 ; INNER JOIN 学生!成绩 ON 学生.学号 = 成绩.学号 ; INNER JOIN 学生!课程 ON 成绩.课程号 = 课程.课程号 ; WHERE 课程.课程名 = "数据库"
- 其他 SQL 语句:
INSERT INTO ...,UPDATE ... SET ...,DELETE(逻辑删除),PACK(物理删除)。
- 基本查询:
第三部分:面向对象编程与表单设计
第五章:面向对象基础
- 类 与对象
- 类:创建对象的模板,定义了对象的属性、事件和方法,VFP 提供了许多基类,如
Form(表单),CommandButton(命令按钮),TextBox(文本框)。 - 对象:类的实例,你可以创建一个表单类,然后基于它创建多个具体的表单对象。
- 类:创建对象的模板,定义了对象的属性、事件和方法,VFP 提供了许多基类,如
- 对象的三大要素
- 属性:对象的特征,如
Caption(标题),Value(值),Visible(是否可见)。ThisForm.Text1.Value = "请输入姓名" ThisForm.Command1.Caption = "确定"
- 事件:对象能够识别的动作,如
Click(单击),Init(初始化),Load(加载)。 - 方法:对象能够执行的操作,如
Refresh()(刷新),Release()(释放),Show()(显示)。
- 属性:对象的特征,如
第六章:表单设计器
- 创建表单

