本教程将从零开始,循序渐进地带您了解 VFP 的核心概念和基本操作。

第一部分:Visual FoxPro 简介
什么是 Visual FoxPro?
Visual FoxPro 是一个集数据库管理和面向对象编程于一体的开发工具,它源于 xBase 家族(dBase, FoxBase, FoxPro),并发展到了顶峰。
- 数据库管理系统: VFP 可以高效地创建和管理数据库,存储、检索和处理数据。
- 编程语言: 它拥有自己的编程语言(Xbase 语言),支持过程化和面向对象两种编程范式。
- 快速开发: VFP 的表单设计器、报表设计器等可视化工具,使得开发数据库应用程序非常迅速。
VFP 的核心优势
- 速度极快: 在处理本地数据时,其查询和索引速度非常出色。
- 易于学习: 对于初学者来说,其语法直观,上手快。
- 自包含: 数据库和应用程序可以打包成一个单独的
.exe文件,部署非常简单。 - 强大的数据操纵能力: 内置了丰富的函数和命令,对数据的处理非常灵活。
如何获取 VFP?
微软官方已经停止了对 VFP 的支持,但您仍然可以从非官方渠道获取 VFP 9.0 SP2 的最终版本,这是功能最完善的版本。请务必从可信赖的来源下载。
第二部分:VFP 基础概念
在开始编程之前,必须理解 VFP 的几个核心概念。
表
表是 VFP 中存储数据的基本单位,类似于 Excel 中的工作表,一个表由两部分组成:

- 结构: 定义了表有哪些列(字段),每个字段的名称、类型(字符型、数值型、日期型等)、宽度等。
- 记录: 表中的每一行数据,就是一条完整的记录。
示例:一个 学生表 的结构
| 字段名 | 类型 | 宽度 | 说明 |
| :--- | :--- | :--- | :--- |
| xh (学号) | Character | 10 | 字符型 |
| xm (姓名) | Character | 8 | 字符型 |
| xb (性别) | Character | 2 | 字符型 |
| csrq (出生日期) | Date | 8 | 日期型 |
| bj (班级) | Character | 6 | 字符型 |
数据库
在 VFP 中,一个数据库文件 (.dbc) 不仅仅是一个数据文件的集合,它更像是一个“容器”或“管家”,它用来管理多个相关的表,并定义表与表之间的关系(一对一、一对多)。
- 自由表: 不属于任何数据库的表,功能相对独立。
- 数据库表: 属于某个数据库的表,可以拥有长字段名、默认值、触发器、主索引、关系等高级特性。
强烈建议: 在开发应用程序时,始终使用数据库来管理你的表。
索引
索引就像一本书的目录,它不改变表中的数据,但能极大地提高查询和排序的速度。

- 主索引: 主键,值必须唯一,不允许重复。
- 候选索引: 值也必须唯一,可以有多个。
- 普通索引: 值可以重复。
- 唯一索引: 索引值唯一,但表中的记录值可以重复(较少用)。
关系
关系是数据库表之间的逻辑连接,最常见的是一对多关系,一个班级可以有多个学生,班级表 和 学生表 就是一对多关系,通过在“一”方的主键和“多”方的外键上建立索引,就可以定义这种关系。
第三部分:VFP 开发环境
启动 VFP 后,你会看到以下主要窗口:
- 命令窗口: 这是与 VFP 交互最直接的方式,你可以在这里直接输入命令并立即看到结果,初学者强烈建议使用这个窗口来练习命令。
- 菜单栏: 包含了 VFP 的所有功能,如文件、编辑、显示、格式、工具、程序、窗口、帮助等。
- 工具栏: 提供了常用功能的快捷按钮。
- 状态栏: 显示当前状态信息。
第四部分:核心命令与操作(入门必学)
我们将在命令窗口中练习这些基本操作,假设我们有一个名为 students.dbf 的自由表。
打开和关闭表
* 打开一个表 USE students * 关闭当前打开的表 USE
浏览和查看数据
* 以表格形式打开数据,这是最常用的查看方式 BROWSE * 在命令窗口中显示记录列表 LIST * 或者 DISPLAY ALL
数据操纵命令
* 1. 追加记录 (追加一条空记录,然后编辑)
APPEND BLANK
REPLACE xh WITH '2025001', xm WITH '张三', xb WITH '男', csrq WITH {^2000-01-01}, bj WITH '计科01'
* 2. 编辑记录 (打开 BROWSE 窗口进行修改)
EDIT
* 或者
BROWSE
* 3. 删除记录 (逻辑删除,记录前会打上删除标记)
DELETE FOR xh = '2025001'
* 4. 恢复记录 (取消删除标记)
RECALL FOR xh = '2025001'
* 5. 物理删除 (真正从表中删除带有标记的记录)
PACK
* 6. 清空表 (删除所有记录)
ZAP
查询和筛选
* 1. 简单查询 LIST FOR xb = '男' AND bj = '计科01' * 2. 使用 SET FILTER 设置过滤器 (后续命令只对过滤后的记录生效) SET FILTER TO xb = '女' LIST * * 此时只显示女生 SET FILTER TO * * 取消过滤器 * 3. 排序 * 生成一个按姓名排序的新表 COPY TO students_sorted SORT ON xm
索引的使用
* 假设 students 表没有索引
* 1. 打开表设计器来创建索引 (交互式操作)
USE students
MODIFY STRUCTURE * * 在弹出的窗口中,选择“索引”选项卡创建
* 2. 通过命令创建索引
INDEX ON xh TAG xh_idx PRIMARY * * 创建一个名为 xh_idx 的主索引
* 3. 使用索引进行排序和查找
SET ORDER TO xh_idx * * 将 xh_idx 设置为有效索引
LIST * * 记录将按学号排序
* 4. 快速查找 (SEEK 必须在有效索引上进行)
SEEK '2025001'
IF FOUND()
? "找到了该学生:" + xm
ELSE
? "未找到该学生"
ENDIF
第五部分:从命令到程序
手动输入命令适合简单操作,但真正的应用程序需要将命令组织成程序。
程序文件
一个 VFP 程序是一个扩展名为 .prg 的文本文件,它包含了一系列 VFP 命令。
如何创建和运行程序
-
在 VFP 中,点击
文件->新建->程序->新建文件。 -
输入以下代码:
* 文件名: hello.prg * 功能: 一个简单的 VFP 程序示例 CLEAR * * 清屏 * 定义变量 lcStudentName = "李四" lnAge = 20 * 输出信息 ? "欢迎使用 Visual FoxPro 程序设计!" ? "学生姓名:" + lcStudentName ? "学生年龄:" + ALLTRIM(STR(lnAge)) * STR()转数字为字符, ALLTRIM()去除空格 * 暂停,等待用户按键 WAIT "按任意键继续..." WINDOW
-
保存文件,
hello.prg。 -
在命令窗口中运行:
DO hello.prg
程序基本结构
- 顺序结构: 代码从上到下依次执行。
- 选择结构 (IF...ENDIF):
IF lnAge >= 18 ? "该学生已成年。" ELSE ? "该学生未成年。" ENDIF - 循环结构 (DO WHILE...ENDDO):
lnCount = 1 DO WHILE lnCount <= 5 ? "这是第 " + ALLTRIM(STR(lnCount)) + " 次循环" lnCount = lnCount + 1 ENDDO
第六部分:VFP 的强大之处——表单
表单是 VFP 应用程序的图形用户界面,你可以通过表单设计器来拖放各种控件(如文本框、按钮、标签等)来创建用户界面。
- 创建表单:
文件->新建->表单->新建文件。 - 数据环境: 右键点击表单 ->
数据环境,你可以将你的数据库表(如students)拖拽进来,这样,表单中的控件就可以直接与表字段绑定。 - 添加控件: 从表单控件工具栏中,向表单上添加一个
Textbox(文本框) 和一个CommandButton(命令按钮)。 - 编写事件代码: 双击命令按钮,进入代码编辑窗口,在
Click事件中写入代码:* 假设 Text1 绑定了 xm 字段 * 这段代码的作用是保存对姓名的修改并刷新表单 REPLACE xm WITH ThisForm.Text1.Value ThisForm.Refresh() * 刷新表单以显示新数据 MESSAGEBOX("姓名已保存!") - 运行表单: 在命令窗口中运行表单文件(
.scx):DO FORM myform.scx
通过表单,你就可以创建出功能完整、界面友好的数据库应用程序了。
第七部分:学习资源与进阶
官方文档 (历史资料)
虽然已停止更新,但 VFP 9.0 的官方文档 (MSDN) 依然是最好的参考资料,你可以搜索 "Visual FoxPro 9.0 Documentation" 找到它。
社区和支持
- Universal Thread (UT): 曾经最活跃的 VFP 国际社区,现在仍有大量历史帖子和专家。
- CSDN / 博客园: 中文世界有大量 VFP 开发者分享的教程、经验和代码片段,搜索 "Visual FoxPro 教程" 或 "VFP 入门" 能找到很多资料。
- VFP 中文论坛: 一些小而精的中文论坛,聚集了核心的 VFP 爱好者。
进阶学习方向
- 面向对象编程: 深入理解类、对象、属性、事件和方法,这是 VFP 高级开发的精髓。
- 报表设计: 学习使用
报表设计器创建复杂格式的打印报表。 - 菜单设计: 创建自定义菜单,完善应用程序的导航结构。
- API 调用: 学习如何调用 Windows 的 DLL 函数,扩展 VFP 的功能。
- 客户端/服务器开发: 了解如何将 VFP 应用程序与后端的 SQL Server 等大型数据库连接。
Visual FoxPro 是一门非常有价值的技术,虽然它古老,但其设计思想(如 Rushmore 优化技术)和面向对象的实现方式至今仍有借鉴意义,对于初学者,它是一个理解数据库和编程基础的好工具;对于有经验的开发者,它是维护和优化遗留系统的利器。
希望这份教程能帮助你顺利入门 VFP 的世界!祝你学习愉快!
