主题:在GRID中删除记录问题
耐若
[专家分:40] 发布于 2008-06-04 11:36:00
各位老师:我在一个表单中有两个GRID表,分别为GRID1和GRID2且通过关键字(xh和tt两个关键字)建立了关联,GRID1为父表,我通过一个按钮在下列程序中实现删除一个记录功能.
sele ltk(主表)
oopil_1=ltk.xm
yn=MESSAGEBOX("确定删除'"+oopil_1+"'",4+32,"保险管理系统")
if yn=6
xswe_x=xh
dele
thisform.grid1.recordsource=Null
pack
thisform.grid1.recordsource='ltk'
thisform.refresh
sele tt
dele all for tt.tt=xswe_x
thisform.grid2.recordsource=Null
pack
thisform.grid2.recordsource='tt'
thisform.refresh
endif
sele ltk
thisform.refresh
执行后,两个grid表均是白屏,不知什么原因,请老师们指教.谢!谢!谢!谢!谢!谢!
回复列表 (共9个回复)
沙发
alpen [专家分:1140] 发布于 2008-06-04 12:15:00
sele ltk
*加上试试
thisform.grid1.refresh
thisform.grid2.refresh
thisform.refresh
板凳
耐若 [专家分:40] 发布于 2008-06-04 14:23:00
老师,我执行了
thisform.grid1.refresh
thisform.grid2.refresh
命令了,可还是不行,我觉得象是数据表的问题.
3 楼
yjr3032570 [专家分:3360] 发布于 2008-06-04 15:11:00
程序没问题,问题是出在多次对表格的数据源进行修改,碎片太多,看一下数据源表是否存在三个表,相对路径设置经多次修改也会出现这种问题,最简单的解决办法是:重新建立一个表单,并且不要和原来的重名,重新做一次,OK!
4 楼
耐若 [专家分:40] 发布于 2008-06-04 17:50:00
按3楼老师的办法执行了,但返回原表单后,两个GRID表格的链接没了。请再指教。
5 楼
alpen [专家分:1140] 发布于 2008-06-04 18:54:00
我想:返回原表单后,还是要检查数据环境是否变了,
1.sele tt
2.sele ltk(主表)
二个数据表还打开吗?
数据源变了吗?
thisform.grid2.recordsource='tt'
thisform.grid1.recordsource='ltk'
*再试试
thisform.grid1.refresh
thisform.grid2.refresh
thisform.refresh
6 楼
cbl518 [专家分:57140] 发布于 2008-06-04 20:27:00
SELECT ltk(主表)
oopil_1=ltk.xm
IF MESSAGEBOX("确定删除'"+oopil_1+"'",4+32,"保险管理系统")=6
WITH thisform
xswe_x=ltk.xh
DELETE IN ltk
.grid1.recordsource=.Null.
PACK IN ltk
.grid1.recordsource='ltk'
.Grid1.RecordSourceType=1
.refresh
DELETE ALL FOR tt.tt=xswe_x IN tt
.grid2.recordsource=.Null.
PACK IN tt
.grid2.recordsource='tt'
.Grid2.RecordSourceType=1
.refresh
ENDWITH
ENDIF
thisform.refresh
7 楼
耐若 [专家分:40] 发布于 2008-06-05 08:45:00
请教"thisform.Grid2.RecordSourceType=1"是什么意思?
8 楼
cbl518 [专家分:57140] 发布于 2008-06-05 09:25:00
[quote]
请教"thisform.Grid2.RecordSourceType=1"是什么意思?[/quote]
thisform.Grid2.RecordSourceType=1
表示:
thisform.Grid2.RecordSource 指定的值。是表的别名。
9 楼
muchmorer [专家分:180] 发布于 2008-06-05 11:28:00
我觉得楼主的表格会变白可能是pack引起的,如果问题还没有解决的话,试一下如下的方法:
将删除标记打开 set deleted on
delete后不要立即pack,
这样即使没有物理删除,也不会在表格中显示
在表单的unload中再打开表,执行pack。
我来回复