以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  对象引用未设置为对象的实例。  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=83565)

--  作者:爱相随
--  发布时间:2016/4/12 15:54:00
--  对象引用未设置为对象的实例。
老师,在按钮代码执行时出现错误,请老师帮忙,谢谢!!感觉带色部分的代码不完整,但又不晓得怎么添加(想要表达代码的意思是,在科目明细表查找凭证号和一级科目名称都相同的行,如果找到,则不用复制,如果没有找到,则复制勾选中没有找到的行。),我的代码如下:
If User.IsRole("财务")  Then  
    For Each r As Row In CurrentTable.Rows
      If r("选择") = True Then
         Dim dr1 As DataRow
        \'否则在科目明细表查找同名的凭证号和一级科目名称行,将找到的行赋值给变量dr1
        dr1 = DataTables("科目明细").Find("[凭证号]  = \'" & dr1("凭证号") & "\'And [一级科目名称] = \'" & dr1("一级科目名称") & "\'")
        If dr1 IsNot Nothing Then \'如果没有找到同名的凭证号和一级科目名称行,也就是dr1为Nothing
          Return \'那么返回
        End If
         Else
           Dim nma() As String = { "日期","科目编码","凭证号","一级科目名称","借方金额","贷方金额" } \'A表数据来源列
           Dim nmb() As String = { "日期","科目编码","凭证号","一级科目名称","借方金额","贷方金额"  } \'B表数据接收列
           Dim dr As DataRow = DataTables("科目明细").AddNew          
            For i As Integer = 0 To nma.Length - 1
              dr(nmb(i)) = r(nma(i))
            Next
          MainTable = Tables("科目明细") \'选择表B作为主表.
         End If
      Next
End If
      End If
   Next
    
 End If

--  作者:大红袍
--  发布时间:2016/4/12 15:58:00
--  
If User.IsRole("财务")  Then
    For Each r As Row In CurrentTable.Rows
        If r("选择") = True Then
            Dim dr1 As DataRow
            \'否则在科目明细表查找同名的凭证号和一级科目名称行,将找到的行赋值给变量dr1
            dr1 = DataTables("科目明细").Find("[凭证号]  = \'" & r("凭证号") & "\'And [一级科目名称] = \'" & r("一级科目名称") & "\'")
            If dr1 IsNot Nothing Then \'如果没有找到同名的凭证号和一级科目名称行,也就是dr1为Nothing
                Return \'那么返回
               
            Else
                Dim nma() As String = { "日期","科目编码","凭证号","一级科目名称","借方金额","贷方金额" } \'A表数据来源列
                Dim nmb() As String = { "日期","科目编码","凭证号","一级科目名称","借方金额","贷方金额"  } \'B表数据接收列
                Dim dr As DataRow = DataTables("科目明细").AddNew
                For i As Integer = 0 To nma.Length - 1
                    dr(nmb(i)) = r(nma(i))
                Next
                MainTable = Tables("科目明细") \'选择表B作为主表.
            End If
        End If
    Next
End If
[此贴子已经被作者于2016/4/12 16:21:22编辑过]

--  作者:爱相随
--  发布时间:2016/4/12 16:04:00
--  
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2016.4.6.1
错误所在事件:菜单,科目明细表,Click
详细错误信息:
Object reference not set to an instance of an object.


老师,还是出现这个错误

--  作者:爱相随
--  发布时间:2016/4/12 16:05:00
--  
错误翻译过来就是:对象引用未设置为对象的实例。
--  作者:大红袍
--  发布时间:2016/4/12 16:07:00
--  

 上面代码不可能报错。自己调试

 

 http://www.foxtable.com/help/topics/1485.htm

 

 


--  作者:爱相随
--  发布时间:2016/4/12 16:07:00
--  
Dim dr1 As DataRow
            \'否则在科目明细表查找同名的凭证号和一级科目名称行,将找到的行赋值给变量dr1
            dr1 = DataTables("科目明细").Find("[凭证号]  = \'" & dr1("凭证号") & "\'And [一级科目名称] = \'" & dr1("一级科目名称") & "\'")
            If dr1 IsNot Nothing Then \'如果没有找到同名的凭证号和一级科目名称行,也就是dr1为Nothing
                Return \'那么返回
                
应该是这段代码定义对象有问题

--  作者:大红袍
--  发布时间:2016/4/12 16:21:00
--  

改成

 

dr1 = DataTables("科目明细").Find("[凭证号]  = \'" & r("凭证号") & "\'And [一级科目名称] = \'" & r("一级科目名称") & "\'")


--  作者:爱相随
--  发布时间:2016/4/12 16:40:00
--  
谢谢老师,有时看似没问题,一小点不同结果大不一样!!