以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SystemIdle错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101154)

--  作者:yancheng
--  发布时间:2017/5/25 20:28:00
--  SystemIdle错误
此主题相关图片如下:12.jpg
按此在新窗口浏览图片
sp?ID=95354" target="_blank">点击浏览该文件
此主题相关图片如下:22.jpg
按此在新窗口浏览图片

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:菜单-systemidle事件代码.txt



[此贴子已经被作者于2017/5/25 20:29:47编辑过]

--  作者:有点色
--  发布时间:2017/5/25 20:37:00
--  

把systemIdle的代码,逐段注释掉,定位一下错误位置。

 

没有实例无法测试。


--  作者:yancheng
--  发布时间:2017/5/25 20:53:00
--  
有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。

************** 异常文本 **************
System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
   在 System.Collections.ArrayList.get_Item(Int32 index)
   在 C1.Win.C1FlexGrid.RowCollection.get_Item(Int32 index)
   在 Foxtable.o_O0_oO0.O_0_OO_O(Object A_0, EventArgs A_1)
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 C1.Win.C1FlexGrid.Util.BaseControls.ScrollableControl.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** 已加载的程序集 **************
mscorlib
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.8669 (QFE.050727-8600)
    基本代码: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
等等。。。。。。

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

启用 JIT 调试后,任何无法处理的异常
都将被发送到在此计算机上注册的 JIT 调试器,
而不是由此对话框处理。



--  作者:yancheng
--  发布时间:2017/5/25 20:56:00
--  
全部代码都注释掉了,还是提示错误。



--  作者:yancheng
--  发布时间:2017/5/25 21:05:00
--  
上面的代码:全不注释。我把:操作的表,的表事件,当前行改变,的代码。把加载 的代码注释了。好像就不提示错了。但是,又未完成功能;请教一下,怎么改。这个代码。

If Tables("历史材料明细").Focused Then
    If e.Table.Current Is Nothing Then \'如果Current为Nothing
        Return \'则返回
    End If
    Dim wz As Integer
    Dim dr As DataRow
    dr = DataTables("历史材料").Find("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'")
    If dr IsNot Nothing Then
        \'DataTables("历史材料").RemoveFor("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'")   (注释了这个)
        \'DataTables("历史材料").AppendLoad("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'")(注释了这个)
        wz = Tables("历史材料").FindRow(dr)
        If wz >= 0 Then
            Tables("历史材料").Position = wz
        End If
    End If
End If

--  作者:有点色
--  发布时间:2017/5/25 21:26:00
--  
把你currenChanged事件的代码,写到click事件呢?代码可以不变。
--  作者:yancheng
--  发布时间:2017/5/26 8:54:00
--  
放到:表的click里面,还是出现:

.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.5.22.1
错误所在事件:
详细错误信息:
列“_Identify”被约束为是唯一的。值“73”已存在。


--  作者:有点蓝
--  发布时间:2017/5/26 9:02:00
--  
试试

If Tables("历史材料明细").Focused Then
    If e.Table.Current Is Nothing Then \'如果Current为Nothing
        Return \'则返回
    End If
    Dim wz As Integer
    Dim dr As DataRow
    dr = DataTables("历史材料").Find("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'")
    If dr IsNot Nothing Then
        SystemReady = False
        DataTables("历史材料").RemoveFor("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'") \'  (注释了这个)
        DataTables("历史材料").AppendLoad("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'")\'(注释了这个)
        SystemReady = True
        wz = Tables("历史材料").FindRow("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'")
        If wz >= 0 Then
            Tables("历史材料").Position = wz
        End If
    End If
End If

--  作者:yancheng
--  发布时间:2017/5/26 9:42:00
--  
If Tables("历史合同明细").Focused Then
    If e.Table.Current Is Nothing Then \'如果Current为Nothing
        Return \'则返回
    End If
    Dim wz As Integer
    Dim dr As DataRow
    dr = DataTables("历史合同").sqlFind("[历史合同编号] = \'" & e.Table.Current("历史合同编号") & "\'")
    If dr IsNot Nothing Then
        SystemReady = False
        DataTables("历史合同").RemoveFor("[历史合同编号] = \'" & e.Table.Current("历史合同编号") & "\'") \'  (注释了这个)
        DataTables("历史合同").AppendLoad("[历史合同编号] = \'" & e.Table.Current("历史合同编号") & "\'")\'(注释了这个)
        wz = Tables("历史合同").FindRow("[历史合同编号] = \'" & e.Table.Current("历史合同编号") & "\'")
        If wz >= 0 Then
            Tables("历史合同").Position = wz
            Tables("历史合同").Current.BackColor = Color.Red(请教这一行,应该怎么写,定位到这一行。颜色改为红色?)我原来 有背景颜色 ,在多地设置颜色后,有时颜色就不是我想要的了。)
        End If
        SystemReady = True
    End If
End If

问:1、用上面的代码,感觉没出错了。不明白为什么不出这么严重的错误。数据都删除了?请问老师,之前的问题,出在哪里了?下次注意一下。
2、红色部分,怎么改代码?
[此贴子已经被作者于2017/5/26 9:47:13编辑过]

--  作者:yancheng
--  发布时间:2017/5/26 10:08:00
--  
我又运行试了一下:

If Tables("历史材料明细").Focused Then
    If e.Table.Current Is Nothing Then \'如果Current为Nothing
        Return \'则返回
    End If
    Dim wz As Integer
    Dim dr As DataRow
    dr = DataTables("历史材料").sqlFind("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'")
    If dr IsNot Nothing Then
msgbox(0)
        SystemReady = False
        DataTables("历史材料").RemoveFor("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'") \'  
        DataTables("历史材料").AppendLoad("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'")\'
        wz = Tables("历史材料").FindRow("[历史材料编号] = \'" & e.Table.Current("历史材料编号") & "\'")
        If wz >= 0 Then
msgbox(1)
            Tables("历史材料").Position = wz
        End If
        SystemReady = True
    End If
End If

问:1、msgbox(0) 都 能弹出 ;但是msgbox(1) 在多单击几次后,就不弹出了。(每一次打开窗口能弹出);我感觉是RemoveFor("[历史材料编号] 执行了移出,AppendLoad("[历史材料编号] ,没有执行加载 ;
[此贴子已经被作者于2017/5/26 10:07:58编辑过]