Foxtable(狐表)用户栏目专家坐堂 → [求助]二表联动的代码,改了一下午还是失败


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

主题:[求助]二表联动的代码,改了一下午还是失败

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]二表联动的代码,改了一下午还是失败  发帖心情 Post By:2014/12/21 21:40:00 [只看该作者]

表A为入库明细单,有以下内容:
通知单号     品名    是否制单(逻辑字段)
D01           A       、
D01           B
D02           C

表B为入库通知单,有以下内容
通知单号    入库日期
D01          2014-01-01
D02          2014-01-02

现在的要求是当表A中的通知单号能在表B中找到时,“是否制单”为TRUE,反之为FALSE。
我目前解决了单表B的通知单号列发生变化时,表A的对应通知单号的是“否制单列”会发生变化。
现在的问题是,我如果直接把表B中的一行数据删除,例如删除表B的D01这一行,表A中只有品名为A的是否制单变为了FALSE,而品名B还是TRUE,我实在不解,我的代码如下:


表B的    BeforeDeleteDataRow事件


For Each dr As DataRow In DataTables("表A").DataRows

    

    dr = DataTables("表A").Find("[通知单号] = '" & e.DataRow("通知单号") & "'")

    

    If dr IsNot Nothing Then '如果找到了,也就是dr不是Nothing

        dr("是否制单")=False

        dr.Save()

    End If

Next


请老师帮我看看,到底错哪了,谢谢!


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/21 21:43:00 [只看该作者]

代码这样写

 

DataTables("表A").ReplaceFor("是否制单", False, "[通知单号] = '" & e.DataRow("通知单号") & "'")


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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/21 21:45:00 [只看该作者]

这行代码看下教程懂了,但是,我写的代码错在哪了,我读了不下30遍,感觉没什么错啊!
[此贴子已经被作者于2014-12-21 21:48:36编辑过]

 回到顶部
美女呀,离线,留言给我吧!
bm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:437 积分:3463 威望:0 精华:0 注册:2011/9/13 23:27:00
光纸上谈兵不行  发帖心情 Post By:2014/12/21 21:48:00 [只看该作者]

做个项目过来看看。

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/21 21:50:00 [只看该作者]

有点甜 老师的代码确实简单,非常好用,我现在用的不够活,但是,我写的代码也不应该有错啊?为什么!

 回到顶部
美女呀,离线,留言给我吧!
bm
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:437 积分:3463 威望:0 精华:0 注册:2011/9/13 23:27:00
这个不对  发帖心情 Post By:2014/12/21 21:51:00 [只看该作者]

dr("是否制单")=False

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/21 21:55:00 [只看该作者]

以下是引用huangfanzi在2014-12-21 21:45:00的发言:
这行代码看下教程懂了,但是,我写的代码错在哪了,我读了不下30遍,感觉没什么错啊!
[此贴子已经被作者于2014-12-21 21:48:36编辑过]

 

你的代码,用的是Find函数,那么永远去查找的是都是同一行。

 

你要这样写

 

For Each dr As DataRow In DataTables("表A").Select("[通知单号] = '" & e.DataRow("通知单号") & "'")
   
    dr("是否制单")=False
   
    dr.Save()
   
Next

 


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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/21 21:59:00 [只看该作者]

受教了。

 回到顶部