以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关联表代码修改  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179042)

--  作者:wukangppbb
--  发布时间:2022/8/4 11:55:00
--  关联表代码修改
请求怎么修改?

Dim dr As DataRow
If dr.current IsNot Nothing Then
    Dim r As Row = Tables("评价程序表").addnew()
    r("评价任务编号") = dr("任务编号")
    forms("评价信息窗口").open()
Else
    Messagebox.show("没有选中行")
End If
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2022/8/4 11:57:00
--  
这代码要做什么功能?在什么事件的?
--  作者:wukangppbb
--  发布时间:2022/8/4 12:32:00
--  回复:(有点蓝)这代码要做什么功能?在什么事件的?...
我写在菜单的Click事件里面
  • 要求的效果是: 选中表“评价任务清单”当前行  ,点击  Click  ,然后 表 “评价程序表” 新增一行 ,且 “评价任务清单” 中的 任务编号 自动填写到 “评价程序表”  中的 评价任务编号 中 。
我改成这样,但是有报错:
Dim dt As DataTable = DataTables("评价任务清单")
Dim dr As DataRow
If Tables("内部控制评价任务清单").current IsNot Nothing Then
    Dim r As Row = Tables("评价程序表").addnew()
    r("评价任务编号") = dr("任务编号")
    forms("评价信息窗口").open()
Else
    Messagebox.show("没有选中行")
End If



图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2022/8/4 14:08:00
--  
Dim dr As Row = Tables("评价任务清单").current
If dr  IsNot Nothing Then
    Dim r As Row = Tables("评价程序表").addnew()
    r("评价任务编号") = dr("任务编号")
    forms("评价信息窗口").open()
Else
    Messagebox.show("没有选中行")
End If


--  作者:wukangppbb
--  发布时间:2022/8/4 14:52:00
--  回复:(有点蓝)Dim dr As Row = Tables("评价任务清...
老师,如果我删除一行 

  • 选中表“评价任务清单”当前行  ,点击  Click  ,然后 表 “评价任务清单” 删除一行 ,且 “评价任务清单” 中的 <任务编号> 等于 “评价程序表”  中的 <评价任务编号> ,是一个“1对N”的关联关系,删除1,N全部被删除 。
  • 我写成
 Dim dr As Row = Tables("评价任务清单").current
Tables("评价任务清单").Current.Delete
    If dr  IsNot Nothing Then
           DataTables("评价程序表").deletefor("评价任务编号=\'" & e.DataRow("任务编号") & "\'")
    Else
        Messagebox.show("没有选中行")
    End If
End If

我改成这样,但是有报错


--  作者:有点蓝
--  发布时间:2022/8/4 15:52:00
--  
 Dim dr As Row = Tables("评价任务清单").current
    If dr  IsNot Nothing Then
dr .Delete
           DataTables("评价程序表").deletefor("评价任务编号=\'" & dr ("任务编号") & "\'")
    Else
        Messagebox.show("没有选中行")
    End If
End If

注意代码的顺序,先用了在判断没有任何用处。应该先判断再用

多看几遍:http://www.foxtable.com/webhelp/topics/0604.htm,不同事件e参数是不一样的,不能乱套

--  作者:wukangppbb
--  发布时间:2022/8/4 16:14:00
--  回复:(有点蓝) Dim dr As Row = Tables("评价...

老师:
      删除的时候的 一对多 的效果可以是可以了,但是删除后会出现以下两个弹窗提示,报错。
是不是因为关联表 “评价程序表” 信息删除掉了  ,但是焦点还在“评价任务清单”造成的?



图片点击可在新窗口打开查看

图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2022/8/4 16:31:00
--  
换个处理顺序
Dim dr As Row = Tables("评价任务清单").current
    If dr  IsNot Nothing Then
           DataTables("评价程序表").deletefor("评价任务编号=\'" & dr ("任务编号") & "\'")
dr .Delete
    Else
        Messagebox.show("没有选中行")
    End If
End If

--  作者:wukangppbb
--  发布时间:2022/8/4 16:54:00
--  回复:(有点蓝)换个处理顺序Dim dr As Row = Tables...
更换一下顺序以后就OK了,没有问题了.