1

问题:

我想知道如何在查询中获取系统上的所有地址,包括(客户、供应商、银行和税务机关),并将其放在带有列(名称地址)的视图上。因此,它将是缔约方和非缔约方实体。

我试图做的事情:

我使用表格概念为各方找出问题:

位置数据模型的一部分

LogisticsPostalAddress - 表包含系统中可能与各种实体相关联的地址。是关于地址的主要信息在哪里,其余的似乎是这些地址的额外描述。

CustTable和 VendTable 对DirPartyTable一个 FK 。BankAccountTableTaxAuthorityAddress直接与LogisticsLocation有关系,后者与LogisticsPostalAddress关系 Location_FK 处有关系。

现在的问题是如何构建从客户、银行账户、供应商和税务机关获取地址的查询,并将其放在具有 (name,address) 对的视图中?

已编辑

我找到了一种使用方法获取所有地址的方法,但不使用查询,效率不高,但对于我想要的已经足够了:

1)创建一个表:AllAddresses例如:带有字段:名称,地址

2)创建工作:

static void GettingAllAddresses(Args _args)
{
    CustTable custTable;
    VendTable vendTable;
    TaxAuthorityAddress taxAuthorityAddress;

    LogisticsPostalAddress logisticsPostalAddress;
    AllAddresses allAddresses;

    ;

    while select * from custTable
    {
        allAddresses.Address = custTable.address();
        allAddresses.Name = custTable.name();
        allAddresses.CustAccount = custTable.AccountNum;
        allAddresses.doInsert();
    }



    //Getting all vendors
    while select * from vendTable
    {

        allAddresses.Address = vendTable.address();
        allAddresses.Name = vendTable.name();
        allAddresses.doInsert();
    }

    //Getting all tax authorities addresses
    while select * from taxAuthorityAddress
    {


        allAddresses.Address = TaxAuthorityAddress::address(taxAuthorityAddress.TaxAuthority);
        allAddresses.Name = taxAuthorityAddress.Name;
        allAddresses.doInsert();
    }

    //Getting all bank addresses
    while select * from bankAccountTable
    {
        logisticsPostalAddress = LogisticsLocationEntity::location2PostalAddress(bankAccountTable.Location);
        allAddresses.Address = logisticsPostalAddress.Address;
        allAddresses.Name = bankAccountTable.Name;
        allAddresses.doInsert();
    }
}
4

2 回答 2

1

看看视图LogisticsEntityPostalAddressView是如何构建的,它可能已经提供了您需要的信息。如果 table 中的Description字段LogisticsLocation不够好,而您确实需要 table 中的Name字段,BankAccountTable则需要构建一个类似的视图。

您可以看到 view 使用了 view LogisticsEntityLocationView,它有一个联合查询,可以从多个表中提取数据。您可以构建一个类似的视图来从、和中提取Name字段。BankAccountTableDirPartyTableTaxAuthorityAddress

于 2012-06-27T15:07:46.203 回答
0

从您的数据库图中可以看出,全局地址簿的关系非常复杂(而且在许多地方确实不直观)。您似乎没有解决的一件事是您获得的 LogisticsPostalAddress 是否处于活动状态(由 ValidFrom 和 ValidTo 日期确定)。AX 的代码保留了 LogisticsPostalAddress 中正在更改的地址的当前状态,只需在更改提交前将 ValidTo 设置为 2 秒,并创建一个新的 LogisticsPostalAddress 记录,并将 ValidTo 设置为提交日期,因此它将处于活动状态。如果您没有对地址进行很多更改,那么您可能不会有太大问题,但如果有很多更改,您可能会得到很多不需要的地址记录。这里有一篇文章http://hyperdaptive.com/2016/04/320/其中包含一些可能会有所帮助的细节 - 它还有一些 X++ 和 SQL 代码,如果您碰巧仍在从事此工作,这些代码可能会非常有帮助。祝你好运。

于 2016-04-28T16:59:36.080 回答