以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]二表联动的代码,改了一下午还是失败 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=61901) |
-- 作者:huangfanzi -- 发布时间: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 请老师帮我看看,到底错哪了,谢谢! |
-- 作者:有点甜 -- 发布时间:2014/12/21 21:43:00 -- 代码这样写
DataTables("表A").ReplaceFor("是否制单", False, "[通知单号] = \'" & e.DataRow("通知单号") & "\'") |
-- 作者:huangfanzi -- 发布时间:2014/12/21 21:45:00 -- 这行代码看下教程懂了,但是,我写的代码错在哪了,我读了不下30遍,感觉没什么错啊! [此贴子已经被作者于2014-12-21 21:48:36编辑过]
|
-- 作者:bm -- 发布时间:2014/12/21 21:48:00 -- 光纸上谈兵不行 做个项目过来看看。 |
-- 作者:huangfanzi -- 发布时间:2014/12/21 21:50:00 -- 有点甜 老师的代码确实简单,非常好用,我现在用的不够活,但是,我写的代码也不应该有错啊?为什么! |
-- 作者:bm -- 发布时间:2014/12/21 21:51:00 -- 这个不对 dr("是否制单")=False |
-- 作者:有点甜 -- 发布时间: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("通知单号") & "\'")
|
-- 作者:huangfanzi -- 发布时间:2014/12/21 21:59:00 -- 受教了。 |