Foxtable(狐表)用户栏目专家坐堂 → [求助] 单元格填入多次内容


  共有5010人关注过本帖树形打印复制链接

主题:[求助] 单元格填入多次内容

帅哥哟,离线,有人找我吗?
wumingrong1
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 11:03:00 [显示全部帖子]

以下命令想实现将当前行的【ODM框ODF盘】单元格内容、拆分成4部分;并将内容分别填入到相对应的控件中去;我的命令该怎么修改?

 

【ODM框ODF盘】单元格内容格式为:【内容1】【内容2】【内容3】【内容4】

 

Dim dr As Row = e.Table.Current("ODM框ODF盘")

Dim reg As new System.Text.RegularExpressions.Regex.Matches(dr, "(?<=【{1}).+?(?=】{1})")
Dim mc As Object = reg.matches(dr)

If mc.Count = 4 Then

e.Form.Controls("ODF1").text =  mc(0).Value
e.Form.Controls("ODF2").text =  mc(1).Value
e.Form.Controls("ODF3").text =  mc(2).Value
e.Form.Controls("ODF4").text =  mc(3).Value
End If

 

 

分解出结果:控件【ODF1】内容为:内容1

                 控件【ODF2】内容为:内容2

                 控件【ODF3】内容为:内容3

                 控件【ODF4】内容为:内容4

[此贴子已经被作者于2016/4/11 11:03:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
wumingrong1
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 11:20:00 [显示全部帖子]

Dim dr As Row = e.Table.Current
Dim reg As new System.Text.RegularExpressions.Regex.Matches(dr("ODM框ODF盘"), "(?<=【{1}).+?(?=】{1})")
Dim mc As Object = reg.matches(dr)

If mc.Count = 4 Then
e.Form.Controls("ODF1").text =  mc(0).Value
e.Form.Controls("ODF2").text =  mc(1).Value
e.Form.Controls("ODF3").text =  mc(2).Value
e.Form.Controls("ODF4").text =  mc(3).Value
End If

 

错误提示: System.Text.RegularExpressions.Regex.Matches 未定义类型


 回到顶部
帅哥哟,离线,有人找我吗?
wumingrong1
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 11:38:00 [显示全部帖子]

还是一样的错误提示,我的这个命令是准备写在表的PositionChanged中的

 回到顶部
帅哥哟,离线,有人找我吗?
wumingrong1
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 13:14:00 [显示全部帖子]

1、以下红色命令为:如果dr("ODM框ODF盘")单元格为空,那么清空ODF1 --ODF4控件的内容;但是命令没有生效。为什么?

 

2、以下命令是否可以进行优化?

 

            Dim dr As Row = e.Table.Current
            Dim mc = System.Text.RegularExpressions.Regex.Matches(dr("ODM框ODF盘"), "(?<=【{1}).+?(?=】{1})")
            If mc.Count = 4 Then
                e.Form.Controls("ODF1").text = Nothing
                e.Form.Controls("ODF2").text = Nothing
                e.Form.Controls("ODF3").text = Nothing
                e.Form.Controls("ODF4").text = Nothing
                e.Form.Controls("ODF1").text =  mc(0).Value
                e.Form.Controls("ODF2").text =  mc(1).Value
                e.Form.Controls("ODF3").text =  mc(2).Value
                e.Form.Controls("ODF4").text =  mc(3).Value
               
            Else
                If mc.Count = 3 Then
                    e.Form.Controls("ODF1").text = Nothing
                    e.Form.Controls("ODF2").text = Nothing
                    e.Form.Controls("ODF3").text = Nothing
                    e.Form.Controls("ODF4").text = Nothing
                    e.Form.Controls("ODF1").text =  mc(0).Value
                    e.Form.Controls("ODF2").text =  mc(1).Value
                    e.Form.Controls("ODF3").text =  mc(2).Value
                Else
                    If mc.Count = 2 Then
                        e.Form.Controls("ODF1").text = Nothing
                        e.Form.Controls("ODF2").text = Nothing
                        e.Form.Controls("ODF3").text = Nothing
                        e.Form.Controls("ODF4").text = Nothing
                        e.Form.Controls("ODF1").text =  mc(0).Value
                        e.Form.Controls("ODF2").text =  mc(1).Value
                    Else
                        If mc.Count = 1 Then
                            e.Form.Controls("ODF1").text = Nothing
                            e.Form.Controls("ODF2").text = Nothing
                            e.Form.Controls("ODF3").text = Nothing
                            e.Form.Controls("ODF4").text = Nothing
                            e.Form.Controls("ODF1").text =  mc(0).Value
                        Else
                            If dr("ODM框ODF盘") Is Nothing Then
                                e.Form.Controls("ODF1").text = Nothing
                                e.Form.Controls("ODF2").text = Nothing
                                e.Form.Controls("ODF3").text = Nothing
                                e.Form.Controls("ODF4").text = Nothing
                            Else
                            End If
                        End If
                    End If
                End If
            End If


 回到顶部
帅哥哟,离线,有人找我吗?
wumingrong1
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 14:58:00 [显示全部帖子]

错误提示:

 

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.3.23.1
错误所在事件:光缆台帐表,PositionChanged
详细错误信息:
指定的参数已超出有效值的范围。
参数名: i


 回到顶部
帅哥哟,离线,有人找我吗?
wumingrong1
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 15:07:00 [显示全部帖子]

当点击的行【ODM框ODF盘】单元格为空时、"ODF" & i 中显示的内容为最后一次点击行的内容;而没有清空"ODF" & i 中的内容

 回到顶部
帅哥哟,离线,有人找我吗?
wumingrong1
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 15:39:00 [显示全部帖子]

上面问题找到啦,命令放错了位置。

 

 

下面命令相实现如果【光缆纤芯台帐表】中有符合条件的行;那么将【光缆台帐表】中的【光缆类别】填写到【光缆纤芯台帐表】中符合条件的【光缆类别】中去;但是以下命令执行的结果是只修改了【光缆纤芯台帐表】中第一个符合条件的【光缆类别】内容;后面同样符合条件的行并没有进行修改;为什么?

 

 

If e.DataCol.Name = "光缆类别" Then '如果更改的是 ***列 和 ***列
    vars("del") = True
    vars("sort")=True
    vars("add")=True
    For Each r As Row In Tables("光缆台帐表").Rows
        Dim dr As DataRow = DataTables("光缆纤芯台帐表").Find("[光缆Identify] = '" & r("_Identify") & "'  ")
        If dr IsNot Nothing Then
            dr("光缆类别") = r("光缆类别")
        End If
    Next
    vars("del") = False
    vars("sort")=False
    vars("add")=False
Else
End If


 回到顶部
帅哥哟,离线,有人找我吗?
wumingrong1
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 15:53:00 [显示全部帖子]

 

 

Dim dr As Row = e.Table.Current
Dim mc = System.Text.RegularExpressions.Regex.Matches(dr("ODM框ODF盘"), "(?<=【{1}).+?(?=】{1})")
For i As Integer = 1 To 4
    If mc.count >= i Then
        e.Form.Controls("ODF" & i).text =  mc(i-1).Value
    Else
        e.Form.Controls("ODF" & i).text = Nothing
    End If
Next

 


图片点击可在新窗口打开查看此主题相关图片如下:360截图20160411155211353.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
wumingrong1
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 16:31:00 [显示全部帖子]

这个命令执行正常:

If e.DataCol.Name = "光缆长度" Then '如果更改的是 ***列 和 ***列
    For Each r As Row In Tables("光缆台帐表").Rows
                   
        DataTables("光缆纤芯台帐表").replacefor("纤芯长度", r("光缆长度"), "[光缆Identify] = '" & r("_Identify") & "' ")
       
    Next
Else
End If

 

以下这个命令无法实现,我的命令该怎么修改?

 

If e.DataCol.Name = "光缆长度" Then '如果更改的是 ***列 和 ***列
    For Each r As Row In Tables("光缆台帐表").Rows
        vars("当前行") = Tables("光缆台帐表").Current("光缆长度")
              
        DataTables("光缆纤芯台帐表").replacefor("纤芯长度", r("光缆长度"), "[光缆Identify] = '" & r("_Identify") & "' and  [纤芯长度] = '" & vars("当前行") & "' ")
       
    Next
Else
End If


 回到顶部
帅哥哟,离线,有人找我吗?
wumingrong1
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1029 积分:6497 威望:0 精华:0 注册:2014/1/3 12:49:00
  发帖心情 Post By:2016/4/11 16:42:00 [显示全部帖子]


[此贴子已经被作者于2016/4/11 17:19:58编辑过]

 回到顶部
总数 31 上一页 1 2 3 4 下一页