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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.08.2011, 15:42   #21  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Мне не известен номер строки и столбца, Я плохо пока знаю класс ComExcelDocument_RU, я например формирую строки отчета по статьям затрат, и начинаю выводить их из А2 потому что знаю что в этой ячейке нет данных! И что это следующая после заголовка строка! Я пытаюсь понять как мне находить ту ячейку в которую вставлять строку с подитогом по статье???И как это можно сделать я и хочу спросить :-) Мне главное делать это через буфер и insertText. Спасибо!
Старый 29.08.2011, 16:24   #22  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
чтоб получить начальные номера строки и столбца используйте ComExcelDocument_RU::cellRegion2ColRow("A2");
Старый 29.08.2011, 16:35   #23  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,507 / 428 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Не понимаю, что тут сложного
1) Заведите переменную-счётчик, которая содержит значение текущей строки (например, i)
2) Определитесь с колонкой вывода подитогов (например, 5)
3) Вставляйте подитог по адресу ComExcelDocument_RU:numToNameCell(i, 5)

или вы чего-то недоговориваете по условию задачи
__________________
С уважением,
Вячеслав
Старый 29.08.2011, 16:36   #24  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Простите за мою глупость :-) Я просто пытаюсь склеить все вами написанное! Сейчас алгоритм такой, вывели строку заголовка отчета начиная с ячейки А1, дальше цикле по QueryRun заполняем буфер и встявляем строку заканчивающуюся на \n начиная с ячейки А2. Теперь я хочу, анализируя изменение статьи затрат, т.е. когда все проводи по 1 статье выведены и цикл переходит к след. статье, я хочу встявить строку с подитогами по предидущей статье затрат (сумму всех проводок)! Делать это хочу используя другую переменную буфера (кот. заполняется в другом запросе), но вот как отловить то место и указать insert'у с какой ячейки встявлять строку не могу понять??? Если вы более подробно раскажете как это можно будет сделать, то буду вам очень благодарен!
Старый 29.08.2011, 16:39   #25  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,507 / 428 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Как отловить такое место - не знает никто, кроме вас. Подитоги-то могут быть по разным критериям. Я бы вообще высчитывал их не отдельным запросом, а посредством вставки ёксельной функции СУММ в нужных ячейках. Тогда Excel сам просуммирует то, что надо просуммировать
__________________
С уважением,
Вячеслав
Старый 29.08.2011, 16:43   #26  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
теперь понятна задача. решается просто, в цикле вставьте проверку на изменение статьи затрат
X++:
//нужный цикл с сортировкой
{
 if ( != )
 {
  //вставить строку итогов постатье в буфер
   = ;
 }
}

//вставить строку итогов постатье в буфер
//вставить строку итогов по всемуотчету в буфер
Старый 29.08.2011, 16:44   #27  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
to Pitersky: Я так и сделал, завел переменную-счетчик (которая увеличивается на 1 после insertText) , но как я уже выше говорил, количество выведенных строк и значение переменной не совпадает! Я так понимаю буфер заполняется сразу несколькими строками и сразу несколько за раз выводит в Excel???
Старый 29.08.2011, 16:50   #28  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
to ice: Именно так у меня сейчас и написано! :-) Проблема не в том как отловить момент когда она меняется, а как в этот момент понять на какой строке Excel сделать вставку строки с этим подитогом!
to pitersky: Мне бы очень хотелось узнать как можно обратиться к ячейке Excel из аксапты и сделать СУММ, я просто этого не знаю :-) т.е. как обращаться к ячейке если для вывода я исользую insertText?? Расскажите если не трудно? Но опять же для этого надо знать на какую строку встать, правильно?
Старый 29.08.2011, 17:03   #29  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
в моем примере не нужно вставлять данные во второй буфер, вставлять данные нужно в первый буфер. и тогда вам не понадобится знание ячеек
Старый 29.08.2011, 17:12   #30  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Когда находимся на этом месте:
if (стараястатья != текущаястатья)
{
//вставить строку итогов постатье в буфер <-- !!!
стараястатья = текущаястатья;
мне нужно передать в запрос который посчитает подитоги данные из цикла! т.е. я в другом query считаю их, соответственно и заполняю в том же методе строку которую надо вывести в буфер и затем в excel. Строки отчета я тоже заполняю отдельным методом без Query! Все уже считается и заполняется, но место определить ни как не могу.
Старый 31.08.2011, 11:35   #31  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
Если использовать вариант предложенный ice, как быть с последним поитогом??? т.е. если в запросе будет лишь 1 статья затрат, то вывод поитогов не происходит! Может кто подсказать, как узнать что цикл по QueryRun достиг последней записи???? Спасибо!
X++:
//нужный цикл с сортировкой
{
 if ( != )
 {
  //вставить строку итогов постатье в буфер
   = ;
 }
}

//вставить строку итогов постатье в буфер
//вставить строку итогов по всемуотчету в буфер
Старый 31.08.2011, 11:40   #32  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
в примере же написано что выводить в после цикла...выводить подитог по "стараястатья" и тотал (если нужно

пс а чтоб не заморачиваться с переменными, можно органисовать внешний цикл (тотже запрос) с группировкой по статьям, а внутренний запрос фильтровать по текущей статье:
X++:
//внешний запрос
 //group by статья
{
  //внутренний запрос
     //фильтр = статьяизвнешнегозапроса
  {
    //вставка в буфер текушей строки
  } 

  //вставка в буфер подитогов
}

//вставка в буфер итогов

Последний раз редактировалось ice; 31.08.2011 в 11:46.
Старый 31.08.2011, 11:52   #33  
JuniorAx is offline
JuniorAx
Участник
 
134 / 20 (1) +++
Регистрация: 20.07.2011
Адрес: Санкт-Петербург
У меня немного отличался алгоритм от вашего, в частности insertText происходил в цикле, сейчас вынес его за скобки, добавил строку заполнения буфера, и все хорошо!!! :-)))) Спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Работа с данными в отчете romanja DAX: Программирование 31 31.03.2011 16:30
функционал Работа с документами и создание договора в Word GM2005 DAX: Функционал 5 28.09.2009 14:49
Работа Range на форме Pustik DAX: Программирование 14 18.07.2005 12:25
QBDS проблема с тремя датасоурсами xshaman DAX: Программирование 5 22.01.2004 15:00
Работа Grid в Lookup формах Maxim Gorbunov DAX: База знаний и проекты 0 28.11.2001 17:37

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

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

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