AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 05.11.2009, 10:07   #1  
/Antony/ is offline
/Antony/
Программист
 
14 / 12 (1) ++
Join Date: 01.08.2007
вхолостую считано n записей - Какова причина?
Доброго времени суток, уважаемые аксаптоведы.

В логах АОСа имеется запись следующего вида (ну и куча ей подобных):
Code:
База данных: Microsoft SQL Server
Предупреждение: Из таблицы "RAssetStandards" вхолостую считано 2 записей. Попробуйте использовать ключевое слово FIRSTONLY или составьте более точный запрос WHERE. [W-0101]
Стек вызовов:
(S) \Classes\RAssetPost\updateStatus - line 50
(S) \Classes\RAssetPost_Depreciation\updateStatus - line 32
...
Сколько ни пытался - не удалось самому сформировать код X++, приводящий к аналогичной записи в логе. Не могу понять природу возникновения таких записей, чтоб победить проблему. Пожалуйста, подскажите возможные причины.

PS: Ax v 3.0
Old 05.11.2009, 11:58   #2  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
TasmanianDevil's Avatar
Злыдни
 
887 / 389 (14) ++++++
Join Date: 24.01.2005
Location: Томск
Прошаривание по RAssetStandards и doUpdate() сначала в переопределенном методе, потом в вызове родительского метода ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Old 05.11.2009, 12:10   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Join Date: 20.08.2005
Вот такая конструкция вызывает соответствующий варнинг
X++:
while select AccountNum from VendTable
{
    break;
}
__________________
Axapta v.3.0 sp5 kr2
This post has been rated by: /Antony/ (1).
Old 05.11.2009, 13:03   #4  
/Antony/ is offline
/Antony/
Программист
 
14 / 12 (1) ++
Join Date: 01.08.2007
Quote:
Originally Posted by AndyD View Post
Вот такая конструкция вызывает соответствующий варнинг
X++:
while select AccountNum from VendTable
{
    break;
}
Не удалось получить варнинг, сам тоже пробовал уже этот способ... хм...может там еще требуются какие-нить отягосчающие обстоятельства)))...
Old 05.11.2009, 13:25   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,996 / 3293 (117) ++++++++++
Join Date: 12.10.2004
Location: Москва
Blog Entries: 2
Quote:
Originally Posted by /Antony/ View Post
Не удалось получить варнинг, сам тоже пробовал уже этот способ... хм...может там еще требуются какие-нить отягосчающие обстоятельства)))...
Попробуйте так
X++:
VendTable.disableCache(true);
while select AccountNum from VendTable
{
    break;
}
возможно кеширование повлияло.
Old 05.11.2009, 14:26   #6  
/Antony/ is offline
/Antony/
Программист
 
14 / 12 (1) ++
Join Date: 01.08.2007
Quote:
Originally Posted by Logger View Post
Попробуйте так
X++:
VendTable.disableCache(true);
while select AccountNum from VendTable
{
    break;
}
Не помогло, проходит гладко
Old 06.11.2009, 12:51   #7  
/Antony/ is offline
/Antony/
Программист
 
14 / 12 (1) ++
Join Date: 01.08.2007
Люди, поможите кто чем может. Предложите еще к-нить версии
Old 06.11.2009, 13:14   #8  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Join Date: 01.04.2004
Location: Москва
ну судя по всему обычный select который возвращает больше одной записи без пробега по ним.
например

select salesTable;

if (salesTable)
{
.....
}

конкурс телепатов
Old 06.11.2009, 13:22   #9  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Join Date: 13.02.2004
Location: Минск
->
http://msdn.microsoft.com/en-us/library/aa854677.aspx
Quote:
Originally Posted by MSDN
XXX records in table 'myTable' retrieved from the database, but never used. Consider using FIRSTONLY, or a more selective WHERE clause.
W-101
A change might not be needed because the client doesn't have to iterate through every record available in the buffer of retrieved records. However, sometimes a more selective WHERE clause can reduce this inefficiency.
Подразумевается, видимо, что клиент считал не просто лишние строчки в таблице, а лишний раз сделал fetch буффера строк (см. параметры buffer size & array fetch ahead в ACU, много раз обсуждалось на форуме).
Соответсвенно надо подыскать ситуацию, когда запрос сделает несколько таких фетчей, для получения выборки (возможно просто табличку взять побольше ), при этом полученные записи никак не использовать...

Ну это не более чем предположение, как вы и просили.
__________________
Zhirenkov Vitaly
Old 09.11.2009, 13:04   #10  
/Antony/ is offline
/Antony/
Программист
 
14 / 12 (1) ++
Join Date: 01.08.2007
В итоге выявлено, что данный варнинг возникает в следующем случае:

Quote:
Originally Posted by AndyD View Post
Вот такая конструкция вызывает соответствующий варнинг
X++:
while select AccountNum from VendTable
{
    break;
}
Правда, почему-то стабильного его появления добиться не удалось, он то появляется на вышеописанную конструкцию, то -нет.
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Шаблоны записей из кода sukhanchik DAX: Программирование 5 06.07.2009 17:13
Влияние настройки доступа на уровне записей longson DAX: Функционал 2 15.01.2008 21:29
вывод количества записей в таблице на web форме и указание текущей страницы таблицы bambuk1960 DAX: Программирование 1 06.07.2006 13:27
Определённая последовательность записей Dymm DAX: Программирование 4 31.08.2005 14:47
Хранение отмеченных записей Pavel Pustovalov DAX: Программирование 9 17.05.2005 21:56

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 23:56.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.