Soap 如何确定Salesforce.com中的字段是否存储整数?

Soap 如何确定Salesforce.com中的字段是否存储整数?,soap,salesforce,soql,Soap,Salesforce,Soql,我正在编写Salesforce.com和另一个服务之间的集成,我遇到了整数字段的问题。在Salesforce.com中,我定义了一个“Number”类型的字段,“Decimal Places”设置为“0”。在另一个服务中,它最终存储为整数。这两个字段应该存储相同的整数数值 在Salesforce.com变量中存储此字段的值后,问题就会出现。Salesforce.com将从其Query()和queryal()操作返回相同的值,但附加的精度不正确 例如,如果我在Salesforce.com中为该字段

我正在编写Salesforce.com和另一个服务之间的集成,我遇到了整数字段的问题。在Salesforce.com中,我定义了一个“Number”类型的字段,“Decimal Places”设置为“0”。在另一个服务中,它最终存储为整数。这两个字段应该存储相同的整数数值

在Salesforce.com变量中存储此字段的值后,问题就会出现。Salesforce.com将从其
Query()
queryal()
操作返回相同的值,但附加的精度不正确

例如,如果我在Salesforce.com中为该字段插入值“827”,那么当我稍后从Salesforce.com中提取该数字时,它会说该值为“827.0”

我不想硬编码我的积分来从特定字段中删除这些十进制值。这是不可维护的。我希望它足够聪明,在剩下的集成代码运行之前,从所有整数字段中删除十进制值。使用Salesforce.com SOAP API,我将如何实现这一点?


我假设这与
DescribeSObject()
的“Field”属性有关,我可以在其中扫描元数据,但我看不到从中提取小数位数的方法。

啊哈!小数位数位于
字段
对象上名为
比例
的属性上。如果等于“0”,您就知道有一个整数字段。

从技术上讲,sObject字段不是整数,即使“Decimal Places”属性设置为0。它们总是具有不同尺度特性的小数。在APEX中记住这一点很重要,因为可用于小数的方法与用于整数的方法不同,而且还存在其他潜在的类型转换问题(不总是,但在某些情况下)。

Bleh。我把这一页与我自己问题的答案联系起来。谢谢。只是简单的注释一下你的最后评论。APEX确实认为整数N和十进制N.0相等。我还记得至少有一个显示整数行为的传统数字字段(可能是NumberOfEmployees?如果您感兴趣,我在某处有注释)。感谢您指出这一点。我应该在最后一次评论平等之前检查一下。我确信sObject数字的类型是Decimal,所以我将编辑掉最后一行。酷。仅供参考,几个遗留数字字段的“true”类型(无论您在WSDL中看到xsd:int是什么类型)实际上不是非本地的。我发现了我所说的bug——尝试执行acct.put('NumberOfEmployees',myDecimal)在Apex中抛出“System.SObjectException:从十进制到整数的非法赋值”。我不记得acct.NumberOfEmployees=myDecimal是否有效,很可能有效。