SSRS X++ 联系人查询
SSRS X++ contact query
我正在尝试将多个查询放在一个 SSRS 报告中以进行一些数据验证。一目了然,我想显示一些 address/contact 信息,项目信息,客户信息,供应商信息和资源信息。我已经开始阅读 address/contact 信息,但似乎有点卡住了...
我收到 logisticselectronic 地址表的无效字段组合错误,而且我正在尝试根据不同的连接 return 定位器字段两次。
我知道如何在 SQL 中执行此操作,使用左连接和别名字段很容易,但是我是 X++ 的初学者,不确定如何执行此操作。
public class DataValidation extends SRSReportDataProviderBase
{
TmpAddresses TmpAddresses;
TmpProjects TmpProjects;
TmpSuppliers TmpSuppliers;
TmpCustomers TmpCustomers;
TmpResources TmpResources;
[SRSReportDataSetAttribute('TmpAddresses')]
public TmpAddresses getAddresses()
{
select TmpAddresses;
return TmpAddresses;
}
public void processReport()
{
Query q;
QueryRun qr;
QueryBuildDataSource qbds;
QueryBuildRange qbr;
// Declare a table buffer
DirPartyTable dirPartyTable;
LogisticsLocation logisticsLocation;
LogisticsPostalAddress logisticsPostalAddress;
LogisticsElectronicAddress logisticsElectronicAddress;
q = new Query();
qbds = q.addDataSource(tableNum(DirPartyTable));
qbr = qbds.addRange(fieldNum(DirPartyTable, Name));
qbr.value('!""');
qbds = qbds.addDataSource(tableNum(LogisticsPostalAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryAddressLocation),fieldNum(LogisticsPostalAddress, Location));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbds.addDataSource(tableNum(LogisticsElectronicAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryContactEmail),fieldNum(LogisticsElectronicAddress, RecId));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbds.addDataSource(tableNum(LogisticsElectronicAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryContactPhone),fieldNum(LogisticsElectronicAddress, RecId));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbds.addDataSource(tableNum(LogisticsLocation));
qbds.relations(true);
qbds.joinMode(JoinMode::OuterJoin);
qr = new QueryRun(q);
while(qr.next())
{
dirPartyTable = qr.get(tableNum(DirPartyTable));
logisticsLocation = qr.get(tableNum(LogisticsLocation));
logisticsPostalAddress = qr.get(tableNum(LogisticsPostalAddress));
logisticsElectronicAddress = qr.get(tableNum(LogisticsElectronicAddress));
TmpAddresses.clear();
TmpAddresses.Name = dirPartyTable.Name;
TmpAddresses.Address = logisticsPostalAddress.Address;
TmpAddresses.Description = logisticsLocation.Description;
TmpAddresses.Email = logisticsElectronicAddress.Locator;
TmpAddresses.Phone = logisticsElectronicAddress.Locator;
TmpAddresses.insert();
}
}
}
您的子数据源应全部引用 DirParty
:
qbdsPrimary = q.addDataSource(tableNum(DirPartyTable));
qbr = qbdsPrimary.addRange(fieldNum(DirPartyTable, Name));
qbr.value('!""');
qbds = qbdsPrimary.addDataSource(tableNum(LogisticsPostalAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryAddressLocation),fieldNum(LogisticsPostalAddress, Location));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbdsPrimary.addDataSource(tableNum(LogisticsElectronicAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryContactEmail),fieldNum(LogisticsElectronicAddress, RecId));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbdsPrimary.addDataSource(tableNum(LogisticsElectronicAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryContactPhone),fieldNum(LogisticsElectronicAddress, RecId));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbdsPrimary.addDataSource(tableNum(LogisticsLocation));
qbds.relations(true);
qbds.joinMode(JoinMode::OuterJoin);
// Verify the query
info(qbdsPrimary.toString());
我正在尝试将多个查询放在一个 SSRS 报告中以进行一些数据验证。一目了然,我想显示一些 address/contact 信息,项目信息,客户信息,供应商信息和资源信息。我已经开始阅读 address/contact 信息,但似乎有点卡住了...
我收到 logisticselectronic 地址表的无效字段组合错误,而且我正在尝试根据不同的连接 return 定位器字段两次。
我知道如何在 SQL 中执行此操作,使用左连接和别名字段很容易,但是我是 X++ 的初学者,不确定如何执行此操作。
public class DataValidation extends SRSReportDataProviderBase
{
TmpAddresses TmpAddresses;
TmpProjects TmpProjects;
TmpSuppliers TmpSuppliers;
TmpCustomers TmpCustomers;
TmpResources TmpResources;
[SRSReportDataSetAttribute('TmpAddresses')]
public TmpAddresses getAddresses()
{
select TmpAddresses;
return TmpAddresses;
}
public void processReport()
{
Query q;
QueryRun qr;
QueryBuildDataSource qbds;
QueryBuildRange qbr;
// Declare a table buffer
DirPartyTable dirPartyTable;
LogisticsLocation logisticsLocation;
LogisticsPostalAddress logisticsPostalAddress;
LogisticsElectronicAddress logisticsElectronicAddress;
q = new Query();
qbds = q.addDataSource(tableNum(DirPartyTable));
qbr = qbds.addRange(fieldNum(DirPartyTable, Name));
qbr.value('!""');
qbds = qbds.addDataSource(tableNum(LogisticsPostalAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryAddressLocation),fieldNum(LogisticsPostalAddress, Location));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbds.addDataSource(tableNum(LogisticsElectronicAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryContactEmail),fieldNum(LogisticsElectronicAddress, RecId));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbds.addDataSource(tableNum(LogisticsElectronicAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryContactPhone),fieldNum(LogisticsElectronicAddress, RecId));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbds.addDataSource(tableNum(LogisticsLocation));
qbds.relations(true);
qbds.joinMode(JoinMode::OuterJoin);
qr = new QueryRun(q);
while(qr.next())
{
dirPartyTable = qr.get(tableNum(DirPartyTable));
logisticsLocation = qr.get(tableNum(LogisticsLocation));
logisticsPostalAddress = qr.get(tableNum(LogisticsPostalAddress));
logisticsElectronicAddress = qr.get(tableNum(LogisticsElectronicAddress));
TmpAddresses.clear();
TmpAddresses.Name = dirPartyTable.Name;
TmpAddresses.Address = logisticsPostalAddress.Address;
TmpAddresses.Description = logisticsLocation.Description;
TmpAddresses.Email = logisticsElectronicAddress.Locator;
TmpAddresses.Phone = logisticsElectronicAddress.Locator;
TmpAddresses.insert();
}
}
}
您的子数据源应全部引用 DirParty
:
qbdsPrimary = q.addDataSource(tableNum(DirPartyTable));
qbr = qbdsPrimary.addRange(fieldNum(DirPartyTable, Name));
qbr.value('!""');
qbds = qbdsPrimary.addDataSource(tableNum(LogisticsPostalAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryAddressLocation),fieldNum(LogisticsPostalAddress, Location));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbdsPrimary.addDataSource(tableNum(LogisticsElectronicAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryContactEmail),fieldNum(LogisticsElectronicAddress, RecId));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbdsPrimary.addDataSource(tableNum(LogisticsElectronicAddress));
qbds.addLink(fieldNum(DirPartyTable, PrimaryContactPhone),fieldNum(LogisticsElectronicAddress, RecId));
qbds.joinMode(JoinMode::OuterJoin);
qbds = qbdsPrimary.addDataSource(tableNum(LogisticsLocation));
qbds.relations(true);
qbds.joinMode(JoinMode::OuterJoin);
// Verify the query
info(qbdsPrimary.toString());