Foxtable(狐表)用户栏目专家坐堂 → 会计凭证的设计和录入


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

主题:会计凭证的设计和录入

美女呀,离线,留言给我吧!
采菊东篱下
  111楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/5/3 10:56:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理(050502).rar

密码:888888
我已经在收款凭证_Table1的AfterLoad事件把条件在控件上的3列绑定了收款凭证_Table1
Dim cbx = e.form.controls("combobox1")
If cbx.items.count > 0 Then
    cbx.text = cbx.items(0)
End If
Dim cbx1 = e.form.controls("combobox2")
If cbx1.items.count > 0 Then
    cbx1.text = cbx1.items(0)
End If
With Tables("收款凭证_Table1")
    For i As Integer = .Rows.count - 1 To 0 Step -1
        .Rows(i).Delete
    Next
    .Fill("select * fro m {财务数据源} where [_Identify] Is Null",False)
    e.Form.Controls("rq").BindingField  = "窗口1_Table1.日期"
    e.Form.Controls("dh").BindingField  = "窗口1_Table1.凭证号"
    e.Form.Controls("Label5").BindingField  = "窗口1_Table1.字号"
    .AllowEdit = True
    .SetColVisibleWidth("摘要|300|贷方科目|100|明细科目|250|金额|100")
    .AddNew(10)
    .Cols("贷方科目").DropForm = "科目"
    .Cols("金额").GrandTotal = True
    .GrandTotal = True
    '设合计二字居中方法一
    'For Each cl As Col In Tables("月租收费_Table1").Cols '设所有列的数据居中
    'cl.TextAlign = TextAlignEnum.Center
    'Next
    '设合计二字居中方法二
    Dim r As Row
    For i As Integer = 0 To .Rows.Count(True) - 1 'Count加上参数True
        r = .Rows(i,True) 'Rows也需要加上参数True
        If r.Level Then '如果是合计行
            .Cols("摘要").TextAlign = TextAlignEnum.Center
        End If
    Next
End With
e.Form.Controls("lry").text = User.name



收款凭证_Table1的DataColChanged事件提前赋值:
For Each dt As DataRow In Tables("收款凭证_Table1").DataTable.Select("[贷方科目] Is not null")
    dt("字号") = (e.Form.Controls("Label5").text).SubString(0,2)
    dt("日期") = e.Form.Controls("rq").text
    dt("凭证号") = e.Form.Controls("dh").text
Next


现在收款凭证_Table1的贷方数据无法保存到财务数据源。

[此贴子已经被作者于2021/5/5 9:51:01编辑过]

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


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/5 11:16:00 [只看该作者]

绑定是针对选中的行的,绑定后在控件编辑会直接影响选中的行对应单元格的数据,不需要另外赋值。如果要手工赋值,就不要绑定。另外这种赋值代码不适合放到DataColChanged事件,不要闭着眼睛使用,不是随便找个事件就可以写代码的,什么事件做什么用建议好好看帮助。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  113楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/5/5 15:01:00 [只看该作者]

我昨天开始时没赋值的,可始终没法保存贷方数据,
Select Case e.StripItem.Name
    Case "保存" '保存代
        If e.Form.Controls("rq").text = "" Then
            messagebox.show("请选择日期")
            Return
        ElseIf Tables("收款凭证_Table1").Compute("Count([贷方科目])") = 0 Then
            Return
        Else
            Tables("收款凭证_Table1").FinishEditing '如果单元格处于编辑状态,需要结束编辑,让编辑内容写入单元格
            For Each dt As DataRow In Tables("收款凭证_Table1").DataTable.SQLSelect("[字号] = '" & (e.Form.Controls("Label5").text).SubString(0,2) & "' And [日期] = #" & e.Form.Controls("rq").text & "# And  [凭证号] = '" & e.Form.Controls("dh").text & "' And [贷方科目] Is not null")
                Dim Parts() As String = dt("明细科目").Split("-")
                dt("日期") = e.Form.Controls("rq").text
                dt("凭证号") = e.Form.Controls("dh").text
                dt("安日期生成单号辅助列") = e.Form.Controls("dh1").text
                dt("附件张数") = e.Form.Controls("TextBox1").text
                dt("录入员") = e.Form.Controls("lry").text
                dt("会计科目") = dt("贷方科目") & "-" & dt("明细科目")
                dt("字号") = (e.Form.Controls("Label5").text).SubString(0,2)
                dt("借或贷") = "贷"
                dt("贷方金额") =  dt("金额")
                dt("操作人姓名") = User.Name & " " & Date.Now
                If Parts.length > 0 Then
                    dt("二级科目") = Parts(0)
                    If Parts.length > 1 Then
                        dt("三级科目") = Parts(1)
                        If Parts.length > 2 Then
                            dt("四级科目") = Parts(2)
                            If Parts.length > 3 Then
                                dt("五级科目") = Parts(3)
                            End If
                        End If
                    End If
                End If
                dt.Save
                If dt.RowState <> DataRowState.Added Then
                    DataTables("收款凭证_Table1").SQLDeleteFor("[_Identify] = " & dt("_Identify"))
                End If
MessageBox.show(dt("日期"))
MessageBox.show(dt("字号"))
MessageBox.show(dt("凭证号"))
            Next
        End If
        DataTables("财务数据源").load


没有数据弹出,窗口的表中没这3列数值,应怎么解决?我一直都在看相关帮助,眼睛都不停流眼水,买了一支眼水滴,才没那么不舒服。
[此贴子已经被作者于2021/5/5 15:50:38编辑过]

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


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/5 15:23:00 [只看该作者]


 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  115楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/5/5 16:21:00 [只看该作者]

这个我早上看过了,早上改为sql后想想窗口上不存在分页问题,记得已经改回来没有sql了,上传的文件也没sql的,没sql也不能保存,问题不在这。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  116楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/5/5 16:33:00 [只看该作者]

晕,早上是改过,忘了保存,还是原来的样子!反正原来没sql也不能保存。

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


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/5 16:44:00 [只看该作者]

去掉下面代码:
                If dt.RowState <> DataRowState.Added Then
                    DataTables("收款凭证_Table1").SQLDeleteFor("[_Identify] = " & dt("_Identify"))
                End If

既然是sqlselect出来的,肯定是已经存在的行,dt.RowState 永远不可能等于 DataRowState.Added。所以添加成立,最终查询的行会被删除掉

就算不是使用的sqlselect,而是select,但是前面有一句dt.Save,保存后dt.RowState 也永远不可能等于 DataRowState.Added

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


加好友 发短信
等级:超级版主 帖子:106464 积分:541467 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/5 16:46:00 [只看该作者]

归根到底,就是根本没有理解代码表达的意思,看帮助不是要去背帮助,如果不去理解代码表达的意思,看再多也没有用

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  119楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/5/5 17:39:00 [只看该作者]

这行代码是实现当鼠标双击财务数据源后弹出窗口,用鼠标选择区域,删除已选中数据,因为这是共用窗口,故有此代码,哦不需要SQL,不过没有SQL数据依然不能保存吗。
[此贴子已经被作者于2021/5/5 22:17:54编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  120楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/5/8 22:13:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:双击行弹出的转账凭证.png
图片点击可在新窗口打开查看
红色标注代码明明设了
安日期生成单号辅助列、字号双重限制,可弹出的窗口没了这两加载条件,把单号相同的不同字号都加载进来,不明!收、付款凭证的双击行弹窗加载数据没问题,唯独转账凭证出了问题,不明。
ElseIf e.Row("字号") = "转字" Then
    btName = e.Table.Name '将Table名称保存在全局标量btName中
    e.Cancel = True '禁止进入编辑状态
    Forms("转账凭证").Open()
    Forms("转账凭证").Controls("rq").text = e.Row("日期")
    Forms("转账凭证").Controls("dh").text = e.Row("凭证号")
    Forms("转账凭证").Controls("dh1").text = e.Row("安日期生成单号辅助列")
    Forms("转账凭证").Controls("CheckBox1").Checked = e.Row("已审核")
    Forms("转账凭证").Controls("shr").text = e.Row("审核人")
    Forms("转账凭证").Controls("TextBox1").text = e.Row("附件张数")
    With Tables("转账凭证_Table1")
        LockBaseMainForm() '锁定主界面
        .StopRedraw()
        For i1 As Integer = .Rows.count - 1 To 0 Step -1
            .Rows(i1).Delete
        Next
        Dim Filter As String = "安日期生成单号辅助列 = '" & e.Row("安日期生成单号辅助列") & "' And [字号] ='" & e.Row("字号") & "' And [凭证号] = '" & e.Row("凭证号") & "'"
        DataTables("转账凭证_Table1").LoadFilter = Filter '设置加载条件
        DataTables("转账凭证_Table1").Load() '加载数据
        If e.Row.IsNull("外币金额") And e.Row.IsNull("数量") Then
            Forms("转账凭证").Controls("ComboBox2").text = Forms("转账凭证").controls("combobox2").items(0)
            Forms("转账凭证").Controls("ComboBox1").text = Forms("转账凭证").controls("combobox1").items(0)
            .SetColVisibleWidth("摘要|300|会计科目|100|明细科目|190|借方金额|80|贷方金额|80")
        ElseIf e.Row.IsNull("外币金额") And e.Row("数量") IsNot Nothing Then
            Forms("转账凭证").Controls("ComboBox2").text = Forms("转账凭证").controls("combobox2").items(0)
            Forms("转账凭证").Controls("ComboBox1").text = Forms("转账凭证").controls("combobox1").items(1)
            .SetColVisibleWidth("摘要|240|会计科目|100|明细科目|180|数量|60|单价|50|借方金额|60|贷方金额|60")
        ElseIf e.Row("外币金额") IsNot Nothing And e.Row.IsNull("数量") Then
            Forms("转账凭证").Controls("ComboBox2").text = Forms("转账凭证").controls("combobox2").items(1)
            Forms("转账凭证").Controls("ComboBox1").text = Forms("转账凭证").controls("combobox1").items(0)
            .SetColVisibleWidth("摘要|200|会计科目|100|明细科目|150|币种|60|汇率|60|外币金额|60|借方金额|60|贷方金额|60")
            .Cols("外币金额").GrandTotal = True
        ElseIf e.Row("外币金额") IsNot Nothing And e.Row("数量") IsNot Nothing Then
            Forms("转账凭证").Controls("ComboBox2").text = Forms("转账凭证").controls("combobox2").items(1)
            Forms("转账凭证").Controls("ComboBox1").text = Forms("转账凭证").controls("combobox1").items(1)
            .SetColVisibleWidth("摘要|130|会计科目|100|明细科目|100|数量|60|单价|60|币种|60|汇率|60|外币金额|60|借方金额|60|贷方金额|60")
            .Cols("外币金额").GrandTotal = True
        End If
        .Cols("会计科目").DropForm = "科目"
        .Cols("借方金额").GrandTotal = True
        .Cols("贷方金额").GrandTotal = True
        .GrandTotal = True
        '设合计二字居中方法一
        'For Each cl As Col In Tables("月租收费_Table1").Cols '设所有列的数据居中
        'cl.TextAlign = TextAlignEnum.Center
        'Next
        '设合计二字居中方法二
        Dim r As Row
        For i As Integer = 0 To .Rows.Count(True) - 1 'Count加上参数True
            r = .Rows(i,True) 'Rows也需要加上参数True
            If r.Level Then '如果是合计行
                .Cols("摘要").TextAlign = TextAlignEnum.Center
            End If
        Next
        .ResumeRedraw()
        UnLockBaseMainForm() '解锁主界面
    End With
    Tables("转账凭证_Table1").DataTable.LoadFilter = "凭证号='" & e.Row("凭证号") & "'"
    Tables("转账凭证_Table1").DataTable.Load
    If DataTables("转账凭证_Table1").DataRows.Count < 10 Then
        DataTables("转账凭证_Table1").AddNew(10 - DataTables("转账凭证_Table1").DataRows.Count)
    End If

[此贴子已经被作者于2021/5/9 7:48:03编辑过]

 回到顶部