Foxtable(狐表)用户栏目专家坐堂 → 流水账的制作


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

主题:流水账的制作

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/31 12:30:00 [显示全部帖子]

条件合并多列的内容即可

 

case "项目"

"[会计科目] + [项目] + [方向] = '" & e.datarow("会计科目") & e.Oldvalue & e.DataRow("方向") & "'"


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/31 15:00:00 [显示全部帖子]

合成的条件不同不就行了?

 

Dim flt As String

 

case "项目"

flt = "[会计科目] + [项目] + [方向] = '" & e.datarow("会计科目") & e.Oldvalue & e.DataRow("方向") & "'"

case "会计科目"

flt = "[会计科目] + [项目] + [方向] = '" & e.OldValue & e.DataRow("项目") & e.DataRow("方向") & "'"

case "方向"

flt = "[会计科目] + [项目] + [方向] = '" & e.datarow("会计科目") & e.DataRow("项目") & e.OldValue & "'"

 

不会做的话,上传实例测试。

[此贴子已经被作者于2016/1/31 15:00:41编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/31 15:42:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "会计科目","借方_数量","贷方_数量","项目","借方_金额","贷方_金额","方向"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [会计科目] = '" & mr("会计科目") & "'And [项目] = '" & mr("项目") & "'", "[_SortKey] Desc")
        If dr Is Nothing Then
            If mr("方向") = "借方" Then
                mr("余额_数量") = mr("借方_数量") - mr("贷方_数量")
                mr("余额_金额") = mr("借方_金额") - mr("贷方_金额")
                dr = mr
            Else
                mr("余额_数量") = mr("贷方_数量") - mr("借方_数量")
                mr("余额_金额") = mr("贷方_金额") - mr("借方_金额")
                dr = mr
            End If
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [会计科目] = '" & dr("会计科目") & "'And [项目] = '" & mr("项目") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            If drs(i)("方向") = "借方" Then
                drs(i)("余额_数量") = drs(i-1)("余额_数量") + drs(i)("借方_数量") - drs(i)("贷方_数量")
                drs(i)("余额_金额") = drs(i-1)("余额_金额") + drs(i)("借方_金额") - drs(i)("贷方_金额")
            Else
                drs(i)("余额_数量") = drs(i-1)("余额_数量") - drs(i)("借方_数量") + drs(i)("贷方_数量")
                drs(i)("余额_金额") = drs(i-1)("余额_金额") - drs(i)("借方_金额") + drs(i)("贷方_金额")
            End If
        Next
        msgbox(2)
        If e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            Dim flt As String = Nothing
            Select Case e.DataCol.name
                Case "项目"
                    flt = "[会计科目] + [项目] = '" & e.DataRow("会计科目") & e.Oldvalue & "'"
                Case "会计科目"
                    flt = "[会计科目] + [项目] = '" & e.OldValue & e.DataRow("项目") & "'"
            End Select
            If flt > Nothing Then
                dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And " & flt, "[_SortKey] Desc")
                If dr Is Nothing Then
                    dr = e.DataTable.Find(flt, "[_SortKey]")
                    If dr IsNot Nothing Then
                        If dr("方向") = "借方" Then
                            dr("余额_数量") = dr("借方_数量") - dr("贷方_数量")
                            dr("余额_金额") = dr("借方_金额") - dr("贷方_金额")
                        Else
                            dr("余额_数量") = dr("贷方_数量") - dr("借方_数量")
                            dr("余额_金额") = dr("贷方_金额") - dr("借方_金额")
                        End If
                    End If
                End If
                If dr IsNot Nothing Then
                    drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [会计科目] = '" & dr("会计科目") & "'And [项目] = '" & mr("项目") & "'", "[_SortKey]")
                    For i As Integer = 1 To drs.Count - 1
                        If drs(i)("方向") = "借方" Then
                            drs(i)("余额_数量") = drs(i-1)("余额_数量") + drs(i)("借方_数量") - drs(i)("贷方_数量")
                            drs(i)("余额_金额") = drs(i-1)("余额_金额") + drs(i)("借方_金额") - drs(i)("贷方_金额")
                        Else
                            drs(i)("余额_数量") = drs(i-1)("余额_数量") - drs(i)("借方_数量") + drs(i)("贷方_数量")
                            drs(i)("余额_金额") = drs(i-1)("余额_金额") - drs(i)("借方_金额") + drs(i)("贷方_金额")
                        End If
                    Next
                End If
            End If
        End If
End Select

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/1 11:12:00 [显示全部帖子]

明细表需要记录收款表的 主键(唯一编号,比如_Identify)、凭证号(多笔的情况,可以重复)

 

那么以后在明细表搜索查询的时候,直接查询主键不就行了?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/1 11:20:00 [显示全部帖子]

多笔的时候,你汇总成一条记录,还是多条记录写到明细表?

 

如果是多条记录,你直接新增一行赋值不就行了?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/1 11:30:00 [显示全部帖子]

不会变化,是固定的。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/1 11:39:00 [显示全部帖子]

凭证号你可以直接赋值收款表的单号或者主键号都可以啊。为什么要自动增加凭证号。

 

而且,你也可以根据收款表的单号查询相同单号的凭证号啊


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/1 12:14:00 [显示全部帖子]

那你明细表就存储收款表的单号,根据此单号查找是否之前已经有值,有值的,就直接赋值不需要重新生成。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/1 14:50:00 [显示全部帖子]

Select Case e.DataCol.name
    Case "日期","金额","收款方式","摘要","开户银行","收款编号"
        Dim dr As DataRow = DataTables("明细账").Find("唯一编号 = '" & e.DataRow("唯一编号") & "'")
       
        If dr Is Nothing Then
            dr = DataTables("明细账").AddNew()
        End If
        Dim fdr As DataRow = DataTables("明细账").Find("源单号 = '销售收款_" & e.DataRow("收款编号") & "'")
        dr("源单号")= "销售收款_" & e.DataRow("收款编号")
        dr("日期")=e.DataRow("日期")
        dr("借方_金额")=e.DataRow("金额")
        dr("摘要")=e.DataRow("摘要")
        If fdr IsNot Nothing Then
            e.DataRow("凭证号")=fdr("凭证号")
        End If
        e.DataRow("Identify")=dr("_Identify")
        Select Case e.DataRow("收款方式")
            Case "现金"
                dr("会计科目")="库存现金"
                dr("项目")=Nothing
            Case "银行存款"
                dr("会计科目")="银行存款"
                dr("项目")=e.DataRow("开户银行")
            Case "承兑汇piao"
                dr("会计科目")="应收piao据"
                dr("项目")=Nothing
        End Select
       
End Select

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/1 14:51:00 [显示全部帖子]

以下是引用kaituozhe在2016/2/1 14:41:00的发言:
Identify这个编号在同一台电脑上不变,把软件复制到另一台电脑上就全变了

 

_Identify在一个数据库里面是不变的,你在多个数据库肯定不唯一啊。

 

你可以自己动态生成唯一编号


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