以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  执行以上操作正常,但执行以下简化代码出错,是Bug还是那里问题??  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175740)

--  作者:zhuya820
--  发布时间:2022/3/17 10:30:00
--  执行以上操作正常,但执行以下简化代码出错,是Bug还是那里问题??

图片点击可在新窗口打开查看此主题相关图片如下:图片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编辑过]

--  作者:有点蓝
--  发布时间:2022/3/17 10:40:00
--  
这种情况只能使用第一种用法。

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

--  作者:zhuya820
--  发布时间:2022/3/17 10:45:00
--  
谢谢大神,看来这是VB系统的一个Bug图片点击可在新窗口打开查看,还是自已有时间重写一个IIf函数算了。
--  作者:zhuya820
--  发布时间:2022/3/17 10:59:00
--  SQL数据库目标是20字节,FoxTable默认是20字符
SQL数据库目标是20字节,FoxTable默认是20字符,1字符=2字节
10个汉字=20个字节,如何通过什么函数来判断混合的字符不超过20个字节呢?
谢谢指教!
图片点击可在新窗口打开查看
--  作者:有点蓝
--  发布时间:2022/3/17 11:02:00
--  
msgbox(UKey.LenStrA("中文abc"))
--  作者:zhuya820
--  发布时间:2022/3/17 12:03:00
--  
msgbox(UKey.LenStrA("A中B文C中D文E中F文G中H文G"))
\'\'\' 结果是 25字节
保留20字节以内
下一步问题
如何删除多余的混合字节呢?
传统是字符删除?
传统方法没法有效地计算并去除字符

--  作者:有点蓝
--  发布时间: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编辑过]