VFP自由表的创建、维护命令实例

这是上机课上做的,主要是为了熟悉表的各种命令,现在VFP用的人也比较少了,分享一下基本命令的具体写法吧。(顺便吐槽一下,VFP里面的汉字复制到wold里面是乱码的,~字母是没有问题的)

以下是基于实际例子的操作。包括表的创建、数据追加、插入、删除、修改等还有一个小的表单设计。
下面给出word里面内容和截图,格式有点奇怪,不知道怎么优化请讲究看一下,希望对大家有帮助~




一、实验目的
1.	掌握Visual Foxpro基本操作环境;
2.	掌握数据库表结构的创建;
3.	掌握数据库表中各种类型数据的输入,学会备注型、通用型字段的输入;
4.	掌握数据库表掌握数据库表的基本操作。

二、实验要求
1.  熟悉Visual FoxPro的启动与退出;
2.	熟悉Visual FoxPro的用户界面:Visual FoxPro有三种工作方式:利用菜单系统实现人机对话;在命令窗口直接输入命令进行交互式操作;利用各种生成器自动产生程序,或者编写FoxPro程序并执行它;
3.	掌握表的打开、保存和关闭;
4.	掌握表的维护命令。


	1.	建立如下结构的汽车修理单自由表XLD.DBF。其关系模式为:XLD(编号C(4),车牌号C(8),修理项目C(12),送修日期D,维修价格N(9.2),工号C(4),是否完成L,说明M)

命令:
CREATE TABLE XLD(编号C(4),车牌号C(8),修理项目C(12),送修日期D,维修价格N(9.2),工号C(4),是否完成L,说明M)

INSERT INTO XLD (编号C(4),车牌号C(8),修理项目C(12),送修日期D,维修价格N(9.2),工号C(4),是否完成L,说明M);
VALUES ("1001","C3542186","大修",{^2017-12-20},21000,0002,.F.,”因零件缺货,推迟交车”)

INSERT INTO XLD (编号C(4),车牌号C(8),修理项目C(12),送修日期D,维修价格N(9.2),工号C(4),是否完成L,说明M);
VALUES ("1002","K333-667","换转动轴",{^2017-12-28},1800,"0001",.T.,"转动轴厂家:湖北十堰东风汽车公司")

INSERT INTO XLD (编号C(4),车牌号C(8),修理项目C(12),送修日期D,维修价格N(9.2),工号C(4),是否完成L,说明M);
values("1003","A2020203","点火线圈",{^2017-12-30},280,"0003",.F.,"")

INSERT INTO XLD (编号C(4),车牌号C(8),修理项目C(12),送修日期D,维修价格N(9.2),工号C(4),是否完成L,说明M);
VALUES ("1004","B3456782","刹车",{^2018-01-18},360,"0005",.T.,"")

INSERT INTO XLD (编号C(4),车牌号C(8),修理项目C(12),送修日期D,维修价格N(9.2),工号C(4),是否完成L,说明M);
values ("1005","A1212568","喷漆",{^2018-01-18},800,"0003",.F.,"喷漆两次")

INSERT INTO XLD (编号C(4),车牌号C(8),修理项目C(12),送修日期D,维修价格N(9.2),工号C(4),是否完成L,说明M);
VALUES ("1006","A1212568","换轮胎",{^2018-02-01},650,"0004",.T.,"国产")

2.	显示XLD.DBF的结构

LIST STRUCTURE

 
3.记录的显示操作:
(1)显示XLD.DBF所有记录及数据(含备注型字段的数据);
LIST all fields 编号,车牌号,修理项目,送修日期,维修价格,工号,是否完成,说明

 

(2)显示第三条记录;
LIST record 33)显示从第3条记录开始的连续3条记录;
LIST next 34)显示所有维修价格在700以上的维修单的车牌号、维修价格及说明;
LIST 车牌号,维修价格,说明  for维修价格>7005)显示所有送修日期在20181月份的维修单的送修日期、是否完成;
LIST 送修日期,是否完成 for 送修日期>={^2018-01-01} and 送修日期<={^2018-01-31}6)显示所有未完成维修单的车牌号、送修日期。
LIST all 车牌号,送修日期 for  是否完成  = .F.
 

2.	在XLD.DBF的尾部追加一条新记录,数据自行输入。
INSERT INTO XLD  (编号C(4),车牌号C(8),修理项目C(12),送修日期D,维修价格N(9.2),工号C(4),是否完成L,说明M);
VALUES ("1998","A1234567","油门",{^2018-10-16},1000,"0009",.T.,"油门已换新")
 
3.	在XLD.DBF第三条记录前后各插入一条记录。
GO 3
INSERT blank
SCATTER TO a memo
a(1)="1008"
a(2)="BIVE00"
a(3)="³µÔØ¿Õµ÷"
a(4)={^1998-9-2}
a(5)=20
a(6)="0004"
a(7)=.F.
a(8)=""
GATHER FROM a

GO 3
INSERT blank before
a(1)="1007"
a(2)="ABCDEFG"
a(3)="·¢¶¯»ú"
a(4)={^2017-8-26}
a(5)=500
a(6)="0005"
a(7)=.T.
a(8)=""
GATHER FROM a

 

4.45题追加与插入的记录加上删除标记,然后从XLD.DBF中物理删除这些记录。
DELETE record 3
DELETE record 5
DELETE record 9
 
PACK
 


5.	给XLD.DBF中第2条记录开始到文件结束的所有记录做删除标记,然后恢复第25两条记录的删除标记。
GO 2
DELETE REST
LIST
RECALL RECORD 2
RECALL RECORD 5
 
 

6.	增加一个字段:送修车间(C10)。

ALTER table XLD add 送修车间 c(10)
 
7.	将所有2017年送修但未完成的维修价格打8折。

REPLACE 维修价格 WITH  维修价格*0.8 FOR 送修日期 >={^2017-01-01} and 送修日期 <= {^2017-12-31} and 是否完成 = .F.
 
10. 复制XLD.DBF生成包含以下五个字段:车牌号、修理项目、送修日期、维修价格、说明的新表XLD1.DBF。然后物理删除XLD1.DBF中的所有记录。
CLOSE all
COPY FILE XLD.dbf TO XLD1.dbf fields 车牌号、修理项目、送修日期、维修价格、说明
COPY FILE XLD.fpt TO XLD1.fpt fields 车牌号、修理项目、送修日期、维修价格、说明
USE XLD1
DELETE ALL
PACK


11.用SCATTER命令与GATHER命令对XLD.DBF的第三条记录做如下修改:将车牌号改为“A8888888”,维修价格改为300,在备注型字段中填入内容为“别克君威 GL8点火线圈”。

GO 3
SCATTER to a memo
a(2)="A8888888"
a(3)=300
GATHER FROM a

GO 3
REPLACE 说明 WITH "别克君威GL8点火线圈"

 
12. 使用SQL相关语句实现以下操作: 创建表、维护表的结构、追加表记录。
几个命令都在以上操作中使用过了
13.创建如下表单:
使用VFP的控件创建表单,运行结果如下
 
不知道为什么用scatter去替换某行数据的时候,其他数据类型都可以替换,但是到memo的时候直接跳过了,替换了他的下一个数据,这个时候我用了replace完成操作
不要一不小心用到pack了,物理删除了就回不来了,不知道VFP有没有什么撤退的类似crl+z的功能,经常误操作了回不去了很麻烦
VFP的表单设计有点奇怪,窗口不能缩放?应该是我不会用,像上面那两个图,窗口不知道怎么弄的,图一始终缩不小….



在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/alike_meng/article/details/83151866
今日推荐