Office中国论坛/Access中国论坛

标题: 求助:多条件追加查询 [打印本页]

作者: xinsucai    时间: 2009-11-10 13:05
标题: 求助:多条件追加查询
**:表《期初在库》字段名有:仓库编码\存货编码\存货名称\规格型号\主计量单位\生产线\现存数量\品番\类型,
     表《zaikolist》字段名有:仓库编码\存货编码\存货名称\规格型号\主计量单位\生产线\现存数量,
     需将表《zaikolist》中的数据追加至表《期初在库》,同时条件有:
    1、只选取<仓库编码>是"01","02","03","22"的数据追加;
    2、<仓库编码>是"03"的数据,增加(品番\类型)字段名的数据,
         1)、品番:当《存货名称》为"加热线"且单位为"M"时,显示为"加热线";
                         当《存货名称》为 "检知线",显示为"加热线";
                         当《存货名称》为"加热线"且单位为"KG",显示为"加热线";
                         当《存货名称》为"电缆线*",显示为"电缆线加工";
                         其他显示为"加热线加工"。
         2)、类型:当《存货名称》为"加热线"且单位为"M",显示为"加热线";
                         当《存货名称》为"检知线",显示为"加热线";
                         当《存货名称》为"黄色导线"或者《存货名称》"毛布",显示为"毛布";
                         当《存货名称》为"加热线"且单位为"PC",显示为"毛布";
                         当《存货名称》为"ヒーター取付具組"或者《存货名称》为"便座"或者《存货名称》为"传感加热器",显示为"便座";
                         当《存货名称》为"加热线"且单位为"KG",显示为"加热线半成品";
                         当《规格型号》为"SATA*"或者《规格型号》为"*V90*",显示为"Toshiba";
                         当《规格型号》为"*TXJ*"或者《规格型号》为"*HDMI*"或者《规格型号》为"DUMM*",显示为"Psnasonic";
                         当《规格型号》为"*EF*",显示为"Hitachi";
                         其他显示为"Sony"。

问题:我采用IIF函数时出错,不能使用。
作者: todaynew    时间: 2009-11-10 19:41
过于复杂的情况下,不如多几次追加查询为好。
作者: xinsucai    时间: 2009-11-11 09:03
老师,关键是我在追加《类型》数据时,条件多,使用IIF函数有次数限制,同时使用IIF函数好像最多不能超过6次,不能达到我的要求,请老师指点!
作者: aslxt    时间: 2009-11-11 13:43
本帖最后由 aslxt 于 2009-11-11 13:46 编辑

1、新建模块
Option Compare Database
Function PP(ByVal NM As String, ByVal DW As String) As String
  Select Case NM
  Case "加热线"
    Select Case DW
    Case "M"
      PP = "加热线"
    Case "KG"
      PP = "加热线"
    Case Else
      PP = "加热线加工"
    End Select
  Case "检知线"
    PP = "加热线"
  Case "电缆线*"
    PP = "电缆线加工"
  Case Else
    PP = "加热线加工"
  End Select
End Function
Function LX(ByVal NM As String, ByVal DW As String, ByVal GG As String) As String
  Select Case GG
  Case "SATA*"
    LX = "Toshiba"
  Case "*TXJ*"
    LX = "Psnasonic"
  Case "*HDMI*"
    LX = "Psnasonic"
  Case "DUMM*"
    LX = "Psnasonic"
  Case "*EF*"
    LX = "Hitachi"
  Case Else
    Select Case NM
    Case "加热线"
      Select Case DW
      Case "M"
        LX = "加热线"
      Case "KG"
        LX = "加热线半成品"
      Case "PC"
        LX = "毛布"
      Case Else
        LX = "Sony"
      End Select
    Case "检知线"
      LX = "加热线"
    Case "黄色导线"
      LX = "毛布"
    Case "毛布"
      LX = "毛布"
    Case "ヒーター取付具組"
      LX = "便座"
    Case "便座"
      LX = "便座"
    Case "传感加热器"
      LX = "便座"
      
    Case Else
      LX = "Sony"
    End Select
  End Select
End Function
2、新建查询
INSERT INTO 期初在库 ( 仓库编码, 存货编码, 存货名称, 规格型号, 生产线, 主计量单位, 现存数量, 品番, 类型 )
SELECT zaikolist.仓库编码, zaikolist.存货编码, zaikolist.存货名称, zaikolist.规格型号, zaikolist.生产线, zaikolist.主计量单位, zaikolist.现存数量, PP([存货名称],nz([主计量单位],"")) AS 品番, LX([存货名称],[主计量单位],nz([规格型号],"")) AS 类型
FROM zaikolist
WHERE (((zaikolist.仓库编码)="01" Or (zaikolist.仓库编码)="02" Or (zaikolist.仓库编码)="03" Or (zaikolist.仓库编码)="22"));
3、运行查询
ok?
注意:类型的字段是首先根据规格型号、然后到名称、计量单位这样的顺序判断,如果不符合你的意图,可以修改模块以达到你的目的
作者: xinsucai    时间: 2009-11-11 17:18
谢谢老师
作者: xinsucai    时间: 2009-11-12 11:18
老师,问题出现了,请帮忙再改正下!
1、我想只针对(zaikolist.仓库编码)="03" 追加“品番”和“类型”数据,现全部追加了;
2、追加的“品番”数据中没有体现“电缆线加工”,“类型”数据中没有体现“Toshiba”,“Psnasonic",”Hitachi“,“加热线半成品”。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3