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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.10.2011, 15:02   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,452 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А если всё выражение или его часть взять в скобки?
Старый 18.10.2011, 15:09   #2  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
Да все так же.
P.S. Так не хочется делать циклы.
Старый 18.10.2011, 15:13   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
а если выполнить этот апдейт в самом SQL в таком виде, тоже обругается?

Я клоню к тому, что может сформировать текст запроса в аксапте и отправить его на исполнение через Statement.executeUpdate(sqlTxt)?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 18.10.2011, 15:15   #4  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,822 / 402 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от lev Посмотреть сообщение
а если выполнить этот апдейт в самом SQL в таком виде, тоже обругается?

Я клоню к тому, что может сформировать текст запроса в аксапте и отправить его на исполнение через Statement.executeUpdate(sqlTxt)?
зачем такие сложности, можно в менеджментстудио
Старый 18.10.2011, 15:18   #5  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от ice Посмотреть сообщение
зачем такие сложности, можно в менеджментстудио
Не очень понял про сложности...

Человеку нужно из аксапты обновить много записей в таблице. использовать существующий синтаксис аксапты не получается из-за бага, поэтому я предлагаю обойти существующий синтаксис и отправить выполнение запроса на SQL.

Причем тут менеджмент студио? Не будет же человек каждый раз в ручную запускать этот запрос из менеджмент студио?

Для проверки конечно же надо использовать её (если Вы про это)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 18.10.2011, 15:22   #6  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,822 / 402 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от lev Посмотреть сообщение
Не очень понял про сложности...

Человеку нужно из аксапты обновить много записей в таблице. использовать существующий синтаксис аксапты не получается из-за бага, поэтому я предлагаю обойти существующий синтаксис и отправить выполнение запроса на SQL.

Причем тут менеджмент студио? Не будет же человек каждый раз в ручную запускать этот запрос из менеджмент студио?

Для проверки конечно же надо использовать её (если Вы про это)
по простоте душевной, я подумал что операция апдейта в полмиллиарда записей разовая и ее лучше сделать, чтоб обойти все сложности, напрямую в менеджментстудио. если же эта операция частая, то чтото не правильно в архитектуре

Последний раз редактировалось ice; 18.10.2011 в 15:25.
Старый 18.10.2011, 15:31   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
В общем я бы пошел по следующему пути (если бизнес логика из метода update() таблицы не нужна) :
1. Если нужно разово выполнить обновление какого то поля, во всей таблице, то выполнил был это обновление напрямую в SQL.
2. Если это какая то периодическая операция, которая раз в месяц (неделю, квартал, год) должна выполняться кем то из аксапты, то сформировал бы SQL запрос и выполнил его напрямую в SQL из аксапты (как это сделать я писал в предыдущих сообщениях).

P.S. если конечно сам SQL нормально переваривает такого вида запрос
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем

Последний раз редактировалось lev; 18.10.2011 в 15:49. Причина: добавил P.S.
Старый 18.10.2011, 15:16   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,452 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от pitersky Посмотреть сообщение
Попробуйте использовать strfmt("AAAAA %1 BBB ", myTable_1.Field_str), возможно поможет
Нет такое в update_recordset делать нельзя. Групповая операция выполняется на SQL сервере, а strfmt это функция приложения аксапты.

Цитата:
Сообщение от Dreadlock Посмотреть сообщение
P.S. Так не хочется делать циклы.
Если условия позволяют, то обновляйте в два этапа
сначала
X++:
update_recordset myTable_1
            setting ErrorTxt = "AAAAA "  + myTable_1.Field_str;
а потом
X++:
update_recordset myTable_1
            setting ErrorTxt = myTable_1.Field_str  + " BBB ";
Старый 18.10.2011, 15:20   #9  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,518 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если условия позволяют, то обновляйте в два этапа
сначала
X++:
update_recordset myTable_1
            setting ErrorTxt = "AAAAA "  + myTable_1.Field_str;
а потом
X++:
update_recordset myTable_1
            setting ErrorTxt = myTable_1.Field_str  + " BBB ";
кстати да, попробуйте в два этапа
только на втором этапе надо будет прибавлять к ErrorTxt, а не к Field_str
__________________
С уважением,
Вячеслав
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 18.10.2011, 15:35   #10  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
X++:
update_recordset myTable_1
            setting ErrorTxt = myTable_1.Field_str  + " BBB ";
В общем задача такая, в поле ошибки надо записать последовательно несколько ошибок, т.е. потом, после первого обновления строк пойдет:
X++:
update_recordset myTable_1
            setting ErrorTxt = myTable_1.ErrorTxt + "CCC" + myTable_1.Field10_str  + " DDD ";
Цитата:
зачем такие сложности, можно в менеджментстудио
Так от этого и хотим уйти. Был код который из промежуточной базы читал последовательно строки, делал кучу проверок и качал в Ах данные. Оказалось медленно. Решили качать по блочно, 100000 и сразу весь массив обновлять. Все хорошо, только бага вылезла.
Хотелось бы избежать SQLStatement'ов и с Аксаптовой таблицей работать приятнее и проще.

З.Ы. Пол миллиарда как пример привел.
Старый 18.10.2011, 15:56   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,452 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Dreadlock Посмотреть сообщение
В общем задача такая, в поле ошибки надо записать последовательно несколько ошибок, т.е. потом, после первого обновления строк пойдет:
X++:
update_recordset myTable_1
            setting ErrorTxt = myTable_1.ErrorTxt + "CCC" + myTable_1.Field10_str  + " DDD ";
.
Экспериментальным путём удалось выполнить следующий код:
X++:
update_recordset myTable_1
            setting ErrorTxt = myTable_1.ErrorTxt + "CCC" + (myTable_1.Field10_str + " DDD ") + (myTable_1.Field11_str + " EEE ") + (myTable_1.Field12_str + " FFF");
и такой:
X++:
update_recordset myTable_1
            setting ErrorTxt = ("BBB " + myTable_1.ErrorTxt) + (" CCC " + myTable_1.Field10_str) + (" DDD " + myTable_1.Field11_str) + (" EEE " + myTable_1.Field12_str);

Последний раз редактировалось S.Kuskov; 18.10.2011 в 16:05.
За это сообщение автора поблагодарили: Logger (3), Dreadlock (1).
Старый 18.10.2011, 16:24   #12  
Dreadlock is offline
Dreadlock
Участник
Аватар для Dreadlock
 
298 / 224 (8) ++++++
Регистрация: 07.05.2009
Адрес: Москва
Да, действительно так сработало.
Спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
update_recordset не работает с системными полями и таблицами? Alexx7 DAX: Программирование 42 19.10.2009 09:39
update_recordset и мемо-поля Lucky13 DAX: Программирование 5 28.08.2009 14:10
update_recordset. Бага или фича? Lucky13 DAX: Программирование 7 08.04.2009 17:33
Почему не отрабатывает update_recordset? breakpoint DAX: Программирование 17 25.06.2008 18:27
Вопрос по update_recordset cherv DAX: Программирование 5 14.07.2006 14:28
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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