16.08.2011, 17:14 | #1 |
Участник
|
Чудеса DAX 2012
День был тяжелый, я наверное чего-то не понимаю. Встретил вот такое чудо в форме projUnpostedTransactionsListPage, метод ProcessButton.clicked();
X++: select prodJournalTable where prodJournalBOM.ProjTransId == projUnpostedTransView.TransId && prodJournalTable.JournalId == prodJournalRouteProj.JournalId;
__________________
The 50-50-90 rule: Any time you have a 50-50 chance of getting something right, there’s a 90% probability you’ll get it wrong. |
|
16.08.2011, 17:38 | #2 |
NavAx
|
Прекрасно будет работать.
В этом контексте projUnpostedTransView.TransId вернет литерал (константу), которая и будет передана в запрос.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
16.08.2011, 17:51 | #3 |
Участник
|
В запросе используются 3 табличных буфера - prodJournalTable, prodJournalBOM и prodJournalRouteProj (на момент выполнения запроса они все пустые).
Как будут сформированы связи между ними - автоматически по табличным relation?? По условиям в разделе where - полный запрос не построить. p.s. prodJournalTable.getSQLStatement() вернул пустую строку
__________________
The 50-50-90 rule: Any time you have a 50-50 chance of getting something right, there’s a 90% probability you’ll get it wrong. Последний раз редактировалось shogel; 16.08.2011 в 18:25. |
|
16.08.2011, 18:32 | #4 |
NavAx
|
Я тут вижу как минимум одну связку: prodJournalTable.JournalId == prodJournalRouteProj.JournalId;
Видимо, есть еще какой-то контекст, но из приводимых выдержек пока непонятно в чем дело.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
16.08.2011, 18:56 | #5 |
Участник
|
В том то и чудо, что это не выдержки - это полный текст запроса. Вот так выглядит сам метод :
X++: void clicked() { Args menuArgs = new Args(); MenuFunction menuFunction; ProdJournalRouteProj prodJournalRouteProj; ProdJournalTable prodJournalTable; ProdJournalBOM prodJournalBOM; menuArgs.caller(element); switch (projUnpostedTransView.UnionAllBranchId) { case 8: //projProdJournalBOMUnpostedView select prodJournalTable where prodJournalBOM.ProjTransId == projUnpostedTransView.TransId && prodJournalTable.JournalId == prodJournalRouteProj.JournalId; menuArgs.record(prodJournalTable); menuFunction = new MenuFunction(menuitemDisplayStr(ProdJournalTableAll), MenuItemType::Display); break; } menuFunction.run(menuArgs); }
__________________
The 50-50-90 rule: Any time you have a 50-50 chance of getting something right, there’s a 90% probability you’ll get it wrong. |
|
16.08.2011, 19:35 | #6 |
Участник
|
мне кажется будет работать как
if (prodJournalBOM.ProjTransId == projUnpostedTransView.TransId) select prodJournalTable where prodJournalTable.JournalId == prodJournalRouteProj.JournalId; Особых чудет то нет |
|
16.08.2011, 19:43 | #7 |
Участник
|
Цитата:
Да, именно так. Только абсурдность ситуации в том что prodJournalBOM не инициализирован |
|
16.08.2011, 20:11 | #8 |
Участник
|
И я боюсь, что это не чудо. Сейчас насчитал еще 4 таких запроса. Вот такой вот "Zero Bug Release".
__________________
The 50-50-90 rule: Any time you have a 50-50 chance of getting something right, there’s a 90% probability you’ll get it wrong. |
|
16.08.2011, 22:23 | #9 |
MCTS
|
Проверил для релиза 6.0.947.61. ситуация такая же.
P.S.: Думаю ситуация будет похожа на пословицу: Чем дальше в лес, тем толще партизаны. Ждём SP10, пока очень сыро. |
|
|
За это сообщение автора поблагодарили: shogel (1). |
Теги |
ax2012, bug, select, ошибка |
|
|