Foxtable(狐表)用户栏目专家坐堂 → 窗口动态生成表的行怎样定义


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

主题:窗口动态生成表的行怎样定义

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


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

'双击缴费情况表任意行,自动弹出当前单据:
If e.Row.IsNull("车牌号码") = False AndAlso e.Row.IsNull("缴费_临时停放_缴费金额") = False Then
    Forms("临时收费录入").Open()
    DataTables("临时收费录入_Table1").DataRows.Clear
    Forms("临时收费录入").Controls("rq").text = e.Row("日期")
    Forms("临时收费录入").Controls("dh").text = e.Row("单号")
    Forms("临时收费录入").Controls("lry").text = e.Row("录入员")
    Forms("临时收费录入").Controls("shr").text = e.Row("审核人")
    Dim dts As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = '" & Forms("临时收费录入").Controls("dh").text & "'")
    For i As Integer = 0 To dts.count - 1
        Dim r As DataRow = DataTables("临时收费录入_Table1").AddNew()
        r("车牌号码") = dts(i)("车牌号码")
        r("备注") = dts(i)("备注")
        r("缴费_临时停放_起计时间") = dts(i)("缴费_临时停放_起计时间")
        r("缴费_临时停放_止计时间") = dts(i)("缴费_临时停放_止计时间")
    Next
    If dts.count < 10 Then
        Dim r As DataRow = DataTables("临时收费录入_Table1").AddNew(10 - (dts.count))
    End If
ElseIf e.Row.IsNull("车牌号码") = False AndAlso e.Row.IsNull("缴费_月租_缴费金额") = False Then
    Forms("月租收费").Open()
    With DataTables("月租收费_Table1")
        For i As Integer = .DataRows.count - 1 To 0 Step -1
            .DataRows(i).Delete
        Next
    End With
    Forms("月租收费").Controls("rq").text = e.Row("日期")
    Forms("月租收费").Controls("dh").text = e.Row("单号")
    Forms("月租收费").Controls("lry").text = e.Row("录入员")
    Forms("月租收费").Controls("shr").text = e.Row("审核人")
    Dim dts As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = '" & Forms("月租收费").Controls("dh").text & "'")
    For i As Integer = 0 To dts.count - 1
        Dim r As DataRow = DataTables("月租收费_Table1").AddNew()
        r("车牌号码") = dts(i)("车牌号码")
        r("备注") = dts(i)("备注")
        r("住址_巷") = dts(i)("住址_巷")
        r("住址_号") = dts(i)("住址_号")
        r("住址_房") = dts(i)("住址_房")
        r("姓名") = dts(i)("姓名")
        r("固定电话") = dts(i)("固定电话")
        r("手机号码") = dts(i)("手机号码")
        r("缴费_月租_起计日期") = dts(i)("缴费_月租_起计日期")
        r("缴费_月租_止计日期") = dts(i)("缴费_月租_止计日期")
        r("缴费_月租_月租单价") = dts(i)("缴费_月租_月租单价")
        r("缴费_月租_缴费金额") = dts(i)("缴费_月租_缴费金额")
    Next
    If dts.count < 10 Then
        Dim r As DataRow = DataTables("月租收费_Table1").AddNew(10 - (dts.count))
    End If
End If

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/23 17:40: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
            For Each tr As DataRow In DataTables("月租收费_Table1").Select("[车牌号码] is not null")
                Dim dr As DataRow = DataTables("缴费情况").SQLFind("[单号] = '" & e.Form.Controls("dh").text & "' And ([已审核] = False Or [已审核] Is null)") '将窗口上的数据刷新替换保存到缴费情况表上,
                If dr IsNot Nothing Then
                    dr("日期") = e.Form.Controls("rq").text
                    dr("单号") = e.Form.Controls("dh").text
                    dr("分类") = DataTables("分类").DataRows(0)("分类")
                    dr("备注") = tr("备注")
                    dr("前缀") = "YZ"
                    dr("缴费_月租_起计日期") = tr("缴费_月租_起计日期")
                    dr("缴费_月租_止计日期") = tr("缴费_月租_止计日期")
                    dr("缴费_月租_缴费月数") = tr("缴费_月租_缴费月数")
                    dr("缴费_月租_月租单价") = tr("缴费_月租_月租单价")
                    dr("缴费_月租_缴费金额") = tr("缴费_月租_缴费金额")
                    dr.save
                ElseIf dr Is Nothing Then
                    dr = DataTables("缴费情况").addnew
                    dr("日期") = e.Form.Controls("rq").text
                    dr("单号") = e.Form.Controls("dh").text
                    dr("分类") = DataTables("分类").DataRows(0)("分类")
                    dr("车牌号码") = tr("车牌号码")
                    dr("备注") = tr("备注")
                    dr("前缀") = "YZ"
                    dr("缴费_月租_起计日期") = tr("缴费_月租_起计日期")
                    dr("缴费_月租_止计日期") = tr("缴费_月租_止计日期")
                    dr("缴费_月租_缴费月数") = tr("缴费_月租_缴费月数")
                    dr("缴费_月租_月租单价") = tr("缴费_月租_月租单价")
                    dr("缴费_月租_缴费金额") = tr("缴费_月租_缴费金额")
                    dr("录入员") = e.Form.Controls("lry").text
                    dr("操作人姓名") = User.Name & " " & Date.Now
                    dr.save
                End If
            Next
            DataTables("缴费情况").Load
        End If

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


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

限制作为查询条件单号生成的代码,单号根据日期生成,不限制,修改日期保存后原来的数据还在,新增新的单号数据。
'以这代码为准:
Dim yzdh As WinForm.TextBox = e.Form.Controls("dh")'dh是单号控件
Dim di As String = yzdh.Value 'di单号控件中的变量
Dim yzrq As WinForm.DateTimePicker = e.Form.Controls("rq")
Dim d As Date = yzrq.Value
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim Days As Integer = Date.DaysInMonth(y,m)
Dim fd As Date = New Date(y,m,1) '获得该月的第一天
Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
Dim dts As Integer = DataTables("缴费情况").Compute("Count([车牌号码])","[单号] = '" & di & "'")
If e.Form.Controls("rq").value IsNot Nothing And dts = 0 Then
    Dim bh As String = "YZ" & "-" & Format(d,"yyyyMM") & "-" '生成编号的前缀
    Dim max As String
    Dim idx As Integer
    Dim flt As String
    flt = "[前缀] = 'YZ' And [日期] >= #" & fd & "# And [日期] <= #" & ld & "#"
    max = DataTables("缴费情况").Compute("Max(单号)",flt) '取得该月的相同工程代码的最大单据编号
    If max > "" Then '如果存在最大单据编号
        idx = CInt(max.Substring(10,5)) + 1 '获得最大单据编号的后四位顺序号,并加1
    Else
        idx = 1 '否则顺序号等于1
    End If
    di = bh & Format(idx,"00000")
    yzdh.Value = di
End If

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


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

Validating事件限制日期修改代码:
Dim ydh As String = Forms("月租收费").Controls("dh").text
If ydh > "" Then
    Dim y As Integer = cint(ydh.substring(3,4))
    Dim m As Integer = cint(ydh.substring(7,2))
    Dim Days As Integer = Date.DaysInMonth(y,m)
    Dim fd As Date = New Date(y,m,1) '获得该月的第一天
    Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
    If e.sender.value < fd OrElse e.sender.value > ld
        e.cancel = True '如果是,取消操作
        MessageBox.Show("修改的日期不能超出已保存单号所属月份","提示")
    End If
End If

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


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

作了这么多铺垫车牌号码一改,就会添加新的单号内容,它是搞乱数据的雷!

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


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

  我想了另外的办法,查出同单号的集合,再根据这集合的位置安顺序替换,不以内容为定位标准,这种替换方法在财务里是常用,比如删除一张会计凭证,删除后造成缺号,其他的单据已经打印,不可能老重排单号重新打印,这得浪费多少纸,ERP软件中都有这种替换功能,我昨晚把保存代码改为这样,被否定,foxtable软件没有这种替换功能,一定要定位后替换,那么缺号问题怎么解决?不要质疑我的水平,我的水平是不行,我是真真实实来想解决问题的。问题摆在这了怎么解决?死胡同?不能解决?

[此贴子已经被作者于2021/3/23 18:04:34编辑过]

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


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

foxtable没有任何业务功能,所有业务功能都要自己开发实现。

缺号一般有2种解决方法,一是直接作废,就像fa piao一样,这个号直接作废不再使用,作废的数据仍然保留,而不是删除掉。另外一种方法是建一个废号表,删除数据的时候,把废单号存入废号表,需要新单号的时候,先查询废号表获取最小的单号,然后从废号表删除这个启用的单号,如果没有再重新生成最新的单号。

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


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

  会计凭证不允许缺号的,否则以为有人故意抽取单据,ERP软件直接设置单号缺失不允许结账,解决不是绕开才是根本,我们常复制最后一份凭证的内容替换缺失的号码,这功能不解决,你们的软件就达不到用户基本要求。
  你提意用有条件加载,修改后保存倒是一种方法,我因为对编程、方法都不熟悉,没想到这样做你点一下我就明白了,今晚过棋协把时间白白浪废了,明天再想。

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


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

那是您自己的业务功能,是需要自己思考实现的功能,我们只能提供思路。

这个要看这些凭证是不是一定要按照绝对的顺序生成编号。比如有1~10个编号的凭证,假设1号作废,那么2~10还是依次2改为1,3改为2,这样全部改一遍?还是说新增的配置直接使用1号这个编号?

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


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

  如果没有打印单据前,允许重排会计凭证单号,有这个重算按钮,但很多时间一个月那么长时间,不可能把单据全压着不入留待月末才入,已经打印了的单据就不能改了,只能复制最后一份单据的内容替换缺失单号,因此覆盖单据原行内容功能不能没有。

 回到顶部
总数 47 上一页 1 2 3 4 5 下一页