нид хелп по группировкам
Модераторы: m0p3e, edward_K, Модераторы
Re: нид хелп по группировкам
Вот пример Выгрузки в Excel(лишнее в отчете убрано).
Как видите все просто. Важно! В одной из ячеек сохраняем количество выгруженных строк. Это пригодится для нашего макроса.
.form 'Rasp_in_cex'
.ard
.var
.endvar
.Create view t as select
katpodr.name,
katnazna.name,
katmc.name,
spsopr.kolfact,
spsopr.price
from katsopr, spsopr
where (( katsopr.cpodrto==katpodr.nrec and
katsopr.cnazna==katnazna.nrec and
spsopr.csopr==katsopr.nrec and
spsopr.cmcusl==katmc.nrec
)) and (cSkl=katsopr.cpodrfrom and katsopr.vidsopr=501 and katsopr.dsopr>=FromDate and katsopr.dsopr<=ToDate );
.begin
xlCreateExcel('Отчет1',true);
if (xlIsExcelValid)
xlSetActiveWorkBookByName('Отчет1');
xlSetSheetName(1,'исходные данные');
xlSetActiveSheet(1);
xlSetCellStringValue('Объект' , 3, 1, 3, 1);
xlSetCellStringValue('Назначение' , 3, 2, 3, 2);
xlSetCellStringValue('Мат Ценность' , 3, 3, 3, 3);
xlSetCellStringValue('Количество' , 3, 4, 3, 4);
xlSetCellStringValue('Цена руб' , 3, 5, 3, 5);
xlSetCellStringValue('Стоимость' , 3, 6, 3, 6);
i:=4;
}
else
{
Rasp_in_cex.fBreak;
}
end.
.{ table 't'
.begin
xlSetNumberFormat('@' , i, 1, i, 1);
xlSetCellStringValue(t.katpodr.name , i, 1, i, 1);
xlSetCellStringValue(t.katnazna.name , i, 2, i, 2);
xlSetCellStringValue(t.katmc.name , i, 3, i, 3);
xlSetCellNumberValue(t.spsopr.kolfact , i, 4, i, 4);
xlSetCellNumberValue(round(t.spsopr.price,2) , i, 5, i, 5);
xlSetCellNumberValue(round(t.spsopr.price*t.spsopr.kolfact,2) , i, 6, i, 6);
inc(i);
end.
.}
.Begin
xlSetCellStringValue('Номер последней строки', 1, 9, 1, 9);
xlSetCellNumberValue(i-1 , 1, 10, 1, 10);
xlImportModule(translatepath('%startpath%')+'BAS\cex_rasp.bas');
xlRunMacro('cex_rasp');
xlKillExcel;
end.
.endform
Как видите все просто. Важно! В одной из ячеек сохраняем количество выгруженных строк. Это пригодится для нашего макроса.
.form 'Rasp_in_cex'
.ard
.var
.endvar
.Create view t as select
katpodr.name,
katnazna.name,
katmc.name,
spsopr.kolfact,
spsopr.price
from katsopr, spsopr
where (( katsopr.cpodrto==katpodr.nrec and
katsopr.cnazna==katnazna.nrec and
spsopr.csopr==katsopr.nrec and
spsopr.cmcusl==katmc.nrec
)) and (cSkl=katsopr.cpodrfrom and katsopr.vidsopr=501 and katsopr.dsopr>=FromDate and katsopr.dsopr<=ToDate );
.begin
xlCreateExcel('Отчет1',true);
if (xlIsExcelValid)
xlSetActiveWorkBookByName('Отчет1');
xlSetSheetName(1,'исходные данные');
xlSetActiveSheet(1);
xlSetCellStringValue('Объект' , 3, 1, 3, 1);
xlSetCellStringValue('Назначение' , 3, 2, 3, 2);
xlSetCellStringValue('Мат Ценность' , 3, 3, 3, 3);
xlSetCellStringValue('Количество' , 3, 4, 3, 4);
xlSetCellStringValue('Цена руб' , 3, 5, 3, 5);
xlSetCellStringValue('Стоимость' , 3, 6, 3, 6);
i:=4;
}
else
{
Rasp_in_cex.fBreak;
}
end.
.{ table 't'
.begin
xlSetNumberFormat('@' , i, 1, i, 1);
xlSetCellStringValue(t.katpodr.name , i, 1, i, 1);
xlSetCellStringValue(t.katnazna.name , i, 2, i, 2);
xlSetCellStringValue(t.katmc.name , i, 3, i, 3);
xlSetCellNumberValue(t.spsopr.kolfact , i, 4, i, 4);
xlSetCellNumberValue(round(t.spsopr.price,2) , i, 5, i, 5);
xlSetCellNumberValue(round(t.spsopr.price*t.spsopr.kolfact,2) , i, 6, i, 6);
inc(i);
end.
.}
.Begin
xlSetCellStringValue('Номер последней строки', 1, 9, 1, 9);
xlSetCellNumberValue(i-1 , 1, 10, 1, 10);
xlImportModule(translatepath('%startpath%')+'BAS\cex_rasp.bas');
xlRunMacro('cex_rasp');
xlKillExcel;
end.
.endform
-
- Постоянный гость
- Сообщения: 58
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: -
- Контактная информация:
Re: нид хелп по группировкам
Молодец Павел я еще в самом начале говорил работаите с Ехселем
ХОЧУ изучить правила написания ИНТЕРФЕЙСОВ, создание собственных контуров и компиляции ADF словарей :)
Re: нид хелп по группировкам
Ну, надеюсь исходные данные Вы в Excel уже увидели. Дальше все действия уже в Екселе.
Влючаем запись макроса.
"Данные/Сводная Таблица" - вызывается мастер построения сводного отчета. Там и делаются все группировки. Строим отчет нужного вида с нужными группировками.
Останавливаем запись макроса.
Заходим в записанный макрос и любыми средствами записываем его в файл
"Галактика"/EXE/BAS/"имя файла"
Данный макрос будет работать только с текущим количеством строк в Екселе. Вот тут то нам и пригодится кол-во выгруженных строк .
В макрос добавим сл. строку
ss = "R" + Trim(Str(Worksheets("исходные данные").Range("J1").Value)) + "C6"
А вот пример ее использования.
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'исходные данные'!R3C1:"+ss).CreatePivotTable TableDestination:="", TableName _
:="СводнаяТаблица2"
Ну вот и все ваш макрос обработает любое количество выгруженных строк.
Надеюсь, Кто то сможет повторить
У меня пользователи очень довольны отчетами в Ексель. В макрос так же можно записать любую дополнительную обработку и украшательство. При навыке любой сложный отчет пишется за 30 минут со всеми оформлениями.
Влючаем запись макроса.
"Данные/Сводная Таблица" - вызывается мастер построения сводного отчета. Там и делаются все группировки. Строим отчет нужного вида с нужными группировками.
Останавливаем запись макроса.
Заходим в записанный макрос и любыми средствами записываем его в файл
"Галактика"/EXE/BAS/"имя файла"
Данный макрос будет работать только с текущим количеством строк в Екселе. Вот тут то нам и пригодится кол-во выгруженных строк .
В макрос добавим сл. строку
ss = "R" + Trim(Str(Worksheets("исходные данные").Range("J1").Value)) + "C6"
А вот пример ее использования.
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'исходные данные'!R3C1:"+ss).CreatePivotTable TableDestination:="", TableName _
:="СводнаяТаблица2"
Ну вот и все ваш макрос обработает любое количество выгруженных строк.
Надеюсь, Кто то сможет повторить
У меня пользователи очень довольны отчетами в Ексель. В макрос так же можно записать любую дополнительную обработку и украшательство. При навыке любой сложный отчет пишется за 30 минут со всеми оформлениями.
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: нид хелп по группировкам
А у нас не очень довольны пользователи тем, что перевели в Эксел отчеты. МЫ сделали выгрузку из Галактики, а затем запускаем маркос на образование сводных таблиц. Так все красиво..мышкой колонки переставил - анализ уже другой.
Но
Во-первых, при большой выгрузке сама выгрузка занимает уже десятки минут....свод идет тоже не быстро..вообщем все не быстро получается. Одним словом, если данных немного, то годится..если нет..то про Эксель лучше забыть сразу.
Во-вторых поддержка макросов. У одного юзера эксел 97..у другого XP. Так как Майкрософт особо не озадачивает себя поддержкой совместимости кода Бейсика, то одни и теже макросы могут не работать для разных Юзеров..да и вообще с поддержкой всего наработанного постоянные проблемы.
Сначало радовался,т.к. работы намного меньше по разработке отчетности аналитической когда через Эксель..потом понял, что лучше этим не увлекаться...проблем с сопровождением оказалось больше, чем с отчетность обычной Галактической.
Но
Во-первых, при большой выгрузке сама выгрузка занимает уже десятки минут....свод идет тоже не быстро..вообщем все не быстро получается. Одним словом, если данных немного, то годится..если нет..то про Эксель лучше забыть сразу.
Во-вторых поддержка макросов. У одного юзера эксел 97..у другого XP. Так как Майкрософт особо не озадачивает себя поддержкой совместимости кода Бейсика, то одни и теже макросы могут не работать для разных Юзеров..да и вообще с поддержкой всего наработанного постоянные проблемы.
Сначало радовался,т.к. работы намного меньше по разработке отчетности аналитической когда через Эксель..потом понял, что лучше этим не увлекаться...проблем с сопровождением оказалось больше, чем с отчетность обычной Галактической.
Некоммерческое общение в форуме
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: нид хелп по группировкам
>> при большой выгрузке сама выгрузка занимает уже десятки минут
Сама выгрузка!!! То есть получение данных! Без этого никуда не денешься, увы! Как же иначе доставать данные из БД??? Только выгрузкой )
А вот непосредственно вывод данных в отчетный Excel-файл у нас довольно быстро проходит:
Лист №1 - 4300 строк
Лист №2 - 6600 строк
Выводятся оба листа в один файл примерно за 1,5 минуты.
Вывод: Используйте функции xlSetCellStringValue и xlSetCellNumberValue только (!!!) для формирования шапки отчета! Для наполнения тела отчетного Excel-файла пользуйтесь матричными функциями: xlCreateMatrix, xlSTWriteToMatrix, xlDOWriteToMatrix, xlWriteMatrixToExcel, xlFreeMatrix. Их использование ускоряет работу в десятки раз!!!
Насчет макросов - ничего не могу сказать. Никогда не пользовался ими.
Сама выгрузка!!! То есть получение данных! Без этого никуда не денешься, увы! Как же иначе доставать данные из БД??? Только выгрузкой )
А вот непосредственно вывод данных в отчетный Excel-файл у нас довольно быстро проходит:
Лист №1 - 4300 строк
Лист №2 - 6600 строк
Выводятся оба листа в один файл примерно за 1,5 минуты.
Вывод: Используйте функции xlSetCellStringValue и xlSetCellNumberValue только (!!!) для формирования шапки отчета! Для наполнения тела отчетного Excel-файла пользуйтесь матричными функциями: xlCreateMatrix, xlSTWriteToMatrix, xlDOWriteToMatrix, xlWriteMatrixToExcel, xlFreeMatrix. Их использование ускоряет работу в десятки раз!!!
Насчет макросов - ничего не могу сказать. Никогда не пользовался ими.
Re: нид хелп по группировкам
А по моим подсчетам в сотни раз!
-
- Сообщения: 6
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Самара Самарская компания Байт
- Контактная информация:
Re: нид хелп по группировкам
Уважаемый Maverick, вышлите мне пожалуйста документацию о иерархических формах на pantyushin@byte-et.ru, буду очень признателен.
Re: и мне, плз
>> Описалово как работать с этими объектами могу намылить
Пожалуйста, и мне. Очень интересно.
ccc@yandex.ru
Пожалуйста, и мне. Очень интересно.
ccc@yandex.ru
Галактика 8.10, Oracle 10g / 10.2.0.4
Re: и мне, плз
Пожалуйста, и мне.
Подход к делу: СДЕЛАЛ и ... ЗАБЫЛ, а ОНО пусть САМО работает (не люблю возвращаться и повторяться).