Visualfoxpro知识学习记录文本.docx

上传人:b****5 文档编号:10175383 上传时间:2023-02-09 格式:DOCX 页数:15 大小:25.66KB
下载 相关 举报
Visualfoxpro知识学习记录文本.docx_第1页
第1页 / 共15页
Visualfoxpro知识学习记录文本.docx_第2页
第2页 / 共15页
Visualfoxpro知识学习记录文本.docx_第3页
第3页 / 共15页
Visualfoxpro知识学习记录文本.docx_第4页
第4页 / 共15页
Visualfoxpro知识学习记录文本.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Visualfoxpro知识学习记录文本.docx

《Visualfoxpro知识学习记录文本.docx》由会员分享,可在线阅读,更多相关《Visualfoxpro知识学习记录文本.docx(15页珍藏版)》请在冰豆网上搜索。

Visualfoxpro知识学习记录文本.docx

Visualfoxpro知识学习记录文本

Visualfoxpro学习笔记

关于索引:

索引文件其实是只包含索引关键字与记录号的数据库文件。

在vf6.0中的索引文件有两种,一种是单索引文件,另一种是复合索引文件,而复合索引文件又分为结构型复合索引文件与非结构型复合索引文件。

它们的区别是单索引文件是用一个关键字表达式进行索引的文件,而复合索引文件可以看作是多个单索引文件的集合,也就是说可以看成是多个单索引文件合在一起,只不过用了同一个文件名而已,好比班级集体与单个学生之间的关系,在使用时,如果复合索引中只有一个索引,它与单索引文件一样,如果超过一个以上,为了告诉VF用哪一个排序,就得用一个叫做标记的变量来引用复合索引中的单个索引。

另一个结构与非结构的区别是:

结构代表索引文件与表文件名相同,并随表文件的打开而打开,而非结构则不能随表的打开而打开,并且文件名与表文件名不同。

这里还有一个疑问,复合索引与多关键字索引不一样,比如先按性别排序,如果相同,再按成绩排序,这种排序不是复合索引。

建立索引的方法很多,但应注意一点,在用表设计器建立索引时,生成的文件都是复合索引,每一个索引关键字是复合索引中的一个标记。

查找:

查找有三个命令:

find\seek\locate

索引查询命令:

find与seek

Find命令只能用在有索引文件并已经打开索引文件的条件下,使用时,直接在命令后面跟上要查找的关键字,不需要加引号,如果查找的是数字,那在查找时只找与数字完全一样的记录,如果是字符,可以查找全部或从左边开始与查找字符相同的记录,如果找到就把指针定位在找到的记录上。

它后面不能跟表达式。

Seek命令与find完全相同,不同地方是seek后面可以是表达式,而find不可以。

顺序查询命令:

locate

命令格式:

LOCATE[<范围>][FOR<条件>][WHILE<条件>]

CONTINUE

LOCATE命令在当前库文件中按照记录号的顺序由上而下依次查找满足指定条件的第一个记录。

若查找成功,即把记录指针定位于该记录,在屏幕上显示该记录号,同时函数FOUND()返回值为.T.;否则记录指针移到指定范围的最后记录上,屏幕上显示“Endoflocatescope.”,函数FOUND()返回值为.F.。

当命令中缺省<范围>时,默认为ALL,如果所有可选项都缺省,则指针移向文件首记录。

CONTINUE命令必须与LOCATE命令配合使用,用以查找满足条件的下一个记录。

CONTINUE命令可连续使用直至查到文件结束为止。

例:

按指定条件定位记录

LOCATEFORsold=18&&将记录定位在第1个年龄为18的学生记录上

LOCATEFORssex=“男”&&将记录定位在第1个男同学记录上

查询的结果仅确定了记录指针的位置,若要了解记录的数据,还须与DISPLAY命令配合使用。

库文件的分类排序

通过索引可以实现库文件的排序显示,然而库文件索引后本身并未变化,各记录仍按原来输入的次序排列,并非数据的重新组织。

利用SORT命令能在已有库文件之外产生一个新的有序库文件,从而真正实现数据的重新组织。

命令格式:

SORTTO<新文件名>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联合使用。

例:

按年龄排序

USEstudent

SORTONsoldTOtt1.dbf&&按年龄从小到大排序,并将结果存入tt1.dbf中

索引和排序的比较

1.当排序的关键字只有单个字段名时,两条命令的关键字部分写法完全相同,但若排序的关键字为多个字段名时,在SORT命令中只须将这多个字段名依次列出,而在索引命令中,则要把他们组合成一个字符型表达式。

例如:

SORTONsold,snoTOtt2

INDEXONSTR(sold,2)+snoTOtt3

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,后者会更好,也不会闪动。

Readevents与clearevents

在开始接受事件处理时应加入readevents命令,完时加入clearevents命令,如果开始不加的话,VF就为会开始处理事件程序,会一闪而过,(针对EXE文件来说,APP文件不需要),clearevents命令告诉VF结束事件程序处理,但并不等于退出程序,要退出需加入cancel命令或quit命令。

项层表单上运行菜单

步骤:

1、隐藏主窗口,设置一个顶层表单。

2、把菜单设为“在顶层表单中”(在常规选项中设置)。

2、在项层表单的init事件中加入domenu.mprwiththisform,.t.。

设置相对路径

SYS()函数

 

返回VisualFoxPro系统信息。

返值类型字符型

说明

VisualFoxPro的SYS()函数返回字符值,该字符值包含有用的系统信息。

下表显示了每个SYS()函数返回的信息。

获得SYS()函数的帮助在命令窗口或程序中突出SYS()函数,并按F1键。

函数名称函数功能说明

SYS(0)网络机器信息

SYS

(1)儒略(Julian)系统日期

SYS

(2)自午夜开始以秒计的时间

SYS(3)合法的文件名

SYS(5)默认驱动器

SYS(6)当前打印设备

SYS(7)当前格式文件

SYS(9)VisualFoxPro系列号

SYS(10)来自儒略(Julian)日期的字符串

SYS(11)儒略(Julian)日期

SYS(12)可用内存的字节数

SYS(13)打印机状态如果打印机没有准备就绪,SYS(13)返回OFFLINE;如果打印机准备就绪,SYS(13)返回READY。

如果打印机连接到一个串行通信端口,当打印机返回“ClearToSendData”或“DataSetReady”时,SYS(13)返回READY。

如果打印机连接到一个并行端口上,当打印机返回“Outof”、“I/OError”、“TimeOut”、“PrinterBusy”或“PrinterNotSelected”时,SYS(13)返回OFFLINE。

SYS(14)索引表达式

SYS(15)字符转换

SYS(16)执行程序文件名

SYS(17)正在使用的处理器

SYS(18)当前控件

SYS(20)转换德文文本

SYS(21)控制索引编号

SYS(22)控制标志或索引名

SYS(23)VisualFoxPro的EMS内存用法

SYS(24)EMS内存限制

SYS(100)控制台设置

SYS(101)设备设置

SYS(102)打印机设置

SYS(103)对话设置

SYS(1001)VisualFoxPro内存

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)VisualFoxPro启动目录或文件夹

SYS(2005)当前资源文件

SYS(2006)当前图形适配卡

SYS(2007)检查求和值

SYS(2010)CONFIG.SYS文件设置

SYS(2011)当前锁定状态

SYS(2012)备注字段块大小

SYS(2013)系统菜单名称字符串

SYS(2014)最小化路径

SYS(2015)唯一过程名

SYS(2016)SHOWGETSWINDOW名称

SYS(2017)显示启动屏幕

SYS(2018)错误信息参数

SYS(2019)配置文件名称和位置

SYS(2020)默认磁盘空间

SYS(2021)筛选表达式

SYS(2022)磁盘簇(块)大小

SYS(2023)临时文件驱动器

SYS(2029)表类型

SYS(2333)开启或关闭ActiveX的双界面支持

设置相对路径

mlh=rat("\",sys(16))

lj=substr(SYS(16),1,mlh-1)

setdefaultto&lj

上面这段代码只能放在最开始的程序文件中进行初始化,注意:

rat()函数是返回某一字符串在另一字符串中的位置,是从最右边开始算起;而substr()是截取某一串字符中指定的字符。

Setdefalutto是设置默认路径的,但后面只能跟字符,不能跟变量,且字符中不能有空格,如有应加引号,如果是变量要用宏带换符&.如果变量中也有空格,也要加引号,如:

”&lj”.

1。

文本文件如何追加到备注型字段或将某段字符串追加到备注型字段

2。

如何查找备注型字段中的某段字符

谢谢!

replXXXwithfiletostr("*.txt")

sss$XXX

1、追加是加ADDI:

REPL备注字段名withfiletostr("*.txt")ADDI

2、除使用$外(包含为真,否则为假),at/rat……等函数都可以返回字符的所在位置(不包含为0)

判断一个表中的记录为空:

同时满足eof()与bof()为真。

在表单上更改OLE字段的值

方法:

加一个命令按扭,通过单击,然后打开一个文件打开对话框,选择一个文件,如果不为空,就把这个文件加进来。

要用要三个函数:

getfile()与appdndgeneral以及empty()

显示一个获取文件名的对话框,并返回所选取的文件名。

语法

GETFILE([文件扩展名] [,提示信息] [,确定按钮的标题]

   [,按钮状态])

返值类型

字符型

参数描述

文件扩展名:

指定在对话框中显示的文件扩展名。

比如您只需要选取 bmp 图形文件,那么您就可以用 getfile('bmp'),在对话框的文件选取区(搜索)就只显示扩展名为 bmp 的文件和目录,文件类型区则显示 bmp,表示现在可供选择的文件只有 bmp,不过您也可以在这将文件类型改为全部文件。

如果是空字符串或省略,则所有文件都显示出来供选择。

扩展名中也可以用通配符 * 和 ?

还可以加扩展名说明,比如:

getfile('位图文件:

bmp'),那么在文件类型处就会显示“位图文件”以代替“bmp”。

也可以有多个扩展名,其中有分号(;)隔开,比如:

getfile('dbf;idx;cdx')

这样在文件类型中就可以有多种文件类型供选择。

提示信息:

您可以在对话框中输入文件的地方放上您自己的提示信息,比如:

getfile('bmp','输入文件名')

不过要注意的是提示信息只能有10个字符,也就是5个汉字。

确定按钮的标题:

在对话框中有一个确定按钮,按下此按钮后,该函数就返回所选定的文件名,包括路径,您可以在该按钮上放上您喜欢的字符,比如:

getfile('bmp','输入文件名','OK')

按钮状态:

该参数可以设为0、1、2,0与省略是一样的。

设为1,对话框中将会有一个“新建”按钮,按下此按钮,该函数将会返回“untitle”文件名,扩展名则根据文件类型而定。

设为2,会有一个“无”按钮,按手册上说按下这个按钮将会返回空字符串,但实际上与设置为1时是一样的,不知是怎么回事。

说明

如果在对话框中按了 Esc 键、按了“取消”按钮或者按了右上角的关闭按钮,那么函数将返回空字符串。

另有一个函数 getdir() 用于获取目录名,用法与此函数相似。

还有 getpict(),用于获取图片文件,其实就相当于 getfile('bmp;ico')。

getprinter() 用于获取打印机。

示例

我们在用其它的软件时经常会碰到要求输入文件名的情况,这时往往在输入文件名的文本框边上有一个“浏览”窗口,按下此按钮就弹出文件选择对话框,可在其中选择文件名,按确定按钮后可将文件名自动填到文件输入的文本框中,有了 getfile() 函数,您也可以做出这样的程序来了。

比如我们有一个存放图片文件的表,需要将硬盘上的一些图片文件放入表中,那么就可以用 getfile() 获取图片文件名,再将它用 append general 命令放数据表的通用字段。

方法就是设一输入文件名的文本框,假设是 text1,为其设一个 controlsource 变量,比如fname,在文本框旁边放一个按钮,其 click 事件中写入如下语句:

fname=getfile('bmp')

thisform.text1.refresh

然后可用另一个“存盘”按钮将该文件存入表中。

注意

有时操作者可能不用这个浏览按钮,而直接输入文件名,但这样就可能输错文件名,如果根据错误的文件名存入表中,就会造成程序出错,为了避免这种情况可在 append general 语句前用 file() 函数检查一下这个文件是否存在,如果不存在则提示操作者重新输入文件名,比如“存盘”按钮中的程序可以是这样:

  

if file(fname)

  append general 图片 from &fname

else

  message(fname+'文件不存在,请重新输入!

',48+0+0,'注意')

  thisform.text1.setfocus

endif

在有些软件中为了减少操作出错,干脆将输入文件名的文本框设为只读,甚至将 enabled 设为 .f.,只能通过按钮来选择文件名。

APPENDGENERAL命令

从文件中导入OLE对象,并将其放入通用字段中。

语法

APPENDGENERALGeneralFieldName

[FROMFileName]

[DATAcExpression]

[LINK]

[CLASSOLEClassName]

参数描述

GeneralFieldName

指定放置OLE对象的通用字段名。

可以用带有表别名的字段名来指定在非

当前工作区中打开的表的通用字段。

FROMFileName

指定包含OLE对象的文件。

必须给出文件全名,包括扩展名。

如果文件不

在当前目录或当前文件夹中,还需要给出文件的路径。

DATAcExpression

指定字符表达式,此表达式作为一个字符串存入OLE对象的通用字段中。

OLE对象必须能接收和处理字符串。

例如,不能往Paintbrush™的图片对象

中存入字符串。

LINK

建立OLE对象和包含对象的文件间的链接。

OLE对象出现在通用字段,但

对象定义仍在文件中。

如果省略LINK,OLE对象将嵌入到通用字段中。

CLASSOLEClassName

为OLE对象指定具体的OLE类,而不用其默认类。

提示您可以通过运行REGEDIT并双击某一OLE对象来确定该对象的类名,

类名列在“标识符”后。

当包含OLE对象的文件的扩展名不同于默认扩展名,并且要强制类行为时,您可以指

定类名。

如果默认扩展名可用于多个OLE服务程序,可用该类指定具体的服务程序。

说明

如果在通用字段中已有一个OLE对象,它将被源文件中的OLE对象取代。

若要从通

用字段中删除一个OLE对象,可不带任何附加参数地使用APPENDGENERAL

GeneralFieldName命令(GeneralFieldName是要清理的通用字段的名称)。

其它相关信息,请参阅《MicrosoftVisualFoxPro6.0中文版程序员指南》第十六章“添加

OLE”。

示例

以下示例从Excel目录或文件夹中导入MicrosoftExcel图表,存入通用字段

mygenfield中。

CREATETABLEMyGenTbl(mygenfieldG)

APPENDBLANK&&添加一个空记录

mygenfieldC:

\EXCEL\BOOK1.XLSCLASSEXCELCHART

请参阅

@...SAY–图片或OLE对象,MODIFYGENERAL,OLEBound控件

MESSAGEBOX()

MESSAGEBOX()函数可以显示一个自定义的对话框。

常用作提示之用,也可以作一些简单的选择,比如“确定”、“取消”等,程序中经常用到的一个函数。

语法

MESSAGEBOX(提示信息[,对话框的属型[,对话框窗口标题]])

返值类型:

数值型

参数描述

提示信息:

对话框中所用到的提示文字。

对话框的属型:

用于确定对话框的按钮、图标等属性,这是一个数值型的参数。

设置按钮属性

值                                  对话框按钮属性

0                                    仅有一个“确定”按钮。

1                                    有“确定”和“取消”按钮。

2                                     有三个按钮,分别是“终止”、“重试”、“忽略”。

3                                   “是”、“否”和“取消”按钮。

4                                    “是”和“否”。

5                                    “重试”和“取消”。

比如:

messagebox('是否真的要退出系统?

',4)

如果省略这个参数就相当于是0。

设置图标

值                                           图标

16                                          红色叉号

32                                          问号

48                                         感叹号

64                                           字母I

如果又想要图标,又想要“是”、“否”两个按钮,可以按照如下的方式去做

messagebox('是否真的要退出系统?

',4+32)

设置隐含按钮

值                                        隐含按钮

0                                         第一个按钮。

256                                     第二个按钮。

512                                     第三个按钮。

比如:

messagebox('是否真的要退出系统?

',4+32)

这一句,您希望显示对话框时,隐含的按钮为“否”,也就是按下“回车”键即代表“否”,那么就写成如下形式:

messagebox('是否真的要退出系统?

',4+32+256)

对话框窗口标题:

显示在对话框窗口上部,那个蓝色区域内的信息。

比如:

messagebox('是否真的要退出系统?

',4+32+256,'注意')

如果设的数大于按钮的数,比如设为512,但只有两个按钮,则隐含还是第一个按钮。

说明

在对话框中按了不同的键,该函数将返回不同的值,键值对应如下:

值键

1确定

2取消

3终止

4重试

5忽略

6是

7否

这样我们就以根据不同的返回值作不同的处理了。

过滤一些记录

Setdeleteon/off过滤被删除的记录,注意对goto不起作用。

Setfilterto<

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1