Foxtable(狐表)用户栏目专家坐堂 → 【求助】怎么实现多个订单编号 对应新增多行呢?


  共有1747人关注过本帖树形打印复制链接

主题:【求助】怎么实现多个订单编号 对应新增多行呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【求助】怎么实现多个订单编号 对应新增多行呢?  发帖心情 Post By:2018/1/9 15:31:00 [只看该作者]

下面红色部分代码怎么实现多个订单编号 对应新增多行呢?

首先师资明细表事件代码
Select e.DataCol.Name
    Case "师傅名"
        
        Dim dr As DataRow= DataTables("订单主表").Find("安装师傅 = '"  & e.DataRow("师傅名") & "' ")
        If dr IsNot Nothing Then '如果找到, 则设置各列内容 
            e.DataRow("订单编号")= dr ("订单编号")
            e.DataRow("施工日期")=dr ("安装日期")
            e.DataRow("客户名称")=dr("客户名称")
            e.DataRow("客户地址")=dr("客户地址")

        Dim filter As String = "(安装师傅 = '"  & e.DataRow("师傅名") & "')"
        Dim d=Date.Today
        d = d.addmonths(-1)
        Dim y As Integer = d.Year
        Dim m As Integer = d.Month
        Dim dt1 As New Date(y, m, 1)
        Dim dt2 As New Date(y, m, Date.DaysInMonth(y,m)) '获取该月的最后一天

        e.DataRow("施工面积") = DataTables("订单主表").compute("sum(安装面积)", filter  & " And 订单日期 >= #" & dt1 & "# And 订单日期 <= #" & dt2 & "#")
        e.DataRow("施工费") = DataTables("订单主表").compute("sum(安装费)", filter  & " And 订单日期 >= #" & dt1 & "# And 订单日期 <= #" & dt2 & "#")

        End If

    Case "数量","施工面积","施工费"
        e.DataRow("合计")=e.DataRow("施工面积")*e.DataRow("施工费")
End Select


遍历师傅表里面的全部师傅名字并新增对应的行
Dim Vals As List(of String)
    Vals = DataTables("师傅表").GetValues("姓名")
    For i As Integer = 0 To Vals.Count - 1
        Dim dr As DataRow = DataTables("师资明细").AddNew()
        dr("师傅名") = Vals(i)
    Next


怎么实现师资明细表中的数据实现这样的效果呢?
如果订单主表中,安装师傅名字 张三  在一个月内假设有是个安装订单编号
那么 师资明细表中
张三     订单1
张三     订单2
张三     订单3
……
张三      订单10
然后在成其他师傅的名字的订单编号呢?
李四     订单1
王五     订单1


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/9 15:43:00 [只看该作者]

1、尽量不要在datacolchanged事件增加本表的行,你这样做什么逻辑?

 

2、请上传实例具体说明要做的功能。


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)1、尽量不要在datacolchanged事件增加...  发帖心情 Post By:2018/1/9 17:40:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看
要实现图二的样子   将某个师傅在所有订单主表中  参加安装的  都显示出来
比如李四 参与了三个订单主表   
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文件夹 (2).zip



[此贴子已经被作者于2018/1/9 17:41:12编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/1/9 18:09:00 [只看该作者]

没看懂你的例子。就例子的数据而言,输入什么、操作什么、最后得到什么?

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)没看懂你的例子。就例子的数据而言,...  发帖心情 Post By:2018/1/9 18:54:00 [只看该作者]

有点甜老师   思路是这样的

在师傅表里面  有张三  李四  王五   三个或者多个师傅资料

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
在订单主表里面有一下记录

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看

下面数据库是有数据的 可以直接使用
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:博航建材.zip


图片点击可在新窗口打开查看此主题相关图片如下:111.png
图片点击可在新窗口打开查看

点明细查看   会弹出新窗体  
点生成明细   会将师傅表里面的师傅名称写入  师资明细表中   然后师资明细表就会根据师傅名字去查找对应订单主表里面的记录  并将订单编号 查找出来生成多行明细表

图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看
图中123456代表的是数据库中订单编号


[此贴子已经被作者于2018/1/9 18:56:31编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106688 积分:542629 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/1/9 20:34:00 [只看该作者]

Static cnt As Integer
cnt = cnt + 1
If cnt < 2 Then
    DataTables("师资明细").datarows.Clear()
    
    Dim Vals As List(of String)
    Vals = DataTables("师傅表").GetValues("姓名")
    For i As Integer = 0 To Vals.Count - 1
        Dim drs As List(Of  DataRow) = DataTables("订单主表").Select("安装师傅='" & Vals(i) & "'","订单编号")
        If drs.Count > 0 Then
            For Each fdr As DataRow In drs
                Dim dr As DataRow = DataTables("师资明细").AddNew()
                dr("师傅名") = Vals(i)
                dr("订单编号") = fdr("订单编号")
            Next
        Else
            Dim dr1 As DataRow = DataTables("师资明细").AddNew()
            dr1("师傅名") = Vals(i)
        End If
    Next
    
Else
    MessageBox.show("一次只能一次")
    Dim 变量名 As WinForm.Button = e.Form.Controls("Button1")
    变量名.Enabled=False
End If

 回到顶部