29.08.2011, 15:42 | #21 |
Участник
|
Мне не известен номер строки и столбца, Я плохо пока знаю класс ComExcelDocument_RU, я например формирую строки отчета по статьям затрат, и начинаю выводить их из А2 потому что знаю что в этой ячейке нет данных! И что это следующая после заголовка строка! Я пытаюсь понять как мне находить ту ячейку в которую вставлять строку с подитогом по статье???И как это можно сделать я и хочу спросить :-) Мне главное делать это через буфер и insertText. Спасибо!
|
|
29.08.2011, 16:24 | #22 |
Участник
|
чтоб получить начальные номера строки и столбца используйте ComExcelDocument_RU::cellRegion2ColRow("A2");
|
|
29.08.2011, 16:35 | #23 |
северный Будда
|
Не понимаю, что тут сложного
1) Заведите переменную-счётчик, которая содержит значение текущей строки (например, i) 2) Определитесь с колонкой вывода подитогов (например, 5) 3) Вставляйте подитог по адресу ComExcelDocument_RU:numToNameCell(i, 5) или вы чего-то недоговориваете по условию задачи
__________________
С уважением, Вячеслав |
|
29.08.2011, 16:36 | #24 |
Участник
|
Простите за мою глупость :-) Я просто пытаюсь склеить все вами написанное! Сейчас алгоритм такой, вывели строку заголовка отчета начиная с ячейки А1, дальше цикле по QueryRun заполняем буфер и встявляем строку заканчивающуюся на \n начиная с ячейки А2. Теперь я хочу, анализируя изменение статьи затрат, т.е. когда все проводи по 1 статье выведены и цикл переходит к след. статье, я хочу встявить строку с подитогами по предидущей статье затрат (сумму всех проводок)! Делать это хочу используя другую переменную буфера (кот. заполняется в другом запросе), но вот как отловить то место и указать insert'у с какой ячейки встявлять строку не могу понять??? Если вы более подробно раскажете как это можно будет сделать, то буду вам очень благодарен!
|
|
29.08.2011, 16:39 | #25 |
северный Будда
|
Как отловить такое место - не знает никто, кроме вас. Подитоги-то могут быть по разным критериям. Я бы вообще высчитывал их не отдельным запросом, а посредством вставки ёксельной функции СУММ в нужных ячейках. Тогда Excel сам просуммирует то, что надо просуммировать
__________________
С уважением, Вячеслав |
|
29.08.2011, 16:43 | #26 |
Участник
|
теперь понятна задача. решается просто, в цикле вставьте проверку на изменение статьи затрат
X++: //нужный цикл с сортировкой { if ( != ) { //вставить строку итогов постатье в буфер = ; } } //вставить строку итогов постатье в буфер //вставить строку итогов по всемуотчету в буфер |
|
29.08.2011, 16:44 | #27 |
Участник
|
to Pitersky: Я так и сделал, завел переменную-счетчик (которая увеличивается на 1 после insertText) , но как я уже выше говорил, количество выведенных строк и значение переменной не совпадает! Я так понимаю буфер заполняется сразу несколькими строками и сразу несколько за раз выводит в Excel???
|
|
29.08.2011, 16:50 | #28 |
Участник
|
to ice: Именно так у меня сейчас и написано! :-) Проблема не в том как отловить момент когда она меняется, а как в этот момент понять на какой строке Excel сделать вставку строки с этим подитогом!
to pitersky: Мне бы очень хотелось узнать как можно обратиться к ячейке Excel из аксапты и сделать СУММ, я просто этого не знаю :-) т.е. как обращаться к ячейке если для вывода я исользую insertText?? Расскажите если не трудно? Но опять же для этого надо знать на какую строку встать, правильно? |
|
29.08.2011, 17:03 | #29 |
Участник
|
в моем примере не нужно вставлять данные во второй буфер, вставлять данные нужно в первый буфер. и тогда вам не понадобится знание ячеек
|
|
29.08.2011, 17:12 | #30 |
Участник
|
Когда находимся на этом месте:
if (стараястатья != текущаястатья) { //вставить строку итогов постатье в буфер <-- !!! стараястатья = текущаястатья; мне нужно передать в запрос который посчитает подитоги данные из цикла! т.е. я в другом query считаю их, соответственно и заполняю в том же методе строку которую надо вывести в буфер и затем в excel. Строки отчета я тоже заполняю отдельным методом без Query! Все уже считается и заполняется, но место определить ни как не могу. |
|
31.08.2011, 11:35 | #31 |
Участник
|
Если использовать вариант предложенный ice, как быть с последним поитогом??? т.е. если в запросе будет лишь 1 статья затрат, то вывод поитогов не происходит! Может кто подсказать, как узнать что цикл по QueryRun достиг последней записи???? Спасибо!
X++: //нужный цикл с сортировкой { if ( != ) { //вставить строку итогов постатье в буфер = ; } } //вставить строку итогов постатье в буфер //вставить строку итогов по всемуотчету в буфер |
|
31.08.2011, 11:40 | #32 |
Участник
|
в примере же написано что выводить в после цикла...выводить подитог по "стараястатья" и тотал (если нужно
пс а чтоб не заморачиваться с переменными, можно органисовать внешний цикл (тотже запрос) с группировкой по статьям, а внутренний запрос фильтровать по текущей статье: X++: //внешний запрос //group by статья { //внутренний запрос //фильтр = статьяизвнешнегозапроса { //вставка в буфер текушей строки } //вставка в буфер подитогов } //вставка в буфер итогов Последний раз редактировалось ice; 31.08.2011 в 11:46. |
|
31.08.2011, 11:52 | #33 |
Участник
|
У меня немного отличался алгоритм от вашего, в частности insertText происходил в цикле, сейчас вынес его за скобки, добавил строку заполнения буфера, и все хорошо!!! :-)))) Спасибо!
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Работа с данными в отчете | 31 | |||
функционал Работа с документами и создание договора в Word | 5 | |||
Работа Range на форме | 14 | |||
QBDS проблема с тремя датасоурсами | 5 | |||
Работа Grid в Lookup формах | 0 |
|