Foxtable(狐表)用户栏目专家坐堂 → sql 数据源最好的表同步方案


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

主题:sql 数据源最好的表同步方案

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
sql 数据源最好的表同步方案  发帖心情 Post By:2018/1/3 18:44:00 [只看该作者]

If e.Table.Current IsNot Nothing Then
DataTables("订单明细").LoadFilter = "订单编号 = " & e.Table.Current("订单编号")
Else

DataTables("订单明细").LoadFilter =
"[_Identify] is null"

End
If
DataTables
("订单明细").Load()

这样我们选择某行订单,就会自动加载对应的订单明细。

上面的代码也有不足,例如处理A订单的时候,会自动加载A订单的明细,当处理完B订单后再回到A订单,又得重新加载一次A订单的订单明细,显然这种重复加载是一种"浪费"。

我们可以再完善一下代码,避免数据重复加载:

If e.Table.Current IsNot Nothing Then
Dim Filter As String =
"
订单编号 = " & e.Table.Current("订单编号")
If DataTables(
"
订单明细").Find(Filter) Is Nothing Then '如果对应的订单明细没有加载过
DataTables(
"
订单明细").AppendLoad(Filter) '则追载此订单的订单明细
End
If

End
If

这里采用AppendLoad来追载没有加载过的订单明细,避免了重复加载,效率远远好过第一个方案。



这个在SQL数据源下貌似不行   还有其他的更好的SQL加载方案吗  最后的这种加载方式


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


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

任何数据源都可以,试试改成

 

If e.Table.Current IsNot Nothing Then
    Dim Filter As String = "订单编号 = '" & e.Table.Current("订单编号") & "'"
    DataTables("订单明细").RemoveFor(Filter)
    DataTables("订单明细").AppendLoad(Filter) '则追载此订单的订单明细
End If

 


 回到顶部