以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  双击弹错?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105478)

--  作者:yancheng
--  发布时间:2017/8/20 17:19:00
--  双击弹错?
添加:供应商,双击,弹错;

双击事件如下:
\'Dim str2() As String = {"供应商材料汇总表","供应商材料明细表","进货材料付款汇总表"}
\'For i1 As Integer = 0 To str2.Length-1
    Dim tbl As Table = Tables("添加供应商_Table1")
If vars("表") > "" And Tables.Contains(vars("表"))  Then
    Dim dr As Row = Tables(vars("表")).Current
    If dr IsNot Nothing  Then
        If Tables(vars("表")).Cols.Contains("供应商编号") Then
            dr("供应商编号") = tbl.Current("供应商编号")
        ElseIf Tables(vars("表")).Cols.Contains("单位编号") Then
            dr("单位编号") = tbl.Current("供应商编号")
图片点击可在新窗口打开查看此主题相关图片如下:uc截图20170820164018.jpg
图片点击可在新窗口打开查看
            dr("往来单位") = tbl.Current("公司名称")
        ElseIf Tables(vars("表")).Cols.Contains("销货单位编号") Then
            dr("销货单位编号") = tbl.Current("供应商编号")
            dr("销货单位名称") = tbl.Current("公司名称")
        End If
    End If
    e.Form.Close()
    vars("表") = ""
    
ElseIf vars("表") = "购票登记" Then
    \'Dim tbl As Table = Tables("添加供应商_Table1")
    Dim dwbh As WinForm.TextBox= Forms(vars("表")).Controls("销货单位编号")
    Dim dwmc As WinForm.TextBox = Forms("购票登记").Controls("销货单位名称")
    Dim lssb As WinForm.TextBox = Forms("购票登记").Controls("销货单位纳税人识别号")
    Dim dz As WinForm.TextBox = Forms("购票登记").Controls("销货单位地址及电话")
    Dim khh As WinForm.TextBox = Forms("购票登记").Controls("销货单位开户行及账号")
    
    If tbl.Current IsNot Nothing Then
        dwbh.value = tbl.Current("供应商编号")
        dwmc.value = tbl.Current("公司名称")
        lssb.value = tbl.Current("纳税人识别号")
        dz.value = tbl.Current("地址及电话")
        khh.value = tbl.Current("开户行及帐号")
    End If
    e.Form.Close()
    vars("表") = ""
Else
    \'If vars("表") = str2(i1) Then
    Dim gys As WinForm.ComboBox = Forms(vars("表")).Controls("ComboBox1")
    If tbl.Current IsNot Nothing Then
        gys.value = tbl.Current("姓名")
    End If
    e.Form.Close()
    vars("表") = ""
End If


有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。

************** 异常文本 **************
System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 Foxtable.O  O O o.o00__Ooo()
   在 Foxtable.Table.get_DataTable()
   在 Foxtable.o_O0_oO0.O_O__O_o(Object A_0, RowColEventArgs A_1)
   在 C1.Win.C1FlexGrid.C1FlexGridBase.OnMouseLeaveCell(RowColEventArgs e)
   在 C1.Win.C1FlexGrid.C1FlexGridBase.#Adb(Point #F)
   在 C1.Win.C1FlexGrid.C1FlexGridBase.OnMouseLeave(EventArgs e)
   在 System.Windows.Forms.Control.WmMouseLeave(Message& m)
   在 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
----------------------------------------
Foxtable
    程序集版本: 2017.8.19.1
    Win32 版本: 2017.08.19.1
    基本代码: file:///F:/data$/project/Publish/人机材管理系统.exe
----------------------------------------
Foxtable.Lib
    程序集版本: 2017.8.3.1
    Win32 版本: 2017.08.03.1
    基本代码: file:///F:/data$/project/Publish/Foxtable.Lib.DLL
----------------------------------------
System.Windows.Forms
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.5483 (Win7SP1GDR.050727-5400)
    基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.8759 (QFE.050727-8700)
    基本代码: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.5495 (Win7SP1GDR.050727-5400)
    基本代码: file:///C:/Windows/assembly/GAC_MSIL/System.Drawi

--  作者:有点甜
--  发布时间:2017/8/20 17:42:00
--  

看看是否这句代码有错 Tables(vars("表")).Current

 

如果你表格没有数据,引用表自然会出错。

 

调试技巧 http://www.foxtable.com/webhelp/scr/1485.htm

 


--  作者:yancheng
--  发布时间:2017/8/29 15:59:00
--  
我试了一下,上面的我提的问题。
加上MSGBOX后,他不弹错了。
感觉不像是代码有问题。而且我在不发布时,不会弹错。弹错都是在发布后的项目里。

怎么处理好一些?有没有什么延时的代码?代替msgbox.是不是就解决了?

--  作者:yancheng
--  发布时间:2017/8/29 16:10:00
--  
我是在录入会计科目后, 来弹出:添加 :合同、员工、客户、供应商的;代码如下:
If e.Node.Nodes.Count = 0 Then
    Dim strx As String = e.Sender.SelectedNode.Name
    Dim dr As DataRow = DataTables("会计科目").Find("科目代码 = \'" & strx & " \' And 是否末级 = True ")
    If dr IsNot Nothing Then
        Dim r As Row = Tables("凭证.凭证明细").Current
        If r IsNot Nothing Then
            r("科目代码") = dr("科目代码")
            \'For Each dr As DataRow In r.DataRow.GetChildRows("凭证明细")
            Dim str() As String = {"员工核算","客户核算","合同核算","供应商核算"}
            Dim str1() As String = {"员工编号","客户编号","合同编号","供应商编号"}
            Dim str2() As String = {"添加员工编号","添加客户","添加合同编号","添加供应商"}
            Dim dr1 As DataRow = DataTables("会计科目").SQLFind("[科目代码] = \'" & r("科目代码") & "\'")
            If dr1 IsNot Nothing Then
                For i As Integer = 0 To str.Length -1
                    If dr1.IsNull(str(i)) <> r.IsNull(str1(i)) Then
                        If    MessageBox.show("此凭证明细需要录入[" & str1(i) & " ],是否现在录入?","提示!",MessageBoxButtons.YesNo) = DialogResult.Yes Then
                            vars("表")="凭证.凭证明细"
                            e.Form.Close
                            Forms(str2(i)).show()
                            \'e.Cancel = True
                            \'Return
                        End If
                    End If
                Next
            End If
            \'Next
        Else
            r("科目代码") = Nothing
        End If
    End If
End If

这个是:合同编号 ,的双击事件代码如下:(添加合同编号 ,在加上msgbox时,不弹错;)

Dim tbl As Table = Tables("添加合同编号_Table1")
msgbox(0)
If vars("表") > "" Then
msgbox(1)
If  Tables.Contains(vars("表"))  Then
msgbox(2)
    Tables(vars("表")).Current("合同编号") = tbl.Current("合同编号")
    e.Form.Close()
msgbox(3)
    vars("表") = ""
End If
End If

--  作者:yancheng
--  发布时间:2017/8/29 16:15:00
--  
弹错,在同时添加: 合同、员工、客户、供应商的 ;多个时,只有第一添加时,双击会出错,后面就不出错了。

确定了。我在:合同、员工、客户、供应商的 ;添加 窗口的双击事件都加了:msgbox后,就不弹错了。

[此贴子已经被作者于2017/8/29 16:15:07编辑过]

--  作者:有点甜
--  发布时间:2017/8/29 16:28:00
--  

和你说的msgbox无关。

 

删除代码 r("科目代码") = Nothing

 

如果还有问题,例子发上来。


--  作者:yancheng
--  发布时间:2017/8/29 17:12:00
--  
还不是行,一样的问题,这个东东确实不好做例子。太多窗口和表 了。我看再再吧。

老师,帮我看一下,可能 是哪里 出问题了?

--  作者:有点甜
--  发布时间:2017/8/29 17:13:00
--  
以下是引用yancheng在2017/8/29 17:12:00的发言:
还不是行,一样的问题,这个东东确实不好做例子。太多窗口和表 了。我看再再吧。

老师,帮我看一下,可能 是哪里 出问题了?

 

DoubleClick事件,加上代码

 

e.Cancel = True


--  作者:yancheng
--  发布时间:2017/8/29 17:27:00
--  
真的是,有msgbox就不会弹错。没有就要弹错。(发布的项目。不发布也不弹错。)我试了好几次。
--  作者:有点甜
--  发布时间:2017/8/29 17:31:00
--  

 升级到最新版后发布看看。

 

 或者是,把你的项目拷贝一份,把其余的表、窗口删除,单独做个例子发上。