Foxtable(狐表)用户栏目专家坐堂 → 执行以上操作正常,但执行以下简化代码出错,是Bug还是那里问题??


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

主题:执行以上操作正常,但执行以下简化代码出错,是Bug还是那里问题??

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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
执行以上操作正常,但执行以下简化代码出错,是Bug还是那里问题??  发帖心情 Post By:2022/3/17 10:30:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:图片2.png
图片点击可在新窗口打开查看
'//设置String
Select Case e.DataCol.Name
    Case "item_name","item_subname"
        If e.DataRow.IsNull("item_name") = False Then
            Dim Str As String = e.DataRow("item_name")
            Str = IIf(RegEx.IsMatch(Str,"\[.*\]"),RegEx.Replace(Str,"\[.*\]",""),Str)
            If Str.Length > 14 Then
                Str = Str.Remove(14)
            End If
            e.DataRow("item_subname") = Str
        End If
End Select
执行以上操作正常,但执行以下简化代码出错,是Bug还是那里问题???
'//设置String
Select Case e.DataCol.Name
    Case "item_name","item_subname"
        If e.DataRow.IsNull("item_name") = False Then
            Dim Str As String = e.DataRow("item_name")
            Str = IIf(RegEx.IsMatch(Str,"\[.*\]"),RegEx.Replace(Str,"\[.*\]",""),Str)
            Str = IIf(Str.Length > 14,Str.Remove(14),Str)
            e.DataRow("item_subname") = Str
        End If
End Select



.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.1.10.2
错误所在事件:表,t_bd_item_info,DataColChanged
详细错误信息:
调用的目标发生了异常。
startIndex 必须小于字符串长度。
参数名: startIndex


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


命令窗口执行
Dim Str As String = "[百货.特价]10元文体玩具制品"
Str = IIf(RegEx.IsMatch(Str,"\[.*\]"),RegEx.Replace(Str,"\[.*\]",""),Str)
Str = IIf(Str.Length > 14,Str.Remove(9),Str)
MsgBox(Str)

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


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


[此贴子已经被作者于2022/3/17 10:40:40编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/17 10:40:00 [只看该作者]

这种情况只能使用第一种用法。

IIf是会同时执行里面的代码的,而不是符合条件才执行

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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
  发帖心情 Post By:2022/3/17 10:45:00 [只看该作者]

谢谢大神,看来这是VB系统的一个Bug图片点击可在新窗口打开查看,还是自已有时间重写一个IIf函数算了。

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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
SQL数据库目标是20字节,FoxTable默认是20字符  发帖心情 Post By:2022/3/17 10:59:00 [只看该作者]

SQL数据库目标是20字节,FoxTable默认是20字符,1字符=2字节
10个汉字=20个字节,如何通过什么函数来判断混合的字符不超过20个字节呢?
谢谢指教!
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/17 11:02:00 [只看该作者]

msgbox(UKey.LenStrA("中文abc"))

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


加好友 发短信
等级:童狐 帖子:243 积分:1819 威望:0 精华:0 注册:2016/1/21 12:44:00
  发帖心情 Post By:2022/3/17 12:03:00 [只看该作者]

msgbox(UKey.LenStrA("A中B文C中D文E中F文G中H文G"))
''' 结果是 25字节
保留20字节以内
下一步问题
如何删除多余的混合字节呢?
传统是字符删除?
传统方法没法有效地计算并去除字符

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110558 积分:562680 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/3/17 13:35:00 [只看该作者]

Dim txt As String = "A中B文C中D文E中F文G中H文G"
Dim n As Integer= UKey.LenStrA(txt)
Dim s As String = ""
If n > 20 Then
    Dim k As Integer = 0
    For i As Integer = 0 To txt.length - 1
        k = k + UKey.LenStrA(txt(i))
        If k <= 20 Then
            s = s & txt(i)
        Else
            Exit For
        End If
    Next
Else
    s = txt
End If
msgbox(s)
[此贴子已经被作者于2022/3/17 13:35:38编辑过]

 回到顶部