以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]for each  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85182)

--  作者:zcgmxf
--  发布时间:2016/5/19 14:22:00
--  [求助]for each
老师 ,下一段代码,如果文本框中有了新的发票号码、作废发票号码不为空时,那么着色的代码会执行两次或以上,如何只执行一次?搞糊涂了,请指点,谢谢。

Dim r As Row = Tables("收费登记表").Current
If  r("打印次数") < 1 Then
    r.Save()
    MessageBox.Show("请选择""打印发票!""","提示")
    Return
Else
    Dim str As String = Tables("收费登记表").current("作废发票号码")
    Dim fphm As WinForm.TextBox = e.Form.Controls("TextBox3")
    For Each s As String In str.Split(";")
        If  s Like "*" & fphm.Value & "*"  Then
            MessageBox.Show("该发票已经作废!","提示")
            Return
        Else
            Dim cst As WinForm.Label = e.Form.Controls("Label46")
            r("计财收费") = User.Name
            r("收费时间") = Date.Now
            cst.Text = User.Name & Date.Now
            r("已付款") = True
            Dim doc As PrintDoc = e.Form.GernatePrintDoc()
            doc.Print()
            r("打印次数") = r("打印次数") + 1
            
            r.Save()
            e.Form.Close()
        End If
    Next
End If

--  作者:大红袍
--  发布时间:2016/5/19 15:05:00
--  

msgbox(s)

 

做例子发上来看看。


--  作者:zcgmxf
--  发布时间:2016/5/20 7:13:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.rar


--  作者:zcgmxf
--  发布时间:2016/5/20 7:21:00
--  

如果去掉下面的代码好像不会执行多次。是不是遍历时,如果有作废发票号码,它又不等于文本框中的值,按照代码就执行两次。

 

Dim Result As DialogResult
Result = MessageBox.Show("您确定要重新打印发票吗?", "提示", MessageBoxButtons.YesNo,    

 MessageBoxIcon.Question)
 If Result = DialogResult.Yes Then


--  作者:Hyphen
--  发布时间:2016/5/20 9:03:00
--  
这跟数据的业务逻辑有关,请提供可以测试的数据。

当作废发票有多个又不包含指定发票的时候,就会这样

--  作者:大红袍
--  发布时间:2016/5/20 9:19:00
--  
例子如何测试才会出现你的问题?不知道怎么触发啊。
--  作者:zcgmxf
--  发布时间:2016/5/20 15:59:00
--  
如果不是空的,双击行打开打印界面,在发票号码框中输入号码十位数,点击打印发票。完成后双击打开界面,确认作废。再在发票号码框中输入新号码十位数,点击重新打印就会出现。
--  作者:大红袍
--  发布时间:2016/5/20 16:16:00
--  

Dim r As Row = Tables("收费登记表").Current
If  r("打印次数") < 1 Then
    r.Save()
    MessageBox.Show("请选择""打印发票!""","提示")
    Return
Else
    Dim str As String = Tables("收费登记表").current("作废发票号码")
    Dim fphm As WinForm.TextBox = e.Form.Controls("TextBox3")
   
    If str.contains(fphm.Value) Then
        MessageBox.Show("该发票已经作废!","提示")
        Return
    Else
        Dim Result As DialogResult
        Result = MessageBox.Show("确定打印发票吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Result = DialogResult.Yes Then
           
            Dim cst As WinForm.Label = e.Form.Controls("Label46")
            r("计财收费") = User.Name
            r("收费时间") = Date.Now
            cst.Text = User.Name & Date.Now
            r("已付款") = True
            Dim doc As PrintDoc = e.Form.GernatePrintDoc()
            doc.Preview
            r("打印次数") = r("打印次数") + 1
           
            r.Save()
            e.Form.Close()
        End If
    End If
End If


--  作者:zcgmxf
--  发布时间:2016/5/20 23:22:00
--  
谢谢!系统中多处用到 contains ,怎么就没想到呢?哈哈哈哈哈。。。。不熟练。