Foxtable(狐表)用户栏目专家坐堂 → [求助]加载


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

主题:[求助]加载

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


加好友 发短信
等级:五尾狐 帖子:1005 积分:5955 威望:0 精华:0 注册:2015/6/18 5:15:00
[求助]加载  发帖心情 Post By:2023/2/24 12:31:00 [只看该作者]

老师好,下面是内部函数,在加载时行数不准确。

Dim TvwCtl As WinForm.TreeView = Args(0)   '要更新的Treeview控件
Dim TblName As String = Args(1)            '数据来源表
Dim Columns As String = Args(2)            '要构建Treeview的字段
If Tables(TblName).Rows.Count = 0 Then Return Nothing
TvwCtl.Form.StopRedraw
TvwCtl.BuildTree(Tables(TblName).DataTable,Columns)
Dim ArrColName() As String = Columns.Split("|")
For i As Integer = 0 To Ubound(ArrColName)
    If Tables(TblName).DataTable.DataCols(ArrColName(i)).IsDate Then
        For Each Nd As WinForm.TreeNode In TvwCtl.AllNodes
            Dim idx As Integer = nd.Text.IndexOf(" ")
            If idx >= 0 AndAlso Nd.Level = i Then Nd.Text = Nd.Text.SubString(0,Nd.Text.IndexOf(" "))
        Next
    End If
Next
TvwCtl.Nodes.Insert("显示所有行",0)
TvwCtl.Form.ResumeRedraw

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


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

请上传实例测试

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


加好友 发短信
等级:五尾狐 帖子:1005 积分:5955 威望:0 精华:0 注册:2015/6/18 5:15:00
  发帖心情 Post By:2023/2/24 17:47:00 [只看该作者]

老师好,我重新测试了一下下面代码有时候能把A表完全复制到B表有时候会有遗漏几行(总共3000多行)


If e.DataCol.Name = "收/支"
ElseIf e.DataRow("收/支") = "不计收支" Then
    Dim nma() As String = {"入账编号","交易时间","交易分类","交易对方","对方账号","商品说明","收/支","金额","收/付款方式","交易状态","交易订单","商家订单号","时间_年","时间_月","时间_季","时间_日","备注" } 'A表数据来源列
    Dim nmb() As String = {"入账编号","交易时间","交易分类","交易对方","对方账号","商品说明","收/支","金额","收/付款方式","交易状态","交易订单","商家订单号","时间_年","时间_月","时间_季","时间_日","备注" } 'B表数据接收列
    e.DataRow.save
    Dim dr3 As DataRow = DataTables("不计收支表").Find("入账编号  = '" & e.DataRow("入账编号") & "'")             '找到指定返回的行
    If dr3 Is Nothing Then
        dr3  = DataTables("不计收支表").AddNew
    End If
    For i As Integer = 0 To nma.Length - 1
        dr3(nmb(i)) = e.DataRow(nma(i))
    Next
  
    dr3("来源") = "手机账号3105"

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/25 8:39:00 [只看该作者]

不计收支表有重复的入账编号?

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


加好友 发短信
等级:五尾狐 帖子:1005 积分:5955 威望:0 精华:0 注册:2015/6/18 5:15:00
  发帖心情 Post By:2023/2/25 19:04:00 [只看该作者]

 老师 好,下面是入账编码的生成代码。
Select e.DataCol.Name
    Case "交易时间","编号"
        If e.DataRow.IsNull("交易时间") OrElse e.DataRow.IsNull("编号") Then
            e.DataRow("入账编号") = Nothing
        Else
            Dim d As Date = e.DataRow("交易时间")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
            Dim Days As Integer = Date.DaysInMonth(y,m)
            Dim fd As Date = New Date(y,m,1) '获得该月的第一天
            Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
            Dim bh As String = "ZF" & Format(d,"yyMM") & "" '生成编号的前缀
            If e.DataRow("入账编号").StartsWith(bh) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "交易时间 >= #" & fd & "# And 交易时间 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(入账编号)",flt) '取得该月的相同工程代码的最大单据编号
                If max > "" Then '如果存在最大单据编号
                    idx = CInt(max.Substring(bh.length,4)) + 1 '获得最大单据编号的后四位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("入账编号") = bh & Format(idx,"0000")
            End If
        End If
End Select


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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/26 19:42:00 [只看该作者]

自己多测试,找出出错的规律,什么样的情况下会有遗漏

 回到顶部