我很确定这样的东西已经得到了解答,但此刻我正在失去我的头发。我正在使用Filemaker Pro 13
我已经获得了更新一些模板的工作,我以前做过这个,但我所做的只是更新视觉方面的事情。现在,我希望动态更新一些标签和计算,具体取决于所选的公司(下拉所有文本的自定义值)。
目前所有费用都乘以2.因此,如果原始费用= 4美元,则客户费用为8美元。但是,如果选择“公司4”而不是乘以2,则需要乘以1.5。
我目前有两个函数,我试图在字段框中使用此功能。
第一个功能:
If (Company: = "Comp4"; 1;0)
第二功能:
If (${Function1}; ${$Cost}*1.5; ${$Cost}*2 )
这不起作用,因此回答了这个问题。据我所知,如果陈述起作用(Condintion;如果是,则做X;否则做Y;)。这可能是问题所在?我确实来自编程背景,但这个程序让我目前无法相信。
如果在此之前已经回答了这个问题,我会表示最诚挚的歉意。
感谢您提供任何答案或帮助我指明正确的方向。
编辑:试过这个:
If (ValueCount(FilterValues(Company;"Comp4"));${$Cost}*1.5; ${$Cost}*2)
这无济于事。理想情况下,如果我可以将其融入一个很棒的功能,但到目前为止,我仍然失败了。
编辑2:
关于功能/功能不起作用。我经常只会遇到${$Cost}*2
方面的事情,但${$Cost}*1.5
甚至不会选择“Comp4”。这让我觉得系统没有检测到“Comp4”被选中,或者我需要到其他地方查找我需要查看的值。
编辑3:使用的实际值和计算
目前使用和工作可以这么说(只做* 2方面的事情)
字段名称:x2$Charges
计算:${$Charges}*2. - $Charges is the 'cost' fields (10 of them).
我想要做的是选择一家特定的公司而不是花费* 2我想要花费* 1.5。
对该公司的检查是:
字段名称:x2CheckSSL
计算:If(Sales Rep.|Distributor: = "SSL";1.5;2)
销售代表|经销商:是'公司'
答案 0 :(得分:0)
IF语句完全按照您的描述工作,我不明白为什么您需要两个不同的功能。我不明白你的语法 - $ {$ Cost}。你想加入" $"到你的输出?
让我们说你有一个可供选择的领域" slelect_company"在公司表/布局中,您将成本存储在名为$ cost
的变量中您的计算将是:
If (Companies::slelect_company = "Comp4"; $Cost*1.5; $Cost*2 )
如果将字段设置为输出结果,请使用格式添加$ sign
如果在布局上设置标签以显示输出,请使用:
If (Companies::slelect_company = "Comp4"; "$" & $Cost*1.5; "$" & $Cost*2 )
如果您有多个支票,您可以使用凯斯 - 类似于其他语言的切换
答案 1 :(得分:0)
很难说出您的语法有什么问题,因为我们不知道您的字段的确切名称。此外,"这不起作用"对问题不是很好的描述。
您拥有${$Cost}
等结构这一事实表明您的字段名称无效。
如果您有名为Company和Cost的字段,那么计算字段(在与这两个字段相同的表中定义)=
If ( Company = "Comp4" ; 1.5 ; 2 ) * Cost
应该提供预期的结果。
在更一般的层面上,这不是一个好的方法。所有这些因素{" Comp4",1.5,2}都是数据,不应硬编码到计算公式中。
正确地说,每家公司都应该在自己的记录中存储一个标记值,当您选择公司时,这将被查找到一个字段。或者,只有一些(首选)公司会有标记,而其他公司会使用存储在首选项表中的默认值。
此外,此表中的公司字段(发票?)应该是CompanyID,并且只存储所选公司的(无意义)ID。
根据评论中的说明,这是一个如何快速解决当前问题的建议。
假设以下字段:
•$Charges
- 数字[10]
•Sales Rep.|Distributor:
- 文字
•x2$Charges
- 计算[10] = [参见下面的公式]
将x2$Charges
的计算公式更改为=
If ( Extend (Sales Rep.|Distributor: ) = "SSL" ; 1.5 ; 2 ) * ${$Charges}
不需要x2CheckSSL
字段。
重要:强>
您不应该为此使用重复字段。我建议你尽快重写你的解决方案并修复这里发现的缺陷,即:
(*)例如不是以"结尾的名称:"
答案 2 :(得分:0)
不是将计算放在函数中,而是尝试创建一个新的计算字段并将计算放在那里。提交记录后,您将看到此计算字段的值发生变化,您将知道您的功能是否正常工作。 要做到这一点
if(Companies::select_company = "Comp4"; Companies::Cost * 1.5; Companies::Cost * 2)
计算引擎会告诉您在输入计算后尝试按下时错误是什么。 如果它从未检测到条件" Comp4"然后你的字符串比较中出现错误,可能是尾随空格,或者是大写字符或类似字符。