ручная установка курсора в отчете excel
Модераторы: m0p3e, edward_K, Модераторы
ручная установка курсора в отчете excel
Добрый день! Помогите пожалуйста.
Делаю отчет в Excel. Нужно сделать так, чтобы курсор после выгрузки нескольких полей в столбце, грузил другой столбец рядом.
Например, выгружаю столбец:
mc1
mc2
mc3
mc4
...
Затем надо установить курсор в строке mc1 в соответствующем столбце посредством VIP, чтобы выгрузить столбец с параметрами. Т.е. должно получиться что-то такое:
mc1 param1
mc2 param2
mc3 param3
mc4 param4
... ...
А не такое:
mc1
mc2
mc3
mc4
_____param1
_____param2
_____param3
_____param4
Именно в такой последовательности, т.е. сначала выгружаю один столбец, потом устанавливаю курсор в соответствующее место на первой строке и начинаю выгружать второй столбец. Т.е. я не знаю, как после выгрузки первого столбца параметров установить курсор в соответствующую ячейку в первой строке. Надеюсь, объяснил понятно.
С Галактикой работаю недавно. Очень рассчитываю на вашу помощь!
Делаю отчет в Excel. Нужно сделать так, чтобы курсор после выгрузки нескольких полей в столбце, грузил другой столбец рядом.
Например, выгружаю столбец:
mc1
mc2
mc3
mc4
...
Затем надо установить курсор в строке mc1 в соответствующем столбце посредством VIP, чтобы выгрузить столбец с параметрами. Т.е. должно получиться что-то такое:
mc1 param1
mc2 param2
mc3 param3
mc4 param4
... ...
А не такое:
mc1
mc2
mc3
mc4
_____param1
_____param2
_____param3
_____param4
Именно в такой последовательности, т.е. сначала выгружаю один столбец, потом устанавливаю курсор в соответствующее место на первой строке и начинаю выгружать второй столбец. Т.е. я не знаю, как после выгрузки первого столбца параметров установить курсор в соответствующую ячейку в первой строке. Надеюсь, объяснил понятно.
С Галактикой работаю недавно. Очень рассчитываю на вашу помощь!
-
- Местный житель
- Сообщения: 554
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: ручная установка курсора в отчете excel
Здравствуйте. Для вывода в соответствующую строку обычно используется переменная счетчик. Что Вам мешает перед началом вывода нового столбца сделать присвоение этой переменной значения номера первой строки?
Re: ручная установка курсора в отчете excel
Мешает отсутствие опыта) Я недавно работаю, мне бы на примере это увидеть, поподробнее, если можно. Спасибо!
-
- Местный житель
- Сообщения: 554
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: ручная установка курсора в отчете excel
Ниже совсем простой пример (не оптимальный), только чтобы показать работу со счетчиком строк и вывод в Excel сначала первого столбца, а потом второго.
.form "Каталог ТМЦ"
.ard
.create view TMC
as select
Katmc.name,
Katmc.barkod
from Katmc
;
.var
n: double;
.endvar
.begin
xlCreateExcel('Пример',true);
SetVisualHeader ( 'Вывод данных в Excel.' );
//вывод 1–го столбца
n:=5;
_loop Katmc
{
xlSetCellStringValue(katmc.name,n,1,n,1);
n:=n+1;
}
//вывод 2–го столбца
n:=5;
_loop Katmc
{
xlSetCellStringValue(katmc.barkod,n,2,n,2);
n:=n+1;
}
xlKillExcel;
message('ГОТОВО !');
end.
.endform
.form "Каталог ТМЦ"
.ard
.create view TMC
as select
Katmc.name,
Katmc.barkod
from Katmc
;
.var
n: double;
.endvar
.begin
xlCreateExcel('Пример',true);
SetVisualHeader ( 'Вывод данных в Excel.' );
//вывод 1–го столбца
n:=5;
_loop Katmc
{
xlSetCellStringValue(katmc.name,n,1,n,1);
n:=n+1;
}
//вывод 2–го столбца
n:=5;
_loop Katmc
{
xlSetCellStringValue(katmc.barkod,n,2,n,2);
n:=n+1;
}
xlKillExcel;
message('ГОТОВО !');
end.
.endform
Re: ручная установка курсора в отчете excel
Спасибо за пример. Не совсем понятно, т.к. в отчете я использую для вывода значений символы ^.
Т.е. условно
цикл1 (^)
цикл2 (_______^)
Первый символ для первого столбца, второй соответственно для второго, который должен печататься рядом.
Если делать напрямую, то столбцы будут печататься так:
mc1
mc2
mc3
mc4
_____param1
_____param2
_____param3
_____param4
Как оперировать со вторым символом ^, чтобы после вывода первого столбца второй выводился опять с первой строки рядом? При этом символы должны оставаться внутри своих циклов.
Т.е. условно
цикл1 (^)
цикл2 (_______^)
Первый символ для первого столбца, второй соответственно для второго, который должен печататься рядом.
Если делать напрямую, то столбцы будут печататься так:
mc1
mc2
mc3
mc4
_____param1
_____param2
_____param3
_____param4
Как оперировать со вторым символом ^, чтобы после вывода первого столбца второй выводился опять с первой строки рядом? При этом символы должны оставаться внутри своих циклов.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: ручная установка курсора в отчете excel
Вы vip-интерфейс то сами разрабатываете с потоком данных ? не очень понятно....
если да, то зачем в FCOM юзать для этого.
если да, то зачем в FCOM юзать для этого.
-
- Местный житель
- Сообщения: 204
- Зарегистрирован: 13 ноя 2012, 12:47
- Откуда: СПб
- Контактная информация:
Re: ручная установка курсора в отчете excel
Чтобы дать ответ на Ваш вопрос необходимо понять, откуда берутся данные.
Лучше всего выложите код интерфейса.
Или же это отчет, который формируется прямо в Excell.
Лучше всего выложите код интерфейса.
Или же это отчет, который формируется прямо в Excell.
Программист-самоучка
Re: ручная установка курсора в отчете excel
Это присоединенная форма к прототипу MANUFAKTBRAK. Написана в Excelе в slk-формате. Я стараюсь переделать неработающий отчет, который был написан до меня. Большое спасибо еще раз за внимание к моей проблеме!
Re: ручная установка курсора в отчете excel
На slk "курсором" управлять не получится.
Самый простой вариант создать временную таблицу, заполнить ее данными и выводить уже ее построчно.
Самый простой вариант создать временную таблицу, заполнить ее данными и выводить уже ее построчно.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: ручная установка курсора в отчете excel
Лучше переделать slk на текстовый, в котором вывести напрямую в excel. Если сделаете на основе шаблона избежите многих болезней slk
Re: ручная установка курсора в отчете excel
А как мне из текстовой присоединенной формы вывести напрямую в excel? Если что, простите за глупые вопросы)
Re: ручная установка курсора в отчете excel
ExcelLib.pdf почитайте.Olegpro писал(а):А как мне из текстовой присоединенной формы вывести напрямую в excel? Если что, простите за глупые вопросы)
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: ручная установка курсора в отчете excel
Irina_ по сути написала как...создаете свою ЛТ в link-форме отталкиваясь от nrec документа, переданного в форму и выводите в цикле по этой ЛТ что нужно ....
Re: ручная установка курсора в отчете excel
Я просматривал эту документацию, но не совсем понимаю, как это использовать в присоединенной rtf-форме к прототипу. Банально, после чего надо вызывать функцию xlCreateExcel. Вот пример:
.LinkForm 'MNAKTBRK_SNAB_1 Prototype is 'MANUFAKTBRAK'//
.NameInList 'Тест'//
.var//
nomre:Double//
datre:Date//
summare:Double//
.endvar//
.Create view rrr//
from katsopr kk,spsopr sp, attrval art//
where//
((//
comp(KATSOPRNREC)/==art.vcomp (noindex)//
and '1110' ==art.wtable (noindex)//
and art.crec==sp.nrec (noindex)//
and '00010000000006DDh'/==art.cattrnam (noindex)//
and sp.csopr==kk.nrec//
and '206'==kk.vidsopr (noindex)//
));//
.fields//
NAME_TOVAR
if(datre=date(0,0,0),'',datre)//
nomre//
summare//
.endfields//
.{//
.{//
.{//
^
.}//
.}//
.begin//
nomre:=0;//
datre:=date(0,0,0);//
summare:=0;//
end.//
.{table 'rrr.art'//
.begin//
nomre:=rrr.kk.nsopr;//
datre:=rrr.kk.dsopr;//
summare:=rrr.kk.summa;//
end.//
^ ^ ^
.}//
.}//
.endform//
Как в данном случае вывести результаты в excel, чтобы столбец NAME_TOVAR стоял рядом со столбцами nomre, datre, summare, при этом чтобы циклы остались такими же, как есть. Вообще с этим сталкиваюсь впервые, поэтому поподробнее, если вас не затруднит. Спасибо.
.LinkForm 'MNAKTBRK_SNAB_1 Prototype is 'MANUFAKTBRAK'//
.NameInList 'Тест'//
.var//
nomre:Double//
datre:Date//
summare:Double//
.endvar//
.Create view rrr//
from katsopr kk,spsopr sp, attrval art//
where//
((//
comp(KATSOPRNREC)/==art.vcomp (noindex)//
and '1110' ==art.wtable (noindex)//
and art.crec==sp.nrec (noindex)//
and '00010000000006DDh'/==art.cattrnam (noindex)//
and sp.csopr==kk.nrec//
and '206'==kk.vidsopr (noindex)//
));//
.fields//
NAME_TOVAR
if(datre=date(0,0,0),'',datre)//
nomre//
summare//
.endfields//
.{//
.{//
.{//
^
.}//
.}//
.begin//
nomre:=0;//
datre:=date(0,0,0);//
summare:=0;//
end.//
.{table 'rrr.art'//
.begin//
nomre:=rrr.kk.nsopr;//
datre:=rrr.kk.dsopr;//
summare:=rrr.kk.summa;//
end.//
^ ^ ^
.}//
.}//
.endform//
Как в данном случае вывести результаты в excel, чтобы столбец NAME_TOVAR стоял рядом со столбцами nomre, datre, summare, при этом чтобы циклы остались такими же, как есть. Вообще с этим сталкиваюсь впервые, поэтому поподробнее, если вас не затруднит. Спасибо.
Re: ручная установка курсора в отчете excel
xl*-функции - это совсем другая технология, тут раздел .fields - .endfields не нужен, как и не нужны ^ - место вывода переменной вы должны указать координатами в соответствующих функциях xlSetCell<<>>Value.
После всех своих вьюшек пошёл begin? Вот там и пишите xlCreateExcel.
После всех своих вьюшек пошёл begin? Вот там и пишите xlCreateExcel.
Код: Выделить всё
.{table 'rrr.art'//
.begin//
nomre:=rrr.kk.nsopr;//
datre:=rrr.kk.dsopr;//
summare:=rrr.kk.summa;//
xlSetCellStringValue(nomre, 1, 1, 1, 1);
xlSetCellDateValue(datre, 1, 2, 1, 2);
xlSetCellNumberValue(summare, 1, 3, 1, 3);
end.//
.}/