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


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

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/26 10: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)
            fdr("单号") = DataTables("凭证明细表").GetComboListString("单号", filter)
        Next
    Else
        Dim dt1 As DataTable = DataTables("凭证明细表")
        dt1.DeleteFor("结算单号 = '" & e.DataRow("结算单号") & "'")
    End If
End If

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


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

老师:你好!我在窗口增加了一个计提折旧按钮,代码:

Dim d As Date = Date.Today()
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim bh As String = Format(d,"yyyyMM")

For Each ndr2 As DataRow In DataTables("累计折旧明细表").DataRows
    If ndr2("会计期间") = bh Then

MessageBox.Show("本月已计提折旧,如要进行请删除本月上次计提的折旧!")
        Exit For
    End If
Next

If DataTables.Contains("固定资产明细表") = False Then '如果表C没有加载
    DataTables.Load("固定资产明细表") '加载表C
End If
DataTables("固定资产明细表").DataCols("折旧开始").RaiseDataColChanged()

Dim dt1 As DataTable = DataTables("累计折旧明细表")
For Each ndr1 As DataRow In DataTables("固定资产明细表").DataRows
    Dim ndr As DataRow = dt1.addnew
    ndr("固定资产编号") = ndr1("固定资产编号")
    ndr("固定资产名称") = ndr1("固定资产名称")
    ndr("本月折旧") = ndr1("本月折旧")
    ndr("日期") = Date.Today()
    ndr("原值") = ndr1("原值")
    ndr("使用年限") = ndr1("使用年限")
    ndr("月折旧额") = ndr1("月折旧额")
    ndr("使用月数") = ndr1("使用月数")
    ndr("累计折旧") = ndr1("累计折旧")
    ndr("核算科目代码") = ndr1("核算科目代码")
    ndr("本年折旧") = ndr1("本年折旧")
Next
怎样才能满足红色代码条件后,就中止不运行蓝色代码 ,只有红色代码不成立才会运行蓝色代码 ,谢谢你指导!

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


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

For Each ndr2 As DataRow In DataTables("累计折旧明细表").DataRows
    If ndr2("会计期间") = bh Then
         MessageBox.Show("本月已计提折旧,如要进行请删除本月上次计提的折旧!")
         Return
    End If
Next

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


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

老师:你好,我这段代码点“已记账”为什么在总账里会增加两个空行

If e.DataCol.name = "已记账" Then
    If e.NewValue = True Then
        Dim lb As String = e.DataRow("凭证号")       
        For Each km As String In DataTables("凭证明细表").GetValues("借方一级科目","[凭证号] = '" & lb & "'")
            Dim filter = "[凭证号] = '" & lb & "' and [借方一级科目] = '" & km & "'"
            Dim fdr As DataRow = DataTables("总账").Find(filter)
            If fdr Is Nothing Then
                fdr = DataTables("总账").addnew
                fdr("日期") = e.DataRow("日期")
                fdr("凭证号") = e.DataRow("凭证号")
                fdr("借方一级科目") = km
            End If           
            fdr("借方金额") = DataTables("凭证明细表").Compute("sum(借方金额)", filter)
        Next
        For Each kmt As String In DataTables("凭证明细表").GetValues("贷方一级科目","[凭证号] = '" & lb & "'")
            Dim filter1 = "[凭证号] = '" & lb & "' and [贷方一级科目] = '" & kmt & "'"
            Dim fdr1 As DataRow = DataTables("总账").Find(filter1)
            If fdr1 Is Nothing Then
                fdr1 = DataTables("总账").addnew
                fdr1("日期") = e.DataRow("日期")
                fdr1("凭证号") = e.DataRow("凭证号")
                fdr1("贷方一级科目") = kmt
            End If
            fdr1("贷方金额") = DataTables("凭证明细表").Compute("sum(贷方金额)", filter1)           
        Next
    Else
        Dim dt1 As DataTable = DataTables("总账")
        Dim lb As String = e.DataRow("凭证号")
        dt1.DeleteFor("凭证号 = '" & lb & "'")
       
    End If
   
End If


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


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

两行空行


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


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

请上传具体实例测试。

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


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

老师:你好!我使用内置登录窗口,但用户信息存储在外部数据库的“Users”表中,“Users”表也是按
列名 数据类型 说明
Name 字符型 必须将此列设置为主键!
Type 整数型  
Config 备注型  

设置的,按照自由设置好友例子 我在 服务端 窗口的AfterLoad事件写代码:

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim
trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim
trvs() As WinForm.TreeView = {trv1,trv2}
For
Each trv As WinForm.TreeView In trvs
    For Each u As UserInfo In Users
        If u.Type = UserTypeEnum.User Then
            If trv.Nodes.Contains(u.Group) = False Then
                trv.Nodes.Add(u.Group)
            End If
            trv.Nodes(u.Group).Nodes.Add(u.Name)
        End If
   
Next

Next

trv2
.CheckBoxes = True '右边目录树显示复选框

预览后,出现”  .NET Framework 版本:2.0.50727.8784

Foxtable 版本:2018.3.9.1

错误所在事件:窗口,选择好友,AfterLoad

详细错误信息:

未将对象引用设置到对象的实例。“请问老师我要怎样写代码才对,谢谢老师指导!


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


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

这样测试,看弹出什么


For Each trv As WinForm.TreeView In trvs
    For Each u As UserInfo In Users
        If u.Type = UserTypeEnum.User Then
            msgbox(u.group)
            If u.Group > "" Then

                If trv.Nodes.Contains(u.Group) = False Then
                    trv.Nodes.Add(u.Group)
                End If
                trv.Nodes(u.Group).Nodes.Add(u.Name)
            End If
        End If
    Next
    msgbox(trv.nodes.count)
Next


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


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

我的组是
采购管理组
加工销售管理组
生产管理组
财务管理组
坯布管理组
仓库管理组
审核审批管理组
生产部包装组

30次弹出 msgbox 分别是:1.审核审批管理组、2.审核审批管理组 3.审核审批管理组 4.加工销售管理组 5.加工销售管理组 6.加工销售管理组 7.采购管理组 8.生产管理组 9.生产管理组 10.财务管理组 11.空 12.空 13.空 14.空 15.5 16.审核审批管理组 17.审核审批管理组 18.审核审批管理组 19.加工销售管理组 20.加工销售管理组 21.加工销售管理组 22.采购管理组 23.生产管理组 24.生管理管理组 25.财务管理组 26.空 27.空 28.空 29.空 30.5
最后只加载了5组

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


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


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

 回到顶部