Foxtable(狐表)用户栏目专家坐堂 → [求助]关于SQLReplaceFor


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

主题:[求助]关于SQLReplaceFor

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


加好友 发短信
等级:小狐 帖子:328 积分:2529 威望:0 精华:0 注册:2020/3/2 23:15:00
[求助]关于SQLReplaceFor  发帖心情 Post By:2022/5/16 21:39:00 [只看该作者]

有个主表:表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

出现的问题:已经加载的数据倒是变化了,但是后台数据库对应的数据并没有发生改变

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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) & "'") 

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


加好友 发短信
等级:小狐 帖子:328 积分:2529 威望:0 精华:0 注册:2020/3/2 23:15:00
  发帖心情 Post By:2022/5/16 21:53:00 [只看该作者]

明白了,要写成这样:Re.ChildColumn.Name &"  = '" & e.DataRow(Re.ParentColumn.Name) & "'"

 回到顶部