Страница 2 из 2

Re: нид хелп по группировкам

Добавлено: 20 апр 2004, 08:30
Spvl
Вот пример Выгрузки в 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

Re: нид хелп по группировкам

Добавлено: 20 апр 2004, 08:53
ApachiA
Молодец Павел :) я еще в самом начале говорил работаите с Ехселем

Re: нид хелп по группировкам

Добавлено: 20 апр 2004, 09:07
Spvl
Ну, надеюсь исходные данные Вы в 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 минут со всеми оформлениями.

Re: нид хелп по группировкам

Добавлено: 21 апр 2004, 16:04
ecasoft
А у нас не очень довольны пользователи тем, что перевели в Эксел отчеты. МЫ сделали выгрузку из Галактики, а затем запускаем маркос на образование сводных таблиц. Так все красиво..мышкой колонки переставил - анализ уже другой.

Но

Во-первых, при большой выгрузке сама выгрузка занимает уже десятки минут....свод идет тоже не быстро..вообщем все не быстро получается. Одним словом, если данных немного, то годится..если нет..то про Эксель лучше забыть сразу.

Во-вторых поддержка макросов. У одного юзера эксел 97..у другого XP. Так как Майкрософт особо не озадачивает себя поддержкой совместимости кода Бейсика, то одни и теже макросы могут не работать для разных Юзеров..да и вообще с поддержкой всего наработанного постоянные проблемы.

Сначало радовался,т.к. работы намного меньше по разработке отчетности аналитической когда через Эксель..потом понял, что лучше этим не увлекаться...проблем с сопровождением оказалось больше, чем с отчетность обычной Галактической.

Re: нид хелп по группировкам

Добавлено: 21 апр 2004, 17:32
Deinis
>> при большой выгрузке сама выгрузка занимает уже десятки минут
Сама выгрузка!!! То есть получение данных! Без этого никуда не денешься, увы! Как же иначе доставать данные из БД??? Только выгрузкой ;))

А вот непосредственно вывод данных в отчетный Excel-файл у нас довольно быстро проходит:
Лист №1 - 4300 строк
Лист №2 - 6600 строк
Выводятся оба листа в один файл примерно за 1,5 минуты.

Вывод: Используйте функции xlSetCellStringValue и xlSetCellNumberValue только (!!!) для формирования шапки отчета! Для наполнения тела отчетного Excel-файла пользуйтесь матричными функциями: xlCreateMatrix, xlSTWriteToMatrix, xlDOWriteToMatrix, xlWriteMatrixToExcel, xlFreeMatrix. Их использование ускоряет работу в десятки раз!!!


Насчет макросов - ничего не могу сказать. Никогда не пользовался ими.

Re: нид хелп по группировкам

Добавлено: 21 апр 2004, 17:47
m0p3e
А по моим подсчетам в сотни раз! ;)

Re: нид хелп по группировкам

Добавлено: 22 апр 2004, 15:51
paa
Уважаемый Maverick, вышлите мне пожалуйста документацию о иерархических формах на pantyushin@byte-et.ru, буду очень признателен.

Re: нид хелп по группировкам

Добавлено: 23 апр 2004, 11:46
dZima
и мне плз на fr0st@mail.ru

Re: нид хелп по группировкам

Добавлено: 23 апр 2004, 11:49
dZima
и мне плз на frost@tut.by

Re: и мне, плз

Добавлено: 26 апр 2004, 07:48
Serges
>> Описалово как работать с этими объектами могу намылить

Пожалуйста, и мне. Очень интересно.
ccc@yandex.ru

Re: и мне, плз

Добавлено: 26 апр 2004, 12:55
Grom
Пожалуйста, и мне.