VFP 中一对多表单命令按钮的代码实现
我建立了两个表,一个是学生表,为父表;另一个是成绩表,为子表。通过学号进行关联。父表通过文本框绑定数据源显示,子表通过表格控件绑定数据源显示数据。能够实现上一条,下一条功...
我建立了两个表,一个是学生表,为父表;另一个是成绩表,为子表。通过学号进行关联。父表通过文本框绑定数据源显示,子表通过表格控件绑定数据源显示数据。能够实现上一条,下一条功能。但是查询、修改、增加、删除实现不了。困扰了我好多天了,跪求这些按钮的实现代码,谁能帮我解决了这个问题,把分都给他。谢谢!
展开
展开全部
我认为你最好不要用绑定数据源的方式显示.我给你解决吧:
1.设定几个文件框和一个表格控件,没有任何的绑定
2.在表单的INIT事件中输入如下代码:
set date to ansi
set cent on
SET HOURS TO 24
SET EXAC ON
SET MARK TO "-"
THISFORM.GRID1.RECORDSOURCE=''
THISFORM.GRID1.READONLY=.T.
SELE 0
use 成绩表
INDEX ON 学号 TAG 成绩表
THISFORM.GRID1.RECORDSOURCE='成绩表'
THISFORM.GIRD1.REFRESH
SELE 0
USE 学生表
SET RELA TO 学号 INTO 成绩表
***以上代码是进行表单初始化
3.增加一个上一条按纽,CLICK代码如下
SELE 学生表
IF BOF()
=MESSAGEBOX("已是第一条数据",0,"提示信息")
RETURN
ENDIF
SKIP -1
THISFORM.TEXT1.VALUE=学生表.姓名
THISFORM.TEXT2.VALUE=学生表.学号
THISFORM.GRID1.REFRESH
4.增加一个下一条按纽
SELE 学生表
IF EOF()
=MESSAGEBOX("已是最后一条数据",0,"提示信息")
RETURN
ENDIF
SKIP 1
THISFORM.TEXT1.VALUE=学生表.姓名
THISFORM.TEXT2.VALUE=学生表.学号
THISFORM.GRID1.REFRESH
5.增加一个修改按纽,CLICK代码如下
THISFORM.GIRD1.READONLY=.F.
***这时就可以修改表内的成绩了,修改后的内可以保存.
6.增加一个删除按纽,CLICK代码如下:
SELE 成绩表
DELETE
THISFORM.GRID1.RECORDSOURCE=''
PACK
SELE 学生表
DELETE
PACK
THISFORM.GRID1.RECORDSOURCE='成绩表'
***这个表单是用来查询和修改\删除,增加最好用一个新表单,都在文本框内输入,再用新增按纽增加,代码是:
SELE 学生表
LOCA FOR 学号=THISFORM.TEXT1.VALUE
IF FOUND()
=MESSAGEBOX("学号已存在,不能重复增加.",0,"提示信息")
RETURN
ENDIF
APPE BLAN
REPL 学号 WITH THISFORM.TEXT1.VALUE
REPL 姓名 WITH THSIFORM.TEXT2.VALUE
SELE 成绩表
APP BLAN
REPL 学号 WITH THISFORM.TEXT1.VALUE
REPL 语文 WITH THISFORM.TEXT3.VALUE
.....
***以上代码是增加的,如果还要问题可以HI我
1.设定几个文件框和一个表格控件,没有任何的绑定
2.在表单的INIT事件中输入如下代码:
set date to ansi
set cent on
SET HOURS TO 24
SET EXAC ON
SET MARK TO "-"
THISFORM.GRID1.RECORDSOURCE=''
THISFORM.GRID1.READONLY=.T.
SELE 0
use 成绩表
INDEX ON 学号 TAG 成绩表
THISFORM.GRID1.RECORDSOURCE='成绩表'
THISFORM.GIRD1.REFRESH
SELE 0
USE 学生表
SET RELA TO 学号 INTO 成绩表
***以上代码是进行表单初始化
3.增加一个上一条按纽,CLICK代码如下
SELE 学生表
IF BOF()
=MESSAGEBOX("已是第一条数据",0,"提示信息")
RETURN
ENDIF
SKIP -1
THISFORM.TEXT1.VALUE=学生表.姓名
THISFORM.TEXT2.VALUE=学生表.学号
THISFORM.GRID1.REFRESH
4.增加一个下一条按纽
SELE 学生表
IF EOF()
=MESSAGEBOX("已是最后一条数据",0,"提示信息")
RETURN
ENDIF
SKIP 1
THISFORM.TEXT1.VALUE=学生表.姓名
THISFORM.TEXT2.VALUE=学生表.学号
THISFORM.GRID1.REFRESH
5.增加一个修改按纽,CLICK代码如下
THISFORM.GIRD1.READONLY=.F.
***这时就可以修改表内的成绩了,修改后的内可以保存.
6.增加一个删除按纽,CLICK代码如下:
SELE 成绩表
DELETE
THISFORM.GRID1.RECORDSOURCE=''
PACK
SELE 学生表
DELETE
PACK
THISFORM.GRID1.RECORDSOURCE='成绩表'
***这个表单是用来查询和修改\删除,增加最好用一个新表单,都在文本框内输入,再用新增按纽增加,代码是:
SELE 学生表
LOCA FOR 学号=THISFORM.TEXT1.VALUE
IF FOUND()
=MESSAGEBOX("学号已存在,不能重复增加.",0,"提示信息")
RETURN
ENDIF
APPE BLAN
REPL 学号 WITH THISFORM.TEXT1.VALUE
REPL 姓名 WITH THSIFORM.TEXT2.VALUE
SELE 成绩表
APP BLAN
REPL 学号 WITH THISFORM.TEXT1.VALUE
REPL 语文 WITH THISFORM.TEXT3.VALUE
.....
***以上代码是增加的,如果还要问题可以HI我
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询