Очередь с переменным количеством полей

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Очередь с переменным количеством полей

Сообщение 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
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Очередь с переменным количеством полей

Сообщение kreator »

Примерно так я и хотел сделать. Удобнее делать вывод целой строки, она типа уже сформирована, и обойтись одним get'ом.
We are hard at work… for you. :)
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Очередь с переменным количеством полей

Сообщение Yufil »

Тут попытка реализовать парадигму "Model-View",
Строится класс модели и метод, возвращающий по запросу количество строк, количество столбцов или значение в указанной клетке.
После чего при заполнении идут обращения к методам этого класса вместо прямого чтения из очереди.

Ссылки на класс и метод заполнения запоминаются.

А поскольку это было сделано давным-давно, интерфейс несколько архаичен. Примеры вроде есть в шаблоне XMLView, там при просмотре распарсенного XML на ходу генерится список реквизитов для текущей ветки.
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Очередь с переменным количеством полей

Сообщение Shur »

Если очень беспокоит скорость заполнения Excel, то самый быстрый способ, на мой взгляд -- это заполнить ячейки макросом самого Excel. А на другой закладке иметь сводную таблицу, построенную по полям, куда будет произведена первичная выгрузка скалярных данных. После чего закладка с первичными данными скрывается и видимой остаётся только закладка со сводной таблицей.
И ни очередей, и ни подготовки данных для выгрузки! Excel будет дольше открываться, чем построение сводной 100x100.
Или вы так Экселем не пользуетесь?

P.S. Ох, чёрт, я забыл, что не все живут на сиквеле! Ну ладно, реплику оставлю.
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Очередь с переменным количеством полей

Сообщение kreator »

Скорость выгрузки не беспокоит, делаю через XML. Просто красивое и простое решение - идти по одной очереди и выгружать всю запись очереди целиком, ничего больше не контролируя.
We are hard at work… for you. :)
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Очередь с переменным количеством полей

Сообщение Shur »

Ни разу не возражаю против XML. Но опять-таки, если есть завалящий MS SQL, то не проще ли данные для XML подготовить тогда уже в нём? Красиво?
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Очередь с переменным количеством полей

Сообщение Дед Пахом »

а нафига тогда вообще Clarion? Выгрузить можно прямо в Excel из MS SQL
С уважением, ДП
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Очередь с переменным количеством полей

Сообщение kreator »

А в MS SQL есть возможность сделать окно, чтобы пользователь смог определить какие данные ему нужны? А может пользователю просто скинуть ссылку на бесплатный учебник по SQL?
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Очередь с переменным количеством полей

Сообщение Дед Пахом »

Не, интерфейс оставляем на Кларе, а данные гоняем мимо неё - какой смысл пересылать от SQL в Clarion, а из Clarion те же данные в Excel?
С уважением, ДП
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Очередь с переменным количеством полей

Сообщение kreator »

Дед Пахом писал(а):Не, интерфейс оставляем на Кларе, а данные гоняем мимо неё - какой смысл пересылать от SQL в Clarion, а из Clarion те же данные в Excel?
Что-то в этом есть. Если на MS SQL есть возможность написать хранимку, которая создаст красивый Экселевский файл с нужными данными, то конечно. Ещё бы хорошо получить то же самое для Word, для Acrobat.
We are hard at work… for you. :)
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Очередь с переменным количеством полей

Сообщение Shur »

Предлагаю не распыляться. А вот в связке SQL-Кларион-Excel роль Клариона действительно зачастую можно минимизировать до уровня навигации до отчёта, его открытия и запуска макроса.
Не царское это дело - данные-то готовить! :)
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Очередь с переменным количеством полей

Сообщение Yufil »

Есть некоторая проблема. Excel выдаёт большую-пребольшую простыню, а Word и Акробат ориентированы на печать по листам, в связи с этим возникают некоторые проблемы, всё-таки парадигмы разные.

Вот в List & Label приходилось иной раз и попыхтеть, если один и тот же отчёт надо было в Word, Excel и Acrobat ...
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5239
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 65 раз

Очередь с переменным количеством полей

Сообщение finsoftrz »

Привет.
Я в таких ситуациях делаю, не задумываясь, вариант на 3 очередях. Первая - список строк, вторая - список колонок, третья - список значений (т.е. номер строки, колонки, значение). Тут вопрос не только в том, чтобы вывести переменное количество колонок. Нужно их еще предварительно отсортировать, вывести заголовки и т.п., аналогично со строками. Когда очереди заполнены, то далее по ситуации. Если нужно сразу в Excel, то прямым выводом через dexcel. Субъективно, работает с такой же скоростью, как стандартный клашин репорт. Если нужно на экран, то резервирую колонки в броузе с запасом, для нужных вывожу заголовок, лишние скрываю. Только там есть ограничение на количество колонок. Вообще говоря, тут надо без фанатизма делать. Когда колонок слишком много, юзеру с этим работать бесполезно. Поэтому по заглавному сообщению в теме лучше по колонкам выводить даты, а сотрудников по строкам.
C6/C12, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Очередь с переменным количеством полей

Сообщение kreator »

finsoftrz писал(а):Поэтому по заглавному сообщению в теме лучше по колонкам выводить даты, а сотрудников по строкам.
Один хрен. Заказчику кажется наоборот, количество сотрудников более менее постоянно, а кол-во дат плавает, поэтому так удобнее.
We are hard at work… for you. :)
Ответить