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


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

主题:求大神帮忙改代码

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


加好友 发短信
等级:婴狐 帖子:26 积分:264 威望:0 精华:0 注册:2019/9/2 23:19:00
求大神帮忙改代码  发帖心情 Post By:2020/2/21 14:34:00 [只看该作者]

我这样写的代码在表A增加行时。表A第一列内容是表B,就会在表B同时增加行;表A第一列内容是表C,就会在表C同时也会增加行(之后的表D、表E和表F都会和前面表B、C一样要同时增加行),但是我这个项目的第二列和第三列怎么不会同时添加内容,请大神帮忙改下代码,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


加好友 发短信
等级:婴狐 帖子:26 积分:264 威望:0 精华:0 注册:2019/9/2 23:19:00
  发帖心情 Post By:2020/2/21 14:56:00 [只看该作者]

 Select Case e.DataCol.name
                Case "第一列"
                    Dim dr As DataRow = DataTables("表C").Find("第一列 = '" & e.OldValue & "'")
                    If dr Is Nothing Then
                        dr = DataTables("表C").AddNew()
                        dr("第一列") = e.DataRow("第一列")
                        dr("第二列") = e.DataRow("第二列")
                        dr("第三列") = e.DataRow("第三列")
                    Else
                        dr("第一列") = e.DataRow("第一列")
                    End If
                Case "第二列","第三列"
                    Dim dr As DataRow = DataTables("表C").Find("第一列 = '" & e.DataRow("第一列") & "'")
                    If dr IsNot Nothing Then
                        dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
                    End If
            End Select


是不是把这段代码改成你那个?

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


加好友 发短信
等级:婴狐 帖子:26 积分:264 威望:0 精华:0 注册:2019/9/2 23:19:00
  发帖心情 Post By:2020/2/21 14:58:00 [只看该作者]

改成你写的这个代码,我在表A增加行,表B都没有增加行呢

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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”,有才增加?

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


加好友 发短信
等级:婴狐 帖子:26 积分:264 威望:0 精华:0 注册:2019/9/2 23:19:00
  发帖心情 Post By:2020/2/21 15:42:00 [只看该作者]

这些表都没有关联,如果关联,那么就是第一列进行关联,也就是分类进行关联。毕竟,如果用物品名称进行关联的话,在其他表中没有出现的物品名称,那么表A里面第一次录入时也找不到对应的表。
现在表A就相当于一个入库表,第一列就相当于分类列,其他表(如:表B,表C,表D,表E和表F)就是这一列里面的分类。
这样,我在物品需要入库时,就只用在表A增加一行,在添加这个物品的相关信息时,如果这个物品的分类为表B,那么这个物品的信息就自动在表B中增加,如果这个物品分类为表C,那么这个物品也能在表C中自动增加该物品的相关信息。
还有就是表A在增加两行时,第一列、第二列和第三列内容都一样是表B,那么表B里面就只增加一行,同时在数量列的数量求和。
我翻来覆去的看了帮助的跨表引用、同步输入和辅助录入这些,但还是没能知道怎么写这个代码,但是我现在一点头绪都没有。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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


加好友 发短信
等级:婴狐 帖子:26 积分:264 威望:0 精华:0 注册:2019/9/2 23:19:00
  发帖心情 Post By:2020/2/21 16:42:00 [只看该作者]

你也知道,单位有固定资产,还经常要统计车辆啊,家具啊,办公电脑这些的,所以我就想弄个这样的项目好管理这些东西。其实像家具、办公电脑和一些易耗品还好弄,因为这些只要名称一样只要加数量就好,但是车辆和通信设备就不一样了,每辆车的车架号和发动机号都不一样,通信设备也是这样,ID号不一样使用人也不一样。而且分类也不可能有那么多,我只分了几类。我还是重新发个项目给您看看吧。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


[此贴子已经被作者于2020/2/21 16:43:42编辑过]

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


加好友 发短信
等级:婴狐 帖子:26 积分:264 威望:0 精华:0 注册:2019/9/2 23:19:00
  发帖心情 Post By:2020/2/21 16:49:00 [只看该作者]

这个代码我知道,原来我也是用的这个。你也知道,单位上叫报这些的时候多,不能每次需要的时候在去统计,所以我才想了这个办法这样统一管理。如果我需要上报车辆信息的时候,我只需要打印车辆管理那个表,单位领导需要看单位物资的时候我就把库存打印出来,这不是要方便很多吗?

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


加好友 发短信
等级:婴狐 帖子:26 积分:264 威望:0 精华:0 注册:2019/9/2 23:19:00
  发帖心情 Post By:2020/2/21 16:53:00 [只看该作者]

再说我分类也就是把办公桌和电脑这些固定资产分到一起为办公家电,就分了办公家电、低值易耗、车辆管理、通信设备、警用装备这五类,也不多啊。如果我把车辆放到库存里,那么车辆的信息跟其他物品的信息也不一样,那么我的库存表得需要弄多少列呢?你说是吧。

 回到顶部
总数 17 1 2 下一页