Visual foxpro学习笔记
更新时间:2024-03-27 13:29:01 阅读量: 综合文库 文档下载
Visual foxpro学习笔记
关于索引:
索引文件其实是只包含索引关键字与记录号的数据库文件。 在vf6.0中的索引文件有两种,一种是单索引文件,另一种是复合索引文件,而复合索引文件又分为结构型复合索引文件与非结构型复合索引文件。它们的区别是单索引文件是用一个关键字表达式进行索引的文件,而复合索引文件可以看作是多个单索引文件的集合,也就是说可以看成是多个单索引文件合在一起,只不过用了同一个文件名而已,好比班级集体与单个学生之间的关系,在使用时,如果复合索引中只有一个索引,它与单索引文件一样,如果超过一个以上,为了告诉VF用哪一个排序,就得用一个叫做标记的变量来引用复合索引中的单个索引。另一个结构与非结构的区别是:结构代表索引文件与表文件名相同,并随表文件的打开而打开,而非结构则不能随表的打开而打开,并且文件名与表文件名不同。
这里还有一个疑问,复合索引与多关键字索引不一样,比如先按性别排序,如果相同,再按成绩排序,这种排序不是复合索引。
建立索引的方法很多,但应注意一点,在用表设计器建立索引时,生成的文件都是复合索引,每一个索引关键字是复合索引中的一个标记。
查找:
查找有三个命令:find\\seek\\locate 索引查询命令:find与seek
Find命令只能用在有索引文件并已经打开索引文件的条件下,使用时,直接在命令后面跟上要查找的关键字,不需要加引号,如果查找的是数字,那在查找时只找与数字完全一样的记录,如果是字符,可以查找全部或从左边开始与查找字符相同的记录,如果找到就把指针定位在找到的记录上。它后面不能跟表达式。
Seek命令与find完全相同,不同地方是seek后面可以是表达式,而find不可以。
顺序查询命令:locate
命令格式:
LOCATE [<范围>] [FOR<条件>] [WHILE<条件>] CONTINUE
LOCATE命令在当前库文件中按照记录号的顺序由上而下依次查找满足指定条件的第一个记录。若查找成功,即把记录指针定位于该记录,在屏幕上显示该记录号,同时函数FOUND()返回值为.T.;否则记录指针移到指定范围的最后记录上,屏幕上显示“End of locate scope.”,函数FOUND()返回值为.F.。当命令中缺省<范围>时,默认为ALL,如果所有可选项都缺省,则指针移向文件首记录。
CONTINUE命令必须与LOCATE命令配合使用,用以查找满足条件的下一个记录。CONTINUE命令可连续使用直至查到文件结束为止。 例:按指定条件定位记录
LOCATE FOR sold = 18 && 将记录定位在第1个年龄为18的学生记录上 LOCATE FOR ssex = “男” && 将记录定位在第1个男同学记录上
查询的结果仅确定了记录指针的位置,若要了解记录的数据,还须与DISPLAY命令配合使用。
库文件的分类排序
通过索引可以实现库文件的排序显示,然而库文件索引后本身并未变化,各记录仍按原来输入的次序排列,并非数据的重新组织。利用SORT命令能在已有库文件之外产生一个新的有序库文件,从而真正实现数据的重新组织。
命令格式:
SORT TO <新文件名> ON <字段名1> [/A][/C][/D] [,<字段名2> [/A][/C][/D]……] [<范围>] [FIELDS <字段名表>] [WHILE <条件>] [FOR <条件>]
其中TO短语和ON短语的书写次序可随意交换。<范围>、FOR <条件>及WHILE <条件>等可选项用以确定当前库文件中需对哪些记录进行排序。若这些可选项在命令中缺省,则表示对全部记录排序。排序生成的新库文件默认扩展名为.DBF。新文件的结构由命令中的可选项FIELDS <字段名表>确定。若缺省此可选项,则新文件的结构与当前库文件的结构相同。若命令中出现多个字段名,表示多重排序。即先对<字段名1>排序,对于其中键值相同的记录,再按<字段名2>排序,依次类推。可选项/A与/D分别表示升序或降序排序。按升序排序时/A也可省略不写。C表示排序时不区分字母的大小写,它可以与/A或/D联合使用。
例:按年龄排序
USE student
SORT ON sold TO tt1.dbf && 按年龄从小到大排序,并将结果存入tt1.dbf中
索引和排序的比较
1.当排序的关键字只有单个字段名时,两条命令的关键字部分写法完全相同,但若排序的关键字为多个字段名时,在SORT命令中只须将这多个字段名依次列出,而在索引命令中,则要把他们组合成一个字符型表达式。例如:
SORT ON sold, sno TO tt2
INDEX ON STR(sold,2)+sno TO tt3
2.执行SORT命令后将产生一个新的排序的库文件,而索引命令只产生一个索引文件,不改变原来库文件的记录顺序。
尽管用SORT命令排序存在一些方便之处,但执行SORT命令时要求有较大的内存,另外在磁盘上也至少要有当前库文件三倍容量的自由空间,因此凡索引能解决的问题,一般都不用SORT命令解决。
隐藏VF主窗口
方法一:在一个程序文件中加入命令:_screen.visible=.f.。把这个程序文件设为主文件。但要注意,还要设一个表单为顶层表单,否则会一闪而过。
方法二:建一个名为config.fpw的文本文件,在其中加入命令:screen=off,但还是要注意,把一个表单设为顶层表单。
原理分析:screen这个变量是指主窗口,也就是表单属性中showwindows属性中的“在屏幕中”的“屏幕”,也就是说,VF默认主窗口为顶层表单,而一个程序最少得有一个顶层表单,如果把这个默认的顶层表单隐藏了,就必须设一个自编的表单。表单只有两种状态,要么做为项层表单,不受其它表单影响,要么做为“在项层表单中”,这样它随主表单(项层表单)的打开而打开,关闭而
关闭。
Config.fpw是一个VF的配置文件,在其中可加入许多命令,如:rescource=off,这样生成的EXE文件就不会在运行时产生FOXUSER.DBF和FOXUSER.FPT这两个文件。
两种方法比较的话用配置文件会更好,不会出现闪动,还有命令cancel与quit,后者会更好,也不会闪动。
Read events与clear events
在开始接受事件处理时应加入read events命令,完时加入clear events命令,如果开始不加的话,VF就为会开始处理事件程序,会一闪而过,(针对EXE文件来说,APP文件不需要),clear events命令告诉VF结束事件程序处理,但并不等于退出程序,要退出需加入cancel命令或quit命令。
项层表单上运行菜单
步骤:
1、隐藏主窗口,设置一个顶层表单。2、把菜单设为“在顶层表单中”(在常规选项中设置)。
2、在项层表单的init 事件中加入do menu.mpr with thisform,.t.。
设置相对路径
SYS()函数
返回 Visual FoxPro 系统信息。 返值类型 字符型 说明
Visual FoxPro 的 SYS()函数返回字符值,该字符值包含有用的系统信息。下表显示了每个 SYS()函数返回的信息。获得 SYS()函数的帮助 在命令窗口或程序中突出 SYS()函数,并按F1 键。
函数名称 函数功能 说明 SYS(0) 网络机器信息
SYS(1) 儒略(Julian)系统日期 SYS(2) 自午夜开始以秒计的时间 SYS(3) 合法的文件名 SYS(5) 默认驱动器 SYS(6) 当前打印设备 SYS(7) 当前格式文件
SYS(9) Visual FoxPro 系列号
SYS(10) 来自儒略(Julian)日期的字符串 SYS(11) 儒略(Julian)日期 SYS(12) 可用内存的字节数
SYS(13) 打印机状态 如果打印机没有准备就绪,SYS(13)返回 OFFLINE;如果打印机
准备就绪,SYS(13)返回 READY。如果打印机连接到一个串行通信端口,当打印机返回“Clear To Send Data”或“DataSet Ready”时,SYS(13)返回 READY。如果打印机连接到一个并行端口上,当打印机返回??“Out of”、“I/O Error”、“Time Out”、“Printer Busy”或“Printer Not Selected”时,SYS(13)返回OFFLINE。 SYS(14) 索引表达式 SYS(15) 字符转换 SYS(16) 执行程序文件名 SYS(17) 正在使用的处理器 SYS(18) 当前控件 SYS(20) 转换德文文本 SYS(21) 控制索引编号 SYS(22) 控制标志或索引名
SYS(23) Visual FoxPro 的 EMS 内存用法 SYS(24) EMS 内存限制 SYS(100) 控制台设置 SYS(101) 设备设置 SYS(102) 打印机设置 SYS(103) 对话设置
SYS(1001) Visual FoxPro 内存 SYS(1016) 用户对象的内存使用 SYS(1023) 启用诊断帮助模式 SYS(1024) 终止诊断帮助模式 SYS(1037) “页面设置”对话框 SYS(1269) 属性信息 SYS(1270) 对象位置 SYS(1271) 对象的SCX 文件 SYS(1272) 对象层次 SYS(1500) 激活系统菜单项 SYS(2000) 文件名通配符匹配 SYS(2001) SET命令状态 SYS(2002) 打开或关闭插入点 SYS(2003) 当前目录
SYS(2004) Visual FoxPro 启动目录或文件夹 SYS(2005) 当前资源文件 SYS(2006) 当前图形适配卡 SYS(2007) 检查求和值
SYS(2010) CONFIG.SYS文件设置 SYS(2011) 当前锁定状态 SYS(2012) 备注字段块大小 SYS(2013) 系统菜单名称字符串 SYS(2014) 最小化路径 SYS(2015) 唯一过程名
SYS(2016) SHOW GETS WINDOW 名称 SYS(2017) 显示启动屏幕
SYS(2018) 错误信息参数 SYS(2019) 配置文件名称和位置 SYS(2020) 默认磁盘空间 SYS(2021) 筛选表达式 SYS(2022) 磁盘簇(块)大小 SYS(2023) 临时文件驱动器 SYS(2029) 表类型
SYS(2333) 开启或关闭ActiveX 的双界面支持
设置相对路径
mlh=rat(\
lj=substr(SYS(16),1,mlh-1) set default to &lj
上面这段代码只能放在最开始的程序文件中进行初始化,注意:rat()函数是返回某一字符串在另一字符串中的位置,是从最右边开始算起;而substr()是截取某一串字符中指定的字符。Set defalut to 是设置默认路径的,但后面只能跟字符,不能跟变量,且字符中不能有空格,如有应加引号,如果是变量要用宏带换符&.如果变量中也有空格,也要加引号,如:”&lj”.
1。文本文件如何追加到备注型字段或将某段字符串追加到备注型字段 2。如何查找备注型字段中的某段字符 谢谢!
repl XXX with filetostr(\sss$XXX
1、追加是加ADDI:REPL 备注字段名 with filetostr(\2、除使用$外(包含为真,否则为假),at/rat??等函数都可以返回字符的所在位置(不包含为0)
判断一个表中的记录为空: 同时满足eof()与bof()为真。 在表单上更改OLE字段的值
方法:加一个命令按扭,通过单击,然后打开一个文件打开对话框,选择一个文件,如果不为空,就把这个文件加进来。
要用要三个函数:getfile()与appdnd general以及empty() 显示一个获取文件名的对话框,并返回所选取的文件名。 语法
GETFILE([文件扩展名] [,提示信息] [,确定按钮的标题] [,按钮状态]) 返值类型 字符型 参数描述
时,我们需要设置颜色来区分这些数据,如下代码可以在刷新或初始化表单时,设置其属性。
thisform.Grid1.SetAll(\b(0,128,0),rgb(192,192,192)),rgb(255,0,0)), rgb(255,255,255))\
如上代码可以说明,如果某记录中有一个字段type,那么根据这个字段的数据值,可以显示不同颜色,可以转换成如下公式:
iif(条件1,iif(条件2,iif(条件3,iif(条件4,iif(条件5,[...iif(条件N,颜色N,颜色n-1)...,]颜色5,颜色4),颜色3),颜色2),颜色1), 其他颜色)
3、设置多种颜色(有规律性)
这种就比较简单了,一般是在看较多记录时,多了让人眼花缭乱,所以每隔一行设置颜色,就是thisform.Grid1.SetAll(\\ 如何在GRID的单元格中显示列表框
第一步:在属性对话框中选择到GRID1某列下的TEXT1控件。 第二步:用鼠标激活表单,注意点击标题栏即可。 第三步:按DEL键,即删除了某个TEXT1控件,此时GRID1的某COLUMN下为空,其他的为TEXT1控件。
第四步:从表单工具栏上选择一个COMBO,将鼠标移到GRID1上,鼠标成+字型,放在刚才删除TEXT1的位置上,按下鼠标左键,即可! 第五步:可以到属性对话框中对此COMBO1进行属性设置! 如何在GRID里控制回车事件
在VFP里,GRID的默认控件都是TEXTBOX,形成了一个表格,但是在这个二维表里进行操作时,每次按回车都是往后一个单元格跳转,当到最后一列时,则继续跳到第一列,进而循环,使操作很不方便,特别是一些要按照DOS的操作习惯的,希望回车时,可以往下移动单元格,或在最后一列回车时回到第一列等操作。
下面说明如何在GRID里的一个列里按回车使记录连续往下跳转(或可以执行其他的操作),当跳转到最后一行时执行另一个操作。 1、对GRID所在的表单新增属性: cur_recn 记录当前记录号 cur_recc 记录最大记录号
2、在表单初始化,或给GRID以数据源时,就先计算出该表的最大的记录数,如下:
thisform.cur_recc=recc()
为了一次得到当前GRID里的表的记录总数
3、在GRID的AfterRowColChange事件里写: thisform.cur_recn=recn()
为了得到当前的GRID里的表的记录号
4、在GRID里的某列的TEXT1的KEYPRESS事件里: if nKeyCode = 13 && 当按键为回车时 if thisform.cur_recn>=thisform.cur_recc
**-- 当当前记录大于等于最大记录时,即记录已到最后一个时
thisform.command1.setfocus
**-- 使表单上的一个命令按纽聚焦,也即可以跳出该GRID,
**-- 而正常的操作很难从GRID里跳出,在这里就可以使在记录到最后时焦点跳出来 else
thisform.cur_recn=recn() && 当记录还没到尾时,则... nodefault && 不做任何响应
keyboard \模拟键盘下箭头,使记录指针下移一个 endif endif
将参数传递到表单 在运行表单时,为设置属性值或者指定操作的默认值,有时需要将参数传递到表单。
若要将参数传递到在表单设计器中创建的表单
1. 创建容纳参数的表单属性,如 ItemName 和 ItemQuantity。 2. 在表单的 Init事件代码中,包含 PARAMETERS语句:PARAMETERS cString, nNumber
3. 在表单的 Init 事件代码中,将参数分配给属性: THIS.ItemName = cString
THIS.ItemQuantity = nNumber
4. 当运行表单时,在 DO FORMlngDO_FORM 命令中包括一个 WITH 子句: DO FORM myform WITH \从表单返回值
在整个应用程序中都可以使用表单,让用户指定值。 若要从表单返回值
1. 将表单的 WindowType属性设置为 1,使表单成为有模式表单。
2. 在与表单的 UnLoad 事件相关的代码中,包含一个带返回值的RETURN 命令。
3. 在运行表单的程序或方法程序中,在 DO FORM命令中包含 TO 关键字。例如,如果 FindCust ID 是一个返回字符值的有模式表单,下面的一行代码将返回值返回到一个名为 cCustID 的变量中。 DO FORM FindCustID TO cCustID
有关详细内容,请参阅 “帮助”中的RETURN和 DO FORM主题。 疑难解答 如果出现错误,请确保将 WindowType 设置为 1(模式)。
正在阅读:
Visual foxpro学习笔记03-27
国际公法考题05-29
月光作文350字07-04
新概念3课后习题答案06-06
基坑支护方案(改)05-04
考古实习心得06-08
2015年高中语文 第四单元《廉颇蔺相如列传》教案 新人教版必修404-04
光伏发电站施工规范06-11
争执记作文600字06-27
学院党课题库03-28
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 笔记
- Visual
- foxpro
- 学习
- 水电安装项目可行性研究报告(发改立项备案+2013年最新案例范文
- 新目标人教版英语九年级11-15单元课文翻译
- 大学物理学第8章作业题
- 七年级美术新人教版上册教学计划
- JSP标签库
- 区工商联(总商会)第十二届执委会成员通讯录
- 首批重点监管的危险化工工艺安全控制要求、重点监控参数及推荐的
- 旅游经济学 试题集(含答案)
- 航海气象简答题答案(测试版)
- 2014年语文全国课标卷试题分析 - 1
- 2019年中国煤矸石市场分析报告-市场调查与未来规划分析 - 图文
- 继续教育 科学事业单位财务制度--考试试卷 100分满分 95分
- 2012年浙江省《会计基础》模拟试题(五)(六)答案2
- 2014秋季人教版九年级英语unit3 知识点详解与练习
- 一阶线性微分方程教学中的一点体会
- 专题1.2 十字相乘法(精讲深剖)-拾阶而上之初高中数学衔接读本
- 舟曲藏族文化考略 兰强 - 图文
- 九年级历史下册重要知识点汇编
- 工业企业填报手册(市) - 图文
- 普通高中地理总复习能力训练:海洋资源和海洋环境保护