以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求datatables转 tables  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157343)

--  作者:yaojun
--  发布时间:2020/10/12 21:40:00
--  求datatables转 tables

If  Tables("生产指令").Current("审核") = False Then

For Each dr As DataRow In DataTables("指令明细").Select("备注 is not null")
    Dim ary() As String = dr("备注").split(",")
    For Each s As String In ary
        Dim ndr As Row = Tables("生产指令.金工报表").addnew
        Dim a() As String = s.split("*")
        ndr("工序") = a(0)
        ndr("单价") = a(1)
        ndr("名称") = dr("名称")
    Next
Next

Else
    MessageBox.show("本订单已经审核,不能操作!")
End If

 

求把黄色代码改成使用tables,不需要提取后台数据,只需要提取当前表中的当前行数据,求老师们帮帮忙,谢谢


--  作者:有点蓝
--  发布时间:2020/10/12 21:50:00
--  
……
For Each dr As Row In Tables("指令明细").rows
    Dim ary() As String = dr("备注").split(",")

--  作者:yaojun
--  发布时间:2020/10/12 22:30:00
--  

谢谢,已解决

另外请问如下提取,不要提取整个单元格的数字,而是提取*以后的数字,例如:工序1*0.5,工序2*0.5,工序3*0.3 合计单价=1.3

Select Case e.DataCol.Name
    Case "生产工艺"
        If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空
            e.DataRow("合计单价") = Nothing \'那么清空此行单价列的内容
        Else
            Dim mc = System.Text.RegularExpressions.Regex.Matches(e.NewValue , "[0-9\\.]+")
            Dim sum As Double = 0
            For i As Integer = 0 To mc.count-1
                output.show(mc(i).value)
                sum += val(mc(i).value)
            Next
            e.DataRow("合计单价") = sum
        End If
End Select


--  作者:有点蓝
--  发布时间:2020/10/12 22:51:00
--  
这种直接使用split分割即可:http://www.foxtable.com/webhelp/topics/0245.htm