Welcome

首页 / 软件开发 / VFP / 看实例学VFP:用sql语句向数据表中添加记录

看实例学VFP:用sql语句向数据表中添加记录2009-02-08 本站 老马用sql语句向数据表中插入记录的格式为:

INSERT INTO [数据库名!] 表名 [(字段名表)] VALUES (表达式表)

关于Insert语句的格式及用法请参考:。

本例对一例的插入数据部分用sql语句进行了改写,运行界面如下图:

本例用到了“数据1”数据库中的“网站信息表”,关于该数据库的情况已经在一文中给出,这里不再详述。

制作步骤如下:

一、新建表单form1,并将其Caption属性值设为“用sql语句向数据表中添加记录”,AutoCenter属性值设置为.t.,widht属性值设为290,height属性值设为210,将其保存为“用sql语句向数据表中添加记录.scx”。

二、向表单添加一个grid控件,将其readonly属性设置为.t.,其RecordSourceType值采用默认的“1-别名”,在表单设计器中将其宽和高粗略调小一些即可,具体属性值我们将在表单的init事件代码中对其进行设置。

三、向表单添加三个Label控件,其属性值依次设置为“编号”、“网站名称”和“网站网址”,将这三个控件排成一列;在这一列Label控件右侧添加三个文本框控件,属性值不用设置采用默认即可,也把它们排成一行;在第一个文本框的右侧添加两个命令按钮command1和command2,其Caption属性值依次设置为“添加”和“退出”。适当调整一下各控件的大小和位置,“表单设计器”如下图所示:

 

四、添加事件代码:

(一)表单form1的unload事件:

set exact off
close data

(二)表单form1的init事件:

set exact onset talk offuse 网站信息表this.Text1.value=""this.Text2.value=""this.Text3.value=""with this.grid1.width=290.height=110.left=0.top=0.recordsource="网站信息表".deletemark=.f..visible=.t..readonly=.t..ColumnCount=3.Column1.Header1.Caption="编号".Column1.Header1.BackColor=RGB(255,255,190).Column2.Header1.BackColor=RGB(255,255,190).Column2.Header1.Caption="网站名称".Column3.Header1.BackColor=RGB(255,255,190).Column3.Header1.Caption="网站网址".Column1.width=75.Column2.width=80.Column3.width=150endwiththis.grid1.Setall("DynamicBackColor","RGB(224,225,255)","Column")calculate max(编号) to maxbh&&在数据表中查找出序号最大的记录szbh=val(right(maxbh,3))&&取出数字部分if szbh=0 then &&判断数字部分是否为0 zdbh="wz001"else zdbh="wz"+padl(alltrim(str(szbh+1)),3,"0") &&生成自动编号endifthis.Text1.value=zdbhthis.Text1.readonly=.t.this.Text2.setfocus
(三)命令按钮command1(“添加”按钮)的click事件代码:

b=alltrim(thisform.Text2.value)c=alltrim(thisform.Text3.value)if empty(b) &&此条件成立则说明该文本框是空的 messagebox("请输入网站名称",16,"系统提示") returnelselocate for 网站名称=bif .not.eof() &&此条件成立,说明要添加的内容和表中有重复的go topmessagebox("不允许有重复的网站名称",16,"系统提示")returnendifendifif empty(c) messagebox("请输入网站网址",16,"系统提示") returnelselocate for 网站网址=cif .not.eof()go topmessagebox("不允许有重复的网站网址",16,"系统提示")returnendifendifmsg=messagebox("确定要添加记录吗?",32+4,"系统提示")if msg=6 INSERT INTO 网站信息表; (编号,网站名称,网站网址) ; VALUES(alltrim(thisform.Text1.value),; alltrim(thisform.Text2.value),; alltrim(thisform.Text3.value)) messagebox("保存记录成功!",64,"系统提示")thisform.grid1.refreshcalculate max(编号) to maxbh&&在数据表中查找出序号最大的记录szbh=val(right(maxbh,3))&&取出数字部分if szbh=0 then&&判断数字部分是否为0zdbh="wz001"elsezdbh="wz"+padl(alltrim(str(szbh+1)),3,"0")&&生成自动编号endifthisform.Text1.value=zdbhthisform.Text2.value=""thisform.Text3.value=""thisform.Text2.setfocusthisform.refreshendif
(四)命令按钮command2(“退出”按钮)的click事件代码:thisform.release

五、运行“用sql语句向数据表中添加记录.scx”。

参考资料:

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