检索客户的主要地址状态

时间:2017-06-01 20:19:57

标签: sql axapta dynamics-ax-2012

我正在尝试通过填写在客户主要地址上的SQL Server来检索状态。

首先我  我试图使用以下查询:

DATABASE.dbo.LOGISTICSPOSTALADDRESS AS LPA ON DATABASE.dbo.DIRPARTYTABLE.RECID = LPA.PRIVATEFORPARTY LEFT OUTER JOIN
DATABASE.dbo.LOGISTICSADDRESSSTATE ON DATABASE.dbo.LOGISTICSADDRESSSTATE.STATEID = LPA.STATE

之后,我一直尝试加入LogisticsLocation DirPartyTable,然后LogisticsLocation加入LogisticsPostalAddress。这给了我结果,但是有不同状态的双重记录。我只需要1个主要地址的结果。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

你走了。显然更改客户帐户。这将获取主地址的状态,但如果由于某种原因需要,它还具有完整的主地址。

重要的是要注意LogisticsPostalAddress表是"Valid Time State" table。这意味着记录具有从/到它们有效的记录。

您希望这样做的原因是,如果您的客户位于123 South St并且您创建了销售订单并向他发送了打印了该地址的发票,那么您稍后会将客户主要地址更改为{{ 1}}。如果他们要求重新打印旧发票,您需要确保以前的地址仍然存在。

我的查询需要注意的一点是,我没有检查654 North St SQL函数与AX存储日期/时间的方式之间是否正确考虑时区。这将是一个微小的差异,但需要考虑。

以下是一个观点:

GetUTCDate()

以下是一些表格:

SELECT a.STATE
FROM DIRPARTYPOSTALADDRESSVIEW AS a
WHERE a.ISPRIMARY = 1
    AND a.VALIDTO > GETUTCDATE()
    AND EXISTS (
        SELECT PARTY
        FROM CUSTTABLE AS b
        WHERE b.PARTY = a.PARTY
            AND b.ACCOUNTNUM = 'AAATest' /*Change This*/
        )