




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关系数据库管理系统VFP江苏科技大学经济管理学院1/13/20231VisualFoxPro6.0为什么要学习关系数据库管理系统予人以鱼不如予人以渔1/13/20232VisualFoxPro6.0章节导航1数据库系统及VFP概述2VFP语言基础4数据库的创建和使用5查询和视图3表的创建和使用6对象模型和事件模型7表单8控件10类的创建和应用11菜单和工具栏9报表和标签12建立应用程序1/13/20233VisualFoxPro6.0第1章数据库系统及VisualFoxPro概述1.1VFP的发展概述及启动1.2数据库系统的组成1.4主流DBMS产品1.5VisualFoxPro概述1.3数据模型1.6项目管理器返回1/13/20234VisualFoxPro6.01.1VFP6.0的发展概述及启动1、1986年6月推出了FoxBASE+1.0版2、1987年7月推出了FoxBASE+2.0版3、1988年7月推出了FoxBASE+2.1版4、1992年下半年推出了FoxPro2.5版5、1994年下半年推出了FoxPro2.6版6、1995年6月推出了VisualFoxPro3.07、1996年8月推出了VisualFoxPro5.08、1998年9月推出了VisualFoxPro6.0目前已发展到VisualFoxPro9.0Beta返回1/13/20235VisualFoxPro6.0VisualFoxPro6.0系统启动返回单击双击桌面快捷方式或1/13/20236VisualFoxPro6.01.2数据库系统的组成(1)..应用程序1应用程序2应用程序n数据库管理系统操作系统数据库数据库系统
返回 数据库系统的基本组成包括:
数据库 数据库管理系统 数据库管理员1/13/20237VisualFoxPro6.01.2数据库系统的组成(2)用户程序A1工作区用户程序A2工作区用户程序A3工作区用户程序A4工作区用户程序A5工作区外部模式A外部模式B模式内部模式系统缓冲区操作系统DBMS数据库数据库管理系统结构
返回1/13/20238VisualFoxPro6.01.3数据模型ABCD网状模型:
ABCDE层次模型:
学号姓名民族专业代号0140409901张三汉0401010140409902李四汉0401010140409903王五汉0401010140409904赵六回040101关系模型:
关键字 数据模型体现了数据的组织形式及数据之间的联系.返回1/13/20239VisualFoxPro6.01.4主流DBMS产品OracleDB2SybaseMS-SQLServerAccessVisualFoxPro返回1/13/202310VisualFoxPro6.01.5VisualFoxPro概述—集成操作环境返回菜单栏工具栏主窗口“命令”窗口状态栏1/13/202311VisualFoxPro6.01.5VisualFoxPro概述—命令示例*,&&
引导注释内容?,??
在VFP主窗口中显示表达式的值CLEAR
清除当前VFP主窗口中的信息DIR
在VFP主窗口中显示文件的目录MD/RD/CD
创建文件夹/删除文件夹/改变当前工作文件夹COPYFILE/RENAME/DELETEFILE
复制/更名/删除文件RUN
调用外部DOS命令QUIT
关闭所有文件,并结束当前VFP系统的运行USExs
打开名为xs的表文件COUNTALLFOR性别=“女” 统计xs中女生的人数USE
关闭表文件Cj
,将其保存在磁盘上返回1/13/202312VisualFoxPro6.0从当前记录开始,按记录顺序从上向下处理,一旦遇到不满足条件的记录,就停止搜索并结束该命令的执行1.5VisualFoxPro概述—一般语法式返回
命令动词;[表达式表
];[范围
];[FOR条件
];[WHILE条件
];[TOFILE文件名
/TOPRINTER/TOARRAY;
数组名
/TO内存变量
];[ALL[LIKE/EXCEPT通配符
]];[IN别名
]计算机要完成的操作执行该命令所操作的结果参数只对满足条件的记录进行操作操作结果的输出去向包括或不包括与通配符相匹配的文件、字段或内存变量允许在当前工作区操作指定工作区ALL/NEXT<n>/RECORD<n>/REST1/13/202313VisualFoxPro6.01.5VisualFoxPro概述—常用文件类型
返回生成的应用程序.app
复合索引
.cdx数据库.dbc.dct.dcx
表.dbf.fpt报表 .frx.frt
标签.lbx.lbt菜单.mnt.mnx.mpr.mpx
内存变量.mem程序.prg.fxp.qpr.qpx
项目.pjt.pjx可视类库.vcx.vct
表单.scx.sctRN_123-lyx主文件名.DBF分隔符扩展名主文件名最长由10个字符组成,可以大、小写字母子混合使用文件命名示例:1/13/202314VisualFoxPro6.01.6项目管理器(1)项目管理器是VFP中处理数据和对象的主要组织工具,其管理信息以项目文件保存,是VFP的控制中心(ControlCenter)。项目管理器的创建方法:1、用【文件】菜单中的【新建】菜单命令。
2、用“常用”工具栏上的“新建”按钮。
3、在“命令”窗口中利用如下命令:
CREATEPROJECT<FileName|?>项目管理器的打开方法:1、用【文件】菜单中的【打开】菜单命令。
2、用“常用”工具栏上的“打开”按钮。
3、在“命令”窗口中利用如下命令:
MODIFYPROJECT<FileName|?>返回1/13/202315VisualFoxPro6.0返回1.6项目管理器(2)创建新文件或对象在相应是设计器中打开选定项将已存在且不被当前项目所管理的文件添加到项目管理器打开/关闭指定的数据库、浏览指定的表、运行指定的查询/表单/程序等从项目中移去或删除选定项连编一个项目或应用程序折叠/展开项目管理器选项卡1/13/202316VisualFoxPro6.0小结1、VFP从FoxBASE开始发展大致经过了十一个阶段。2、VFP的使用方法,VFP功能强大,使用简单。3、VFP的启动通常可以通过Windows的开始菜单或桌面快捷方式实现。4、VFP退出可以通过在命令窗口中执行QUIT、系统菜单的退出菜单项或主窗口的“关闭”按钮实现。5、VFP的文件类型。6、应掌握VFP的一些基本概念。7、VFP的命令构成。8、可以用菜单方式和命令方式创建和打开项目管理器。返回1/13/202317VisualFoxPro6.02.2数据存储容器2.3运算符2.1常用数据类型2.4函数2.5表达式2.6空值第2章VFP语言基础2.7程序设计基础返回1/13/202318VisualFoxPro6.01、字符型数据(Character,简写为C)2、数值型数据(Numeric,简写为N)3、逻辑型数据(Logic,简写为L)4、日期型数据(Date,简写为D)5、日期时间型数据(DateTime,简写为T)6、整形数据(Integer,简写为I)7、备注型数据(Memo,简写为M)8、通用型数据(General,简写为G)2.1常用数据类型返回1/13/202319VisualFoxPro6.02.2数据存储容器2.2.2常量2.2.3内存变量2.2.1名称命名规则2.2.4数组返回1/13/202320VisualFoxPro6.0名称中只能包含字母、下划线、数字符号和汉字符号名称的开头只能是字母、汉字或下划线,不能是数字除自由表的字段名、表的索引标识名至多10个字符,其余名称长度1~128个字符应避免使用系统保留字例:cVar、nVar2、x_2、sum_of_score、nSum_Score、_aver_2x、2_x、num-of-xs、nSum&Score、_aver#gz、use、DO合法非法2.2.1名称命名规则返回1/13/202321VisualFoxPro6.0一个不变的数值或字符串。常量表达式中包括常量和操作符,但不包含变量,而且计算结果总是常值。VisualFoxPro支持多种类型的常量,如:数值常量、字符常量、日期常量、逻辑常量、货币常量、日期时间常量等。
2.2.2常量例:3.12E-8、$1000、’8*7—……’、.F.、{08-25-2003}
3.12×10-8返回1/13/202322VisualFoxPro6.02控制变量访问3保存内存变量1变量的创建4恢复内存变量2.2.3内存变量返回1/13/202323VisualFoxPro6.0 在赋值的同时完成了内存变量的创建,并确定了该变量的数据类型以及目前变量的值STORE表达式
TO内存变量名表
例: STORE0TOa,b
将数值0赋给变量a,b
STORE“张三”TONAME
将字符串“张三”赋给NAME
内存变量名
=表达式
例: A=.T. 将逻辑真值赋给变量A
cSoft=“VFP”
产生一个字符型变量1变量的创建返回1/13/202324VisualFoxPro6.02控制变量的访问变量只在它的作用域范围内才有效:LOCAL:定义局部变量
访问变量:PRIVATE:定义私有变量
?换行显示,PUBLIC:定义全局变量
??不换行显示
AA.prgLOCALaPUBLICb,c……DObb…BB.prgLOCALdPRIVATEb………RETURNa仅在AA.prg中有效,b在全局有效,但在AA.prg和BB.prg中的值不一样,私有的b在BB.prg及其子程中有用c在全局有效d仅在BB.prg中有效返回1/13/202325VisualFoxPro6.0SAVETOFileName[ALLLIKESkeleton|ALLEXCEPTSkeleton]3保存内存变量文件扩展名的缺省值为.mem变量名通配符例:假设存在自定义变量a,b,ab,baSAVETOv1将所有内存变量保存到v1.mem文件中SAVETOv2ALLLIKE?a*将所有第一个字符是任意字符,第二个字符是a的内存变量保存到v2.mem文件中,即baSAVETOv3ALLEXCEPT?a*将所有第二个字符不是a的内存变量保存到v3.mem文件中,即a,b,ab返回1/13/202326VisualFoxPro6.0RESTOREFROMFileName[ADDITIVE]4恢复内存变量保留当前内存中的内存变量,将指定文件中的内存变量添加到当前内存变量之后。若省略ADDITIVE选择项,则内存中已有的内存变量全部释放,将指定文件中的内存变量调入内存。例:RESTOREFROMv1此时内存中存在变量a,b,ab,ba
RESTOREFROMv2此时内存中存在变量baRESTOREFROMv3ADDITIVE此时内存中存在变量a,b,ab,ba返回1/13/202327VisualFoxPro6.02为数组元素赋值1数组的声明2.2.4数组返回1/13/202328VisualFoxPro6.0数组可以为一维数组或二维数组。在绝大多数情况下,数组在使用时必须预先声明。1数组的声明返回DECLAER|DIMENSION|PUBLIC|LOCAL数组名(行数[,列数])私有数组私有数组全局数组局部数组维数和大小例:DECLAERXX(4) 定义一个一维数组XXPUBLICA(6,3) 定义一个6行3列的一维数组ADIMENSIONB(3),C(2,3) 定义一个一维数组B和一个 2行3列的二维数组C1/13/202329VisualFoxPro6.02为数组元素赋值数组在声明之后,每个数组元素的默认值均为逻辑值.F.DECLAERXX[6,3]XX[1,2]=1113使用数组名和元素位置为数组元素赋值XX=1113用一个语句为所有数组元素赋相同的值此外,可以使用SCATTER、GATHER、COPYTOARRAY、APPENDFROMARRAY等命令在数组元素与表的记录之间进行值的传递返回1/13/202330VisualFoxPro6.0运算符可用于操作同类型数据,分为:数值运算符、关系运算符、逻辑运算符、字符运算符和日期(时间)运算符
数值运算符+加
-
减 *
乘 /
除**或^
乘方 %
模运算
()括号2.3运算符 关系运算符<
小于 =
等于
#
不等于 <=
小于或等于>大于 <>
不等于 !=
不等于 >=
大于或等于==
精确等于“==”必须是字符串间的比较,其他的可以为字符串、数值或日期(时间)数据间的比较。关系运算产生逻辑结果“真”或“假”。返回1/13/202331VisualFoxPro6.0逻辑运算符
AND
逻辑与 NOT
逻辑非(单边运算符)OR
逻辑或 !
逻辑非(单边运算符) 字符运算符+
字符串精确连接 -
字符串非精确连接$
属于
(查看左边字符串是否包含在右边字符串中)日期(时间)运算符+
加 -
减说明:日期加上数值得到将来的日期;日期减去数值得到过去的日期;两日期相减得到两个日期相差的天数。
返回1/13/202332VisualFoxPro6.02.4函数函数是预先编好的程序代码,可供用户或程序调用。函数名([参数1[,参数2[,…]]])例:?MOD(36,10) &&显示6?MAX(6,9) &&显示9?SUBSTR(’Helloworld’,7,5) &&显示‘world’?YEAR(DATE()) &&显示2003?STR(123.456,5,2) &&显示123.4MESSAGEBOX(’Hi!’,’A’) &&显示标题为’A’内 容为’Hi!的对话框MOD(a,b)=a-[INT(a/b)-IIF(a/b<0,1,0)]*b返回1/13/202333VisualFoxPro6.0表达式:
由运算符和括号将常量、变量和函数连接起来的有意义的式子。单个常量、变量和函数都可以看作是最简单的表达式。
表达式可以分为:■字符表达式■数值表达式■关系表达式■逻辑表达式■日期表达式 ■名称表达式2.5表达式例:?“教师”+ALLT(js.xm)+“的基本工资是”+STR(js.jbgz,7,2)?DATE()+1?INT(3/2)>MOD(3,2)x=“OFF”SETTALK&x 即SETTALKOFF,不可SETTALK(x)返回1/13/202334VisualFoxPro6.02.6空值
NULL值不是一种数据类型,它0、空字符串(””)或空格不同,表示什么都没有,排序优先于其他数据,NULL值会影响命令、函数、逻辑表达式和参数的行为。
NULL不是一种数据类型,当给字段或变量赋.NULL.时,该字段或变量的数据类型不变,只是值变为.NULL.。
针对NULL值时,ISBLANK()、ISDIGIT()、ISLOWER()、ISUPPER()、ISALPHA()和ISEMPTY()返回“假”(.F.),而ISNULL()返回“真”(.T.)。返回1/13/202335VisualFoxPro6.02.7.1
创建与运行程序2.7.2 程序结构2.7.3 过程与用户自定义函数2.7程序设计基础返回1/13/202336VisualFoxPro6.0程序是为完成某一具体任务而编写的一系列指令。VFP程序由一系列代码组成,代码可以包括以命令形式出现的指令、函数或VFP可以理解的任何操作。创建程序的方法有:1、通过“文件”菜单中的“新建”命令2.7.1创建与运行程序2、利用项目管理器创建程序文件选择“程序”选项,然后单击“新建文件”按钮打开程序编辑窗口在“代码”选项卡选择“程序选项,然后单击“新建”按钮打开程序编辑窗口输入程序代码,并保存即可3、在命令窗口中通过命令打开程序编辑窗口
MODIFYCOMMAND[FIleName
|?]运行程序的方法有:
1、当程序处于VFP编辑窗口时,单击“常用”工具栏上的按钮2、在项目管理器中选择程序文件,单击“运行”按钮3、在命令窗口中使用DO命令
DOProgramName[WITHParameterList
]
返回1/13/202337VisualFoxPro6.0VFP的程序结构可以分为三种:顺序结构、分支结构、循环结构。1、顺序结构按照顺序依次执行程序中的命令,例:
STORE4.12TOp
s=p*p*3.14
?”圆的面积为:”,s2、分支结构包括单条件分支结构和多条件分支结构单条件分支结构:
IFlExpression
[THEN]
Commands1
[ELSE
Commands2]
ENDIF2.7.2程序结构返回例:
x=9 IFx>10THEN ?x ELSE x=x+1 ENDIF1/13/202338VisualFoxPro6.0多条件分支语结构:DOCASE
CASElExpression1
Commands1
[CASElExpression2
Commands2
…
CASElExpressionN
CommandsN]
[OTHERWISE
Commands]
ENDCASE
该语句从第一各CASE开始,判断其后条件表达式的值是否为.T.,当遇到第一各结果为.T.的CASE表达式时,就执行它后面的命令组,然后跳过下一个CASE到ENDCASE之间的所有语句。当包含OTHERWISE语句时,当所有CASE表达式的值都为.F.时,执行OTHERWISE后面的命令组。返回1/13/202339VisualFoxPro6.0例:根据一元二次方程的系数a,b,c判断方程根的情况:delta=b*b–4*a*cDOCASECASEdelta>0 ?“方程有两个不等的实数根:” ??(-b+SQRT(delta))/(2*a)
??(-b-SQRT(delta))/(2*a)CASEdelta=0 ?“方程有两个不等的实数根:”
??–b/(2*a)CASEdelta<0 ?“方程有两个复根:”
real_part=-b/(2*a) &&实部
img_part=SQRT(-delta)/(2*a) &&虚部
?ALLTRIM(STR(real_part))+”+”+ALLTRIM(STR(img_part))+”i” ?ALLTRIM(STR(real_part))+”-”+ALLTRIM(STR(img_part))+”i”ENDCASE返回1/13/202340VisualFoxPro6.03、循环结构有三类命令:基于条件的循环、基于计数的循环和基于表的循环1)基于条件的循环:
DOWHILElExpression
Commands [LOOP] [EXIT] ENDDO例:计算连续自然数之和,并且显示和刚大于1000的最后一个自然数。
STORE0TOAA,BB DOWHILEAA<=1000 BB=BB+1 AA=AA+BB ENDDO结果显示为45。
?BB
循环的“短路”语句,执行到它时,跳过它与循环出口语句之间所有命令,进入下一次循环退出语句,执行到它时,无论循环结束条件是否满足,都将退出循环,程序转到出口语句外返回1/13/202341VisualFoxPro6.02)基于计数的循环:FORVar=nInitialValueTOnFinalValue[STEPnIncrement]
语句序列
[EXIT] [LOOP]ENDFOR/NEXT
例:求1到100中偶数的和A=0FORI=2TO100STEP2 A=A+IENDFOR?A屏幕显示为:2550返回1/13/202342VisualFoxPro6.03)基于表的循环命令
SCAN[Scope][FORlExpression1] [Commands] [LOOP] [EXIT]ENDSCAN说明:SCAN命令自动将记录指针移到下一条满足条件的记录例:逐条显示STUDENT表中男生的情况。
USESTUDENT SCANFOR性别=”男”
DISP WAIT ENDSCAN USE或者使用右侧代码:USESTUDENTSCAN IF性别#”男”
LOOP ENDIF DISP WAITENDSCANUSE返回1/13/202343VisualFoxPro6.01、过程与自定义函数的建立为保证良好的复用性,可以建立过程文件和自定义函数,内容如下:PROCEDUREProcedureName1
Commands1
RETURN[eExpression]
ENDPROCFUNCTIONFunctionName
Commands
RETURN
ENDFUNC2.7.3过程与用户自定义函数为使过程或自定义函数具有一定的灵活性,可以项它们传递一些参数,使其根据不同的参数进行不同的处理,为使过程或自定义函数能接收参数,必须在PROCEDURE或FUNCTION命令后面的第一个可执行语句之前使用如下语句进行参数定义:PARAMETERSParameterList返回1/13/202344VisualFoxPro6.02、过程和用户自定义函数的调用
过程和用户自定义函数的编写和修改方式与一般的程序一样,调用过程的程序是主程序,过程可以嵌套,即一个子程序可以再调用其它子程序,但不能形成循环嵌套。调用之前应使用如下命令:
SETPROCEDURETOprocs.prg调用命令如下:
DOProcedureName
[INProgramName2
][WITHParameterList]返回语句如下:
RETURN[lExpression|TOMASTER|TOProcedureName
]返回1/13/202345VisualFoxPro6.03、参数传递的两种方式
过程或自定义函数的参数可以是变量或数组元素,并可以通过值或引用传递。如果希望自定义函数修改参数,并将修改后的值返回给主程序,则应通过引用(Reference)传递参数;如果主程序需要保持参数的原值,则应通过值(Value)传递参数。系统默认为传值。设置参数传递方式的语句为:
SETUDFPARMSTOREFERENCE|VALUE例:SETUDFPARMSTOVALUE
STORE1TOgnX
?STR(plusone(gnX))&&值为2
?STR(gnX) &&gnX值为1
FUNCTIONplusone
PARAMETERSgnZ
gnZ=gnZ+1
RETURNgnZSETUDFPARMSTOREFERENCESTORE1TOgnX?STR(plusone(gnX))&&值为2?STR(gnX) &&gnX值为2FUNCTIONplusone PARAMETERSgnZ
gnZ=gnZ+1RETURNgnZ返回1/13/202346VisualFoxPro6.0小结1、对内存变量的赋值操作可以使用STORE命令或“=”进行。2、内存变量可以使用SAVE命令保存,也可以使用RELEASE命令和CLEAR命令删除,还可以使用RESTORE命令恢复。3、数组必须先定义后使用,数组元素的赋值操作与内存变量的赋值操作基本相同。4、表达式按其值的数据类型可以分为四类,字符型、数值型、日期型、逻辑型。5、运算符按其运算的结果可以分为五类:算术运算符、关系运算符、逻辑运算符、字符串运算符、日期运算符。6、在过程化程序设计可面向对象程序设计中,都要用到条件选择和循环命令。这些命令包括IF…ELSE…ENDIF、DOCASE…ENDCASE、DoWHILE…ENDDO、SCAN…ENDSCAN、FOR…EONFOR。返回1/13/202347VisualFoxPro6.03.1表结构
3.2表的打开与关闭
3.3记录的处理
3.4表的索引
3.5有关表操作的常用函数
第3章表的创建和使用返回1/13/202348VisualFoxPro6.03.1.1表结构概述3.1.2表结构的创建3.1.3表结构的修改3.1表结构返回1/13/202349VisualFoxPro6.0表结构主要指表的字段及其属性,即由那些字段组成,这些字段的字段名、数据类型、宽度、小数位数和空值(NULL)支持情况是什么。
例如:创建xs(学生)表:3.1.1表结构概述返回1/13/202350VisualFoxPro6.0方法一:用CREATETABLE-SQL命令创建表结构CREATETABLETableName
(FieldName1
FieldType1[(nFieldWidth[,nPrecision])] [NULL|NOTNULL][,FieldName2,…])例:CREATETABLExs(xhC(8)NOTNULL,xmC(6),xbC(2),zydhC(6),xdhC(2),jgC(10),csrqD,zpG)1、打开“表设计器”。在项目管理器的“数据”选项卡中选择“自由表”,然后单击【新建】|【新建表】按钮。在出现的“创建”对话框中输入表文件名,并选择存储路径,然后选择【保存】,将打开表设计器。2、在“表设计器”中创建表结构。即在“表设计器”的“字段”选项卡上,输入各个字段的定义信息。3.1.2表结构的创建方法二:用“表设计器”创建表结构返回1/13/202351VisualFoxPro6.0功能:显示表设计器,修改当前表文件的结构。说明:如果没有在当前选定工件区打开表,则显示“打开”对话框,允许用户从中选择一个要修改的表。方法一:通过命令MODIFYSTRUCTURE
或交互界面进入表设计器修改表结构方法二:
ALTERTABLETableName
ADD|ALTER[COLUMN]FieldName
FieldType[(nFieldWidth[,nPrecision])]或
ALTERTABLETableNameDROP[COLUMN]FieldName
或ALTERTABLETableNameRENAMECOLUMNFieldName1TOFieldName2功能:直接修改表文件的结构。说明:ADD子句用于增加字段,ALTER子句用于修改字段;DROP子句用于删除字段,RENAME子句用于字段改名。3.1.3表结构的修改返回1/13/202352VisualFoxPro6.03.2.1工作区与数据工作期3.2.2表的打开与关闭3.2.3表的独占与共享3.2表的打开与关闭返回1/13/202353VisualFoxPro6.01、工作区号与别名
VFP6提供了多达32767个工作区,每个工作区都有一个工作区号,分别用1~32767表示,其工作区1~10还分别对应有别名A~J。系统规定,用工作区号作为各个工作区的标识符,即数字1-32767;同时还规定,可以用工作区的别名作为工作区的标识符,A-J这10个字母是工作区的标识符,因此,单个字母A-J是不能用来作为表的文件名的,它是系统的保留字。每个打开的表也都有一个别名,当用命令USE表文件名打开表时,系统默认的表的别名就是该表的主文件名。如果在打开表时,在USE命令后面使用了ALIAS参数指定了表的别名,则可为表另外起一个别名,这时的表文件名就不再是表的别名。3.2.1工作区与数据工作期返回1/13/202354VisualFoxPro6.0功能:选择一个工作区作为当前工作区。说明:选择一个工作区作为当前工作区,使该工作区打开的表成为当前表,要选择的工作区,可使用工作区号作为标识符,也可以用工作区的别名来作为工作区的标识符。若选择0,则系统自动选取当前未使用的最小工作区号作为当前的工作区。例:SELECT3USESTUDENTALIASXSSELECT1 USESCOREUSESCOREALIASCJINXSAGAIN2、工作区的选择与多表文件的打开与关闭若想改变当前工作区,则可使用SELECT命令来转换当前工作区。SELECT
nWorkArea
|cTableAlias
|0返回1/13/202355VisualFoxPro6.0表的打开(使用任何一个表以前,都必须首先打开表):USE
TableName
[IN
nWorkArea
|cTableAlias][AGAIN][ALIAScTableAlias][NOUPDATE]功能:IN子句用于指定在哪个工作区中打开,缺省时表示在当前工作区中打开;AGAIN用于说明改表再次打开,即表在多个工作区中被同时打开;ALIAS子句用于定义表的别名,缺省时表的别名与一般表名相同;NOUPDATE指定表打开后不允许修改其结构和数据。3.2.2表的打开与关闭返回1/13/202356VisualFoxPro6.0关闭打开的表文件CLOSEALL功能:关闭所在所有工作区中打开了的表、表和单索引文件并且选择1号工作区为当前工作区。此外:退出VFP时,将关闭所有的表使用USE命令关闭打开的表文件
USEIN[nWorkArea
|cTableAlias]
功能:关闭指定的表,不使用IN子句时关闭当前工作区中的表。返回1/13/202357VisualFoxPro6.0USE
TableName
[EXCLUSIVE][SHARED]功能:指定系统打开表的方式。EXCLUSIVE为独占打开,即一张表只能被一个用户打开;SHARED为共享打开,即网络上的多个用户可以在同一时刻访问同一张表。默认独占。SETEXCLUSIVEON|OFF功能:指定系统打开表的方式为独占或共享。但不改变已打开表的状态。一张表被打开多次时,其打开状态以第一次打开方式为准。3.2.3表的独占与共享
返回1/13/202358VisualFoxPro6.03.3.1记录的输入3.3.2表的浏览与定制3.3.3记录的定位3.3.4记录的修改3.3.5记录的删除3.3.6数据的复制3.3.7数据的统计3.3记录的处理返回1/13/202359VisualFoxPro6.0
方法一:表结构创建后立即输入数据方法二:通过菜单或BROWSE命令在浏览器窗口中追加记录例:USExsBROWSE
例:APPENDFROMxs1
从xs1表中向当前表中导入数据例: INSERTINTOxs(xh,xm)VALUES(‘0001’,’张三’)
向学生表中插入一条记录,学号“0001”,姓名“张三”方法三:使用INSERT-SQL命令追加记录INSERTINTOTableName[(FieldName1[,FieldName2
,…])]VALUES(eExpression1[,eExpression2,…])方法四:使用APPEND与APPENDFROM命令APPEND[BLANK][INnWorkArea|cTableAlias
]APPENDFROMFileName[DELIMITED|XLS]另外:备注与通用型字段,通过针对字段双击或Ctrl+Home组合键打开内容,编辑后保存。3.3.1记录的输入返回1/13/202360VisualFoxPro6.0如何将数据输入到表中,并根据需要对表中的数据进行处理、利用和维护?
返回1/13/202361VisualFoxPro6.0界面操作方式:通过设置“数据过滤器”(填写条件)来筛选记录。格式1:BROWSE[FIELDSFieldList][FOR
lExpression][FREEZEFieldName][NOAPPEND][NODELETE]
[NOMODIFY][TITLEcExpression] 浏览命令格式2:SETFILTERTO
lExpression
进行记录的筛选格式3:SETFIELDTO
[FieldList]
限制对字段的访问3.3.2表的浏览与定制返回例1:BROWSEFIELDSxh,xmFORxb=“女”NOMODIFYTITLE“女学生” 显示女学生的学号、姓名信息例2:
SETFILTERTOxb=“女”
仅显示女学生信息
BROWSEFIELDSxh,xmNOMODIFYTITLE“女学生”例3:
SETFIELDTOxh,xm
仅显示学号、姓名信息
BROWSEFORxb=“女”NOMODIFYTITLE“女学生”1/13/202362VisualFoxPro6.0记录的开始标志记录指针记录的结束标志当用户向表中输入数据时,VFP为每个记录都按输入顺序指定了文件头(包含表结构等信息)第1条记录第2条记录···第n条记录
是VFP系统内部的一个指示器,可以将记录指针理解为保存当前记录号的变量。每当打开一个表结构时,记录指针总是指向第1条记录。在进行数据处理时,经常要将记录指针移到用户所需要操作的那个记录,这个过程即是
记录指针记录号。第一个输入的记录,其记录号为1。依次类推。记录的定位。3.3.3记录的定位返回1/13/202363VisualFoxPro6.0返回打开表时记录指针情况如下:表中记录情况BOF()值RECNO()值EOF()值有记录无记录BOF():测试指针是否指向记录的开始标志。.T.是,.F.不是EOF():测试指针是否指向记录的结束标志。.T.是,.F.不是RECNO():测试记录指针的值。用户可以从VFP主窗口的状态栏上看出记录指针的值。表的别名打开的表文件记录指针值为1表中共有10条记录1.F..T.1.T..F.1/13/202364VisualFoxPro6.0返回
绝对定位:
GOTOnRecordNumber[INWorkArea
|IN
cTableAlias]|TOP|BOTTOM
记录指针移动到第1条记录GOTOTOP记录指针移动到记录号为3的记录GOTO3记录指针下移4条记录SKIP4记录指针上移2条记录SKIP–2记录指针下移1条记录SKIP
Movestherecordpointertothespecifiedrecordnumber.相对定位:
SKIP
[nRecords][INWorkArea|IN
cTableAlias]
Movestherecordpointerforwardorbackwardinatable.记录定位的方法(1)1/13/202365VisualFoxPro6.0Returnsalogicalvalueindicatingifthesearchwassuccessful.
条件定位张三
SETORDERTOxmSEEK‘张三’FOUND()函数可测试是否找到匹配的记录,.T.是,.F.否。LOCATEFOR快速定位:xm=‘张三’
输入待查学生姓名顺序定位:}SEEK‘张三’ORDERxm记录指针指向姓名为‘张三’的记录或表尾查询定位按钮例:在xs表中寻找首次出现姓名为‘张三’的记录USExs{Searchesanindexedtableforthefirstoccurrenceofarecordwhoseindexkeymatchesaspecifiedexpression.Sequentiallysearchesthetableforthefirstrecordthatmatchesthespecifiedlogicalexpression.LOCATEFORlExpression[Scope]
SEEKeExpression
[ORDER
TagName
[ASCENDING|DESCENDING][IN
nWorkArea|cTableAlias]或表尾ContinuesthepreviousLOCATEorSEEK.出于对效率的考虑,建议更多地使用SEEK命令。利用CONTINUE命令可以进行下一条满足条件记录的定位。记录定位的方法(2)返回1/13/202366VisualFoxPro6.0前提:xs表有6条记录,仅第3条记录的xm字段值为“张三”。(打开xs表)USExs?BOF()SEEK‘张三’ORDERxm?RECNO()?RECNO()?EOF()GOTOTOPSKIP-1?BOF().F.(寻找xm为“张三”的记录)3(移动记录指针到第一条记录)7.T.(记录指针上移一条记录).T.CONTINUE(继续寻找下一条xm为“张三”的记录)?BOF().F.记录指针的状态???????再SKIP-1会怎样??BOF()SKIP会怎样??EOF().T..T.一起来思考:返回1/13/202367VisualFoxPro6.0例:
UPDATExsSETxh=‘x’+xh
将学号前加个‘x’CLOSETABLESALL
USExs
REPLACExhWITH‘x’+xhALL1、界面方式的记录修改通过项目管理器、菜单选择或BROWSE命令打开表3.3.4记录的修改格式1:UPDATETableNameSETColumn_Name1=eExpression1[,Column_Name2=eExpression2…][WHEREFilterCondition
]格式2:REPLACEFieldName1
WITHeExpression1
[ADDITIVE][,FieldName2
WITHeExpression2[ADDITIVE]…][Scope][FORlExpression
]2、使用命令修改记录等同上句
返回1/13/202368VisualFoxPro6.0返回3.3.5记录的删除
例:对xs表文件中所有男生加注删除标记USExsDELETEFORxb=“男”等价于:DELETEFROMxsWHERExb=“男”可以通过界面操作或如下命令实现删除标记可以通过SETDELETEON|OFF指定是否处理有删除标记的记录DELETE[
Scope
][FOR
lExpression][IN
nWorkArea
|cTableAlias
]或DELETEFROM
TableName
[WHERE
FilterCondition]
1、标记要删除的记录1/13/202369VisualFoxPro6.0例:RECALL 恢复当前记录RECALLALL 恢复所有记录
RECALLALLFORxb=“男”
恢复所有性别为“男”的记录3、彻底删除记录
可以通过菜单命令“表/彻底删除”或PACK命令实现对加注了删除标记记录的物理删除;也可以通过ZAP命令从当前表中清除全部记录。两种命令均要求当前工作区中的表以独占方式打开。ZAP比PACK快。DELETEFORxb=“男”PACK返回2、恢复带删除标记的记录
可以通过界面操作或如下命令实现RECALL[
Scope
][FOR
lExpression]1/13/202370VisualFoxPro6.0COPYTOFileName[FIELDSFieldList][Scope][FOR
lExpression][[TYPE]SDF|XLS|DELMITED[WITH
Delimiter|WITHBLANK|WITHTAB|WITHCHARACTERDelimiter]]例:
USExs COPYTOxs01XLS
生成xs01.xls文件COUNT[Scope][FORlExpression][TO
VarName]SUM[nExpression][Scope][FOR
lExpression][TO
VarName]AVERAGE[nExpression][Scope][FOR
lExpression][TOVarName]例:
COUNTFORcj>80TOa1
统计80分以上人数
AVERAGEcjTOa2FORcj>80
统计80以上平均分3.3.7数据的统计3.3.6数据的复制返回1/13/202371VisualFoxPro6.0索引文件有二种:独立索引文件和复合索引文件,而复合索引文件又可分为结构复合索引文件和非结构复合索引文件两种。VFP对结构复合索引文件提供了四种类型:主索引、候选索引、唯一索引、普通索引结构复合索引文件的建立INDEXONeExpression
TOTAGTagName
[FORlExpression][ASCENDING|DESCENDING][UNIQUE][CANDIDATE]3.4表的索引
返回1/13/202372VisualFoxPro6.0转移焦点(1)利用表设计器的字段选项卡建立索引文件在项目管理器中建立索引在“数据”选项卡中选择要建立索引的表单击“修改”按钮,打开表设计器单击“索引”选项卡输入索引标识选择索引类型输入索引表达式也可选择表达式生成器进行表达式的生成返回1/13/202373VisualFoxPro6.01在打开表时打开索引文件复合索引文件在打开表时将自动被打开。USETableNameINDEX<TagName>[ASCENDING|DESCENDING]2、打开表后设置主控索引如果在打开索引文件时未指定主控索引,打开索引文件之后需要指定主控索引,或者希望改变主控索引,可使用下面的命令。SETORDERTO[TagName[INnWorkArea
|cTableAlias][ASCENDING|DESCENDING]说明:如果命令中不使用任选项,只写SETORDERTO,那么不会指定主索引,记录仍按照记录号的顺序显示,但并未关闭索引文件使用索引返回1/13/202374VisualFoxPro6.03索引文件的重建或更新格式:REINDEX功能:重建当前打开的所有索引文件。说明:使用REINDEX命令之前,必须首先打开需要重建索引的全部索引文件。对使用包含UNIQUE关键字的INDEX命令或SETUNIQUEON命令创建的索引文件,在重建索引时,仍保持UNIQUE状态。4利用索引快速定位记录格式:SEEKeExpression[ORDERTagName
[ASCENDING|DESCEN-DING][INnWorkArea|cTableAlias]例:
USExsORDERxh SEEK“030102”返回1/13/202375VisualFoxPro6.0小结1、建立表前要做好准备,将每个表的字段名、类型、宽度、小数位、等以表格的形式进入充分的描述。2、可以通过项目管理器和使用CREATE命令建立表,也可以通过COPYSTRUCTURE命令从其它表中复制表结构,还可以使用CREATE带FROM子句从一个表结构文件中得到表结构。3、表在使用前要先打开,表中的记录可以用APPEND、INSERTINTO等命令进行追加,也可以使用DELETE命令进行删除,还可以使用BROWSE命令打开全屏幕编辑窗口进行修改和浏览,可以用REPLACE命令替换数据。4、在USE命令中可以用IN了句指定工作区,用ALIAS子句指定别名。5、可以使用SELECT命令选择一个工作区。返回1/13/202376VisualFoxPro6.04.1VFP数据库概述
4.2数据库的创建
4.3数据库的使用4.4数据库表
4.5永久关系与参照完整性
第4章数据库的创建和使用返回1/13/202377VisualFoxPro6.0数据库设计步骤第1步:确定建立数据库的目的。这有助于确定需要VFP保存哪些信息;第2步:确定需要的表。在明确了建立数据库的目的之后,就可以着手把信息分成独立的主题,例如“xs”(学生)或“cj”(成绩)等。每个主题都可以是数据库中的一个表。第3步:确定表的字段。确定在每个表中保存哪些信息。在表中,每类信息称为一个字段,浏览表时在表中显示为一列。例如,在xs表中,可以有这样的字段:“学号”、“姓名”、“性别”等。第4步:确定表之间的关系。分析每个表,确定一个表中的数据和其它表中的数据有何关系。必要时,可以在表中加入字段或创建一个新表来明确关系。第5步:改进设计。对设计进一步分析,查找其中的错误。创建表时,在表中加入几个示例记录,看能否从表中得到所需的结果。
返回1/13/202378VisualFoxPro6.04.1VFP数据库概述
jxgl数据库xs表js表kc表cj表rk表zy表······数据库是一个容器,是许多相关的数据库表及其关系的集合。数据库中的表叫数据库表,不但包括自由表的各种属性,还有一些增强特性。数据库中不仅有表,还包含有表之间的关系。返回1/13/202379VisualFoxPro6.04.2数据库的创建第一步:在项目管理器中选择【数据】选项卡第二步:单击“数据库”项第三步:单击项目管理器中的【新建】按钮第四步:单击【新建数据库】按钮第五步:输入数据库名后,单击【保存】按钮返回1/13/202380VisualFoxPro6.04.3数据库的使用
语法:打开数据库:OPENDATABASE[DatabaseName][EXCLUSIVE|SHARED][NOUPDATE][VALIDATE]设置当前数据库:SETDATABASETODatabaseName检查数据库的有效性:
VALIDATEDATABASE[RECOVER][TOPRINTER|TOFILEFileName]关闭数据库:CLOSEDATABASE例:OPENDATABASEjxgl
打开jxgl数据库OPENDATABASEhqgl
打开hqgl数据库SETDATABASETOjxgl
设置jxgl为当前数据库CLOSEDATABASE
关闭jxgl数据库返回1/13/202381VisualFoxPro6.0语法:第一步:OPENDATABASEDatabaseName第二步:CREATETABLE-SQL系统打开表设计器第一步:选择【数据】选项卡第二步:单击“表”选项第三步:单击【新建】按钮4.4数据库表返回1/13/202382VisualFoxPro6.0数据库表的字段扩展属性字段显示属性字段验证指定与字段相应的控件类以下属性不存在于自由表设计器中返回1/13/202383VisualFoxPro6.0为字段设置有效性规则语法:CREATETABLEcj(xhC(6)DEFAULT“030000”,kcdhC(6),cjN(3,0);CHECKcj>=0ANDcj<=100)等价于:CREATETABLEcj(xhC(6),kcdhC(6),cjN(3,0))ALTERTABLEcjALTERCOLUMNxhSETDEFAULT“030000”ALTERTABLEcjALTERCOLUMNcjSETCHECKcj>=0ANDcj<=100返回1/13/202384VisualFoxPro6.0数据库表的表属性记录验证插入、更新或删除记录时进行的检验规则长表名,可通过CREATETABLE表名NAME长表名(···)定义返回1/13/202385VisualFoxPro6.0为记录设置有效性规则语法:ALTERTABLExsSETCHECKcsrq<date()ERROR”尚未出生”删除有效性规则:ALTERTABLExsDROPCHECK
语法:CREATETRIGGERONTableNameFORDELETE|INSERT|UPDATEASlExpression例:CREATETRIGGERONkcFORDELETEAS.F.
无条件地不允许删除删除表的触发器:DELETETRIGGERONTableNameFORDELETE|INSERT|UPDATE设置表的触发器返回1/13/202386VisualFoxPro6.0数据库表的添加与移去语法:添加:ADDTABLETableName[NAMELongTableName]移去:REMOVETABLETableName[DELETE] FREETABLETableName第一步:单击要移去的表第三步:选中要添加的表,单击【确定】按钮第一步:单击“表”选项第二步:单击【添加】按钮Zy表被成功添加到jxgl数据库中第二步:单击【移去】按钮第三步:单击【移去】或【删除】按钮返回1/13/202387VisualFoxPro6.0将表加入到数据库要添加的表必须具备下列条件:■该表是一个有效的.DBF文件;■表不能同时放在另一个数据库中。要加入表的数据库必须具备下列条件:■必须以独占方式打开。要想独占地打开一个数据库,在使用OPENDATABASE命令时加入EXCLUSIVE子句;■不包含在事务中。
返回1/13/202388VisualFoxPro6.04.5永久关系与参照完整性要在两张表之间正确地建立关系,首先必须明确这两张表之间存在何种关系。在关系模型中,实体之间的联系有三种:一对一联系、一对多关联系和多对多联系。一对一关系:设有甲乙两张表,如果甲表的一个记录在乙表中有且仅有一个相应记录,而乙表中的一个记录在甲表中也有且仅有一个记录与之对应,则甲乙表间为一对一关系。一对多关系:设有甲乙两张表,如果甲表中的任意一个记录在乙表中都有几个记录与之对应,则称甲乙两张表之间存在一对多关系,并称甲表为“一”表(或“主表”、“父表”),乙表为“多表”(或“子表”)。多对多关系:设有甲乙两张表,如果甲表中的任意一个记录在乙表中存在多个记录与之对应,而乙表中的每个记录在甲表中也存在多个记录与之对应,则甲乙表之间存在多对多关系。在实际应用中,遇到“多对多”的情况时,必须建立第三张表“纽带表”,把多对多关系分解为两个一对多关系。纽带表可能只包含这两个表的主关键字,也可能包含其它信息。
返回1/13/202389VisualFoxPro6.0永久关系与参照完整性的设定
第二步:单击相应数据库第三步:单击项目管理器中的【修改】按钮,打开数据库设计器普通索引第一步:在项目管理器中选择【数据】选项卡主索引通过鼠标拖放建立的永久关系图示线双击,可编辑关系返回1/13/202390VisualFoxPro6.0数据库表字段确定确定表字段的几点技巧:每个字段直接和表的主题相关;不要包含可推导得到或通过计算可以得到的字段;收集所需的全部信息;以最小的逻辑单位存储信息。每张表必须包含主关键字使用主关键字段
VFP不允许在主关键字中有重复值或null值。因此,不能选择包含有这类值的字段作为主关键字。因为要用主关键字的值来查找记录,所以它不能太长,以方便记忆和键入。主关键字可由一定长度的字母和数字组成,或是某一范围内的值。主关键字的长度直接影响数据库的操作速度,因此,在创建主关键字时,该字段值最好使用能满足存储要求的最小长度。
返回1/13/202391VisualFoxPro6.0数据库设计求精对所设计的表分析,查找是否存在如下问题:库中是否有多余的表或者还缺少某些主题的表现有表是否有多余字段或缺少字段信息?能否从现有的表中,得到所需的结果,如各种查询统计、报表等等。在设计数据库表结构时,一张表不要喊有太多的字段,特别是不应有与该表主题无关的字段不要对同一个主题建立多张表不应使表中的某些字段中存有大量的空值。查找到存在的问题后,就要修改表的结构,以改进设计方案。
返回1/13/202392VisualFoxPro6.0小结创建一个数据库可以分为五步:确定建立数据库的目的;确定需要的表;确定每个表所需字段;确定表间的关系关系;设计求精。返回1/13/202393VisualFoxPro6.05.1查询的创建和使用5.2创建视图5.3SELECT-SQL语句第5章查询与视图
返回1/13/202394VisualFoxPro6.0“查询”,是指向一个数据库发出的检索信息的请求,它使用一些条件提取特定的记录。查询的运行结果是一个基于表和视图的动态的数据集合。创建查询的方法如下:1、使用CREATEQUERY命令启动“查询设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出口贸易融资与信用保险代理合同
- 车辆转让过户风险评估合同书
- 主题餐厅特色餐饮服务人员聘用及权益保障合同
- 2025年黄桃市场分析报告
- POLE突变型高级别子宫内膜癌:临床病理特征剖析与预后深度探究
- 碳中和供应链金融-洞察及研究
- 口腔诊疗可行性报告
- 征迁审计报告范本讲解
- 迷你握手器行业深度研究分析报告(2024-2030版)
- 2025年智慧农业灌溉系统应用项目可行性研究报告
- GB/T 44538-2024碳基薄膜椭偏光谱法测定非晶态碳基薄膜的光学性能
- 【常考压轴题】2023-2024学年八年级数学下册压轴题攻略(沪教版)专题01 一次函数 压轴题(十大题型)(解析版)
- 医院培训课件:《紧急情况下口头医嘱制度与执行流程》
- 硬核赢创新智慧树知到答案2024年山东大学
- 夏季养脾胃中医
- Unit1ScienceFictionUsingLanguage(2)ReadingforWriting课件高中英语人教版选择性
- 北京海淀十一学校2024届英语七年级第二学期期末教学质量检测模拟试题含答案
- 第13课 立足专业 谋划发展 第一框
- 银行保安服务 投标方案(技术标)
- 2023-2024学年辽宁省沈阳市皇姑区七年级(下)期末数学试卷(含答案)
- 广东省湛江市2023-2024学年高一下学期期末调研考试语文试题及答案解析
评论
0/150
提交评论