VFP使用技巧(精选5篇)
VFP使用技巧 第1篇
1 避免VFP中出现Cannot QuitVisualFox-Pro
出现“Cannot Quit Visual FoxPro”的原因有两种情况, 一是在执行了read event后, read event事件处于活动状态, 此时, 试图使用系统窗口的关闭按钮退出Visual FoxPro (或Visual FoxPro编写的应用, 以下同) , 则会出现“Cannot Quit Visual FoxPro”。二是在Visual FoxPro6.0中, 如果在还有活动表单的情况下, 无论使用系统窗口的关闭按钮, 还是调用Quit, 都会出现“Cannot Quit Visual FoxPro”。这时, 要正常退出, 必须先关闭活动的表单。要避免出现“Cannot Quit Visual FoxPro”, 在欲退出之前, 要先执行clear event。在Visual FoxPro5.0中还要先关闭活动的表单。
在Visual FoxPro 6.0中, 程序的开头可以加上类似以下的程序
这样, 在欲退出Visual FoxPro时, 程序先自动清除read event事件, 关闭所有的表单, 然后调用Quit正常退出。
2 改变VFP可执行文件要的运行库位置和文件名
我们知道, 编译成exe的VFP程序要加载两个运行时库, 它们的缺省名称为VFP9r.dll和VFP9rchs.dll。VFP在正常情况下查找和加载这两个dll的方式是这样的:
2.1 首先从注册表中 (位置:
HKEY_CLA SSES_ROOTVisualFoxProRuntime.9ShellOpe nCommand) 读取运行库的文件路径和名称定义, 通常是C:Program FilesCommon FilesMi crosoft SharedVFPVFP9r.dll, 然后加载它。
2.2 加载成功的VFP9r.
dll根据Windows确定要使用的语言资源文件VFP9r???.dll, 对于简体中文, 使用VFP9rchs.dll
假定我们将这两个运行库文件更名为aaa.dll和aaa.chs.dll, 并放到c:windowssystem32下的话, 如何让我们的exe仍能正常运行, 又不影响其他VFP程序正常运行呢?
首先, 要使我们的exe不使用HKCRVi sualFoxProRuntime.9ShellOpenCommand中的运行库缺省定义。先在注册表中增加一项我们要使用的运行库定义:
打开记事本, 贴入上面的内容并保存为my.reg, 然后双击这个文件导入到注册表中。下面修改exe让它来读取这个设置。
使用任何16进制编辑器 (例如:UltraEdit) , 在exe中查找VisualFoxProRuntime.9, 找到后将其改为我们刚定义的MyRuntime (注意修改后的串不要超过原串长度, 若长度小于原串的话, 注意尾部要填一个00)
保存修改后的exe文件, 现在我们的exe运行时将加载这个aaa.dll而不会再找VFP9r.dll了。
接下来我们要让aaa.dll去找aaa.chs.dll而不找原来的VFP9rchs.dll, 仍用16进制编辑器, 这次打开aaa.dll, 查找VisualFoxproRuntime.9Resources, 看到紧接着的VFP9R%s了吗?就是它, 将它改为aaa.%s, 由于我们的aaa.%s比VFP9r%s少一个字符, 所以后面也要填一个00。保存好修改后的aaa.dll。现在这个exe将加载c:windowssystem32的运行库aaa.dll和aaa.chs.dll。
3 恢复丢失了的FPT文件
由于误操作, 将自由表的备注文件删除, 致使自由表无法打开。遇到这种情况我们可采用下述方法解决:
创建一个新的自由表, 且该自由表只含一个字段, 其类型为备注型。关闭该自由表, 将其扩展名为FPT的备注文件复制给误删除的自由表的备注文件, 或将该备注文件改名为误删除的自由表的备注文件即可。
运行下面的程序同样也可以恢复丢失了的FPT文件:
accept′请输入丢失了.FPT文件的自由表名称 (不带扩展名) :′to namef
用VFP低级文件函数创建一个空的FPT文件, 原自由表即可打开。程序清单如下:
accept′请输入丢失了.FPT文件的自由表名称 (不带扩展名) :′to namef
上述方法只是为丢失了FPT文件的自由表建立了一个新的FPT文件, 原FPT文件中的内容已经丢失, 无法恢复。在实际操作中若遇到这种情况, 最好是恢复原来的FPT文件, 若原FPT文件无法恢复时再采用上述方法。
综上所述, 只是个人在使用VFP软件过程中的一点学习心得, 敬请VFP广大爱好者学习者批评指正。
参考文献
[1]林波.《数据库应用基础Visual FoxPro6.0》北京邮电大学出版社
[2]王晟王松刘强.《Visual FoxPro数据库开发经典案例解析》清华大学出版社
VFP编程:VFP报表输出 第2篇
报表文件按数据源中记录出现的顺序处理记录,如果直接使用表内的数据,数据就不会在布局内正确地按组排序。因此,在打印一个报表文件之前,应确认数据源中已对数据进行了正确排序。一般,建议报表的数据源使用视图或查询文件。
报表输出时,应该先进行页面设置,通过预览报表调整版面效果,最后再打印输出到纸介质上。
1.页面设置
规划报表时,通常会考虑页面的外观。例如页边距,纸张类型和所需的布局。在“页面设置”对话框中可以设置报表的左边距并为多列报表设置列宽和列间距,设置纸张大小和方向,步骤如下:
(1)从“文件”菜单中,选择“页面设置”,出现“页面设置”对话框。
(2)在“左页边距”框中输入一个边距数值。页面布局将按新的页边距显示。
(3)若要选择纸张大小,选择“打印设置”。
(4)在“打印设置”对话框中,从“大小”列表中选定纸张大小。
(5)若要选择纸张方向,从“方向”区选择一种方向,再选择“确定”。
(6)在“页面设置”对话框中,选择“确定”。
在更改了纸张的大小和方向设置时,需要注意该纸张大小是否可以设置所选的方向。例如,如果纸张定为信封,则方向必须设置为横向。
2.预览报表
通过预览报表,不用打印就能看到它的页面外观。例如,可以检查数据列的对齐和间隔,或者查看报表是否返回所需的数据。有两个选择:显示整个页面或者缩小到一部分页面。
“预览”窗口有它自己的工具栏,使用其中的按钮可以逐页地进行预览,
步骤如下:
(1)从“显示”菜单中选择“预览”命令,或在“报表设计器”中单击鼠标右键并从弹出的快捷菜单中选择“预览”命令,也可以直接单击“常用”工具栏中的“打印预览”按钮。
(2)在打印预览工具栏中,选择“上一页”或“前一页”来切换页面。
(3)若要更改报表图象的大小,选择“缩放”列表。
(4)若要打印报表,选择“打印报表”按钮。
(5)若想要返回到设计状态,选择“关闭预览”按钮。
注意:如果得到如下提示“是否将所做更改保存到文件?”那么,在选定关闭“预览”窗口时一定还选取了关闭布局文件。此时可以选定“取消”按钮回到“预览”,或者选定“保存”按钮保存所做更改并关闭文件。如果选定了“否”,将不保存对布局所做的任何更改。
3.打印输出
使用报表设计器创建的报表布局文件只是一个外壳,它把要打印的数据组织成令人满意的格式。如果使用预览报表,在屏幕上获得最终符合设计要求的页面后,就要打印出来。步骤如下:
(1)从“文件”菜单中选择“打印”命令,或在报表设计器中单击鼠标右键并从弹出的快捷菜单中选择“打印”命令,也可以直接单击“常用”工具栏中的“运行”按钮,出现“打印”对话框。
(2)在“打印”对话框中,设置合适的打印机、打印范围、打印份数等项目,通过“属性”设置打印纸张的尺寸、打印精度等。
(3)选择“确定”按钮。Visual FoxPro就会把报表发送到打印机上。
如果未设置数据环境,则会显示“打开”对话框,并在其中列出一些表,从中可以选定要进行操作的一个表。
VFP使用技巧 第3篇
用结构化程序设计一个功能复杂的Visual FoxPro应用系统时, 通常采用自顶向下, 逐层分解各个击破的方法。即将一个复杂系统分解成许多功能模块, 再将这些功能模块分解成更小的功能单一、相对独立的程序模块。也称之为子程序或过程。在调用子程序或过程时, 可以通过参数向子程序或过程中传递必要的信息, 子程序或过程运行完后, 要把结果传递回来。这就是调用子程序或过程之间的数据传递。本文重点描述正确的几种数据传递方法以及巧用参数传递方法。
2、几种数据传递的方法
主程序与子程序或过程之间的数据传递可以通过如下3种方法实现:
2.1、利用内存变量作用域传递数据
利用内存变量不同的作用域, 可以实现程序之间数据的互相传递。Visual FoxPro中内存变量作用域有全局和局部二种。
(1) 全局变量 (公用变量) 。
定义格式:PUBLIC<内存变量名表>[1]
作用域:Visual Fox Pro中的所有程序。
【例1】用全局变量属性实现数据传递的方式, 编程计算M!。
说明:过程程序JC完成计算变量X值的阶乘, 通过全局变量T把结果带回主程序。
2.1.2局部变量。
在程序的一定范围内起作用的变量称为局部变量, 在程序运行结束后, 局部变量被释放。局部变量有三种属性:即自然属性、私有属性和本地属性。
(1) 通过赋值、计算等语句得到的变量都是自然属性的。
定义格式:STORE/=、DIMENSION、DECLARE、IN-PUT、SUM等。
作用域:定义该变量的程序及其调用的下属子程序。
(2) 用PRIVATE语句定义的变量是私有属性的。
定义格式:PRIVATE<内存变量列表>
作用域:定义该变量的程序及其调用的下属子程序。
特殊作用:可屏蔽 (隐藏) 上级 (主) 程序中与当前程序同名的变量, 即对当前程序中变量的操作, 不影响上级 (主) 程序中与当前程序同名的变量值。
(3) 用LOCAL语句定义的变量是本地属性的。
定义格式:LOCAL<内存变量列表>。
作用域:定义该变量的程序本身。
特殊作用:可屏蔽上级 (主) 程序中与当前程序同名的变量, 即对当前程序中变量的操作, 不影响上级 (主) 程序中与当前程序同名的变量值。同时也不受下属子程序中同名内存变量值的影响。
【例2】通过运行一个主程序带二个过程的程序, 可以观察其中变量的作用区域。运行结果如图1所示
说明:运行结果中, 第1列中的“P2:”、“P3:”是程序中标注的程序段标记;第2列中的“Priv”、“Pub”、“本地”是系统标注的内存变量的属性;第3列中的“C“、“D”、“N”等是系统标注的变量的数据类型;第4列是变量的当前值, 行尾的“p2”、“p3”、“PROG2”是内存变量所属的程序段。过程P2中定义的变量A是本地属性的局部变量, 它只能在过程P2里使用, 过程P3中的变量A是自然属性的局部变量, 即在主程序PROG2里定义的变量A。过程P2中定义的变量C是私有变量, 它只能在过程P2, 过程P3里使用, 不会在主程序PROG2中出现。
2.2 利用带参数调用命令DO…WITH传递数据[2]
传递参数的命令格式:
DO<文件名>WITH<实际参数列表>
功能:将有实际数据的多个参数传递给被调用的程序。
接收参数命令格式:PARAMETERS<形式参数列表>
功能:用多个没有实际值的形式参数接收DO命令所带的多个实际参数。形式参数的个数必须与实际参数的个数一致。
参数传递规则 (数据通过两种方式传递, 即传地址和传值。其中传地址习惯上称为“引用”) :
(1) 传递参数的的DO命令可以出现在调用程序 (主程序) 中的任何位置, 而接收参数PARAMETERS命令必须是被调用程序 (子程序) 中的第一行可执行语句。
(2) 当WITH后的<实际参数列表>中是内存变量时, 其值传给PARAMETERS中对应参数后, 在子程序中这些实际参数被隐含起来, 但其值会随着对应参数值的变化而变化, 这种传递的方式称之为引用。回到主程序后, <实际参数列表>中的内存变量恢复, 子程序的结果被带回来。
(3) 当WITH后的<实际参数列表>中是内存变量表达式或单个内存变量用圆括号括起来时, 则值仅传给PARAMETERS中对应的形式参数, 它们在子程序中不被隐含, 这种传递方式称之为传值。
【例3】采用传值方式传递参数, 程序如下。
说明:数据传递的方式为传值, 主程序中变量A, B的值没有发生变化。
【例4】采用引用方式传递参数, 只需修改【例3】程序中的一条语句。
DO P2 WITH A+100, (B) 修改为DO P2 WITH A, B&&调用过程P2并传址。
说明:数据传递的方式为传址, 主程序中变量A, B的值发生了变化。
2.3 自定义函数的数据传递[3]
自定义函数可以像过程一样放在过程文件中, 它在过程文件中的存在形式为:
说明:PARAMETERS<形参列表>命令用于放函数的自变量, RETURN<表达式>用于输出函数的结果。程序 (.PRG) 的文件名就是过程文件的名称。自定义函数的参数传送一般采用传值的方式, 通过函数名括号里的实际参数把数据传递给自定义函数。
【例5】编写一个自定义函数, 自动返回给定字符串的倒置字符串, 如:字符串“ABCD”, 倒置后的字符串为“DCBA”。
3、数据传递的灵活应用
(1) 利用带参数调用命令DO…WITH传递数据, 传递数据的方式为传址传递, 既利用实际参数进行主程序与子程序之间的数据传递。
【例6】用带参数调用命令DO…WITH实现数据传递的方法, 编程计算M!。
(2) 在调用自定义函数时利用参数的引用方式将结果带出来。[4]
【例7】编写自定义函数, 判断一元二次方程式ax2+bx+c=0是否有实数根。如果有实数根, 函数返回值为真并通过参数的引用方式将实数根带出来。
说明:1) 像系统函数一样, 自定义函数的输出结果只有一个值。本题的输出结果是逻辑值.T.或.F.。但自定义函数的参数有三个, 通过在函数参数前加@的方式, 把求解的实数根带出来。
2) 调用自定义函数ABC (@X, @Y, Z) , 将X传给A, Y传给B, Z传给C, 但X、Y是引用方式, 当A、B发生变化, 会引起X、Y的变化, 能将结果带回主程序。
4、结束语
综上所述, 对数据传递的方法进行有效的分类并细化, 在教学实践中被证明是切实有效的教学方法。它能化解教学难点, 更有助学生的理解和运用。
摘要:在VFP程序设计课堂教学中, 数据传递是教学的难点。主要原因是数据传递方法多样, 而且容易混淆。本文对数据传递的方法进行了分类, 并通过简单的实例阐述了灵活应用数据传递的方法。
关键词:VFP语言,数据传递,教学实践
参考文献
[1]Microsoft Corporation.Visual Foxpro6.0中文版程序员手册。北京希望电子出版社。2001
[2]甄彤, 陈卫东。Visual Basic程序设计教程。机械工业出版社。2004
[3]谢赝白。Visual Foxpro9.0程序设计教程。西安交通大学出版社。2007
Vfp学习感想 第4篇
10经济学2班10455452121孙进 这一学期的计算机学习中,我们主要学习了vfp,在这近一学期的学习中,我们学到了很多知识。
所谓vfp,即Visual FoxPro,是Microsoft公司从Fox公司的FoxBase数据库软件经过数次改良,并且移植到Windows之后,得来的应用程序开发软件,主要用于开发数据管理与运算等方面的软件。故又称为数据库管理。
数据库是一种新型的信息存储方法,它是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
数据库是“按照数据结构来组织、存储和管理数据的仓库”。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。例如,企业或事业单位的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个“数据仓库”我们就可以根据需要随时查询某职工的基本情
况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种“数据库”,使其可以利用计算机实现财务、仓库、生产的自动化管理。
由此可见,数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。它(1)实现数据共享(2)减少数据的冗余度,同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。(3)数据的独立性,包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。(4)数据实现集中控制。文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。(5)数据一致性和可维护性,以确保数据的安全性和可靠性。主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;③并发控制:使在同一时间周期
内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;④故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。(6)故障恢复。由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。;
如此看来,数据库的优点也就一目了然了,最明显的便是它的存储性和便捷性。例如学生档案吧,也许当一个老师各自负责各班的学生档案时,幸许觉得自己还能hold住,那么当他负责的是一个年级,乃至是一个学校时,是否就会觉得相当的吃力了呢?诸如此类,企业〃政府等都会面临这些强大的数据管理问题。此时,vfp的优势就显现了出来,此时使用vfp软件,绝对是极大地改善了传统的文本数据管理造成的极大的人力资源浪费,且极大地降低了犯错的可能性,真正实现了便捷高效。纵然是面对一个上百万人的庞大的数据库,只需要简简单单地几秒钟,鼠标轻轻一点,想要的数据便可以如愿以偿地显现出现,而不用去面对那浩如烟海的文本,直看得人眼花缭乱甚至是不吃不喝几夜不眠幸许才能找到想要的。。此外,你可以想象一下,成千上万的纸质档案是怎样一种“惨烈”的景象,而数据库管理技术却只需要一台小小的电脑便能hold的,纵然再多数据,也敌不过几
个小小的存储条,极大地方便了存储。用更fashion点的话说,节约的那么多文本纸质数据,可以少砍多少的树啊,可见vfp数据管理系统还是个多么环保的产物啊!
VFP使用技巧 第5篇
在VFP6.0程序设计软件的应用中, 经常会使用到记录的相对定位命令, 即Skip命令, 而作为初学VFP6.0程序设计软件的同志而言, 常常不知道Skip命令的使用, 笔者根据多年应用VFP6.0程序设计软件的经验谈一谈相对定位命令的使用。
2 相对命令的使用
相对定位命令, 即Skip命令, 相对定位的含义是相对于当前记录而言, 向前或后向后移动记录指针, 该命令的格式是:Skip数值表达式, 当数值表达式的值为正数时, 则向后移动记录指针, 当数值表达式的值为负数时, 则向前移动记录指针, 下面分别人以下五个方面进行阐述。
2.1 数值表达式的值大于0, 相对于当前记录向后移动记录指针 (如表1) 。请看下列程序代码:
2.2 数值表达式的值等于0, 不会移动记录指针 (如表1) 。请看下列程序代码:
Use cj Skip 0&&不会移动记录指针?Recno () &&测试当前记录号为1号
2.3 数值表达式的值小于0, 不会移动记录指针 (如表2) 。请看下列程序代码:
2.4 数值表达式的值是一个带有小数的实数, 则VFP6.0系统会数据表达式的值自动取整 (如表1) 。请看下列程序代码:
2.5 数值表达式省略, 等价于Skip 1 (如表1)
2.6 数值表达式的值大于总记录数, 此时记录指针将移动到表尾 (如表1) 。例如:
综上所述, Skip命令的参照对象是当前记录, 只要确定当前记录的位置, 就能够确定Skip命令执行后记录指针的位置。在实际编程应用中, 我们清楚程序执行后当前记录在何处。
3 结束语
以上是笔者在使用VFP6.0编程中用到指针定位命令的一点浅显经验, 只要正确理解指针定位命令的功能, 理解命令中各个参数的作用, 就能够在VFP6.0编程中灵活应用, 同时也可以给你学习其它类似的命令提供参考。
参考文献