以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关闭窗口并删除关联表数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175329)

--  作者:Dxm123456789
--  发布时间:2022/3/1 12:31:00
--  关闭窗口并删除关联表数据
关闭窗口后,选择是,删除订单和订单明细,关闭窗口。  选择不是,继续编辑。  这是我写的代码,怎么总不对呀~~

Dim dd As Table = Tables("订单表").Current
Dim Result As DialogResult
Result = MessageBox.Show("你还没有提交订单,关闭窗口会取消新增订单,是否关闭?", "提示", MessageBoxButtons.YesNo,MessageBoxIcon.Warning)
If Result = DialogResult.Yes Then
    If  dd.GetChildRows("订单明细").Count > 0   then
        
        dd.Delete
        dd..GetChildRows("订单明细").Delete
     
        Forms("新订单").Close()
    End If
Else
    e.cancel = True
End If


--  作者:cd_tdh
--  发布时间:2022/3/1 12:33:00
--  

Dim dd As Table = Tables("订单表").Current

dd..GetChildRows("订单明细").Delete

试试:

Dim r As Row = Tables("订单表").Current
Dim Result As DialogResult
Result = MessageBox.Show("你还没有提交订单,关闭窗口会取消新增订单,是否关闭?", "提示", MessageBoxButtons.YesNo,MessageBoxIcon.Warning)
If Result = DialogResult.Yes Then
    Dim drs As List(Of DataRow)
    drs = DataTables("订单表").DataRows(0).GetChildRows("订单明细")
    For Each dr As DataRow In drs
        dr.Delete   \'删除订单明细表中的所有明细
    Next
    r.Delete()      \'删除订单表的当前行
    Forms("新订单").Close()
End If

 

[此贴子已经被作者于2022/3/1 12:47:27编辑过]

--  作者:有点蓝
--  发布时间:2022/3/1 14:08:00
--  
先过2遍帮助,了解基本的语法再用吧

错误1、Dim dd As Table = Tables("订单表").Current
current是指行,不能给表赋值,类型要对应
要么:Dim dd As row = Tables("订单表").Current
要么:Dim dd As Table = Tables("订单表")

错误2、GetChildRows返回的是一个集合,不是一个行,行集合没有Delete这种用法,只能通过行删除,或者考虑使用deletefor函数


--  作者:Dxm123456789
--  发布时间:2022/3/1 14:18:00
--  
这个代码关闭不了窗口,会挨个把订单和订单明细全部删掉
--  作者:有点蓝
--  发布时间:2022/3/1 14:26:00
--  
请每次都重新贴出改正后的代码说明问题
--  作者:Dxm123456789
--  发布时间:2022/3/1 21:47:00
--  
好的  谢谢老师