以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]在不同dataset中的表之间不能建立关系  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175866)

--  作者:13568406997
--  发布时间:2022/3/22 14:25:00
--  [求助]在不同dataset中的表之间不能建立关系
图片点击可在新窗口打开查看


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


这么普通的一句代码怎么会出这么高深的问题,什么原因呢?求大神指点一下可能有哪些原因


--  作者:有点蓝
--  发布时间:2022/3/22 14:28:00
--  
贴出按钮完整代码

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=150626

--  作者:13568406997
--  发布时间:2022/3/22 14:37:00
--  

\'检查数据
Dim drw As DataRow
Dim clb As WinForm.ColorLabel
If DataTables("订单物品临时表").DataRows.count=0 Then
    messagebox.show("您尚未添加任何商品!")
    Return
End If
Dim i%
For Each drw In DataTables("订单物品临时表").DataRows
    i=i+1
    
    If drw("产品号")="" Then        
        messagebox.show("第" & i & "行" & drw("产品号") &"产品号为空,请处理完毕再保存!")        
        Return
    End If
    If Functions.Execute("isExistProduct",drw("产品号"))=False Then        
        messagebox.show("第" & i & "行" & drw("产品号") &"不在商品表中,在保存之前请保证数据的正确性!")        
        Return
    End If
Next drw

\'检查订单
Dim strkfh As String=e.Form.Controls("cmbCid").value        \'客户号
Dim strht As String=e.Form.Controls("cmbContractID").value  \'合同号
Dim strgh As String=e.Form.Controls("cmbMerchandiser").value \'工号
Dim dtjd As Date=e.Form.Controls("dtTakeOrder").value    \'接单日期
\'Dim dtjh As Date=e.Form.Controls("dtDelivery").value     \'交货日期
Dim fahuo As String=e.Form.Controls("cmbfhqd").value     \'发货渠道
\'Dim dblje As Double=e.Form.Controls("TextBox6").value
Dim dr As DataRow
Dim dr2 As DataRow

If e.Form.Controls("rdb追加").checked=False Then \'不是追加订单则执行检查
\'检查订单号是否重复
    Dim max订单号 As Integer=DataTables("订单表").Compute("Max(订单号)")+1
    If e.Form.Controls("tbxoid").value<max订单号 Then
        e.Form.Controls("tbxoid").value=max订单号 
        messagebox.show("当前订单号已经被使用,订单号修改为:" & max订单号)
    End If
    If strkfh="" Then
        messagebox.show("订单客户未填写!")
        Return
    End If
\'messagebox.show(1)
    If strht="" Then
        messagebox.show("订单合同未填写!")
        Return
    End If
\'messagebox.show(2)

    If fahuo="" Then
        messagebox.show("发货渠道未填写!")
        Return
    End If
\'messagebox.show(3)
    Dim t As timespan=Today()-dtjd.Date
\'messagebox.show(t.Totaldays)
    If t.TotalDays>10 Then
        messagebox.show("订单中接单日期为10天之前!")
        Return
    End If
Else
    Dim dr追加 As DataRow= DataTables("订单表").Find("订单号=" & e.Form.Controls("tbxoid").value)
    If dr追加 Is Nothing Then 
        messagebox.show("您追加的订单不存在,请检查订单号是否正确!")
        Return
    End If
End If
\'messagebox.show(7)
\'检查全部数据的合规性


--  作者:13568406997
--  发布时间:2022/3/22 14:37:00
--  
i=1
For Each dr In DataTables("订单物品临时表").dataRows
    If dr("清单号")="" Then
        messagebox.show("订单物品第"& i &"行清单号为空!")
        Return
    End If
    \'messagebox.show(8)
    If dr("订单号")<=0 Then
        messagebox.show("订单物品第"& i &"行订单号为空!")
        Return
    End If
    \'messagebox.show(9)
    If dr("产品号")="" Then
        messagebox.show("订单物品第"& i &"行产品号为空!")
        Return
    End If
    \'messagebox.show(10)
    If dr("数量")=0 Then
        messagebox.show("订单物品第"& i &"行数量为0!")
        Return
    End If
    \'If dr("数量")=dr("未派单数量") Then
        \'messagebox.show("订单物品第"& i &"行未派单数量不等于物品数量!")
        \'Return
    \'End If
    \'
    \'messagebox.show(11)
    If dr("单价")=0 Then
        messagebox.show("订单物品第"& i &"行单价为0!")
        Return
    End If
    \'messagebox.show(12)
    \'t=dr("交货期限")-Today
    \'If  t.TotalDays<3 Then
        \'messagebox.show("订单物品第"& i &"行交货期限距离今天不足三天,请检查数据!")
        \'Return
    \'End If
    \'messagebox.show(13)
    If dr("收货客户编号")="" Then
        messagebox.show("订单物品第"& i &"行收货客户编号未填写!")
        Return
    End If
    \'messagebox.show(14)
    If dr("发货渠道编号")<=0 Then
        messagebox.show("订单物品第"& i &"行发货渠道未填写!")
        Return
    End If
    \'messagebox.show(15)
    If dr("折扣")<0 Or dr("折扣")>1 Then
        messagebox.show("订单物品第"& i &"行折扣超过允许范围!")
        Return
    End If
    If dr("折扣")=0 Then
        messagebox.show("订单物品第"& i &"行折扣率为0,请先将商品折扣率登记!")
        Return
    End If
    \'messagebox.show(16)
    If dr("金额")=0 Then
        messagebox.show("订单物品第"& i &"行金额为0!")
        Return
    End If
    i=i+1
Next dr
\'保存订单
\'messagebox.show(161)
If e.Form.Controls("rdb追加").checked=False Then \'不是追加订单则添加订单
\'messagebox.show(162)
    dr  = DataTables("订单表").addnew
\'messagebox.show(163)
    dr("订单号")=e.Form.Controls("tbxoid").value
\'messagebox.show(164)
    dr("客户编号")=Functions.Execute("intClientNameToId",e.Form.Controls("cmbCid").value)
\'messagebox.show(165)
    dr("合同编号")=strht
\'messagebox.show(166)
    dr("跟单员工号")=Functions.Execute("strGetEmployeeID",e.Form.Controls("cmbMerchandiser").value)
\'messagebox.show(166)
    dr("录单员工号")=Functions.Execute("strGetEmployeeID",e.Form.Controls("tbxLDYG").value)
\'messagebox.show(167)
    dr("当前状态")=1
\'messagebox.show(168)
    dr("接单日期")=e.Form.Controls("dtTakeOrder").value
\'messagebox.show(169)
\'\'dr("交货期限")=e.Form.Controls("dtDelivery").value
    dr("发货渠道号")=Functions.Execute("intGetConsignmentID",fahuo)
\'messagebox.show(170)
    dr("订单总体折扣率")=e.Form.Controls("ncb订单总体折扣").value
End If
\'dr("金额")=e.Form.Controls("TextBox6").value
\'messagebox.show(17)
SystemReady =  False
For Each dr2 In DataTables("订单物品临时表").dataRows
    \'dr("金额")=dr("金额")+dr2("金额")
    Dim drDD As DataRow=DataTables("订单物品清单").addnew
    \'messagebox.show(dr2("清单号"))
    drDD("清单号")=dr2("清单号")
    drDD("订单号")=dr2("订单号")
    drDD("产品号")=dr2("产品号")
    
    drDD("数量")=dr2("数量")
    drDD("未派单数量")=dr2("数量")
    drDD("单价")=dr2("单价")
    drDD("交货期限")=dr2("交货期限")
    drDD("是否需要唯一码")=dr2("是否需要唯一码")
    drDD("收货客户编号")=Functions.Execute("intClientNameToId",dr2("收货客户编号"))
    drDD("发货渠道编号")=dr2("发货渠道编号")
    drDD("是否配件")=dr2("是否配件")
    drDD("折扣")=dr2("折扣")
    drDD("当前进度")=1
    
    
        Dim drs As List(of DataRow)
        drs=drdd.GetChildRows("订单唯一码表")
        \'messagebox.show("订单唯一码表有子记录"& drs.count &"行!")
        For Each dr1 As DataRow In drs
            dr1("是否预分配")=False
            dr1("是否正式分配")=True
            dr1("生产状态")=Functions.Execute("shtGetBusinessStateID","等待派工单","订单唯一码","当前状态")
            If dr1("发货渠道编号")=0 Then dr1("发货渠道编号")=drDD("发货渠道编号")
        Next dr1
    \'messagebox.show("临时表产品号: " & dr2("产品号")  &  "   清单产品号:  "  &  drDD("产品号"))
Next dr2
DataTables("订单物品临时表").DeleteFor("[清单号]<>\'\'")
\'Functions.Execute("syncOredrOnlyCode")\'同步订单和唯一码总表
SystemReady =  True
e.Form.Controls("tbxoid").value=e.Form.Controls("tbxoid").value+1

\'Dim yn As MessageBoxButtons=messagebox.show("保存成功,继续录入选Yes,退出窗口选No.","提示",MessageBoxButtons.YesNo)
\'If yn=DialogResult.Yes Then
    \'e.Form.Controls("tbxoid").value=e.Form.Controls("tbxoid").value+1
    \'e.Form.open
\'Else
    \'e.Form.Close
\'End If

--  作者:13568406997
--  发布时间:2022/3/22 14:38:00
--  
内容有点多,分两次发的,都是同一个按钮


--  作者:13568406997
--  发布时间:2022/3/22 14:38:00
--  
图片点击可在新窗口打开查看出错的是这句


--  作者:13568406997
--  发布时间:2022/3/22 14:40:00
--  
网络卡会不会导致这个问题?


--  作者:有点蓝
--  发布时间:2022/3/22 15:03:00
--  
订单表的表事件有没有代码?全部注释掉这个表所有事件代码再测试还有没有问题?

关闭退出项目,删除项目所在的文件夹里的bin目录,然后重启项目试试。
[此贴子已经被作者于2022/3/22 15:03:04编辑过]

--  作者:13568406997
--  发布时间:2022/3/22 15:37:00
--  
好的,我试试,并不是每次都出这个问题,时不时出一次,可能跟这个有关