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


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

主题:求助

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


加好友 发短信
等级:小狐 帖子:314 积分:3043 威望:0 精华:0 注册:2014/3/21 17:22:00
求助  发帖心情 Post By:2018/4/23 14:50:00 [显示全部帖子]

使用外部数据源,表A是外部数据源的表,打开项目时表A不加载任何数据,项目打开后在表A中录入一行数据保存,再加载表A的所有数据,为什么新录入的一行数据不在表A的最后一行?如何使新录入的数据在表A的最后?

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


加好友 发短信
等级:小狐 帖子:314 积分:3043 威望:0 精华:0 注册:2014/3/21 17:22:00
  发帖心情 Post By:2018/4/23 17:02:00 [显示全部帖子]

那该表就不能插入行了,如果要插入行该怎么办?

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


加好友 发短信
等级:小狐 帖子:314 积分:3043 威望:0 精华:0 注册:2014/3/21 17:22:00
  发帖心情 Post By:2018/4/23 17:13:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case
"收入","支出"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc")
'找出上一行
        If dr Is Nothing Then
'如果没有找到上一行,说明本行就是第一行
           
'计算之前的结存
            Dim jk As Double
            Dim ck As Double
            jk =  DataTables(
"表A").SQLCompute("Sum(收入)","[_SortKey] < " & e.DataRow("_SortKey"))
            ck =  DataTables(
"表A").SQLCompute("Sum(支出)","[_SortKey] < " & e.DataRow("_SortKey"))
            e.DataRow(
"余额") = e.DataRow("收入") - e.DataRow("支出") + jk -ck
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
'重算余下行的余额
            drs(i)(
"余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
       
Next
End
Select

那么这段代码不是没用了吗?


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


加好友 发短信
等级:小狐 帖子:314 积分:3043 威望:0 精华:0 注册:2014/3/21 17:22:00
  发帖心情 Post By:2018/4/24 8:15:00 [显示全部帖子]

_Sortkey列已删除怎么查找最大的_Sortkey值?如何赋值?

上述DataColChanged事件代码怎么改?

请老师明示.
[此贴子已经被作者于2018/4/24 8:29:07编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狂风暴雨狂波
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:314 积分:3043 威望:0 精华:0 注册:2014/3/21 17:22:00
  发帖心情 Post By:2018/4/24 9:15:00 [显示全部帖子]

假如3月4月5月数据已录入,现在发现4月有笔收入数据未录入,打开项目未加载任何数据,现在录入4月数据保存后,再加载所有数据,如何使新录入的4月份的数据移到4月数据中去而不是放到最后,如何写DataRowAdded事件代码?

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


加好友 发短信
等级:小狐 帖子:314 积分:3043 威望:0 精华:0 注册:2014/3/21 17:22:00
  发帖心情 Post By:2018/4/24 16:19:00 [显示全部帖子]

以下是引用有点甜在2018/4/24 8:53:00的发言:

1、不要删除_Sortkey列。

 

2、DataRowAdded事件,写代码

 

e.DataRow("_Sortkey") = e.DataTable.SqlCompute("max(_Sortkey)")

e.DataRow.Save

增加行时出现如下提示:
图片点击可在新窗口打开查看此主题相关图片如下:运行错误提示.bmp
图片点击可在新窗口打开查看


 


图片点击可在新窗口打开查看此主题相关图片如下:运行错误提示1.bmp
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/4/24 16:24:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狂风暴雨狂波
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:314 积分:3043 威望:0 精华:0 注册:2014/3/21 17:22:00
  发帖心情 Post By:2018/4/25 16:26:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:狂波财务.zip


图片点击可在新窗口打开查看此主题相关图片如下:运行错误提示1.bmp
图片点击可在新窗口打开查看

而且银行存款不计算余额.登录密码888

[此贴子已经被作者于2018/4/25 17:12:11编辑过]

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


加好友 发短信
等级:小狐 帖子:314 积分:3043 威望:0 精华:0 注册:2014/3/21 17:22:00
  发帖心情 Post By:2018/4/25 20:32:00 [显示全部帖子]

现在运行没报错了,就是没有期初结转的都能准确计算余额,有期初结转的,也就是日期为空的期末余额计算不准确.如用红线标注的银行存款

 


此主题相关图片如下:结果图.png
按此在新窗口浏览图片


DataColChanged事件代码如下:

Select Case e.DataCol.Name
    Case "科目代码","借方金额","贷方金额","借方数量","贷方数量"
If dr.IsNull("科目代码")=False Then
        Dim mr As DataRow
        Dim mrs As List(of DataRow)
        mr = e.DataTable.Find("[日期] <= #" & dr("日期") & "# And [科目代码] = '" & dr("科目代码") & "'And [纳税识别号]='" & sbh & "'",  "日期, 凭证ID")
         If mr("_Identify") = dr("_Identify") Then
            Dim tr As DataRow = DataTables("会计科目表").Find("科目代码='" & dr("科目代码") & "'And 纳税识别号 = '" & sbh &  "'")
            If tr IsNot Nothing Then
                If tr("余额方向")="借" Then
                    If dr.IsNull("凭证ID")=False Then
                        dr("期初_余额")=Nothing
                        dr("期初_数量")=Nothing
                        dr("余额_金额") = dr("期初_余额") + dr("借方金额") - dr("贷方金额")
                        dr("余额_数量") = dr("期初_数量") + dr("借方数量") - dr("贷方数量")
                        If dr("余额_金额")=Nothing Then
                            dr("余额_借或贷")="平"
                        Else
                            dr("余额_借或贷")="借"
                        End If
                        mr = dr
                    Else
                        Return
                    End If
                End If
                If tr("余额方向")="贷" Then
                    If dr.IsNull("凭证ID")=False Then
                        dr("期初_余额")=Nothing
                        dr("期初_数量")=Nothing
                        dr("余额_金额") = dr("期初_余额") + dr("贷方金额") - dr("借方金额")
                        dr("余额_数量") = dr("期初_数量") + dr("借方数量") - dr("贷方数量")
                        If dr("余额_金额")=Nothing Then
                            dr("余额_借或贷")="平"
                        Else
                            dr("余额_借或贷")="贷"
                        End If
                        mr = dr
                    Else
                        Return
                    End If
                End If
                   End If
   End If
    mrs = e.DataTable.Select("[日期] >= #" & mr("日期") & "# And [科目代码] = '" & mr("科目代码") & "'And [纳税识别号]='" & sbh & "'",   "[日期], 凭证ID")
    For i As Integer = 1 To mrs.Count - 1
        Dim tr As DataRow = DataTables("会计科目表").Find("科目代码='" & mr("科目代码") & "'And 纳税识别号 = '" & sbh &  "'")
        If tr IsNot Nothing Then
            If tr("余额方向")="借" Then
                If mrs(i).IsNull("凭证ID")=False Then
                    mrs(i)("期初_余额")=mrs(i-1)("余额_金额")
                    mrs(i)("期初_数量")=mrs(i-1)("余额_数量")
                    mrs(i)("期初_借或贷")="借"
                    mrs(i)("余额_金额") =mrs(i)("期初_余额") + mrs(i)("借方金额") - mrs(i)("贷方金额")
                    mrs(i)("余额_数量") =mrs(i)("期初_数量") + mrs(i)("借方数量") - mrs(i)("贷方数量")
                    If mrs(i)("余额_金额")=Nothing Then
                        mrs(i)("余额_借或贷")="平"
                    Else
                        mrs(i)("余额_借或贷")="借"
                    End If
                Else
                    Return
                End If
            End If
            If tr("余额方向")="贷" Then
                If mrs(i).IsNull("凭证ID")=False Then
                    mrs(i)("期初_余额")=mrs(i-1)("余额_金额")
                    mrs(i)("期初_数量")=mrs(i-1)("余额_数量")
                    mrs(i)("期初_借或贷")="贷"
                    mrs(i)("余额_金额") =mrs(i)("期初_余额") + mrs(i)("贷方金额") - mrs(i)("借方金额")
                    mrs(i)("余额_数量") =mrs(i)("期初_数量") + mrs(i)("借方数量") - mrs(i)("贷方数量")
                    If mrs(i)("余额_金额")=Nothing Then
                        mrs(i)("余额_借或贷")="平"
                    Else
                        mrs(i)("余额_借或贷")="贷"
                    End If
                Else
                    Return
                End If
            End If
        Else
            Return
        End If
    Next
    If e.DataCol.Name = "科目代码" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
        mr = e.DataTable.Find("[日期] <= #" & dr("日期") & "# And [科目代码] = '" & e.OldValue & "'And [纳税识别号]='" & sbh & "'",   "日期, 凭证ID")
        If mr Is Nothing Then
            mr = e.DataTable.Find("[科目代码] = '" & e.OldValue & "'And [纳税识别号]='" & sbh & "'", "[日期], 凭证ID")
            If mr IsNot Nothing Then
                Dim tr As DataRow = DataTables("会计科目表").Find("科目代码='" & mr("科目代码") & "'And 纳税识别号 = '" & sbh &  "'")
                If tr IsNot Nothing Then
                    If tr("余额方向")="借" Then
                        If mr.IsNull("凭证ID")=False Then
                            mr("余额_金额") =mr("期初_余额") + mr("借方金额") - mr("贷方金额")
                            mr("余额_数量") =mr("期初_数量") + mr("借方数量") - mr("贷方数量")
                            If mr("余额_金额")=Nothing Then
                                mr("余额_借或贷")="平"
                            Else
                                mr("余额_借或贷")="借"
                            End If
                        Else
                            Return
                        End If
                    End If
                    If tr("余额方向")="贷" Then
                        If mr.IsNull("凭证ID")=False Then
                            mr("余额_金额") =mr("期初_余额")+ mr("贷方金额") - mr("借方金额")
                            mr("余额_数量") =mr("期初_数量") + mr("借方数量") - mr("贷方数量")
                            If mr("余额_金额")=Nothing Then
                                mr("余额_借或贷")="平"
                            Else
                                mr("余额_借或贷")="贷"
                            End If
                        Else
                            Return
                        End If
                    End If
                Else
                    Return
                End If
            End If
        End If
    End If
    If mr IsNot Nothing Then
        mrs = e.DataTable.Select("[日期] >= #" & mr("日期") & "# And [科目代码] = '" & mr("科目代码") & "'And [纳税识别号]='" & sbh & "'",  "日期, 凭证ID")
        For i As Integer = 1 To mrs.Count - 1
            Dim tr As DataRow = DataTables("会计科目表").Find("科目代码='" & mr("科目代码") & "'And 纳税识别号 = '" & sbh &  "'")
            If tr IsNot Nothing Then
                If tr("余额方向")="借" Then
                    If mrs(i).IsNull("凭证ID")=False Then
                        mrs(i)("期初_余额")=mrs(i-1)("余额_金额")
                        mrs(i)("期初_数量")=mrs(i-1)("余额_数量")
                        mrs(i)("期初_借或贷")="借"
                        mrs(i)("余额_金额") =mrs(i)("期初_余额") + mrs(i)("借方金额") - mrs(i)("贷方金额")
                        mrs(i)("余额_数量") =mrs(i)("期初_数量") + mrs(i)("借方数量") - mrs(i)("贷方数量")
                        If mrs(i)("余额_金额")=Nothing Then
                            mrs(i)("余额_借或贷")="平"
                        Else
                            mrs(i)("余额_借或贷")="借"
                        End If
                    Else
                        Return
                    End If
                End If
                If tr("余额方向")="贷" Then
                    If mrs(i).IsNull("凭证ID")=False Then
                        mrs(i)("期初_余额")=mrs(i-1)("余额_金额")
                        mrs(i)("期初_数量")=mrs(i-1)("余额_数量")
                        mrs(i)("期初_借或贷")="贷"
                        mrs(i)("余额_金额") =mrs(i)("期初_余额") + mrs(i)("贷方金额") - mrs(i)("借方金额")
                        mrs(i)("余额_数量") =mrs(i)("期初_数量") + mrs(i)("借方数量") - mrs(i)("贷方数量")
                        If mrs(i)("余额_金额")=Nothing Then
                            mrs(i)("余额_借或贷")="平"
                        Else
                            mrs(i)("余额_借或贷")="贷"
                        End If
                    Else
                        Return
                    End If
                End If
            Else
                Return
            End If
        Next
    End If
End If
End Select

[此贴子已经被作者于2018/4/25 20:41:56编辑过]

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


加好友 发短信
等级:小狐 帖子:314 积分:3043 威望:0 精华:0 注册:2014/3/21 17:22:00
  发帖心情 Post By:2018/4/25 21:17:00 [显示全部帖子]

谢谢!

 回到顶部