以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  手工编码填充数据问题,请教老师  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=28185)

--  作者:mamuaiqing
--  发布时间:2013/1/22 3:09:00
--  手工编码填充数据问题,请教老师

帮助中代码如下:

 

Dim Vals As List(of String())
Vals = DataTables("来源表").GetUniqueValues("","产品","客户")
For
i As Integer = 0 To Vals.Count - 1
    Dim
dr As DataRow = DataTables("接收表").AddNew()
    dr(
"产品") = Vals(i)(0)
    dr(
"客户") = Vals(i)(1)
Next

 

如果来源表为关联表,代码要怎么改?比如关联表名"表A.表B",用Tables("表A.表B")提示错误,DataTables("表A.表B")提示不存在"表A.表B"请教老师


--  作者:lin_hailun
--  发布时间:2013/1/22 8:43:00
--  
 这个提示是正常的。

 对于 表A.表B,DataTables("表A.表B") 实际上是不存在的,只是临时生成的一个Table

 你可以这样用,比如 Tables("表A.表B").DataTable直接使用,这个也等同于DataTables("表B")

--  作者:mamuaiqing
--  发布时间:2013/1/22 16:46:00
--  
以下是引用lin_hailun在2013-1-22 8:43:00的发言:
 这个提示是正常的。

 对于 表A.表B,DataTables("表A.表B") 实际上是不存在的,只是临时生成的一个Table

 你可以这样用,比如 Tables("表A.表B").DataTable直接使用,这个也等同于DataTables("表B")

这样调整执行后连同"表B"中的数据也复制过去了,没实现只复制"表A.表B"内容,在代码中想再加了个排除,排除掉"接收表"与"表A.表B"存在相同的内容,只复制"表A.表B"与"接收表"中不存在的内容,一行数据好解决,多行数据头大了,摸不清方向了,再次请教老师

 


--  作者:lin_hailun
--  发布时间:2013/1/22 17:17:00
--  
以下是引用mamuaiqing在2013-1-22 16:46:00的发言:

这样调整执行后连同"表B"中的数据也复制过去了,没实现只复制"表A.表B"内容,在代码中想再加了个排除,排除掉"接收表"与"表A.表B"存在相同的内容,只复制"表A.表B"与"接收表"中不存在的内容,一行数据好解决,多行数据头大了,摸不清方向了,再次请教老师

 


呃,这样说吧,表A.表B 实际上就是 Datatables("表B").GetUniqueValues("关联列 = \'" & Tables("表A").current("关联列") & "\'", "xxx")

至于你说的排除接收表存在的内容。你比较一下就行了。

--  作者:zerov
--  发布时间:2013/1/22 20:37:00
--  
还是有点不明白关联表的关系,能举例说明一下吗?
--  作者:mamuaiqing
--  发布时间:2013/1/22 23:31:00
--  
以下是引用lin_hailun在2013-1-22 17:17:00的发言:


呃,这样说吧,表A.表B 实际上就是 Datatables("表B").GetUniqueValues("关联列 = \'" & Tables("表A").current("关联列") & "\'", "xxx")

至于你说的排除接收表存在的内容。你比较一下就行了。

明白林老师的代码了("关联列 = \'" & Tables("表A").current("关联列") & "\'"这行代码设置了获得不重复值的条件,"xxx"代表的是获得不重复的列值

 

排除接收表应该是再利用这个代码做成2张表比较后获得值填入


--  作者:mamuaiqing
--  发布时间:2013/1/22 23:43:00
--  
以下是引用zerov在2013-1-22 20:37:00的发言:
还是有点不明白关联表的关系,能举例说明一下吗?

关联表的关系其实很简单,比如上面说的"表A.表B"说简单点这个表其实就是一个临时表,用的时候存在,不用的时候不存在,至于什么是临时表帮助中说的很清楚,可以参考下

 

帮助文件中有个"用Table控件模拟关联表"其实就是把关联表中的代码解剖出来了

 

个人了解是这样,希望对你有帮助

 

 


--  作者:mamuaiqing
--  发布时间:2013/1/23 3:57:00
--  
Datatables("表B").GetUniqueValues("关联列 = \'" & Tables("表A").current("关联列") & And 重复列 =\'" & Tables("接收表").current("重复列") & "\'", "xxx") 学生的代码是否正确,麻烦林老师核对下。 后面的代码是排除了表B跟接收表中相同的重复列的内容
--  作者:lin_hailun
--  发布时间:2013/1/23 9:10:00
--  
以下是引用mamuaiqing在2013-1-23 3:57:00的发言:
Datatables("表B").GetUniqueValues("关联列 = \'" & Tables("表A").current("关联列") & And 重复列 =\'" & Tables("接收表").current("重复列") & "\'", "xxx") 学生的代码是否正确,麻烦林老师核对下。 后面的代码是排除了表B跟接收表中相同的重复列的内容


如果结果正确就正确吧。我还不清楚你数据表的数据是怎样的。

我还以为要在导入的时候去接收表里find一下呢。

--  作者:mamuaiqing
--  发布时间:2013/1/23 17:41:00
--  

代码改成这样不添加了,数据怎么改都无效

Dim Vals As List(of String())
Vals = DataTables("表B").GetUniqueValues("第一列 = \'" & Tables("表A").current("第一列") & "\' And 产品 = \'" & Tables("接收表").current("产品") & "\'", "产品","客户")
For i As Integer = 0 To Vals.Count - 1
    Dim dr As DataRow = DataTables("接收表").AddNew()
    dr("产品") = Vals(i)(0)
    dr("客户") = Vals(i)(1)
Next

 

用Find是怎么设置?请教林老师