表达复杂

我在工作正常的查询表达式,但我需要添加额外的IFF声明。 我无法保存,因为一个“来表达复杂的错误”消息的变化。 下面是工作的表达。 有condencing表达,以允许加入另外当且仅当陈述的方法吗?

COM模型:!IIF([交付] [总成配置和S / N]类似于“* 206L XMSN *”,11,IIF([交付] [总成配置和S / N]类似于“* 407 XMSN *”,12 ,IIF([交付]![总成配置和S / N]类似于“* 412 XMSN *”,13,IIF([交付]![总成配置和S / N]类似于“* 429 XMSN *”,14,I如果([交付]![总成配置和S / N]类似于“* 212 * XMSN”,15,IIF([交付]![总成配置和S / N]类似于“* 206-111 90度*”,16, IIF([交付]![总成配置和S / N]类似于“* 406-113 90度*”,17日,IIF([交付]![总成配置和S / N]类似于“* 406-121(407) 90度*“,18,IIF([交付]![总成配置和S / N]类似于”* 212-103(412)90度*“,19日,IIF([交付]![总成配置和S / N ]像“* 212-023A *”,2​​0,IIF([交付]![总成配置和S / N]类似于“* 412 42 *摄氏度”,21日,IIF([交付]![总成配置和S / N ]像“* 429 96 *摄氏度”,22))))))))))))

我想补充,但得到的表达,复杂的错误按摩当我这样做。

IIF([交付]![总成配置和S / N]类似于“* 212-009 *”,2​​3

--------------解决方案-------------

添加到你这样的转换表 -

总成配置和S / N号型号类型COM模型

206L XMSN 11 206L XMSN 11

407 XMSN 12 407 XMSN 12

412 XMSN 13 412 XMSN 13

429 XMSN 14 429 XMSN 14

212 XMSN 15 212 XMSN 15

206-111 90°16 206 90°16

406-113 90°17 17

406-121(407)90度18 407 90摄氏度18

212-103(412)90度19 212 42摄氏度19

212-023A 20 412 90°20

412 42摄氏度21 412 42 21摄氏度

429 96摄氏度22 429 96摄氏度22

212-009 23 23

使用此查询(测试) -

SELECT交付。[总成配置和S / N],可交付。[当前位置],交付[交货日期],Deliverables.Productline,IIF([COM模型] 11至15日,“商业XMSN”,“商业小G / B“)AS [COM程序],[总成Transolation] .Number AS [COM模型] IIF([COM模型] = 11,”206L XMSN“,IIF([COM模型] = 12,”407 XMSN“ IIF([COM模型] = 13,“412 XMSN”,IIF([COM模型] = 14,“429 XMSN”,IIF([COM模型] = 15,“212 XMSN”,IIF([COM模型] = 16 “206 90°”,IIF([COM模型] = 18,“407 90°”,IIF([COM模型] = 19,“212 42摄氏度”,IIF([COM模型] = 20,“412 90摄氏度“IIF([COM模型] = 21,”412 42摄氏度“,IIF([COM模型] = 22,”429 96 DEG“)))))))))))AS [产品型号类型],IIF( [当前位置] =“1”,0.071,IIF([当前位置] =“2”,0.142,IIF([当前位置] =“3”,0.214,IIF​​([当前位置] =“4”,0.285, IIF([当前位置] =“5”,0.357,IIF([当前位置] =“6”,0.428,IIF([当前位置] =“7”,0.5,IIF([当前位置] =“8” 0.571,IIF([当前位置] =“9”,0.642,IIF([当前位置] =“10”,0.714,IIF​​([当前位置] =“11”,0.785,IIF([当前位置] =“12 “0.857,IIF([当前位置] =”13“,0.928,IIF([当前位置] =”14“,1,0))))))))))))))为百分数
从交付,[总成Transolation]
WHERE(((交付[总成配置和S / N])像“*”&[总成Transolation] [总成配置和S / N]“*”));

有给你可以使用嵌套函数的数量限制。 你可能会考虑创建一个自定义的VBA函数返回所需的值:

功能ComModel(InputString作为字符串)只要
如果InputString像“* 206L XMSN *”,则
ComModel = 11
elseif的InputString像“* 407 * XMSN”然后
ComModel = 12
elseif的...
...
elseif的InputString像“* 429 96 *摄氏度”然后
ComModel = 22
万一
结束功能

使用这样的查询:

COM模型:ComModel(![交付] [总成配置和S / N])

嗯,正如你可能知道的不幸,这是价格非规范化设计的一部分。 如果[总成配置和S / N]字段是几件复合材料,其中之一是在自己的权利(例如“206L XMSN”)有意义,你将不得不通过这些扭曲,以确定这些记录。 理想情况下,表应该有一个[玉米型号]字段在自己的权利 - 它总是更容易来连接件成一个大的字符串,而不是出解析大串成碎片!

汉斯的VBA的建议可能是最好的解决办法,但治标是使用交换机()函数,而不是深嵌套IIF的。 开关()接受参数成对; 评估它们从​​左到右; 当一对的第一个元素是TRUE它返回对和退出的第二个元素。 所以,你可以使用类似

玉米型号:开关([总成配置和S / N] LIKE“* 206L XMSN *”,11,[总成配置和S / N]类似于“* 407 * XMSN”,12,

通过所有对诸如此类; 喜欢的东西结束

,诚然,NULL)

覆盖的可能性,文本字符串匹配NONE。

请注意,我省略表名; 如果只有一个包含名为[总成配置和S / N],然后就没有必要包含的表名字段的表; 这将缩短表达,希望推迟太复杂错误。

另外请注意,包括特殊字符,如“/”,在字段名是有风险的 - 访问已经知道,感到困惑和解释,作为一个除法运算符!

使用含有一个转换表tblTranslate -

ABC XYZ

206L XMSN 11

407 XMSN 12

412 XMSN 13

429 XMSN 14

212 XMSN 15

206-111 90°16

406-113 90°17

406-121(407)90度18

212-103(412)90度19

212-023A 20

412 42摄氏度21

429 96摄氏度22

212-009 23

然后在您的查询 -

COM模型:IIF(![交付] [总成配置和S / N]类似于“*”&tblTranslate.ABC和“*”,tblTranslate.XYZ)

我把下面的表达我的查询,但由于某些原因,它不会接受它。 它保留回复到它原来的表情。

1.是否有什么特别的,我需要一个“tblTransate”?

2.我会查询中的追加查询有什么withit?

COM模型:IIF(![交付] [总成配置和S / N]类似于“*”和总成Transolation.Assy配置和SN和“*”,总成Transolation.Number)

表名=总成Transolation

字段1 =总成配置和SN

字段2 =号码

你是什么意思是“ 保持它回复到原来它表达的 。”? 你有没有救?

做一个追加或更新之前,一定要先尝试查询作为SELECT。

带有空格的任何表或字段名称必须用括号括起来 -

COM模型:IIF(。[交付] [总成配置和S / N]类似于“*”&[总成Transolation] [总成配置和SN]&“*”,[总成Transolation] [数字])

我试着输入以下的表达,我能够保存并关闭查询,但是当我运行查询,我得到了表达复杂的错误消息。 我无法甚至保存查询,当我有IFF的声明就地。 制作进步一点点我猜。 将查询作为一个追加查询有所作为?

COM模型:开关([总成配置和S / N]类似于“* 206L XMSN *”,11,[总成配置和S / N]类似于“* 407 XMSN *”,12,[总成配置和S / N]象“* 412 XMSN *”,13,[总成配置和S / N]类似于“* 429 XMSN *”,14,[总成配置和S / N]类似于“* 212 XMSN *”,15,[总成配置和S / N]类似于“* 206-111 90度*”,16,[总成配置和S / N]类似于“* 406-113 90度*”,17,[总成配置和S / N]类似于“* 406- 121(407)90度*“,18,[总成配置和S / N]类似于”* 212-009 *“,19,[总成配置和S / N]类似于”* 212-023A *“,20,[总成配置和S / N]类似于“* 212-103(412)90度*”,21,[总成配置和S / N]类似于“* 412 42 *摄氏度”,22,[总成配置和S / N]像“* 429 96 *摄氏度”,23日,真,NULL)

这有可能是在字段名的斜线是造成这一点; 或字段名可能只是太长。 您(永久或暂时)可以重命名字段? 或者,你可以创建一个别名[AC]查询 - 短的总成配置 - 并在此基础上查询,追加查询,使用[AC]类似于“* ......在交换机。

卡尔的转换表开局应该工作,以及,它当然不会遭受这种表达大小限制。 我希望你这样做,以获得正确的表正常化,雅好!

? 1当我粘贴的表达,我点击的领域时,它恢复到原来的表达。 有没有必要保存,如果表达不被接受。

? 2我做了我的括起来的表和字段,并表达接受,我可以把它保存查询。 但现在当我运行它提示我输入总成Transolation.Assy配置和SN和第二个提示的值以输入总成Transolation.Number值查询

请张贴完整的SQL查询。 它可能只是一个错字 - 是表名称实际上总成Transolation,或总成翻译? 每当你收到一个提示,这意味着Access无法识别方括号中的术语。

SELECT交付。[总成配置和S / N],可交付。[当前位置],交付[交货日期],Deliverables.Productline,IIF([交付] [总成配置和S / N]类似于“*”&[ ]总成Transolation。[总成配置和SN]&“*”,[总成Transolation] [数字])AS [COM模型] IIF([COM模型] = 11或[COM模型] = 12或[COM模型] = 13或[COM模型] = 14或[COM模型] = 15,“商业XMSN”,IIF([COM模型]> 15,“商业小G / B”))AS [COM程序],IIF([通信产品型号] = 11,“206L XMSN”,IIF([COM模型] = 12,“407 XMSN”,IIF([COM模型] = 13,“412 XMSN”,IIF([COM模型] = 14,“429 XMSN “IIF([COM模型] = 15,”212 XMSN“,IIF([COM模型] = 16,”206 90°“,IIF([COM模型] = 18,”407 90°“,IIF([通信产品型号] = 19,“212 42摄氏度”,IIF([COM模型] = 20,“412 90°”,IIF([COM模型] = 21,“412 42摄氏度”,IIF([COM模型] = 22, “429 96 DEG”)))))))))))AS [产品型号类型],IIF([当前位置] =“1”,0.071,IIF([当前位置] =“2”,0.142,IIF( [当前位置] =“3”,0.214,IIF​​([当前位置] =“4”,0.285,IIF([当前位置] =“5”,0.357,IIF([当前位置] =“6”,0.428, IIF([当前位置] =“7”,0.5,IIF([当前位置] =“8”,0.571,IIF([当前位置] =“9”,0.642,IIF([当前位置] =“10” 0.714,IIF​​([当前位置] =“11”,0.785,IIF([当前位置] =“12”,0.857,IIF([当前位置] =“13”,0.928,IIF([当前位置] =“14 “,1,0))))))))))))))AS百分比
从交付;

分类:办公室 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.036 (s). 10 q(s)