Foxtable(狐表)用户栏目专家坐堂 → 多列关联时主子表如何写代码加载


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

主题:多列关联时主子表如何写代码加载

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
多列关联时主子表如何写代码加载  发帖心情 Post By:2015/1/23 0:13:00 [只看该作者]

'如果主表没数据不加载明细,
If DataTables("订单").DataRows.Count = 0 Then
    DataTables("订单明细").LoadFilter = "[_Identify] < 0 " '不加载
    DataTables("订单明细").Load(False)
Else  '遍历加载各个子表,集合已加载父表的所有关联列编号
    Dim ids As String
    For Each cdr As DataRow In DataTables("订单").dataRows
        ids = ids & ",'" & cdr("订单编号") & "'"
    Next
    ids = ids.Trim(",")
    Dim sql As String = "S elect * from {订单明细} where 订单编号 In (" & ids & ")"
    DataTables("订单明细").SQLLoad(sql,False)
End If

 

上面是只有订单编号一列作为关联列时的情况,如果订单与订单明细是通过两个关联列如“订单编号,客户ID”关联的代码要如何写呢,要同上面按sqlLoad的写法..  谢谢!



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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/23 8:02:00 [只看该作者]

那就要把条件从 in ('1','2','3')
改为

(关联列1='1' and 关联列2='2') or (关联列1='3' and 关联列2='4') or (关联列1='13' and 关联列2='14')

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/1/23 8:53:00 [只看该作者]

那下面这句要怎么修改呢,因为多个关联列不知道怎么把它们集合在一起,还是要用数组集合之类的。

For Each cdr As DataRow In DataTables("订单").dataRows
        ids = ids & ",'" & cdr("订单编号") & "'"
 Next


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/23 9:00:00 [只看该作者]

For Each cdr As DataRow In DataTables("订单").dataRows
        ids = ids & "or (关联列1='" & cdr("关联列1") & "' and 关联列2='" & cdr("关联列2") & "') "
 Next

Dim sql As String = "S elect * from {订单明细} where " & ids.substring(2,ids.length-2)


至少要掌握一下基础知识.

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


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

 可以直接这样

 

DataTables("名单").LoadChildren("明细", "身份证号]+[入院时间", "[身份证号]+[入院时间]")

 

 或者,多列合并以后,LoadFilter这样写

 

"S elect * from {订单明细} where [身份证号]+[入院时间]  In (" & ids & ")"


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/1/23 9:18:00 [只看该作者]

以下是引用有点甜在2015-1-23 9:01:00的发言:

 可以直接这样

 

DataTables("名单").LoadChildren("明细", "身份证号]+[入院时间", "[身份证号]+[入院时间]")

 

 或者,多列合并以后,LoadFilter这样写

 

"S elect * from {订单明细} where [身份证号]+[入院时间]  In (" & ids & ")"

因为主表的数据全部都是用sqlload的方式加载的,

DataTables("名单").LoadChildren("明细", "身份证号]+[入院时间", "[身份证号]+[入院时间]")

这样的方式加载会提示错误,好象sqlload与datatable.load不能同时用


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


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

 1、ids合并多列内容,分隔符用 ',' 如 '123456','789'

 

 2、sql语句 "S elect * from {订单明细} where [第一列]+[第二列]  In (" & ids & ")"


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/1/23 16:46:00 [只看该作者]

请教两位老师,4楼用or连接明细表的所有需要加载的数据和7楼用in选择的方式哪种效率高些,还是都一样?


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


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

以下是引用HappyFt在2015-1-23 16:46:00的发言:

请教两位老师,4楼用or连接明细表的所有需要加载的数据和7楼用in选择的方式哪种效率高些,还是都一样?

 

效率差不多。


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/23 16:48:00 [只看该作者]

In 简便一些, 效率上来说应该差不多,你测试一下便知

 回到顶部
总数 13 1 2 下一页