以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  索引和计数必须引用该字符串内的位置。 参数名: count  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=91497)

--  作者:单刀赴会
--  发布时间:2016/10/12 10:33:00
--  索引和计数必须引用该字符串内的位置。 参数名: count


For Intxh = 0 To tblmtskjl.Rows.Count - 1 Step 1

在winxp 下运行没有报错,win10下运行报错,索引和计数必须引用该字符串内的位置。
参数名: count。不知为什么?

刚才看了一下,不是Count引起的错误,是循环里的判断时间的条件错误,winxp下时间的格式是00:00:00,win10下是0:00:00。

[此贴子已经被作者于2016/10/12 10:58:11编辑过]

--  作者:zhuoshike
--  发布时间:2018/12/21 16:54:00
--  同问,我也遇到这个问题
同问,我也遇到这个问题
--  作者:有点甜
--  发布时间:2018/12/21 16:55:00
--  
以下是引用zhuoshike在2018/12/21 16:54:00的发言:
同问,我也遇到这个问题

 

贴出你所写代码。


--  作者:zhuoshike
--  发布时间:2018/12/22 9:09:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20181222090347.png
图片点击可在新窗口打开查看
大神指点,出现这个问题,找不到根源

以下是table2 的CurrentChange事件
测试出错的是这一句:“For Each dr As Row In Tables("ProductionOrder_Table2").Rows \'从数据表中提取数据 

If e.Table.Current Is Nothing Then \'如果Current为Nothing
 e.Table.Position = 0 
 \'则焦点移动为0
Else 
Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
lvw.StopRedraw() \'停止绘制
lvw.Groups.Clear()
lvw.Columns.Clear() \'清除原来的列
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.Tile \'显示模式为 大图标
lvw.Images.LargeSize = New Size(172,185) \'定义大图标尺寸
lvw.TitleSize = New Size(320,186) \'设置平铺区域的大小 
Dim fnt As New Font("宋体", 13, FontStyle.Bold) \'定义字体
lvw.Font = fnt
lvw.ForeColor = Color.Blue  \'定义前景色
Dim cls() As String = {"规格","图号","颜色","bom备注","名称"} \'定义列名 
For i As Integer = 0 To  cls.Length - 1  \'增加列 
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add() 
    c.Name = cls(i) \'指定列名  
Next

Dim s As Integer =0
Dim str As String
Dim Key As String
For Each dr As Row In Tables("ProductionOrder_Table2").Rows \'从数据表中提取数据 
       If dr("图片") IsNot Nothing Then 
        Key=dr("图片")
       Else Key =""
       End If

    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
          vr.ToolTipText = dr("名称")  \'设置此行的动态提示
         lvw.Images.AddImage(Key,Key,Key)
         vr.ImageKey = Key \'指定图标键值
         For Each cl As String In cls \'逐列取值
          If cl="名称" Then  
           str=dr("名称")
           vr("名称")=str.Remove(0,8)
          Else vr(cl) = dr(cl)
          End If
         Next
   vr.Tag= dr \'将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
Next

lvw.ResumeRedraw() \'恢复绘制
End If

--  作者:有点蓝
--  发布时间:2018/12/22 9:41:00
--  
For Each dr As Row In Tables("ProductionOrder_Table2").Rows \'从数据表中提取数据
    If dr("图片") IsNot Nothing Then
        Key=dr("图片")
    Else Key =""
    End If
    
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    vr.ToolTipText = dr("名称")  \'设置此行的动态提示
    If key > "" Then
        lvw.Images.AddImage(Key,Key,Key)
        vr.ImageKey = Key \'指定图标键值
    End If
    For Each cl As String In cls \'逐列取值
        If cl="名称" Then
            str=dr("名称")
            If str.length >=8 Then
                vr("名称")=str.Remove(0,8)
            End If
        Else vr(cl) = dr(cl)
        End If
    Next
    vr.Tag= dr \'将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
Next

--  作者:zhuoshike
--  发布时间:2018/12/22 9:58:00
--  首先谢谢版主的帮忙 按照您的代码做了 if>"" 判断 还是 不行
首先谢谢版主的帮忙 按照您的代码做了 if>"" 判断 还是 不行
--  作者:有点蓝
--  发布时间:2018/12/22 10:14:00
--  
请上传具体实例测试
--  作者:zhuoshike
--  发布时间:2018/12/22 10:58:00
--  谢谢版主 我找到问题根源了
问题根源了:vr("名称")=str.Remove(0,8)

Remove(0,8)  8个字符超出了 超出了数据库表的 字符串数,实际上是才有4个字符

谢谢有点甜