以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如果将2个表中指定2个列值相同的行生成在另外一张表中  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=42902)

--  作者:gsrcu
--  发布时间:2013/11/25 17:03:00
--  [求助]如果将2个表中指定2个列值相同的行生成在另外一张表中
有4张表        第一个表XRKH 字段:姓名 卡余额 工作单位           第二个表KHKH 字段:姓名 会员卡号 工作单位         第三个表ZZHC 字段:姓名 会员卡号 卡余额 工作单位          第四个表WZDD 字段:姓名 会员卡号 卡余额 工作单位                             1、做了个窗体,加了个按钮,点击按钮后实现: 将第一个表中姓名、工作单位 与 第二个表中 姓名 工作单位进行对比,如果2个值都相等,就生成到第三个表中,并将2张表字段值合并在一起填充到ZZHC表中                                    2、如果第一个表中存在的客户,在第二张表中不存在时,条件与第1条一样,同时比对2个值(姓名、工作单位),生成数据到第四个表WZDD表中 我试了几次都不能实现,使用的是自助填充器代码,可以取到值但不能合并数据行。                          求助高手解决一下。先谢谢了,偶是foxtable的新手,很看好这个软件。
[此贴子已经被作者于2013-11-25 17:05:13编辑过]

--  作者:Bin
--  发布时间:2013/11/25 17:09:00
--  
1.这种问题最好上个例子
2.你的关联依据是什么? 第一行和第一行比较? 还是以姓名为关联作为比较?
3.想要得到帮助,必须要先把问题问好,泛泛而问,纸上谈兵,会让想帮助你的人也一筹莫展,巧妇难为无米之炊!   建议你把项目文件,数据.发上来,并且整理一下问题描述.

--  作者:狐狸爸爸
--  发布时间:2013/11/25 17:13:00
--  

命令窗口执行,细节自行调整:

 

For each dr1 As DataRow in DataTables("第一个表").datarows

     Dim dr2 As datarow = DataTables("第二个表").Find("姓名 = \'" & dr1("姓名") & “ and 工作单位 = \'" & dr1("工作单位") & "\'")

     if dr2 IsNot Nothing Then

        Dim dr3 As Datarow = Datatbbles("第三个表").AddNew()

        dr3("工作单位") = dr1("工作单位")

        dr3("姓名") = dr1("姓名")

        dr3("卡余额") = dr1("卡余额")

        dr3("会员卡号") = dr1("会员卡号")

    else

        Dim dr4 As Datarow = Datatbbles("第四个表").AddNew()

        dr4("工作单位") = dr1("工作单位")

        dr4("姓名") = dr1("姓名")

        dr4("卡余额") = dr1("卡余额")

    end If

Next

[此贴子已经被作者于2013-11-25 17:15:54编辑过]

--  作者:gsrcu
--  发布时间:2013/11/25 17:16:00
--  

没有使用关联功能,第一个表 和第二个表都是单独录入的, 但可以确定的是这2张表中有共同字段值,数据所在的行都不固定

 

就是第一个表中姓名和工作单位 要去和 第二个表 中所有数据进行搜索,只要姓名和工作单位都相同,就将2个表中的行内容整合到第三个表中 因为第一个表没有 会员卡号这个列, 第二个表有会员卡号这个列 想实现的就是只要条件符合,就生成新的行

 

 


--  作者:狐狸爸爸
--  发布时间:2013/11/25 17:18:00
--  
答案在3楼
--  作者:gsrcu
--  发布时间:2013/11/25 17:26:00
--  
好的,感谢 狐狸爸爸 正在试,一会告诉结果
--  作者:gsrcu
--  发布时间:2013/11/25 17:31:00
--  

Dim dr3 As Datarow = Datatbbles("第三个表").AddNew()

 

错误提示 未声明 Datatbbles

 

 


--  作者:狐狸爸爸
--  发布时间:2013/11/25 17:48:00
--  

笔误,改为:

 

Dim dr3 As Datarow = DataTables("第三个表").AddNew()

 

图片点击可在新窗口打开查看


--  作者:gsrcu
--  发布时间:2013/11/25 18:30:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:error.jpg
图片点击可在新窗口打开查看

“无业”是工作单位的值

[此贴子已经被作者于2013-11-25 18:39:47编辑过]

--  作者:有点甜
--  发布时间:2013/11/25 19:07:00
--  
 改成这样

For each dr1 As DataRow in DataTables("第一个表").datarows

     Dim dr2 As datarow = DataTables("第二个表").Find("姓名 = \'" & dr1("姓名") & “\' and 工作单位 = \'" & dr1("工作单位") & "\'")

     if dr2 IsNot Nothing Then

        Dim dr3 As Datarow = Datatables("第三个表").AddNew()

        dr3("工作单位") = dr1("工作单位")

        dr3("姓名") = dr1("姓名")

        dr3("卡余额") = dr1("卡余额")

        dr3("会员卡号") = dr1("会员卡号")

    else

        Dim dr4 As Datarow = Datatables("第四个表").AddNew()

        dr4("工作单位") = dr1("工作单位")

        dr4("姓名") = dr1("姓名")

        dr4("卡余额") = dr1("卡余额")

    end If

Next