Foxtable(狐表)用户栏目专家坐堂 → 列切换下拉窗口报错


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

主题:列切换下拉窗口报错

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
列切换下拉窗口报错  发帖心情 Post By:2020/7/21 19:19:00 [只看该作者]

Dim t As Table
t=Tables("其他出库单.其他出库明细")
t.Cols("料号").DropForm =Nothing
’e.sender是一个Dropbox控件
If e.sender.Value<>"" Then
    Select Case e.sender.value
        Case "成品出库"
            t.Cols("料号").DropForm ="A"
        Case "其他出库"
            t.Cols("料号").DropForm ="B"
        Case Else
            t.Cols("料号").DropForm =Nothing
    End Select
End If
错误是这样的 如果料号这个列第一次绑定了A窗口 再切到B窗口时就会报错,第一次绑定了B窗口 再切到A窗口时也会报错。如果第一次没有绑定窗口,随便哪个窗口都不报错。
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.3.31.8
错误所在事件:窗口,其他出库单,出库类别,TextChanged
详细错误信息:
索引超出范围。必须为非负值并小于集合大小。
参数名: index
[此贴子已经被作者于2020/7/21 19:20:39编辑过]

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2020/7/21 20:04:00 [只看该作者]

新建了一个项目无法重现这个错误  郁闷

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2020/7/21 20:18:00 [只看该作者]

调用的目标发生了异常。
   在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   在 Foxtable.o 00o   .ooo.O...(Object A_0, RowColEventArgs A_1, RecordGrid A_2)
索引超出范围。必须为非负值并小于集合大小。
参数名: index
   在 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   在 C1.Util.Win.AmbientPropertyMonitor.a()
   在 C1.Util.Win.AmbientPropertyMonitor.b(Object A_0, EventArgs A_1)
   在 System.EventHandler.Invoke(Object sender, EventArgs e)
   在 System.Windows.Forms.Control.OnParentChanged(EventArgs e)
   在 System.Windows.Forms.ContainerControl.OnParentChanged(EventArgs e)
   在 System.Windows.Forms.Control.AssignParent(Control value)
   在 System.Windows.Forms.Control.ControlCollection.Remove(Control value)
   在 System.Windows.Forms.Form.ControlCollection.Remove(Control value)
   在 System.Windows.Forms.Control.ControlCollection.Clear()
   在 Foxtable.Oo。。。。。。.oO...oo.(String A_0)
   在 Foxtable.Col.set_DropForm(String value)
   在 UserCode.PrepareEdit(RowColEventArgs e)

做了个日志追踪 获取到这些信息


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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2020/7/21 20:20:00 [只看该作者]

If e.Col.name="料号" Then
    With Tables("其他出库单")
        If .current IsNot Nothing Then
            Dim r As Row=.current
            If r("出库类别")="成品出库" Then
                e.Col.DropForm ="cpjs"
                
            Else
                e.Col.DropForm ="物料查询"
                ''e.Col.DropForm ="发货客户检索"
            End If
        End If
        
        
    End With
    '
End If

代码位置调整了 

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2020/7/22 9:38:00 [只看该作者]

图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/22 9:41:00 [只看该作者]

还有问题?如果新项目没有问题,一般就是有其它代码或者用法影响了。把项目复制到其它地方,无关的窗口表格全部删除掉测试,一步步排除看是哪里有影响

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2020/7/22 10:18:00 [只看该作者]

还是报同样的错误 我把触发点换了几个事件 或者单独做个按钮来触发 都不行

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2020/7/22 10:20:00 [只看该作者]

If e.Col.name="料号" Then
    With Tables("其他出库单")
        If .current IsNot Nothing Then
            Dim r As Row=.current
            If r("出库类别")="成品出库" Then
                e.Col.DropForm ="cpjs"
                
            Else
                e.Col.DropForm ="物料查询"
                
            End If
        End If
        
        
    End With
    '
End If
红色部分的代码换成e.Col.DropForm =”“也会报错 只要这个列之前绑定了一个dropform再换其他的就会报错
[此贴子已经被作者于2020/7/22 10:23:03编辑过]

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


加好友 发短信
等级:超级版主 帖子:110750 积分:563676 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/22 10:23:00 [只看该作者]

把项目复制到其它地方,无关的窗口表格全部删除掉测试,一步步排除看是哪里有影响。找不到原因把这个实例发上来

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2020/7/22 16:02:00 [只看该作者]

搞了一天 突然发现把cpjs的窗口名称改了就OK了  导出代码也查了一遍  只有这个地方调用了cpjs 不明白原理 

 回到顶部