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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17570 威望: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的写法..  谢谢!



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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17570 威望: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


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17570 威望: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不能同时用


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17570 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/1/23 16:46:00 [显示全部帖子]

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


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17570 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2015/1/23 17:19:00 [显示全部帖子]

谢谢,有个问题就是这样用时

S elect * from {生产物料明细} where 生产单号+工序号  In ('zl1405-0011','zl1405-0021')

会提示出错“在将 varchar 值 'zl1405-0021' 转换成数据类型 tinyint 时失败。

因为生产单号是字符型,工序号是tinyint,这样的话要怎么写才不报错?


 回到顶部