回 帖 发 新 帖 刷新版面

主题:在GRID中删除记录问题

各位老师:我在一个表单中有两个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个回复)

沙发

sele ltk
*加上试试
thisform.grid1.refresh
thisform.grid2.refresh
thisform.refresh

板凳


老师,我执行了
thisform.grid1.refresh
thisform.grid2.refresh
命令了,可还是不行,我觉得象是数据表的问题.

3 楼

程序没问题,问题是出在多次对表格的数据源进行修改,碎片太多,看一下数据源表是否存在三个表,相对路径设置经多次修改也会出现这种问题,最简单的解决办法是:重新建立一个表单,并且不要和原来的重名,重新做一次,OK!

4 楼

按3楼老师的办法执行了,但返回原表单后,两个GRID表格的链接没了。请再指教。

5 楼

我想:返回原表单后,还是要检查数据环境是否变了,

1.sele tt
2.sele ltk(主表)
二个数据表还打开吗?
数据源变了吗?
thisform.grid2.recordsource='tt'
thisform.grid1.recordsource='ltk'
*再试试
thisform.grid1.refresh
thisform.grid2.refresh
thisform.refresh

6 楼


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 楼


请教"thisform.Grid2.RecordSourceType=1"是什么意思?

8 楼

[quote]
请教"thisform.Grid2.RecordSourceType=1"是什么意思?[/quote]
thisform.Grid2.RecordSourceType=1
表示:
thisform.Grid2.RecordSource 指定的值。是表的别名。

9 楼

我觉得楼主的表格会变白可能是pack引起的,如果问题还没有解决的话,试一下如下的方法:
将删除标记打开 set deleted on 
delete后不要立即pack,
这样即使没有物理删除,也不会在表格中显示
在表单的unload中再打开表,执行pack。

我来回复

您尚未登录,请登录后再回复。点此登录或注册