Foxtable(狐表)用户栏目专家坐堂 → 关联查询


  共有1139人关注过本帖平板打印复制链接

主题:关联查询

美女呀,离线,留言给我吧!
朱女士
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:453 积分:3683 威望:0 精华:0 注册:2020/2/8 11:14:00
关联查询  发帖心情 Post By:2023/10/24 6:45:00 [只看该作者]

老师您好!
 我有个问题还得麻烦您!

我的这里有三个表:

1)、订单评审表(ddpsb),ddpsb里的字段有:发货日期,制造令号(zzh),zzh_xx

2)、订单清单表(ddqdb),ddqdb的字段有:清单条码编码,zzh,zzh_yy

3)、实时工序计算表,字段有:清单条码编码,发货日期

4)、本模块实现的目的是填充“实时工序表”里的“发货日期”的数据。发货日期为空的不填充。这三个表的关联条件是:ddpsb<->ddqdb关联是zzh相同,{ddpsb}.zzh_xxright({ddqdb}.zzh_yy,2)相同。以此为条件取出ddpsb的发货日期和ddqdb的清单条码编码。

5)、然后以清单条码编码相同为条件,将发货日期填充到“实时工序计算表中”。

6)、这里判断的条件是:首先是{ddpsb}.zzh={ddqdb}.zzh,然后是区分{ddpsb}.zzh_xx是否为空,如果不为空,同时满足另一个条件:{ddpsb}.zzh_xx=right({ddqdb}.zzh_yy,2) ,最后如果{ddpsb}.zzh_xx为空,就直接查询{ddqdb}.清单条码编码和{ddpsb}.发货日期
7、我用的临时表,然后再逐条更新到“实时工序计算表”中,您还有否简捷办法。

 我下面的代码:出现错误“case附近有语法错误”
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("清单条码编码", GetType(String), 32)
dtb.AddDef("zzh", GetType(String), 32)
dtb.AddDef("zzh_xx", GetType(String), 32)
dtb.AddDef("zzh_yy", GetType(String), 32)
dtb.AddDef("发货日期", GetType(Date))
dtb.Build()

Dim cmd As New S  QLCommand
Dim dt As DataTable
c md.C

c  md.CommandText = "S  elect 清单条码编码, 发货日期, {ddpsb}.zzh, {ddqdb}.zzh, zzh_xx, zzh_yy From {ddpsb} right Join {ddqdb} case when {ddpsb}.zzh_xx is not null and {ddpsb}.zzh_xx = right({ddqdb}.zzh_yy,2) else {ddpsb}.zzh_xx is null end On {ddpsb}.zzh = {ddqdb}.zzh  where {ddpsb}.发货日期 Is Not null"
dt = cmd.ExecuteReader()

For Each dr1 As DataRow In dt.DataRows
    Dim dr2 As DataRow = DataTables("统计").AddNew()
    dr2("清单条码编码") = dr1("清单条码编码")
    dr2("zzh") = dr1("zzh")
    dr2("zzh_xx") = dr1("zzh_xx")
     dr2("zzh_yy") = dr1("zzh_yy")
    dr2("发货日期") = dr1("发货日期")
Next

 回到顶部