以文本方式查看主题

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

--  作者:wandongliang
--  发布时间:2016/3/2 22:21:00
--  未将对象应用设置到对象的实例……求解!

   代码如下:

If e.DataCol.Name = "日期" Then
    If e.DataRow.IsNull("日期") Then
        e.DataRow("零售单编号") = Nothing
    Else
        Dim mn As WinForm.Form = Forms("零售录入窗口")
        If mn.Opened = True Then
            Dim mb As DataRow
            Dim mv As String = mn.Controls("Label2").Text
            Dim mc As String
            mv = mv.Trim()
            mb = DataTables("权限设置").Find("账号名 = \'" & mv & "\'")
            If mb IsNot Nothing Then
                mc = mb("账号编码")
                Dim bh As String = mc & "-" & Format(e.NewValue,"yyyyMMdd") & "-" \'取得编号的8位前缀
                If e.DataRow("零售单编号").StartsWith(bh) = False
                    Dim max As String
                    Dim idx As Integer
                    max = e.DataTable.Compute("Max(零售单编号)","日期 = #" & e.NewValue  & "# And [_Identify] <> " & e.DataRow("_Identify") ) \'取得该天的最大编号
                    If max > "" Then \'如果存在最大编号
                        idx = CInt(max.Substring(14,3)) + 1 \'获得最大编号的后三位顺序号,并加1
                    Else
                        idx = 1 \'否则顺序号等于1
                    End If
                    e.DataRow("零售单编号") = bh & Format(idx,"000")
                End If
            End If
        End If
    End If
End If

 

我在零售录入窗口修改日期之后,有时候会弹出“未将对象应用设置到对象的实例”的错误,并且设置了默认日期,并增加行之后,零售单编号会出现重复。但是有的时候又一切正常,没有丝毫问题,求解是因为什么原因?


--  作者:大红袍
--  发布时间:2016/3/2 22:37:00
--  

看了代码,不会报这个错的。例子发上来测试。


--  作者:大红袍
--  发布时间:2016/3/2 22:40:00
--  

你试试这样改

 

idx = CInt(max.Substring(14,3)) + 1 \'获得最大编号的后三位顺序号,并加1

 

改成

 

idx = CInt(max.Substring(bh.length,3)) + 1 \'获得最大编号的后三位顺序号,并加1


--  作者:wandongliang
--  发布时间:2016/3/11 21:04:00
--  

谢谢,已找到问题所在,不是这段代码出了问题,而是另外一段!


--  作者:wandongliang
--  发布时间:2016/3/11 21:06:00
--  

此外,还有另外一个问题想问一下。

那就是,新增行之后,上一行数据是否已经自动保存到数据库中,此时在另外一台电脑中同步表,是否能看到保存的数据?

 


--  作者:wandongliang
--  发布时间:2016/3/11 21:08:00
--  
如果新增行之后,或者修改行的数据之后,数据并没有立即保存到数据库中,那么怎么才可以只保存已经修改的行,毕竟如果保存整个表的话,实在是太耗资源了。
--  作者:狐狸爸爸
--  发布时间:2016/3/11 23:11:00
--  

1、如果你修改一行,就只会保存一行,不会保存整个表。

2、自动同步,参考:

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

 

 


--  作者:wandongliang
--  发布时间:2016/3/12 6:17:00
--  

哦,也就是说,就算代码设置的是保存整个表,但是如果表只修改了一行,它也只会保存修改的这一行,不会多余浪费资源是吧?


--  作者:狐狸爸爸
--  发布时间:2016/3/12 7:41:00
--  
是的
--  作者:hanxuntx
--  发布时间:2016/3/12 10:23:00
--  
这个报错有时候很难找
一般是 有两种情况
引用了行 但是这个行不存在
或者定义集合字典 没用关键字New

这个错误提示要是能明确一点对新手要容易查找一些