Foxtable(狐表)用户栏目专家坐堂 → 实现“入库单在保存时自动生成会计凭证”


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

主题:实现“入库单在保存时自动生成会计凭证”

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


加好友 发短信
等级:小狐 帖子:306 积分:3860 威望:0 精华:0 注册:2017/3/25 15:34:00
  发帖心情 Post By:2018/3/12 15:52:00 [只看该作者]

max = e.DataTable.sqlCompute("Max(客户编码)","地区 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify"))

是这样改吗

 

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/12 16:07:00 [只看该作者]

以下是引用nths在2018/3/12 15:52:00的发言:

max = e.DataTable.sqlCompute("Max(客户编码)","地区 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify"))

是这样改吗

 

 

 

是的,最后还要写 e.datarow.Save


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


加好友 发短信
等级:小狐 帖子:306 积分:3860 威望:0 精华:0 注册:2017/3/25 15:34:00
  发帖心情 Post By:2018/3/12 18:50:00 [只看该作者]

老师:你好,请指教,这个e.datarow.save怎么写,写在下面代码的哪位置

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.sqlCompute("Max(客户编码)","地区 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(4,3)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("客户编码") = lb & Format(idx,"000")
               
            End If
        End If
        End Select,没写的时第一行客户编号是自动生成,但第二就不行了


 回到顶部
帅哥,在线噢!
有点蓝
  164楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107352 积分:546027 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/3/12 20:25:00 [只看该作者]

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.sqlCompute("Max(客户编码)","地区 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(4,3)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("客户编码") = lb & Format(idx,"000")
                
            End If
        End If
e.datarow.save
        End Select

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


加好友 发短信
等级:小狐 帖子:306 积分:3860 威望:0 精华:0 注册:2017/3/25 15:34:00
  发帖心情 Post By:2018/3/20 23:21:00 [只看该作者]

老师:你好!怎样才能实现勾选表A记账后,能把关联表表B按科目汇总记入表Ck中,谢谢指导!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/21 9:41:00 [只看该作者]

表A,datacolchanged事件

 

If e.DataCol.name = "记账" Then
    If e.NewValue = True Then
        For Each km As String In DataTables("表B").GetValues("科目", "日期 = #" & e.DataRow("日期") & "#")
            Dim filter = "日期 = #" & e.DataRow("日期") & "# and 科目 = '" & km & "'"
            Dim fdr As DataRow = DataTables("表C").Find(filter)
            If fdr Is Nothing Then
                fdr = DataTables("表C").addnew
                fdr("日期") =  e.DataRow("日期")
                fdr("科目") = km
            End If
            fdr("数量") = DataTables("表B").Compute("sum(数量)", filter)
        Next
    End If
End If


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


加好友 发短信
等级:小狐 帖子:306 积分:3860 威望:0 精华:0 注册:2017/3/25 15:34:00
  发帖心情 Post By:2018/3/23 8:18:00 [只看该作者]

老师;你好!麻烦指导 一下,我这段代码
If e.DataCol.name = "已记账" Then
    If e.DataRow("已记账")= True Then
        For Each km As String In DataTables("结算单明细表").GetValues("借方科目代码","[结算单号] = " & e.DataRow("结算单号") & "")
            Dim filter = "[结算单号] = " & e.DataRow("结算单号") & " and [借方科目代码] = '" & km & "'"
            Dim fdr As DataRow = DataTables("凭证明细表").Find(filter)
            If fdr Is Nothing Then
                fdr = DataTables("凭证明细表").addnew
                 fdr("日期") = Date.Today
                fdr("结算单号") =  e.DataRow("结算单号")
                fdr("借方科目代码") = km
            End If
            fdr("数量") = DataTables("凭证明细表").Compute("sum(数量)", filter)
        Next
    Else
        Dim dt1 As DataTable = DataTables("凭证明细表")        
        dt1.DeleteFor("结算单号 = '" & e.DataRow("结算单号") & "'")
    End If
End If  为什么会报错“无法在 System.String 和 System.Int32 上执行“=”操作。”只有数量是双精小数,其他都 是字符型

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


加好友 发短信
等级:小狐 帖子:306 积分:3860 威望:0 精华:0 注册:2017/3/25 15:34:00
  发帖心情 Post By:2018/3/23 8:21:00 [只看该作者]

没有整数型的列,为什么会有 System.Int32

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/23 8:44:00 [只看该作者]

If e.DataCol.name = "已记账" Then
    If e.DataRow("已记账")= True Then
        For Each km As String In DataTables("结算单明细表").GetValues("借方科目代码","[结算单号] = '" & e.DataRow("结算单号") & "'")
            Dim filter = "[结算单号] = '" & e.DataRow("结算单号") & "' and [借方科目代码] = '" & km & "'"
            Dim fdr As DataRow = DataTables("凭证明细表").Find(filter)
            If fdr Is Nothing Then
                fdr = DataTables("凭证明细表").addnew
                 fdr("日期") = Date.Today
                fdr("结算单号") =  e.DataRow("结算单号")
                fdr("借方科目代码") = km
            End If
            fdr("数量") = DataTables("凭证明细表").Compute("sum(数量)", filter)
        Next
    Else
        Dim dt1 As DataTable = DataTables("凭证明细表")        
        dt1.DeleteFor("结算单号 = '" & e.DataRow("结算单号") & "'")
    End If
End If 

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


加好友 发短信
等级:小狐 帖子:306 积分:3860 威望:0 精华:0 注册:2017/3/25 15:34:00
  发帖心情 Post By:2018/3/26 9:53:00 [只看该作者]

老师:你好!165楼例子中,假如表B增加一个字符列“单号”,表C也同样增加“单号”列,怎样才能实现点击记账后也能按科目把表B的“单号”用分号合并在表C的单号列,代码要怎么写?谢谢你的指导!

 回到顶部