【发布时间】:2016-04-29 00:59:36
【问题描述】:
问题:
我想知道如何在查询中获取系统上的所有地址,包括(客户、供应商、银行和税务机关),并将其放在带有列的视图中(name,地址)。 所以它会是当事方和非当事方实体。
我尝试做的事情:
我使用表格概念为各方找出问题:
LogisticsPostalAddress - 表包含系统中可能与各种实体相关联的地址。 是关于地址的主要信息在哪里,其余的似乎是这些地址的额外描述。
CustTable 和 VendTable 具有到 DirPartyTable 的 FK。 BankAccountTable 和 TaxAuthorityAddress 直接与 LogisticsLocation 有关系,而 LogisticsPostalAddress 则在关系处Location_FK。
现在的问题是如何构建查询,从客户、银行账户、供应商和税务机关获取地址并将其放在具有(名称、地址)对的视图中?
已编辑
我找到了一种使用方法获取所有地址的方法,但不使用查询,效率不是很高,但对于我想要的来说已经足够了:
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();
}
}
【问题讨论】:
-
如果我是你,我不会尝试构建单个查询来获取所有数据,而是会构建一个临时表,该表将由对数据库执行多个查询的批处理作业填充。跨度>
标签: axapta x++ dynamics-ax-2012