以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  findrow  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=47752)

--  作者:发财
--  发布时间:2014/3/17 8:27:00
--  findrow

Dim xj As WinForm.TextBox = e.Form.Controls("作废收购凭证号")
With Tables("收购")
    Dim rr As Integer
    If rr=.findrow("[收购凭证号] like \'" & xj.Text & "\'And [作废] = true ") Then
        If rr > 0 Then \'如果找到的话
            MessageBox.Show("该收购凭证已作废!")
        End If
    ElseIf rr=.findrow("[收购凭证号] like \'" & xj.Text & "\' And [作废] = false ") Then
        If rr > 0 Then \'如果找到的话
            .Position = rr \'定位到找到的行.
            If Functions.Execute("net20sp1") = False Then
                Return
            End If
            Dim Book As New XLS.Book(ProjectPath & "Attachments\\作废收购单.xls")
            Dim fl As String = ProjectPath & "Reports\\作废收购单.xls"
            Book.Build()
            Book.Save(fl)
            Dim App As New MSExcel.Application
            Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
            Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
            Ws.PrintOut
            App.Quit
            Dim r As Row = Tables("收购").Current
            Dim dr As DataRow = DataTables("收购").addnew
            r("修改") = False
            r("打印") = False
            r("作废") = False
            dr("编号")=r("编号") & "-" & "已作废"
            dr("猪主姓名")=r("猪主姓名")
            dr("重量")=r("重量")
            dr("单价")=r("单价")
            dr("日期")=r("日期")
            dr("年")=r("年")
            dr("月")=r("月")
            dr("日")=r("日")
            dr("修改")=True
            dr("打印")=True
            dr("收购凭证号")=r("收购凭证号")
            dr("字符日期")=r("字符日期")
            dr("作废")=True
            dr("销售已录入")=r("销售已录入")
            r("收购凭证号") = ""
        End If
    End If
End With

上述代码我想效果是:在文本框中的输入作废的收购凭证号,然后点击作废控件(上述代码)并且能同时处理多条符合条件的,但不起作用。

是不是代码:  If rr=.findrow("[收购凭证号] like \'" & xj.Text & "\'And [作废] = true ") Then  出现问题?


--  作者:Bin
--  发布时间:2014/3/17 8:33:00
--  
FINDROW只能找到单条记录.
--  作者:发财
--  发布时间:2014/3/17 9:43:00
--  

 If rr=.findrow("[收购凭证号] like \'" & xj.Text & "\'And [作废] = true ") Then 

中的查找条件书写正确吗?


--  作者:Bin
--  发布时间:2014/3/17 9:56:00
--  
  AND 这里最好有空格  Like要有模糊匹配符

If rr=.findrow("[收购凭证号] like \'%" & xj.Text & "%\' And [作废] = true ") Then 

--  作者:发财
--  发布时间:2014/3/17 10:51:00
--  

dr("编号")=drr("编号") & "-" & "已作废"

编号:20140317

作废1次:20140317-已作废1

作废2次:20140317-已作废2

作废3次:20140317-已作废3

......

如何能做到?


--  作者:Bin
--  发布时间:2014/3/17 11:05:00
--  
参考帮助http://www.foxtable.com/help/topics/2403.htm
--  作者:发财
--  发布时间:2014/3/17 15:04:00
--  

        drr("作废次数")=drr("作废次数") + 1
        dr("编号")=drr("编号") & "-" & "已作废" & "-" &  drr("作废次数")

20140317-已作废-1

提示错误编号太长自动截断?

其中:编号是字符型,作废次数为整数型,有影响吗?


--  作者:Bin
--  发布时间:2014/3/17 15:04:00
--  
因为你列字段设计得太短了. 应该是默认的16吧 设置长一点
--  作者:发财
--  发布时间:2014/3/17 15:19:00
--  
我已设定为35了
--  作者:Bin
--  发布时间:2014/3/17 15:21:00
--  
值超出字段长度,就会报这个错,你检查一下.