以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于SQLReplaceFor (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177297) |
-- 作者:昱飞哥 -- 发布时间:2022/5/16 21:39:00 -- [求助]关于SQLReplaceFor 有个主表:表A 有n个子表:表B、表C。。。,每个子表只加载了部分数据 要达到的效果:当主表某行的"所有者"列数据发生变化时,它的所有子表已经加载了的数据的“所有者”列也改变,同时,后台数据库没加载的数据的“所有者”列也改变 于是,我在全局表事件的DataColChanged事件中这样写: \'对于所有关联表,如果主表的所有者改变了,该主表的所有子表的所有者也变成对应的 If e.DataCol.Name = "所有者" Then For Each re As Relation In Relations If re.ParentTable Is e.DataTable Then For Each r As Row In Tables(Re.ParentTable.Name & "." & Re.ChildTable.Name).Rows \'遍历关联表的所有行 r("所有者") = e.DataRow("所有者") \'将加载出来的关联表的所有记录的所有者修改 Next DataTables(Re.ChildTable.Name).SQLReplaceFor("所有者",e.DataRow("所有者")," \'" & Re.ChildColumn.Name & "\' = \'" & e.DataRow(Re.ParentColumn.Name) & "\'") \'修改后台数据库中 DataTables(Re.ChildTable.Name).Save() End If Next End If 出现的问题:已经加载的数据倒是变化了,但是后台数据库对应的数据并没有发生改变
|
-- 作者:有点蓝 -- 发布时间:2022/5/16 21:43:00 -- 调试 msgbox(" \'" & Re.ChildColumn.Name & "\' = \'" & e.DataRow(Re.ParentColumn.Name) & "\'") DataTables(Re.ChildTable.Name).SQLReplaceFor("所有者",e.DataRow("所有者")," \'" & Re.ChildColumn.Name & "\' = \'" & e.DataRow(Re.ParentColumn.Name) & "\'")
|
-- 作者:昱飞哥 -- 发布时间:2022/5/16 21:53:00 -- 明白了,要写成这样:Re.ChildColumn.Name &" = \'" & e.DataRow(Re.ParentColumn.Name) & "\'" |