以文本方式查看主题

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

--  作者:蓝蚂蚁
--  发布时间:2019/2/27 9:33:00
--  未将对象引用设置到对象的实例
.NET Framework 版本:2.0.50727.5466
Foxtable 版本:2018.10.9.1
错误所在事件:窗口,检查录入检验报告用小窗口,KeyDown
详细错误信息:
未将对象引用设置到对象的实例。
其KeyDown代码如下:
If e.keycode = 13 Then
    e.form.controls("button1").Select
    e.form.controls("button1").performclick
    e.form.controls("TextBox3").Select
End If
出现这错误,是偶尔的,请问老师是不是代码有问题?

--  作者:有点甜
--  发布时间:2019/2/27 9:42:00
--  

 

你button1的click事件的代码有问题,贴出对应代码看看。

 

 


--  作者:蓝蚂蚁
--  发布时间:2019/2/27 9:45:00
--  
Dim Filter As String
With e.Form.Controls("TextBox1")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "通用名称 like \'%" & .Value & "%\'"
    End If
End With

With e.Form.Controls("TextBox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "生产企业 like \'%" & .Value & "%\'"
    End If
End With

With e.Form.Controls("TextBox3")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "批号 like \'%" & .Value & "%\'"
    End If
End With
Tables("计划来货登记表查询主窗口_Table1").Filter = Filter

--  作者:有点甜
--  发布时间:2019/2/27 9:53:00
--  

 

你表格的currentChanged事件有问题,贴出对应代码。

 


--  作者:蓝蚂蚁
--  发布时间:2019/2/27 9:56:00
--  
If e.DataCol.Name = "产品计划编码" Then
    If e.newvalue = Nothing Then
        e.DataRow("配送公司")= Nothing
    Else
        e.DataRow("配送公司") =Tables("采购计划总表").current("配送公司")
        e.DataRow("计划年月") =Tables("采购计划总表").current("年月份")
    End If
End If
If e.DataCol.Name = "注册证号" Then \'发生变化的是中标号吗?
    If  e.DataRow("注册证号")=Nothing Then
        e.DataRow("耗材类别")=Nothing
    Else
        Dim Str1 As String = e.DataRow("注册证号")
        Dim str2 As String
        If Str1.Contains("备")=True Then
            e.DataRow("耗材类别")="I类"
        End If
        If Str1.Contains("消")=True Then
            e.DataRow("耗材类别")="消字类"
        End If
        If Str1.Contains("注准")=True Or Str1.Contains("注进")=True Or Str1.Contains("注许")=True   Then
            str2=str1.SubString(8,1)
            If str2=3 Then
                e.DataRow("耗材类别")="III类"
            End If
            If str2=2 Then
                e.DataRow("耗材类别")="II类"
            End If
            If str2=1 Then
                e.DataRow("耗材类别")="I类"
            End If
        End If
        If Str1.Contains("字")=True And Str1.Contains("第")=True
            Dim chr1 As Char = "第"
            Dim str4() As String
            Dim str5 As String
            str4=e.DataRow("注册证号").split(chr1)
            str5=str4(1).SubString(0,1)
            If str5=1 Then
                e.DataRow("耗材类别")="I类"
            End If
            If str5=2 Then
                e.DataRow("耗材类别")="II类"
            End If
            If str5=3 Then
                e.DataRow("耗材类别")="III类"
            End If
        End If
    End If
End If
If e.DataCol.Name = "批号" Then
    Dim str1 As String = e.DataRow("批号")
    Dim str2 As String
    str2 = str1.ToUpper()
    e.DataRow("批号")=str2
    \'----
    
    \'---
    
    
End If
\'If e.DataCol.name = "检验报告" OrElse e.DataCol.name = "批号" Then
If  e.DataCol.name = "检验报告" Then
    e.DataTable.ReplaceFor("检验报告", e.DataRow("检验报告"), "批号 = \'" & e.DataRow("批号") & "\' and 目录编号 = \'" & e.DataRow("目录编号") & "\'")
End If
If e.DataCol.Name = "批号" Then
    Dim dr As DataRow
    dr = DataTables("计划来货登记表").Find("批号= \'" & e.DataRow("批号") & "\' and 目录编号 = \'" & e.DataRow("目录编号") & "\'")
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        If dr("检验报告")=True Then
            e.DataRow("检验报告")= True
        Else
            e.DataRow("检验报告")= False
        End If
    End If
    If e.DataRow("批号")=Nothing
        e.DataRow("检验报告")=False
    End If
End If
If e.DataCol.Name = "显非" AndAlso e.DataRow("显非") = False Then
    For Each t As Table In Tables
        If t.DataTable.name = "计划来货登记表" Then
            t.Cols("非计划").Visible = False            
            t.Cols("非计划生产企业").Visible = False
            t.Cols("非计划采购价").Visible = False
        End If
    Next
ElseIf e.DataCol.Name = "显非" AndAlso e.DataRow("显非") =True Then
    For Each t As Table In Tables
        If t.DataTable.name = "计划来货登记表" Then
            t.Cols("非计划").Visible = True            
            t.Cols("非计划生产企业").Visible = True
            t.Cols("非计划采购价").Visible = True
        End If
    Next
End If
If e.DataCol.Name = "非计划" AndAlso e.DataRow("非计划") = True Then
    e.DataRow("生产企业")=e.DataRow("非计划生产企业")
    e.DataRow("中标价")=e.DataRow("非计划采购价")
    e.DataRow("采购价")=e.DataRow("非计划采购价")
End If
If e.DataCol.Name = "目录编号" Then \'发生变化的是中标号吗?
    Dim dr As DataRow
    dr = DataTables("医用耗材目录").Find("[目录编号]=\'" & e.DataRow("目录编号") & "\'" )
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("中标号或编号")= dr("中标号或编号")
    Else
        e.DataRow("中标价")=Nothing
    End If
    Dim drzczh As DataRow
    With DataTables("计划来货登记表")
        drzczh = .Find("目录编号 = \'" & e.DataRow("目录编号") & "\'" ,"来货日期 Desc") \'找出最后一次订购PD01产品的记录
        If drzczh IsNot Nothing Then
            e.DataRow("注册证号") =drzczh("注册证号")
        Else
            e.DataRow("注册证号") =Nothing
        End If
    End With    
End If
If e.DataCol.Name = "审核" Then 
        If e.DataRow("审核")=True Then
            e.DataRow.Locked = True
        Else
            e.DataRow.Locked = False
        End If
End If

--  作者:有点甜
--  发布时间:2019/2/27 10:03:00
--  
表格的currentChanged事件有问题,贴出对应代码。
--  作者:蓝蚂蚁
--  发布时间:2019/2/27 10:15:00
--  
【表格的currentChanged事件有问题,贴出对应代码。】里面没有代码的
--  作者:有点甜
--  发布时间:2019/2/27 10:16:00
--  
Table1的currentChanged事件;如果是副本表,贴出主表的currentChanged事件。
--  作者:有点甜
--  发布时间:2019/2/27 10:16:00
--  

 

不然,请做一个实例发上来测试。

 


--  作者:蓝蚂蚁
--  发布时间:2019/2/27 10:18:00
--  
谢谢 老师耐心的解答  暂时不理吧  这个实例很大  反正是偶尔出现的