AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2008, 11:32   #1  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
RecordSortedList как проверить???
смотрю тут код...
transList = new RecordSortedList(tableNum(LedgerJournalTrans));
далее заполняются поля...
transList.ins(journalTransLocal, true);
в результате LedgerJournalTrans ничего не появляется...как проверить RecordSortedList отработал или нет???
Старый 03.12.2008, 11:36   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,739 / 404 (17) +++++++
Регистрация: 23.03.2006
найдите в коде RecordSortedList.insertDatabase()
Старый 03.12.2008, 11:38   #3  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
вродь нет такого...
Старый 03.12.2008, 11:46   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от V777 Посмотреть сообщение
вродь нет такого...
в коде нет?
тогда не отработает )))
Вставка происходит при вызове RecordSortedList.insertDatabase().
Также (если не ошибаюсь) периодически эта вставка происходит "пачками" до данного вызова, если набирается много данных.

Эта тема пару раз уже обсуждалась на форуме - поищите.
__________________
Zhirenkov Vitaly
Старый 03.12.2008, 11:43   #5  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,739 / 404 (17) +++++++
Регистрация: 23.03.2006
тогда вставки в базу новых строк не произойдет
Старый 03.12.2008, 11:45   #6  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
ну понятно...тока если вставить такую строчку ругается что RecordSortedList должен быть отработан на сервере...
что я не так делаю???
Старый 03.12.2008, 12:05   #7  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от V777 Посмотреть сообщение
ну понятно...тока если вставить такую строчку ругается что RecordSortedList должен быть отработан на сервере...
что я не так делаю???
А насчёт ошибки - что пишет то конкртенее можно?
По смыслу этот объект и должнет быть на сервере - это правильно.
__________________
Zhirenkov Vitaly
Старый 03.12.2008, 12:14   #8  
coolibin is offline
coolibin
Участник
 
264 / 68 (3) ++++
Регистрация: 07.04.2005
Цитата:
Сообщение от V777 Посмотреть сообщение
ну понятно...тока если вставить такую строчку ругается что RecordSortedList должен быть отработан на сервере...
что я не так делаю???
Во-первых, обращаю внимание, что речь не про RecordInsertList, а про RecordSortedList

Может быть, проблема где-то здесь:
Цитата:
RecordSortedList objects must be server-located before the insertDatabase method can be called. Otherwise, an exception is thrown.
Старый 03.12.2008, 12:18   #9  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от coolibin Посмотреть сообщение
Во-первых, обращаю внимание, что речь не про RecordInsertList, а про RecordSortedList
А думаете ситуация там отличается?
Не уверен. Но и не проверял.
__________________
Zhirenkov Vitaly
Старый 03.12.2008, 12:28   #10  
coolibin is offline
coolibin
Участник
 
264 / 68 (3) ++++
Регистрация: 07.04.2005
Цитата:
Сообщение от ZVV Посмотреть сообщение
А думаете ситуация там отличается?
Не уверен. Но и не проверял.
Я тоже не проверял ))), но судя по описанию, RecordSortedList раньше вызова insertDatabase() записи вставлять не должна:

http://msdn.microsoft.com/en-us/libr...29(AX.10).aspx

http://msdn.microsoft.com/en-us/libr...22(AX.10).aspx

У второго явно указано:
Цитата:
Records are inserted only when the kernel finds the time appropriate, but they are inserted no later than the call to the insertDatabase.
Старый 03.12.2008, 14:35   #11  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от coolibin Посмотреть сообщение
Я тоже не проверял ))), но судя по описанию, RecordSortedList раньше вызова insertDatabase() записи вставлять не должна:
Да, действительно.. Проверил - не вставляется.

Вопрос к ТопикСтартеру - а вы не забыли сделать в коде?
X++:
recordSortedList.sortOrder(...);
А то иначе тоже будут "некоторые" проблемы.
__________________
Zhirenkov Vitaly
За это сообщение автора поблагодарили: coolibin (1).
Старый 03.12.2008, 11:51   #12  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
да я поискал...не нашел ничего...толи искать не умею...толи смотрю не туда...
Старый 03.12.2008, 12:02   #13  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от V777 Посмотреть сообщение
да я поискал...не нашел ничего...толи искать не умею...толи смотрю не туда...
Будьте осторожны с RecordInsertList
__________________
Zhirenkov Vitaly
Старый 03.12.2008, 12:02   #14  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
поможите человеки...я ж не знаю ничего...
Старый 03.12.2008, 12:03   #15  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Remarks
The method will fall back to record-by-record insert, if (a) the table is not SQL stored, (b) the insert() method is overloaded, or (c) the tables includes memo- or container-fields. Also, a RecordSortedList must be server-located before insertDatabase() can be called, otherwise an exception is thrown.
правильно ругается + ограничения


Example
Below is an example of how to insert N, or in this case 3, records in one, single database operation.

X++:
{    
RecordSortedList recordSortedList;    CustTable custTable;    
; 
   
recordSortedList = new RecordSortedList(tablenum(CustTable));  
 
 recordSortedList.sortOrder(fieldnum(custTable,AccountNum));

    ttsbegin;

        custTable.AccountNum = '1000';      // prepare record #1 for insertion      
custTable.CreditMax = 10000.0;        
recordSortedList.ins(custTable);

        custTable.AccountNum = '2000';      // prepare record #2 for insertion        
custTable.CreditMax = 500.0;        
recordSortedList.ins(custTable);

        custTable.AccountNum = 'N000';      // prepare record #N for insertion        
custTable.CreditMax = 9999999.9;        
recordSortedList.ins(custTable);

        recordSortedList.insertDatabase();  // all N records are inserted in one database operation
    ttscommit;
}
Старый 03.12.2008, 12:14   #16  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Перенесите работу кода на сервер и всего делов.
Старый 03.12.2008, 12:34   #17  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Я тоже не проверял ))), но судя по описанию, RecordSortedList раньше вызова insertDatabase() записи вставлять не должна:
Интересно. Insert() метод таблицы вызывается каждый раз при вызове recordSortedList.ins(custTable); С другой стороны, вставка в БД проиходит, только если вызван
insertDatabase
Старый 03.12.2008, 14:16   #18  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
?
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Интересно. Insert() метод таблицы вызывается каждый раз при вызове recordSortedList.ins(custTable); С другой стороны, вставка в БД проиходит, только если вызван
insertDatabase
2 eldar: можно поподробнее описать ситуацию с вызовом метода insert() при вызовах recordSortedList.ins(custTable) - на какой версии Ax тестировался код (привести пример кода) и на основе чего сделан такой вывод?

Написал небольшой кусок для эксперимента :
X++:
static server void main( Args _args)
{
    RecordSortedList    recordSortedList    ;
    CustTable           custTable           ;
    Counter             counter             ;
    ;

    recordSortedList = new RecordSortedList( tablenum( CustTable ) );
    recordSortedList.sortOrder( fieldnum( custTable,AccountNum ) ) ;

    ttsbegin;
    for( counter = 1; counter <= 100; counter++ )
    {
        custTable.AccountNum = strfmt( "Cust_%1", counter ) ;
        custTable.CreditMax = counter * 100.0 ;

        info( strfmt( "before recordSortedList.ins %1 record", counter ) ) ;
        recordSortedList.ins( custTable ) ;
    }

    info( 'before recordSortedList.insertDatabase' ) ;
    recordSortedList.insertDatabase() ;
    ttscommit;
}
По результатам работы видно что перекрытый метод custTable.insert() начинает отрабатывать только при фактической вставке в БД после вызова recordSortedList.insertDatabase():
Изображения
 
Старый 03.12.2008, 13:26   #19  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
извиняюсь отвлекли...
что значит перенести на сервер??? я просто чайник в этих делах...нада разобраться почему не вносит записи в таблицу...
полностью ошибка звучит так
Ошибка:
Невозможно создать запись в Строки журнала (LedgerJournalTrans).
Чтобы использовать databaseInsert(), RecordSortedList должен быть обработан на сервере.
ttsbegin и ttscommit ставил...ошибка та же...
Старый 03.12.2008, 13:31   #20  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Ну, например, если этот код у вас в статическом методе (static в определении метода), то дописать в определение
static server
Это смотря, где код написан. Где он находится, в каком классе? Полность метод можете показать?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Осторожно. RecordSortedList учитывает регистр символов Logger DAX: Программирование 9 23.01.2009 15:39
Как узнать по объекту RecordSortedList, из какой таблицы в нем записи? gl00mie DAX: Программирование 4 20.02.2008 15:39
axStart: RecordSortedList Blog bot DAX Blogs 0 21.12.2007 04:11

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:13.