回 帖 发 新 帖 刷新版面

主题:请教关于表单中一对多关联的两个表彻底删除的问题?

一个表单的数据环境加入了两个相互关联的表,一个子表,一个父表,父表对子表是一对多关联。在用PACK命令作删除操作时,虽然用代码又重新建立了关联,但表格中的记录还是不随主表中的记录变化,请各位楼主帮忙解决一下?代码如下:
select ygbiao
*ygbiao是子表名
thisform.grdygbiao.readonly=.f.
getid=alltrim(thisform.grdygbiao.column2.text1.value)
*存储当前员工的编号
getno=thisform.combo1.listindex
thisform.grdygbiao.recordsource=""

use ygbiao exclusive
set order to ygbianhao
seek getid
delete
pack
use ygbiao shared
set order to ygbianhao
select bumeng
*bumeng是主表名
set order to bumengbian
set relation to ygbianhao into ygbiao
set skip to ygbiao
thisform.grdygbiao.recordsource="ygbiao"
thisform.grdygbiao.refresh
thisform.combo1.listindex=getno
thisform.combo1.setfocus

回复列表 (共4个回复)

沙发

给你个思路:
SELECT 父表
SCAN 
cStr = 父表.关联字段
dele in 父表 
dele in 子表 where 子表.关联字段 = cStr
endsan

板凳


我只是需要在子表中删除记录,而主表中的记录不变。我用了pack命令后,主表和子表就不关联了。我在删除记录之前,先断开子表表格中的数据源grid1.recordsource="",然后让子表独占,再用的pack,用完以后,再连上表格中的数据源。grid1.recordsource=子表别名,过后我不论让子表独占还是共享打开,用set relation to 表达式 into 子表,还有用set skip to 子表立一对多关联,都不行,主表和子表显示都不正常,在表单中,我用的是一个下拉组合框显示的主表记录,一个表格显示的子表中和主表关联的记录。你说的那种方法,是要删除主表中的记录,而且子表中的相关记录也都要删除完,而我需要的是物理删除子表中的一个记录后,表单仍然显示正常。这个问题困扰我好多天了,一直没有想出来,麻烦你多想想,请教你了。

3 楼

dele in 父表   注释掉就可以了

4 楼


此题已解决,我想了好久,终于还是自己解决了,无论如何也谢谢你了。解决的办法是:不要用set skip to 语名,这个语名在命令窗口里也只能是显示一个记录,而用在表单里,则显示就不正常了,我们只设置关联,set relation to 语名就行了,这样就能用pack命令正常的连接上了。

我来回复

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