Foxtable(狐表)用户栏目专家坐堂 → 跨表引用不能更新问题


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

主题:跨表引用不能更新问题

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
跨表引用不能更新问题  发帖心情 Post By:2020/6/17 11:33:00 [只看该作者]

有时候可以,有时候不行。

如果在窗口textbox里面在原有的内容基础上,增加内容,目标表不能更新。需要把textbox的内容删掉,然后重新复制粘贴,这样目标表就更新了。不知道什么原因?

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2020/6/17 11:35:00 [只看该作者]

譬如两个表,表A,表B,表B是目标表。

表B引用表A的代码:


If e.DataCol.Name = "产品编号" Then
    Dim nms() As String = {"产品名称"}  
    If e.NewValue Is Nothing Then 
        For Each nm As String In nms 
            e.DataRow(nm) = Nothing 
        Next 
    Else 
        Dim dr As DataRow 
        dr = DataTables("表A").SQLFind("[产品编号] = '" & e.NewValue & "'") 
        If dr IsNot Nothing 
            For Each nm As String In nms
                e.DataRow(nm) = dr(nm)
            Next
        End If
    End If
End If


表A的自动更新目标表B代码:



Select Case e.DataCol.Name 
    Case  "产品名称"
        Dim Filter As String = "[产品编号] = '" & e.DataRow("产品编号") & "'"
        DataTables("表B").ReplaceFor(e.DataCol.Name, e.NewValue, Filter)
End Select


[此贴子已经被作者于2020/6/17 11:37:09编辑过]

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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/17 11:36:00 [只看该作者]

请上传实例说明。


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2020/6/17 11:38:00 [只看该作者]

请蓝版看看上述代码是否有问题

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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/6/17 11:41:00 [只看该作者]

看不出什么问题。textbox输入完毕,按回车,或者点击其它控件,让textbox离开输入焦点试试

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5362 威望:0 精华:0 注册:2012/8/25 20:50:00
  发帖心情 Post By:2020/7/17 17:08:00 [只看该作者]

找到原因了,原来是没有加载数据。窗口用的是自定义录入界面之四。如果用replacefor,未加载的数据不能更新,如果用sqlreplacefor,已加载的数据不能更新。如果在下拉窗口的表追加数据,数量大的话就会变得很慢。这个该怎么解决?

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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/17 17:11:00 [只看该作者]

2个都使用。先replacefor,再sqlreplacefor

 回到顶部