Foxtable(狐表)用户栏目专家坐堂 → 未将对象应用设置到对象的实例……求解!


  共有9853人关注过本帖树形打印复制链接

主题:未将对象应用设置到对象的实例……求解!

帅哥哟,离线,有人找我吗?
wandongliang
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:415 积分:3628 威望:0 精华:0 注册:2016/1/1 20:20:00
未将对象应用设置到对象的实例……求解!  发帖心情 Post By: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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/2 22:37:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/2 22:40:00 [只看该作者]

你试试这样改

 

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

 

改成

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
wandongliang
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:415 积分:3628 威望:0 精华:0 注册:2016/1/1 20:20:00
  发帖心情 Post By:2016/3/11 21:04:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
wandongliang
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:415 积分:3628 威望:0 精华:0 注册:2016/1/1 20:20:00
  发帖心情 Post By:2016/3/11 21:06:00 [只看该作者]

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

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

 


 回到顶部
帅哥哟,离线,有人找我吗?
wandongliang
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:415 积分:3628 威望:0 精华:0 注册:2016/1/1 20:20:00
  发帖心情 Post By:2016/3/11 21:08:00 [只看该作者]

如果新增行之后,或者修改行的数据之后,数据并没有立即保存到数据库中,那么怎么才可以只保存已经修改的行,毕竟如果保存整个表的话,实在是太耗资源了。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/3/11 23:11:00 [只看该作者]

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

2、自动同步,参考:

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

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
wandongliang
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:415 积分:3628 威望:0 精华:0 注册:2016/1/1 20:20:00
  发帖心情 Post By:2016/3/12 6:17:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2016/3/12 7:41:00 [只看该作者]

是的

 回到顶部
帅哥哟,离线,有人找我吗?
hanxuntx
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2016/3/12 10:23:00 [只看该作者]

这个报错有时候很难找
一般是 有两种情况
引用了行 但是这个行不存在
或者定义集合字典 没用关键字New

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


 回到顶部
总数 75 1 2 3 4 5 6 7 8 下一页