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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/26 22:08:00 [显示全部帖子]

哦,如果作为录入表用 .DataSource = DataTables("财务数据源")绑定窗口,未保存前也直接影响原表吗?


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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/26 22:21:00 [显示全部帖子]

哪在窗口中的数据还是尽量用.Fill("select * fro m {财务数据源} where 安日期生成单号辅助列 = '" & e.Row("安日期生成单号辅助列") & "' And [字号] = '付' And [凭证号] = '" & e.Row("凭证号") & "' And [借或贷] = '借'",False),未保存前不会影响后台数据库,但用这代码,所有要保存的数据都要用代码写出,否则后台数据库不会有数据,DataSource绑定就不用,只有控件上的数据用代码保存,表上的数据不用写,
        DataTables("财务数据源").Save()
        DataTables("财务数据源").load
后自动保存,刷新。
[此贴子已经被作者于2021/4/26 22:27:54编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/26 22:47:00 [显示全部帖子]

问清楚一下,免改来改去,你83楼回的:
Fill一样可以生成可以保存的表,单表并且第二个参数使用false即可,把窗口中的数据录入到绑定表没问题,问题是不能保存修改后的数据,点保存会重复录入,或后台已保存的数据不发生娈化,正如我前面不停追问的重复数据等现象吗?
[此贴子已经被作者于2021/4/26 22:47:40编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/28 14:53:00 [显示全部帖子]

不要红色标注代码,窗口上的录入表无法编辑,被锁定一样。

If e.Form.Controls("ComboBox2").text = e.form.controls("combobox2").items(0) And e.Sender.text = e.form.controls("combobox1").items(0) Then
    With Tables("收款凭证_Table1")
        For i As Integer = .Rows.count - 1 To 0 Step -1
            .Rows(i).Delete
        Next
        '.DataSource = DataTables("财务数据源")
        .Fill("select * fro m {财务数据源} where [_Identify] Is Null",False)
        .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

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/28 16:57:00 [显示全部帖子]

我回看月租收费窗口这样写,缴费情况表不是即时产生数据,要保存后才有数据显示,保存代码也简单,收款凭证删除DataSource代码后,保存代码我还没改,要象财务数据源表DoubleClick事件的收款凭证代码那样分别四种格式各自写代码,感觉累赘,如果红色代码没问题,我觉这方法更简洁。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理(0428).rar

密码:888888
With Tables("月租收费_Table1")
    For i As Integer = .Rows.count - 1 To 0 Step -1
        .Rows(i).Delete
    Next
    .DataSource = DataTables("缴费情况")
    .Fill("select * fro m {缴费情况} where [_Identify] Is Null",False)
    .SetColVisibleWidth("住址_序号|40|住址_巷|60|住址_号|40|住址_房|40|姓名|50|固定电话|70|手机号码|75|车牌号码|75|备注|140|缴费_月租_起计日期|85|缴费_月租_止计日期|85|缴费_月租_缴费月数|40|缴费_月租_月租单价|40|缴费_月租_缴费金额|50")
    .SetHeaderRowHeight(0,0,45)
    .AddNew(10)
    .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 '如果是合计行
            Tables("月租收费_Table1").Cols("住址_巷").TextAlign = TextAlignEnum.Center
        End If
    Next

'打开目录树.下拉选项'
e.Form.Controls("Table1").Table.Cols("车牌号码").DropForm = "车牌目录树"
e.Form.Controls("Table1").Table.Cols("缴费_月租_起计日期").UsetBuildInEditor = True
e.Form.Controls("Table1").Table.Cols("缴费_月租_止计日期").UsetBuildInEditor = True
e.Form.Controls("lry").text = User.name
End With

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/29 13:40:00 [显示全部帖子]

  我又经过一天的修修改改,还是绕回来,因为只有这样写才得到我要的效果,也终于能说出我这样写所表达的意思:
  在窗口  .Fill("select * fro m {缴费情况} where [_Identify] Is Null",False)录入数据没保存前, 它.DataSource = DataTables("缴费情况")绑定的缴费情况表显示的数据是没保存前的数据,保存后窗口表执行DataSource属性把窗口上的数据完整保存或替代到缴费情况表上,不会象单纯用.DataSource方法保存数据直接影响后台数据,给多人同时操作,统计数据时带来错误,也不会象单纯用.Fill方法保存出现重复录入,删除窗口上已保存的某行数据后再保存,缴费情况表上依然存在等问题,它既满足保存录入要求,也满足绑定表特性,我觉得这方法可行。
[此贴子已经被作者于2021/4/29 13:52:40编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/29 13:59:00 [显示全部帖子]

我还没把代码改回来,希望看到你的意见。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/29 15:29:00 [显示全部帖子]

  用.Fill方法主要问题出现在修改后重新保存,它必须保证被修改数据不是作为判断的条件,如产品名称、规格,你把它俩都变了,又如何判断是否存在,既不存在,就作没有自动添加,同理删除已保存的数据,窗口上已不存在此数据,何来判断?也不会平白无辜地帮你删除数据,总得有指定条件,让程序作出判断才会删除吧?因此此方法不如绑定后台数据表方便,.DataSource方法唯一不好就是未保存便影响后台数据,这是企业要求数据及时、准确、连续所不许的,所以两者结合是很好的良配。
[此贴子已经被作者于2021/4/29 16:44:19编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/29 17:03:00 [显示全部帖子]

我昨天用.Fill方法保存数据,原来的代码无法保存,也就是说不能直接保存窗口上的数据:
For Each dt As DataRow In Tables("收款凭证_Table1").DataTable.Select("[贷方科目] 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("字号") = "收"
            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
        Next

必须通过定义财务数据源表的行引用

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/4/29 17:10:00 [显示全部帖子]

不能这样写:
    .Fill("select * fro m {财务数据源} where [_Identify] Is Null",False)
一定要改为这样吗?
Tables("窗口1_Table1").Fill("Select [_Identify],[摘要],[贷方科目],[明细科目],[金额] Fro m {财务数据源}",False)

[此贴子已经被作者于2021/4/29 17:29:20编辑过]

 回到顶部
总数 111 上一页 1 2 3 4 5 6 7 8 9 10 下一页 ..12