Foxtable(狐表)用户栏目专家坐堂 → [求助]自动获取数据


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

主题:[求助]自动获取数据

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


加好友 发短信
等级:小狐 帖子:385 积分:2918 威望:0 精华:0 注册:2018/1/15 15:01:00
[求助]自动获取数据  发帖心情 Post By:2020/5/29 9:11:00 [只看该作者]

是这样的,有一个“申请表”、“汇总表”,通过唯一编号建立关联,在“申请表”输入数据的时候,通过查询“汇总表”中的编号自动填充部分列的内容,之前一开始功能是实现的了,期间代码没有修改过,但是这几天发现功能突然失效了,数据对不上,具体看图可以了解,麻烦解答一下,谢谢。
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

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

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

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/29 9:30:00 [只看该作者]

代码在哪个表什么事件?贴出完整代码!

申请表同一个单号是不是有多条数据?

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


加好友 发短信
等级:小狐 帖子:385 积分:2918 威望:0 精华:0 注册:2018/1/15 15:01:00
  发帖心情 Post By:2020/5/29 10:57:00 [只看该作者]

代码在“申请表”啊,根据申请表“编号”列当前行内容的变化去查找“汇总表”的编号,再填入对应的信息,表单输入信息是一对一的

With Tables("预算使用申请表").Current
    '    Dim r As Row = Tables("预算使用申请表").Current
    If .IsNull("预算编号") = False Then
        Dim r As Row = Tables("预算使用申请表").Current
        '        Dim dr As DataRow
        Dim dr1 As DataRow
        '        dr = DataTables("基础预算表").Find("[预算编号] = '" & Tables("预算使用申请表").Current("预算编号") & "'")
        '        If dr IsNot Nothing Then
        '            r("预算项目名称") = dr("项目名称")
        '            r("预算金额") = dr("预算金额")
        '            r("一级科目") = dr("一级科目")
        '            r("二级科目") = dr("二级科目")
        '            r("三级科目") = dr("三级科目")
        '            r("四级科目") = dr("四级科目")
        '            r("五级科目") = dr("五级科目")
        '            r("预算使用说明") = dr("预算使用说明")
        '        End If
        dr1 = DataTables("预算使用情况汇总表").Find("[预算编号] = '" & Tables("预算使用申请表").Current("预算编号") & "'")
        If dr1 IsNot Nothing Then
            r("已使用金额") = dr1("预算发生数")
            r("已使用占比") = dr1("预算完成率")
            r("预算余额") = dr1("预算余额")
        End If
    End If
    '    If .IsNull("结算金额") = True Then
    '        e.DataRow.Locked = True
    '    End If
   
    '   If .IsNull("请示金额") = False Then
    '      Dim r1 As Row = Tables("预算使用申请表").Current
    '     Dim dr1 As DataRow
    '    dr1 = DataTables("预算使用情况汇总表").Find("[预算编号] = '" & Tables("预算使用申请表").Current("预算编号") & "'")
    '   r1("预算余额") = dr1("预算余额")
    ' End If
End With
'Select e.DataCol.Name
'     Case  "预算编号"
'          If e.DataRow.IsNull("预算编号") Then
'             e.DataRow("申请编号") = Nothing
'         Else
'             Dim lb As  String = e.DataRow("预算编号")
'             If e.DataRow("申请编号").StartsWith(lb) = False  '如果单据编号前缀不符
'                Dim max  As  String
'                 Dim idx  As  Integer
'                max = e.DataTable.Compute("Max(申请编号)","预算编号 = '" & lb  & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
'                If max > ""  Then  '如果存在最大编号
'                    idx = CInt(max.Substring(2,3)) + 1  '获得最大编号的后三位顺序号,并加1
'                 Else
'                     idx = 1  '否则顺序号等于1
'                 End  If
'                 e.DataRow("申请编号") = lb & Format(idx,"000") & "SQ"
'             End If
'         End  If
' End  Select
Select Case e.DataCol.Name
    Case "预算编号"
        Dim dr As DataRow
        dr = DataTables("基础预算表").Find("[预算编号] = '" & e.DataRow("预算编号") & "'")
        If dr IsNot Nothing Then
            e.DataRow("预算项目名称") = dr("项目名称")
            e.DataRow("预算金额") = dr("预算金额")
            e.DataRow("一级科目") = dr("一级科目")
            e.DataRow("二级科目") = dr("二级科目")
            e.DataRow("三级科目") = dr("三级科目")
            e.DataRow("四级科目") = dr("四级科目")
            e.DataRow("五级科目") = dr("五级科目")
            e.DataRow("预算使用说明") = dr("预算使用说明")
        End If
End Select
If e.DataCol.Name = "申请部门" Then
    If e.DataRow.IsNull("申请部门") Then
        e.DataRow("申请编号") = Nothing
    Else
        If e.DataRow.IsNull("申请日期") Then
            MessageBox.Show("请输入日期并重新填写部门!","提 示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        Else
            Dim bh As String = Format(e.DataRow("申请日期"),"yyyyMMdd") '取得编号的8位前缀
            Dim bm As String = e.DataRow("申请部门")
            If e.DataRow("申请编号").StartsWith(bh) = False '如果编号 的前8位不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.SQLCompute("Max(申请编号)","申请日期  = '" & e.DataRow("申请日期") & "' And [_Identify] <> " & e.DataRow ("_Identify")) '取得该天的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(9,3)) + 1 '获得最大编号的 后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                Select Case bm
                    Case "收费管理部"
                        bm = "01"
                    Case "综合事务部"
                        bm = "02"
                    Case "党群监审(人力)部"
                        bm = "03"
                    Case "养护工程部"
                        bm = "04"
                    Case "财务管理部"
                        bm = "05"
                    Case "路政管理部"
                        bm = "06"
                    Case Else
                        bm = "07"
                End Select
                e.DataRow("申请编号") = bh & "-" & Format(idx,"000") &  bm & "SQ"
                e.DataRow.save
            End If
        End If
    End If
End If


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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/5/29 11:23:00 [只看该作者]

不要在datacolchanged事件里使用current这种用法,如果要去当前行,使用e.DataRow

Select Case e.DataCol.Name

    Case "预算编号"
if e.DataRow.isnull("预算编号") = false
        Dim dr As DataRow
        dr = DataTables("基础预算表").Find("[预算编号] = '" & e.DataRow("预算编号") & "'")
        If dr IsNot Nothing Then
            e.DataRow("预算项目名称") = dr("项目名称")
            e.DataRow("预算金额") = dr("预算金额")
            e.DataRow("一级科目") = dr("一级科目")
            e.DataRow("二级科目") = dr("二级科目")
            e.DataRow("三级科目") = dr("三级科目")
            e.DataRow("四级科目") = dr("四级科目")
            e.DataRow("五级科目") = dr("五级科目")
            e.DataRow("预算使用说明") = dr("预算使用说明")
        End If

       dr = DataTables("预算使用情况汇总表").Find("[预算编号] = '" & e.DataRow("预算编号") & "'")
        If dr IsNot Nothing Then
            r("已使用金额") = dr("预算发生数")
            r("已使用占比") = dr("预算完成率")
            r("预算余额") = dr("预算余额")
        End If
end if
End Select

 回到顶部