以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  类似掩码格式提取多列字段形成型号规格  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=95158)

--  作者:sywgb168
--  发布时间:2017/1/11 17:37:00
--  类似掩码格式提取多列字段形成型号规格
老师您好!我现在型号规格列中用取字段形成像掩码格式那样的怎么弄,比如:型号列的FKZC-G,电压列的480,容量列40,相别列3(有电抗率列有数据时选电抗率,没有才选该列),电抗率列7%(有数据时取,没数据时取相别列),那型号规格列则为:FKZC-G480-40-3或FKZC-G480-40-7%
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170111172234.png
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/1/11 17:46:00
--  

 startEdit事件,写代码

 

If e.Col.Name = "xxx" Then

    e.Table.grid.Cols(e.Col.name).editmask = e.row("第三列") & "-" & e.row("第四列")

End If

 

 afterEdit事件,写代码

 

If e.Col.Name = "xxx" Then

    e.Table.grid.Cols(e.Col.name).editmask = ""

End If


--  作者:sywgb168
--  发布时间:2017/1/13 17:08:00
--  
老师您好!为什么我用这代码会出现下划线和取得数据有缺失,就是丢失的用下划线代替了,而且还乱取。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170113171341.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/1/13 17:14:05编辑过]

--  作者:有点色
--  发布时间:2017/1/13 17:11:00
--  

 不能写在validateEdit事件。看2楼的方法。


--  作者:sywgb168
--  发布时间:2017/1/13 17:15:00
--  
以下是引用有点色在2017/1/13 17:11:00的发言:

 不能写在validateEdit事件。看2楼的方法。

刚才写错地方了,


--  作者:sywgb168
--  发布时间:2017/1/13 17:17:00
--  
以下是引用有点色在2017/1/13 17:11:00的发言:

 不能写在validateEdit事件。看2楼的方法。

还是那样子,K和0取不了

 


--  作者:sywgb168
--  发布时间:2017/1/13 17:23:00
--  
"C"也取不出来
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20170113172003.png
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/1/13 17:28:00
--  

特殊字符要加 \\ 符号

 

http://www.foxtable.com/webhelp/scr/3100.htm

 

代码改成

 

If e.Col.Name = "第二列" Then
    Dim ary() As String = {"第三列", "第四列"}
    dim nstr as string = ""
    For Each c As String In ary
        Dim str As String = e.Row(c)
        For Each s As String In str
            nstr &= "\\" & s
        Next
        nstr &= "-"
    Next
    e.Table.grid.Cols(e.Col.name).editmask = nstr.trim("-") & "-000"
End If


--  作者:sywgb168
--  发布时间:2017/1/13 17:40:00
--  
以下是引用有点色在2017/1/13 17:28:00的发言:

特殊字符要加 \\ 符号

 

http://www.foxtable.com/webhelp/scr/3100.htm

 

代码改成

 

If e.Col.Name = "第二列" Then
    Dim ary() As String = {"第三列", "第四列"}
    dim nstr as string = ""
    For Each c As String In ary
        Dim str As String = e.Row(c)
        For Each s As String In str
            nstr &= "\\" & s
        Next
        nstr &= "-"
    Next
    e.Table.grid.Cols(e.Col.name).editmask = nstr.trim("-") & "-000"
End If

OK了,谢谢


此主题相关图片如下:qq截图20170113173909.png
按此在新窗口浏览图片

--  作者:有点色
--  发布时间:2017/1/13 18:03:00
--  

 我觉得你不需要用掩码处理这种情况吧?你可以在datacolchanged事件写代码

 

Select Case e.DataCol.Name

    case "型号", "电压", "容量", "相别"

        e.DataRow("规格型号") = e.DataRow("型号") & "-" & e.DataRow("电压") & "-" & e.DataRow("容量") & "-" & e.DataRow("相别")

End Select