Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共23 条记录, 每页显示 10 条, 页签: [1] [2][3]
[浏览完整版]

标题:跨表统计

1楼
13775189031 发表于:2024/11/25 16:04:00
请教老师:“原材料采购明细表”中“到齐”列全部勾选,则“预算清单”中的“当前进展_完成"自动打钩,只要“原材料采购明细表”“到齐”列有任何一行未打钩,则“预算清单”中的“当前进展_完成"都不打钩
下面的代码有什么问题?“预算清单”没有自动勾选
Select Case e.DataCol.name
    Case "预算编号"
        If e.DataRow.IsNull("预算编号") Then
            DataTables("原材料采购明细表").DeleteFor("预算编号='" & e.DataRow("预算编号") & "'")
            e.DataRow("当前进展_完成") = False
        Else
            If e.DataRow.GetChildRows("原材料采购明细表").Count > 0
                Dim cnt As Integer = DataTables("原材料采购明细表").Compute("count(预算编号)","预算编号='" & e.NewValue  & "' and (到齐 = False )")
                e.DataRow("当前进展_完成") = (cnt=0)
            End If
        End If
End Select
2楼
有点蓝 发表于:2024/11/25 16:24:00
http://www.foxtable.com/webhelp/topics/1472.htm

"原材料采购明细表"datacolchanged事件

Select Case e.DataCol.Name
    Case
 "
到齐"
        
Dim pr As DataRow
        pr = 
DataTables("
预算清单").Find("预算编号 = '" & e.DataRow("预算编号") & "'")
        If
 pr IsNot Nothing Then
            DataTables
("
预算清单").DataCols("预算编号").RaiseDataColChanged(pr)
        End
 If
End
 Select
3楼
13775189031 发表于:2024/11/25 16:49:00
很奇怪,点击“到齐”会自动增加一行

Dim dr2 As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "到货_数量"
        If dr2.IsNull("到货_数量") = False Then '如果数量或单价为空
            dr2("收货人") = User.name
        Else
            dr2("收货人") = Nothing
        End If
    Case "到齐"
        Dim dr As DataRow = DataTables("预算清单").Find("[预算编号] = '" & e.DataRow("预算编号") & "'")
        If dr IsNot Nothing Then
            DataTables("预算清单").DataCols("预算编号").RaiseDataColChanged(dr)
        End If
End Select
4楼
有点蓝 发表于:2024/11/25 17:05:00
和这里代码没有关系,检查其它地方代码
5楼
13775189031 发表于:2024/11/26 10:56:00
请老师帮忙看下,哪里的问题,在"原材料采购明细表"中点击“到全”就会增加行,而且“预算清单”中也无法显示“到全”(“到全”的列名就是“当前进展_完成”)
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:模块事业部采购管理台账.foxdb

6楼
13775189031 发表于:2024/11/26 10:57:00
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:采购管理台账数据库.rar

7楼
有点蓝 发表于:2024/11/26 11:11:00
开发者密码?
8楼
13775189031 发表于:2024/11/26 11:23:00
147258
9楼
有点蓝 发表于:2024/11/26 11:54:00
代码的逻辑有问题,总共判断了3个表,但是代码是先后的顺序,并不是同时满足,或者满足其中一个的关系。

这种代码最终只有最后一段有效,也就是判断"电气外购件采购明细表"这个表,前面2个表的判断完全没有用处的

Select Case e.DataCol.name
    Case "预算编号"
        If e.DataRow.IsNull("预算编号") Then
            DataTables("原材料采购明细表").DeleteFor("预算编号='" & e.DataRow("预算编号") & "'")
            e.DataRow("当前进展_完成") = False
        Else
            MsgBox("count=" & e.DataRow.GetChildRows("原材料采购明细表").Count)
            If e.DataRow.GetChildRows("原材料采购明细表").Count > 0
                Dim cnt As Integer = DataTables("原材料采购明细表").Compute("count(预算编号)", "预算编号='" & e.NewValue & "' and (到全 = False )")
                MsgBox("cnt=" & cnt)
                e.DataRow("当前进展_完成") = (cnt=0)
            End If
        End If
End Select

Select Case e.DataCol.name
    Case "预算编号"
        If e.DataRow.IsNull("预算编号") Then
            DataTables("机械外购件采购明细表").DeleteFor("预算编号='" & e.DataRow("预算编号") & "'")
            e.DataRow("当前进展_完成") = False
        Else
            If e.DataRow.GetChildRows("机械外购件采购明细表").Count > 0
                Dim cnt As Integer = DataTables("机械外购件采购明细表").Compute("count(预算编号)","预算编号='" & e.NewValue  & "' and (到全 = False)")
                e.DataRow("当前进展_完成") = (cnt=0)
            End If
        End If
End Select

Select Case e.DataCol.name
    Case "预算编号"
        If e.DataRow.IsNull("预算编号") Then
            DataTables("电气外购件采购明细表").DeleteFor("预算编号='" & e.DataRow("预算编号") & "'")
            e.DataRow("当前进展_完成") = False
        Else
            If e.DataRow.GetChildRows("电气外购件采购明细表").Count > 0
                Dim cnt As Integer = DataTables("电气外购件采购明细表").Compute("count(预算编号)","预算编号='" & e.NewValue  & "' and (到全 = False)")
                e.DataRow("当前进展_完成") = (cnt=0)
            End If
        End If
End Select
10楼
13775189031 发表于:2024/11/26 12:54:00
那要怎么修改能够同时满足?我把后面两段代码删掉以后,“原材料采购明细表”点击“到全”,还是会生成行

[此贴子已经被作者于2024/11/26 13:12:56编辑过]
共23 条记录, 每页显示 10 条, 页签: [1] [2][3]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02930 s, 4 queries.