Foxtable(狐表)用户栏目专家坐堂 → 求大神帮忙改代码


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

主题:求大神帮忙改代码

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/21 14:50:00 [显示全部帖子]

Select Case e.DataCol.name
    Case "第一列"
        If DataTables.Contains(e.NewValue) Then
            Dim dr As DataRow = DataTables(e.NewValue).Find("第一列 = '" & e.NewValue & "'")
            If dr Is Nothing Then
                dr = DataTables(e.NewValue).AddNew
                dr("第一列") = e.NewValue
            End If
            dr("第二列") = e.DataRow("第二列")
            dr("第三列") = e.DataRow("第三列")
        End If
    Case "第二列","第三列"
        If DataTables.Contains(e.DataRow("第一列")) Then
            Dim dr As DataRow = DataTables(e.DataRow("第一列")).Find("第一列 = '" & e.DataRow("第一列") & "'")
            If dr Is Nothing Then
                dr = DataTables(e.DataRow("第一列")).AddNew
                dr("第一列") = e.DataRow("第一列")
            End If
            dr(e.DataCol.name) = e.DataRow(e.DataCol.name)
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/21 15:12:00 [显示全部帖子]

您原来的逻辑有问题,其它表和表A通过什么数据查询关联?假如表A增加2行,第一列都是“表B”,那么表B是无条件增加2行?还是查询表B第一列有没有“表B”,有才增加?

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/21 16:07:00 [显示全部帖子]

我不懂您的具体业务。不过一般情况下没有必要一个类别建一个表单独保存吧,要是有要是有几万的类别,还要建几万个表?

表Adatacolchanged
Select Case e.DataCol.name
    Case "第一列","第二列","第三列","数量"
        If e.DataRow.IsNull("第一列") OrElse e.DataRow.IsNull("第二列") OrElse e.DataRow.IsNull("第三列") Then
        Else
            If DataTables.Contains(e.DataRow("第一列")) Then
                Dim dr As DataRow = DataTables(e.DataRow("第一列")).Find("第一列 = '" & e.DataRow("第一列") & "' and 第二列 = '" & e.DataRow("第二列") & "' and 第三列 = '" & e.DataRow("第三列") & "'")
                If dr Is Nothing Then
                    dr = DataTables(e.DataRow("第一列")).AddNew
                    dr("第一列") = e.DataRow("第一列")
                    dr("第二列") = e.DataRow("第二列")
                    dr("第三列") = e.DataRow("第三列")
                End If
                DataTables(e.DataRow("第一列")).DataCols("第一列").RaiseDataColChanged(dr)
            End If
        End If
End Select

表B,datacolchanged
Select Case e.DataCol.name
    Case "第一列","第二列","第三列"
        Dim kc As String = "第一列 = '" & e.DataRow("第一列") & "' and 第二列 = '" & e.DataRow("第二列") & "' and 第三列 = '" & e.DataRow("第三列") & "'"
        e.DataRow("数量") = DataTables("表A").Compute("sum(数量)", kc)
End Select

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/21 17:18:00 [显示全部帖子]

改为7楼的用法即可。

如果是我,一个入库表就够了,才不会搞那么麻烦。如果要看车辆库存,做个筛选就行了。

另外,一般商品会有一个专门的商品信息表,和商品单据(出入库,库存等)是分开表的,一般不会在单据表里存储商品信息,使用商品编码和商品信息表关联即可。

商品信息表会把所有商品共同的属性拿出来,放在一个表格里管理。一些特殊的商品,比如车辆,可能还会增加一个车辆表来管理,然后通过车牌号和商品信息表或者其它业务表关联,这样才是比较合理的数据库表格设计模式。

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/21 20:36:00 [显示全部帖子]

实在没搞懂到底要做成什么样子

 回到顶部