看实例学VFP:用sql命令修改表结构

在看实例学VFP:用sql语句修改数据表记录一文中介绍过用sql语句修改表记录的值,实际vfp中也可以用sql语言中的Alter语句动态的修改表结构。虽然可以实现这样的操作,但是我觉得尽可能还是不要在程序中动态修改表结构,因为这样有可能会造成程序的不稳定以及其它的意外情况。

vfp中对表结构的操作主要是增加字段、修改字段、重命名字段和删除字段这四项,sql中修改表结构的语句是Alter语句,那么和这四项操作相对应的Alter语句格式可以总结如下:

增加字段:alter talbe 表名 add 字段名 类型(宽度[,小数位] )

修改字段:alter table 表名 alter column 字段名 类型(宽度[,小数位] )

重命名字段:alter table 表名 rename column 字段名 TO 新字段名

删除字段:alter table 表名 drop column 字段名

这个Alter语句看起来比较麻烦,因此本文设计了这样的一个例子来演示上述的这些对表结构的操作,运行时如下图:

本例在表单init时首先从“人员信息表”中查询出“编号”、“姓名”、“性别”及“基本工资”四个字段的值并将查询结果输出为“人员信息表2.dbf”,然后把它设为表格的数据源,接下来我们修改表结构的操作就在这个表上进行。表单上的四个命令按钮的click事件代码中分别对应了alter语句的四个格式的应用,其中:

1.“增加字段”按钮的click事件:在“人员信息表2”中增加一个字段名为“行号”、数据类型为数值型且小数位为0的字段,然后用循环语句把各条记录的行号添加上去;

2.“修改字段”按钮的click事件:“人员信息表2”中“基本工资”这个字段的类型原来是货币型,在此事件中将它更改为数值型且小数位为零;

3.“重命名字段”按钮的click事件:将“人员信息表2”中的“姓名”这个字段的字段名更改为“尊姓大名”;

4.“删除字段”按钮的click事件:将“编号”字段删除。

制作过程很简单:

一.新建表单,将其caption属性值设置为“编程入门网-用sql命令修改表结构”,AutoCenter属性值设置为.t.,保存为“用sql命令修改表结构.scx”。向表单上添加四个命令按钮,caption属性依次设置为“增加字段”、“修改字段”、“重命名字段”及“删除字段”;在命令按钮下方添加一个表格控件,name属性值使用默认的grid1,recordsourcetype属性值也使用默认的“1-别名”。

二.添加事件代码:

1.表单的init事件代码:

select 编号,姓名,性别,基本工资 from 人员信息表 into table 人员信息表2
go top
this.grid1.recordsource="人员信息表2"

2.“增加字段”按钮的click事件代码:

thisform.grid1.recordsource=""
local s,c as integer
s=reccount()
c=thisform.grid1.columncount+1
ALTER TABLE 人员信息表2 ADD 行号 N(2,0)
for i=1 to s
    go i
    replace 行号 with recno()
endfor
go top
thisform.grid1.columncount=c
thisform.grid1.Columns(thisform.grid1.columncount).Header1.caption="行号"
thisform.grid1.recordsource="人员信息表2"
thisform.grid1.refresh
this.enabled=.f.

3.“修改字段”按钮的click事件代码:

thisform.grid1.recordsource=""
alter table 人员信息表2 alter column 基本工资 N(4,0)
thisform.grid1.recordsource="人员信息表2"
thisform.grid1.refresh
this.enabled=.f.

4.“重命名字段”按钮的click事件代码:

thisform.grid1.recordsource=""
thisform.grid1.ColumnCount=-1
alter table 人员信息表2 rename column 姓名 TO 尊姓大名
thisform.grid1.recordsource="人员信息表2"
thisform.grid1.refresh
this.enabled=.f.

5.“删除字段”按钮的click事件代码:

thisform.grid1.recordsource=""
thisform.grid1.ColumnCount=-1
alter table 人员信息表2 drop column 编号
thisform.grid1.recordsource="人员信息表2"
thisform.grid1.refresh
this.enabled=.f.

6.表单的unload事件代码:

close all
delete file 人员信息表2.dbf
if file("人员信息表2.BAK")
   delete file 人员信息表2.BAK
endif

三.运行“用sql命令修改表结构.scx”。

本例代码在Win2003+VFP6.0环境下调试通过。

查看全套“菜鸟也学VFP”教程

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索按钮
, grid
, 事件
, 信息
, 字段
, 行号
, 增加字段
, 修改表
, 修改表结构
, 表结构修改
, 修改表结构命令
表信息
,以便于您获取更多的相关知识。

时间: 2024-08-31 23:00:49

看实例学VFP:用sql命令修改表结构的相关文章

看实例学VFP:利用多个表中的字段创建新表

本例中再来复习一下select语句中的inner join子句的知识,关于select语句请参考:select SQL 命令 或sql语言教程.本例的主要操作是在表单的init事件中完成的,在该事件中进行连接查询并将查询结果输出为一个临时表(该表包括了"人员信息表"的"姓名,性别,基本工资"3个字段以及"工资表"的"奖金,生活补助,养老保险"3个字段),最后将该表设为表格控件的数据源.本例应用到了数据环境,并使用"数

看实例学VFP:编程方式向表单添加新控件

vfp的"表单控件工具栏"包含了标签(Label).文本框(TextBox)等常用的控件类,以前我们向表单添加控件时多数都是在设计时使用该工具栏. 单击该工具栏上的某个控件图标后,即可在表单上拖动.绘制出所需要的控件.但有时我们需要的控件有可能在设计时无法确定,而是在应用程序运行时根据具体情况动态创建的,这时就需要以编程的方式,通过使用addobject()函数或creatobject()函数动态地向表单添加新控件. 本例在命令按钮的click事件代码中,使用系统基类grid动态创建出

看实例学VFP:同时向两个表中添加记录

本文利用看实例学VFP:利用多个表中的字段创建新表这个实例中的知识来制作一个文本式录入表单的简单示例,通过这个表单可以同时向"数据1"数据库中的"网站信息表"和"附加信息表"这两个表中添加记录,并且对录入的数据可以选择"保存"."添加"或"撤消".这两个表的索引字段分别是"编号"和"网站编号",这两个字段的内容是完全相同的,只是分别处于两个表中,并

mysql alter table命令修改表结构实例_Mysql

mysql实例之使用alter table命令修改表结构 mysql alter table语句可以修改表的基本结构,例如添加字段.删除字段.添加主键.添加索引.修改字段数据类型.对表重命名等等操作,本文章通过两个简单的实例向大家介绍mysql alter table的使用方法  实例一:使用ALTER TABLE命令向表中添加字段.修改字段类型以及设置主键. 首先创建一个表,SQL语句如下: mysql> CREATE TABLE myTable( -> ID SMALLINT ->

看实例学VFP:用sql命令创建表

本文是一个在vfp中使用sql命令创建表的实例.用sql命令创建表结构的格式如下: create table 表名 (字段名1 类型(宽度[,小数位]),字段名2 类型(宽度[,小数位]),-) 在看实例学VFP:示例数据库一文中已经给出了"网站信息表"的表结构如下表: 字段名 类型 宽度 编号 字符型 5 网站名称 字符型 12 网站网址 字符型 24 那么我要创建相同的表结构并且表名为"网站信息表2"的sql命令如下: create table 网站信息表2 (

看实例学VFP:对数据表中记录进行修改

本例运行时表单上用于接收数据的文本框被隐藏,"修改"按钮禁用,如下图: 在组合框中选择要查找的字段,在文本框中输入查找内容后单击右侧的"查找"按钮后将查找结果显示在上方的表格中,"查找"按钮被禁用,同时激活"修改"按钮及用于接收数据的文本框,并将当前记录(满足查询条件的记录)的值同时显示在文本框中,如下图: 单击"修改"按钮后会对输入的值做判断,如果满足非空的条件,则用表单文本框中的值修改"网站信

看实例学VFP:进度条控件

我们在使用Windows系统的时候,如果复制一个较大的文件或者是从网上下载东西,在复制或下载的过程中都会出现一个对话框,并且在该对话框中会有一个进度条来显示复制或下载的进度.在vfp可以使用进度条控件(ProcessBar)来实现类似的功能,有的场合下可以用到它,比如软件包含了数据备份的功能,可以用它来显示备份的进度.但是这个控件的使用不是必须的,使用它无非是可以让你编的东西看起来更专业些. 进度条控件有几个比较重要的属性,如下: min:进度条的最小值,默认为0. max:进度条的最大值,默认

看实例学VFP:去除查询结果中的重复记录

在看实例学VFP:将查询结果输出为表或文本文件以及之前的几个关于select语句应用的例子中,组合框控件Combo1的数据方面的属性我们是这样设置的:RowSourceType属性值设置为"1-值",RowSource属性值设置为"部门,性别,学历",即在设计时已经将组合框控件的数据源固定了.但这种处理方式在有的情况下是不合理的,比如本文要做这样一个例子:希望在运行时可以在组合框控件里选择"部门",按"部门"来查询.我们已经知

看实例学VFP:将查询结果输出为表或文本文件

在看实例学VFP:对查询结果进行汇总这个例子中,汇总结果是显示在表格控件中的.本文对这个例子再做进一步的改进,可以在运行时选择"数据表"或"文本文件",使之在把汇总结果显示到表格控件中的同时,将查询结果输出为"查询结果.DBF"或"查询结果.txt". 本例应用到了select语句中的Group By子句的知识,关于select语句请参考:select SQL 命令 或sql语言教程.本例应用到了数据环境,并使用"数