acumatica - 我加入 acumatica 的错误在哪里?
问题描述
我想从我的“实际物品库存”(来自库存物品表格)中获取所有属性,所以我有:
PXResultset<CSAnswers> res = PXSelectJoin<CSAnswers,
InnerJoin<InventoryItem,
On<CSAnswers.refNoteID, Equal<Current<InventoryItem.noteID>>>
>
>.Select(new PXGraph());
但是,这会返回 0 行。我的错误在哪里?
更新:我的循环是这样的:
foreach (PXResult<CSAnswers> record in res)
{
CSAnswers answers = (CSAnswers)record;
string refnoteid = answers.RefNoteID.ToString();
string value = answers.Value;
}
...但我不能进入 foreach。
- 对不起英语。
解决方案
您应该使用已初始化的图形,而不仅仅是“new PXGraph()”进行选择。这可以像“this”或“Base”一样简单,具体取决于此代码所在的位置。有时初始化一个新的图实例是可以的,但也有时是不行的。不知道您的代码示例的上下文,让我们假设“this”和“Base”不足,您需要初始化一个新图。如果您需要在另一个图形实例中工作,这就是您的代码的外观。
InventoryItemMaint graph = PXGraph<InventoryItemMaint>.CreateInstance<InventoryItemMaint>();
PXResultset<CSAnswers> res = PXSelectJoin<CSAnswers,
InnerJoin<InventoryItem, On<CSAnswers.refNoteID, Equal<Current<InventoryItem.noteID>>>>>
.Select(graph);
foreach (PXResult<CSAnswers> record in res)
{
CSAnswers answers = (CSAnswers)record;
string refnoteid = answers.RefNoteID.ToString();
string value = answers.Value;
}
但是,由于您应该在图形或图形扩展中初始化图形,您应该能够使用:
.Select(this) // To use the current graph containing this logic
或者
.Select(Base) // To use the base graph that is being extended if in a graph extension
既然你指的是:
Current<InventoryItem.noteID>
...但是使用“new PXGraph()”,则通用基础对象 PXGraph 的当前数据缓存中没有“InventoryItem”。因此需要引用一个完全定义的图。
另一种准确指定要传入的值的语法是使用如下参数:
var myNoteIdVariable = ...
InventoryItemMaint graph = PXGraph<InventoryItemMaint>.CreateInstance<InventoryItemMaint>();
PXResultset<CSAnswers> res = PXSelectJoin<CSAnswers,
InnerJoin<InventoryItem, On<CSAnswers.refNoteID, Equal<Required<InventoryItem.noteID>>>>>
.Select(graph, myNoteIdVariable);
foreach (PXResult<CSAnswers> record in res)
{
CSAnswers answers = (CSAnswers)record;
string refnoteid = answers.RefNoteID.ToString();
string value = answers.Value;
}
请注意 Select() 部分中的“必需”和额外值。检查您的参数是否具有值的一种快速简便的方法是使用 PXTrace 写入跟踪,您可以在刷新屏幕并执行任何可以执行代码的操作后检查该跟踪:
PXTrace.WriteInformation(myNoteIdVariable.ToString());
...查看 myNoteIdVariable 中是否有用于检索结果集的值。将其放在 foreach 块之外,否则当您实际获取记录时,您只会在跟踪中获得一个值......这在您的情况下不会发生。
如果您想深入了解正在生成和执行的 SQL 语句,请在菜单中查找 Request Profiler 并在运行测试时启用 SQL 日志记录。然后回来查看结果。(记得在完成后禁用 SQL 日志记录,否则会生成大量不必要的数据。)
推荐阅读
- asp.net-core - 如何在运行时选择 ASP.net Core Identity 使用的数据库?
- pandas - 如何根据其在熊猫中的组找到列的平均值
- javascript - 如何将字符串 (°C) 添加到表中的数据?
- java - Jsoup提取div的孩子
- c# - 强制 BindableProperty propertyChanged 即使在 Xamarin 表单中使用相同的值也会触发
- javascript - 如何显示来自 api 的 ajax 响应的错误消息?
- php - 在 woocommerce 单品页面中将打印的通知移到页面标题上方
- javascript - 如何在 config.js 中定义多个常量
- kubernetes - 同步期间出错:UpdateURLMap:googleapi:错误 413:字段 resource.pathMatchers[0].pathRules 的值太大
- javascript - 选择一个对象并打印它的属性AngularJS