以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  控件赋值  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=85307)

--  作者:爱相随
--  发布时间:2016/5/23 10:14:00
--  控件赋值
老师,我的一个菜单控件按钮的意思如下:
从“存货明细表”中加载“存货编码”到表“存货汇总表”,条件是先到“汇总表”查找编码,如果已经存在和“存货明细表”相同的编码,则不加载这个编码,如果没有,则加载不重复的编码。
我的代码如下:
Dim dr As DataRow
dr = DataTables("存货汇总表").Find("存货编码 = \'" & e.NewValue & "\'")
If dr IsNot Nothing Then
    Return
End If
Else
    
    Dim f As New Filler
    f.SourceTable = DataTables("存货明细表") \'指定数据来源
    f.SourceCols = "存货编码" \'指定数据来源列
    f.DataTable = DataTables("存货汇总表") \'指定数据接收表
    f.DataCols = "存货编码" \'指定数据接收列
    f.Fill() \'填充数据

但有问题,改成如下,还是有问题
Dim dr As DataRow
dr = DataTables("存货汇总表").Find("[存货编码] = \'" & e.NewValue & "\'")
If dr IsNot Nothing Then
    Return
End If
Else
    
    Dim f As New Filler
    f.SourceTable = DataTables("存货明细表") \'指定数据来源
    f.SourceCols = "存货编码" \'指定数据来源列
    f.DataTable = DataTables("存货汇总表") \'指定数据接收表
    f.DataCols = "存货编码" \'指定数据接收列
    f.Fill() \'填充数据

请老师提点,谢谢


--  作者:大红袍
--  发布时间:2016/5/23 10:16:00
--  

直接写

 

Dim f As New Filler
f.SourceTable = DataTables("存货明细表") \'指定数据来源
f.SourceCols = "存货编码" \'指定数据来源列
f.DataTable = DataTables("存货汇总表") \'指定数据接收表
f.DataCols = "存货编码" \'指定数据接收列
f.ExcludeExistValue = True
f.Fill() \'填充数据


--  作者:爱相随
--  发布时间:2016/5/23 10:19:00
--  
直接写的话,每点击一次,无论汇总表里是不是已经存在相同的编码,都加载过来,我的要求是如果已经存在相同的编码了,就不要再加载,没有的才加载
[此贴子已经被作者于2016/5/23 10:22:07编辑过]

--  作者:大红袍
--  发布时间:2016/5/23 10:27:00
--  
不,可,能,拷贝2楼代码执行。
--  作者:爱相随
--  发布时间:2016/5/23 10:37:00
--  
最开始我就是只有2楼的代码,结果发现,如果汇总表已经有了Y-026的编码,从明细表加载过来的还有Y-026,那在汇总表就有2个Y-026啦,所以才想到增加条件代码。点击一次就增加一个Y-026编码。
[此贴子已经被作者于2016/5/23 10:38:13编辑过]

--  作者:大红袍
--  发布时间:2016/5/23 10:42:00
--  
以下是引用大红袍在2016/5/23 10:27:00的发言:
不,可,能,拷贝2楼代码执行。

 

+1


--  作者:爱相随
--  发布时间:2016/5/23 10:52:00
--  
 提示的错误为:“Object reference not set to an instance of an object”,翻译过来就是:未将对象引用设置到对象的实例
这种错误一般是什么引起的呢。现在的代码如下:
Dim dr As DataRow
dr = DataTables("存货汇总表").Find("[存货编码] = \'" & dr("存货编码") & "\'")
If dr IsNot Nothing Then
    Return
Else
    
    Dim f As New Filler
    f.SourceTable = DataTables("存货明细表") \'指定数据来源
    f.SourceCols = "存货编码" \'指定数据来源列
    f.DataTable = DataTables("存货汇总表") \'指定数据接收表
    f.DataCols = "存货编码" \'指定数据接收列
    f.Fill() \'填充数据
End If


--  作者:大红袍
--  发布时间:2016/5/23 10:55:00
--  

无语,直接写啊

 

Dim f As New Filler
f.SourceTable = DataTables("存货明细表") \'指定数据来源
f.SourceCols = "存货编码" \'指定数据来源列
f.DataTable = DataTables("存货汇总表") \'指定数据接收表
f.DataCols = "存货编码" \'指定数据接收列
f.ExcludeExistValue = True
f.Fill() \'填充数据


--  作者:爱相随
--  发布时间:2016/5/23 11:02:00
--  
谢谢老师,没注意你的代码和我的代码有变化,非常感谢谢谢
--  作者:爱相随
--  发布时间:2016/5/29 17:29:00
--  
老师,当加载另一个表的数据时,希望把原来的数据给删除掉,加载新的数据,请问怎么处理,谢谢。比如

比如,当点“科目1”按钮时,如果表没有任何数据,则加载科目1表的数据,当表原来有数据时,根据条件,如果启用状态为是时,则不允许删除原来的数据并不允许加载,当启用状态为否时,则删除原来全部数据并加载指定表的数据。
[此贴子已经被作者于2016/5/29 17:42:33编辑过]