Страница 2 из 2
Очередь с переменным количеством полей
Добавлено: 12 Февраль 2015, 10:58
Admin
Просто к слову. Выводить 100 столбцов и много строк еще тот гемор.
Для EasyExcel формирую строку и потом пишу все сразу через .WriteRow
Код: Выделить всё
FREE(PoolQueue)
LOOP T# =1 TO RECORDS(XlsDataQueue)
GET(XlsDataQueue,T#)
CLEAR(PoolQueue)
LOOP Y# = 1 TO 200
CurrentField = WHAT(XlsDataQueue,Y#)
PoolQueue.Line = CLIP(PoolQueue.Line)&CHOOSE(Y#=1,'','@')&CLIP(CurrentField)
END
ADD(PoolQueue)
END
...
LOOP W# = 1 TO RECORDS(PoolQueue)
GET(PoolQueue,W#)
EasyCalc.WriteRow(W#,1,PoolQueue.Line,'@')
END
Очередь с переменным количеством полей
Добавлено: 12 Февраль 2015, 11:25
kreator
Примерно так я и хотел сделать. Удобнее делать вывод целой строки, она типа уже сформирована, и обойтись одним get'ом.
Очередь с переменным количеством полей
Добавлено: 12 Февраль 2015, 12:28
Yufil
Тут попытка реализовать парадигму "Model-View",
Строится класс модели и метод, возвращающий по запросу количество строк, количество столбцов или значение в указанной клетке.
После чего при заполнении идут обращения к методам этого класса вместо прямого чтения из очереди.
Ссылки на класс и метод заполнения запоминаются.
А поскольку это было сделано давным-давно, интерфейс несколько архаичен. Примеры вроде есть в шаблоне XMLView, там при просмотре распарсенного XML на ходу генерится список реквизитов для текущей ветки.
Очередь с переменным количеством полей
Добавлено: 12 Февраль 2015, 15:26
Shur
Если очень беспокоит скорость заполнения Excel, то самый быстрый способ, на мой взгляд -- это заполнить ячейки макросом самого Excel. А на другой закладке иметь сводную таблицу, построенную по полям, куда будет произведена первичная выгрузка скалярных данных. После чего закладка с первичными данными скрывается и видимой остаётся только закладка со сводной таблицей.
И ни очередей, и ни подготовки данных для выгрузки! Excel будет дольше открываться, чем построение сводной 100x100.
Или вы так Экселем не пользуетесь?
P.S. Ох, чёрт, я забыл, что не все живут на сиквеле! Ну ладно, реплику оставлю.
Очередь с переменным количеством полей
Добавлено: 12 Февраль 2015, 16:03
kreator
Скорость выгрузки не беспокоит, делаю через XML. Просто красивое и простое решение - идти по одной очереди и выгружать всю запись очереди целиком, ничего больше не контролируя.
Очередь с переменным количеством полей
Добавлено: 12 Февраль 2015, 16:28
Shur
Ни разу не возражаю против XML. Но опять-таки, если есть завалящий MS SQL, то не проще ли данные для XML подготовить тогда уже в нём? Красиво?
Очередь с переменным количеством полей
Добавлено: 12 Февраль 2015, 17:05
Дед Пахом
а нафига тогда вообще Clarion? Выгрузить можно прямо в Excel из MS SQL
Очередь с переменным количеством полей
Добавлено: 13 Февраль 2015, 9:52
kreator
А в MS SQL есть возможность сделать окно, чтобы пользователь смог определить какие данные ему нужны? А может пользователю просто скинуть ссылку на бесплатный учебник по SQL?
Очередь с переменным количеством полей
Добавлено: 13 Февраль 2015, 12:14
Дед Пахом
Не, интерфейс оставляем на Кларе, а данные гоняем мимо неё - какой смысл пересылать от SQL в Clarion, а из Clarion те же данные в Excel?
Очередь с переменным количеством полей
Добавлено: 13 Февраль 2015, 12:56
kreator
Дед Пахом писал(а):Не, интерфейс оставляем на Кларе, а данные гоняем мимо неё - какой смысл пересылать от SQL в Clarion, а из Clarion те же данные в Excel?
Что-то в этом есть. Если на MS SQL есть возможность написать хранимку, которая создаст красивый Экселевский файл с нужными данными, то конечно. Ещё бы хорошо получить то же самое для Word, для Acrobat.
Очередь с переменным количеством полей
Добавлено: 13 Февраль 2015, 17:19
Shur
Предлагаю не распыляться. А вот в связке SQL-Кларион-Excel роль Клариона действительно зачастую можно минимизировать до уровня навигации до отчёта, его открытия и запуска макроса.
Не царское это дело - данные-то готовить!

Очередь с переменным количеством полей
Добавлено: 13 Февраль 2015, 23:32
Yufil
Есть некоторая проблема. Excel выдаёт большую-пребольшую простыню, а Word и Акробат ориентированы на печать по листам, в связи с этим возникают некоторые проблемы, всё-таки парадигмы разные.
Вот в List & Label приходилось иной раз и попыхтеть, если один и тот же отчёт надо было в Word, Excel и Acrobat ...
Очередь с переменным количеством полей
Добавлено: 16 Февраль 2015, 9:53
finsoftrz
Привет.
Я в таких ситуациях делаю, не задумываясь, вариант на 3 очередях. Первая - список строк, вторая - список колонок, третья - список значений (т.е. номер строки, колонки, значение). Тут вопрос не только в том, чтобы вывести переменное количество колонок. Нужно их еще предварительно отсортировать, вывести заголовки и т.п., аналогично со строками. Когда очереди заполнены, то далее по ситуации. Если нужно сразу в Excel, то прямым выводом через dexcel. Субъективно, работает с такой же скоростью, как стандартный клашин репорт. Если нужно на экран, то резервирую колонки в броузе с запасом, для нужных вывожу заголовок, лишние скрываю. Только там есть ограничение на количество колонок. Вообще говоря, тут надо без фанатизма делать. Когда колонок слишком много, юзеру с этим работать бесполезно. Поэтому по заглавному сообщению в теме лучше по колонкам выводить даты, а сотрудников по строкам.
Очередь с переменным количеством полей
Добавлено: 16 Февраль 2015, 10:46
kreator
finsoftrz писал(а):Поэтому по заглавному сообщению в теме лучше по колонкам выводить даты, а сотрудников по строкам.
Один хрен. Заказчику кажется наоборот, количество сотрудников более менее постоянно, а кол-во дат плавает, поэтому так удобнее.