以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  半角能转全角吗  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=93671)

--  作者:yaojun
--  发布时间:2016/12/4 9:50:00
--  半角能转全角吗

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 DataRow = DataTables("工序单价").addnew
        Dim a() As String = s.split("*")
        ndr("工序") = a(0)
        ndr("数量") = a(1)
        ndr("产品名称") = dr("产品名称")
        ndr("规格型号") = dr("规格型号")
        ndr("单价") = dr("单价")
    Next
Next

以上代码中,列“完成人员”中的,号必须转换成半角,因为在平时使用中,大家习惯使用中文录入,所以转换很麻烦,请问有解决方法吗?

另外,姓名*100  这样的录入能不能直接变成    姓名100,去掉中间的*,这样录入就快很多,谢谢!

 

 


图片点击可在新窗口打开查看此主题相关图片如下:1101.png
图片点击可在新窗口打开查看

或者直接由上图的第一行中的完成人员变成第二行中的完成人员里面的样式,什么符号都不要也可以

[此贴子已经被作者于2016/12/4 10:31:05编辑过]

--  作者:有点色
--  发布时间:2016/12/4 15:06:00
--  

如果直接去取数字,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=92594&skin=0

 

[此贴子已经被作者于2016/12/4 15:08:37编辑过]

--  作者:有点色
--  发布时间:2016/12/4 15:17:00
--  

 参考代码

 

Dim str As String = "王五50张三60"
Dim mc1 = System.Text.RegularExpressions.Regex.Matches(str, "[^0-9\\.]+(?=[0-9]+)")
Dim mc2 = System.Text.RegularExpressions.Regex.Matches(str, "[0-9\\.]+")
Dim sum As Double = 0
For i As Integer = 0 To mc1.count-1
    output.show(mc1(i).value & " " & mc2(i).value)
Next


--  作者:longyanlin
--  发布时间:2016/12/4 16:08:00
--  

以上代码对我也很有用,我这几天正好在想这个方案,色老师能直接改成代码吗,我刚学看不懂,还有我的要求比一楼的多,我想象一楼样的表格里面,如果是只有最后那列选取勾选的时候,当前表里面已经勾选的行分解复制到表A里面,当前表没有勾选的部要复制。

有会的能上代码吗?


--  作者:有点色
--  发布时间:2016/12/4 16:44:00
--  

For Each dr As DataRow In DataTables("表A").Select("第五列 is not null and 第六列 = true")
   
    Dim str As String = dr("第五列")
    Dim mc1 = System.Text.RegularExpressions.Regex.Matches(str, "[^0-9\\.]+(?=[0-9]+)")
    Dim mc2 = System.Text.RegularExpressions.Regex.Matches(str, "[0-9\\.]+")
    Dim sum As Double = 0
    For i As Integer = 0 To mc1.count-1
        Dim ndr As DataRow = DataTables("表A").addnew
        ndr("第一列") = dr("第一列")
        ndr("第三列") = mc1(i).value
        ndr("第四列") = mc2(i).value
    Next
Next

 


--  作者:longyanlin
--  发布时间:2016/12/4 16:54:00
--  

色色老师, 你太棒了

感谢死你了

还有一个问题哦,就是每按下按钮就复制一次,能不能相同的行复制一次就不能再复制了啊,要不然怕操作员不小心复制多了,呵呵!

For Each dr As DataRow In DataTables("表A").Select("第五列 is not null and 第六列 = true and 第七列= true")
再增加第七列逻辑列,多加设定下,不知道可以不

[此贴子已经被作者于2016/12/4 16:57:34编辑过]

--  作者:有点色
--  发布时间:2016/12/4 17:19:00
--  
For Each dr As DataRow In DataTables("表A").Select("第五列 is not null and 第六列 = true")
    Dim str As String = dr("第五列")
    Dim mc1 = System.Text.RegularExpressions.Regex.Matches(str, "[^0-9\\.]+(?=[0-9]+)")
    Dim mc2 = System.Text.RegularExpressions.Regex.Matches(str, "[0-9\\.]+")
    Dim sum As Double = 0
    For i As Integer = 0 To mc1.count-1
        Dim ndr As DataRow = DataTables("表A").Find("第三列 = \'" & mc1(i).value & "\' and 第四列 = \'" & mc2(i).value & "\' and 第十列 = \'" & dr("_Identify") & "\'")
        If ndr Is Nothing Then
            ndr = DataTables("表A").addnew
            ndr("第一列") = dr("第一列")
            ndr("第三列") = mc1(i).value
            ndr("第四列") = mc2(i).value
            ndr("第十列") = dr("_Identify")
        End If
    Next
Next