以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  既要次日从零开始算,又不想发布后更新?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=132178)

--  作者:fengwenliuyan
--  发布时间:2019/3/15 16:15:00
--  既要次日从零开始算,又不想发布后更新?
 打印窗口的AfterLoad事件:
Dim d As Date
If Tables("出入库明细表.出入库登记表").Rows.Count <> 0 AndAlso  Date.TryParse(Tables("出入库明细表.出入库登记表").Current("出库日期"), d) Then
    Dim bh As String = "YH" & Format(d, "yyyyMMdd")
    Dim max As String
    Dim idx As Integer
    Dim fdr As DataRow = DataTables("出入库打印信息表").Find("日期 = #" & d & "#")
    If fdr Is Nothing Then
        fdr = DataTables("出入库打印信息表").AddNew
        fdr("日期") = d
        fdr("次数") = 0
    End If
    e.Form.Controls("出库编号").Text = bh & Format(fdr("次数") + 1, "000")
End If 

--  作者:有点甜
--  发布时间:2019/3/15 16:22:00
--  

你这个代码,只要当天的数据保存而且加载出来,编号都是正确的。

 

除非你数据没有加载出来。

 

请具体说明一下你的问题。


--  作者:fengwenliuyan
--  发布时间:2019/3/15 16:29:00
--  
表的DataColChanged事件:
Select Case e.DataCol.Name
    Case "打印"
        If Forms("出入库打印窗口").Opened Then
            Dim d As Date
            If Date.TryParse(e.DataRow("出库日期"), d)
                Dim bh As String = "YH" & Format(d, "yyyyMMdd")
                Dim max As String
                Dim idx As Integer
                Dim fdr As DataRow = DataTables("出入库打印信息表").Find("日期 = #" & d & "#")
                If fdr Is Nothing Then
                    fdr = DataTables("出入库打印信息表").AddNew
                    fdr("日期") = d
                    fdr("次数") = 0
                End If                
                Forms("出入库打印窗口").Controls("出库编号").Text = bh & Format(fdr("次数") + 1, "000")
            End If
        End If
End Select



打印窗口的AfterLoad事件:
Dim d As Date
If Tables("出入库明细表.出入库登记表").Rows.Count <> 0 AndAlso  Date.TryParse(Tables("出入库明细表.出入库登记表").Current("出库日期"), d) Then
    Dim bh As String = "YH" & Format(d, "yyyyMMdd")
    Dim max As String
    Dim idx As Integer
    Dim fdr As DataRow = DataTables("出入库打印信息表").Find("日期 = #" & d & "#")
    If fdr Is Nothing Then
        fdr = DataTables("出入库打印信息表").AddNew
        fdr("日期") = d
        fdr("次数") = 0
    End If
    e.Form.Controls("出库编号").Text = bh & Format(fdr("次数") + 1, "000")
End If




打印按钮的单击事件:
Dim fdr As DataRow = DataTables("出入库打印信息表").Find("日期 = #" & e.Form.Controls("出库日期").Text & "#")
fdr("次数") += 1
For Each r As Row In Tables("出入库明细表.出入库登记表")
    r("出库编号") = e.Form.Controls("出库编号").Text
    r("出库日期") = e.Form.Controls("出库日期").value
    r("开票人") = e.Form.Controls("开票人").Text
Next

--  作者:有点甜
--  发布时间:2019/3/15 16:56:00
--  

 

请具体说明你的问题是什么。

 

 


--  作者:fengwenliuyan
--  发布时间:2019/3/15 17:11:00
--  回复:(有点甜) 请具体说明你的问题是什么。...
想要达到的效果是:既要次日从零开始算,又不想发布后更新?
现状是:每次项目重新发布后,打开项目,即使当天已经打印了50次,只要发布项目,打印的出库编号,尾号也会从001重新开始算起,不知道代码应该怎么改?
原先的问题代码,已经在发在上面了!

--  作者:有点甜
--  发布时间:2019/3/15 17:24:00
--  

1、你用的是【内部数据源】,还是外部数据源?请尽量使用外部数据源。

 

2、你重新发布后,你【出入库打印信息表】本来的数据还在吗?数据不在了,自然会重新计算。


--  作者:fengwenliuyan
--  发布时间:2019/3/15 18:21:00
--  回复:(有点甜)1、你用的是【内部数据源】,还是外部...
使用的是外部数据源,发布前后是在同一个数据库运行,应该不是这个问题吧!
是不是这个问题,怎么改才好?

此主题相关图片如下:i45gpi$tjfae3l`f@od3s.png
按此在新窗口浏览图片
思路是:搜索当前表,当天要是没有记录,就次数=0;如果有记录就不改,这个代码应该怎么改?

--  作者:有点甜
--  发布时间:2019/3/15 18:39:00
--  
没看懂你表达的意思,做个实例发上来说明具体问题。
--  作者:fengwenliuyan
--  发布时间:2019/3/16 10:04:00
--  回复:(有点甜)没看懂你表达的意思,做个实例发上来...
因为源文件数据不方便,所有弄了个内部数据源的文件,
测试可以在“统正出库打印窗口”中进行,求帮助,谢谢!

[此贴子已经被作者于2019/4/30 9:55:22编辑过]

--  作者:有点蓝
--  发布时间:2019/3/16 10:20:00
--  
我测试没有问题!

按照什么步骤测试会有问题?