以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 调用的目标发生了异常。 未将对象引用设置到对象的实例。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=125707) |
-- 作者:hc-mall -- 发布时间:2018/10/4 14:33:00 -- 调用的目标发生了异常。 未将对象引用设置到对象的实例。 我是一个初学者,现在遇到了这种问题,找不出原因!请专家给解答一下! .NET Framework 版本:2.0.50727.4984 Foxtable 版本:2018.9.9.1 错误所在事件:表,商品主表, DataColChanged 详细错误信息: 调用的目标发生了异常。 未将对象引用设置到对象的实例。 代码如下: Dim dc As DataCol Dim dr As DataRow Select Case e.DataCol.name \'判断发生数据更改的列列名是不是我们要的列名 Case "商品简名" \'如果列名是"商品简名"则执行下面的语句 If e.NewValue Is Nothing Then \'如果新录入的数据为空 e.DataRow("商品全名") = Nothing \'则对应行的商品拼音码录入空值 Else \'如果有录入,则执行下面的代码 If dr.IsNull("自定义分类") Then If dr.IsNull("品牌") Then e.DataRow("商品全名") = dr("商品简名") Else e.DataRow("商品全名") = (dr("品牌") & dr("商品简名")) End If Else If dr.IsNull("品牌") Then e.DataRow("商品全名") = (dr("自定义分类") & dr("商品简名")) Else e.DataRow("商品全名") = (dr("品牌") & dr("自定义分类") & dr("商品简名")) \'则如果品牌,商品?自定义分类全部有数据 End If End If End If Case "商品全名" \'如果列名是"商品全名"则执行下面的语句 If e.NewValue Is Nothing Then \'如果新录入的数据为空 e.DataRow("商品拼音码") = Nothing \'则对应行的商品拼音码录入空值 Else \'如果有录入,则执行下面的代码 e.DataRow("商品拼音码") = getpinyin(e.NewValue ,1) \'将信录入的内容以拼音码的的形式录入商品拼音码 End If End Select |
-- 作者:hc-mall -- 发布时间:2018/10/4 14:42:00 -- 我是不太懂,主要根据教学视频,边学边做!就这段代码,我想实现,通过“品牌”、“自定义分类”、“商品简名”,自动组合生成“商品全名”,如果“商品简名”为空值,则不填入,如果商品简名有,就判断“品牌”、“自定义分类”是否为空,为空则由其他值和“商品简名”一起组成“商品全名”。 如果商品全名有变动,则自动生成商品拼音码!
|
-- 作者:有点甜 -- 发布时间:2018/10/4 16:32:00 -- 改成这样
Dim dr As DataRow = e.DataRow |
-- 作者:hc-mall -- 发布时间:2018/10/4 17:33:00 -- 谢谢,试了。可以了!就是没有实例化dr是吧! Dim dr As DataRow = e.DataRow 还有就是想问问,有没有更好的方法,直接没有输入的话直接空值合并到字符串里面可以吗?有没有简单点的办法!这个代码我个人感觉有点啰嗦!但空值合并到代码里面好像又显示不出来!
|
-- 作者:有点甜 -- 发布时间:2018/10/4 17:35:00 -- Dim dr As DataRow = e.DataRow Select Case e.DataCol.name \'判断发生数据更改的列列名是不是我们要的列名 Case "商品简名", "品牌", "自定义分类" e.DataRow("商品全名") = dr("品牌") & dr("自定义分类") & dr("商品简名") \'则如果品牌,商品?自定义分类全部有数据 Case "商品全名" \'如果列名是"商品全名"则执行下面的语句 If e.NewValue = Nothing Then \'如果新录入的数据为空 e.DataRow("商品拼音码") = Nothing \'则对应行的商品拼音码录入空值 Else \'如果有录入,则执行下面的代码 e.DataRow("商品拼音码") = getpinyin(e.NewValue ,1) \'将信录入的内容以拼音码的的形式录入商品拼音码 End If End Select |
-- 作者:hc-mall -- 发布时间:2018/10/4 19:54:00 -- 这样不行啊!只要有空值,最后结果就不显示!有方法可以把空值也可以合并进来吗?或者是空值项在合并的时候可以忽略不计吗? |
-- 作者:有点甜 -- 发布时间:2018/10/4 20:01:00 -- 你的意思是,这句代码无效?不可能的,所有列的值都一起合并起来的。
e.DataRow("商品全名") = dr("品牌") & dr("自定义分类") & dr("商品简名") \'则如果品牌,商品?自定义分类全部有数据 |
-- 作者:hc-mall -- 发布时间:2018/10/4 20:03:00 -- 就是有些时候“属性”或者“型号"是没有数据的!这样"商品全名"就无法显示了啊!有方法解决吗? |
-- 作者:有点甜 -- 发布时间:2018/10/4 20:09:00 -- 以下是引用hc-mall在2018/10/4 20:03:00的发言:
就是有些时候“属性”或者“型号"是没有数据的!这样"商品全名"就无法显示了啊!有方法解决吗?
不应该的,代码没问题,做个例子发上来测试。 |
-- 作者:hc-mall -- 发布时间:2018/10/4 21:12:00 -- 确实可以,我前面不行是case后面只加了一个“商品简名”其他没加!
------下面将我臃肿的代码发上来,以后研究! Dim dr As DataRow = e.DataRow Case "商品简名" \'如果列名是"商品简名"则执行下面的语句 End If End If Case "商品全名" \'如果列名是"商品全名"则执行下面的语句 Case "品牌商标" , "属性" ,"型号" End Select
--------以下是老师指点以后我修改过的代码,测试时可行的! Dim dr As DataRow = e.DataRow |