以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [原创]代码问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=54905)

--  作者:爱相随
--  发布时间:2014/8/7 9:47:00
--  [原创]代码问题
老师,我有ZJJHB和ZJSQB,以ZJJHBH表的JHBH和ZJSQB表的zJJHBH建立了关联,ZJSQB表的数据是由ZJJHB点击“生成单据—资金申请单”复制而来,并且在ZJJHB的逻辑列“JZ“列设置标记为TRUE,现在,如果在ZJSQB里把单据删除了(就是找不到关联的ZJJHBH了),则要求的ZJJHB的逻辑列变为FALSE。请老师帮忙编写一下代码,谢谢!!
[此贴子已经被作者于2014-8-7 9:48:51编辑过]

--  作者:Bin
--  发布时间:2014/8/7 9:48:00
--  

BeforeDeleteDataRow 事件

找到对应行,设置为Flase即可


--  作者:爱相随
--  发布时间:2014/8/7 9:50:00
--  
请老师帮助贴出代码,谢谢
--  作者:Bin
--  发布时间:2014/8/7 9:52:00
--  
你这表名看晕人.你懂写复制,自然也懂写这个. 利用FINd找到对应的行即可

如果是子父表关系,直接获取父行GetParentRow 即可

搞不定请上例子.

--  作者:有点甜
--  发布时间:2014/8/7 9:54:00
--  

Dim dr As DataRow = DataTables("ZJJHB").Find("产品编号 = \'" & e.DataRow("产品编号") & "\'")
If
dr IsNot Nothing Then
    e.Datarow("JZ") = False

End
If


--  作者:爱相随
--  发布时间:2014/8/7 9:55:00
--  
好吧,谢谢老师指点。。。
--  作者:czy
--  发布时间:2014/8/7 9:57:00
--  
也可以在将子表的逻辑列改为表达式列,然后设置表达式为:iif(Parent(关联表名称)._Identify > 0,true,false)
--  作者:爱相随
--  发布时间:2014/8/7 11:00:00
--  
老师,我在”资计划表“里有一行资金申请计划,有一列判断是否进行过付款申请,如果点击”生成单据—付款申请单“,则将选择的行将设定的列内容自动复制到资金申请表里,同时逻辑列自动变为TRUE,现在是,如果我把刚才复制过去的行删除了,则希望逻辑列的值自动改为FALSE。两个表都有JHBH列,并以此进行了关联。在资金计划表的DataColChanged里设了了如下代码,但好像不行,是代码放置的地方不对,还是代码有问题,请老师指点,麻烦了。。。
If e.DataCol.Name = "jhbh" Then \'如果内容发生变动的是JHB
Dim dn As DataRow
        \'在资金申请表查找同名的计划编号(JHBH)行,将找到的行赋值给变量dr
        dn = DataTables("zjsqb").Find("[jhbh] = \'" & e.NewValue & "\'")
        If dn IsNot Nothing Then \'如果找到了同名的计划编号行,也就是dr不是Nothing
            e.DataRow("jz") = True
       Else
            e.DataRow("jz") = False
       End If
End If
[此贴子已经被作者于2014-8-7 11:03:00编辑过]

--  作者:有点甜
--  发布时间:2014/8/7 11:05:00
--  

 

[此贴子已经被作者于2014-8-7 11:07:35编辑过]

--  作者:有点甜
--  发布时间:2014/8/7 11:08:00
--  

写在BeforeDeleteDataRow事件

 

Dim dn As DataRow = DataTables("zjsqb").Find("[jhbh] = \'" & e.DataRow("jhbh") & "\'")
If dn IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
    dn("jz") = False
End If