Здравствуйте ClaList!
У меня море таблиц с количеством записей до 10 - 100 - 1000. На каждый из них натравливать Browse из ШVC мне кажется расточительным. Что надо использовать? Раньше кажется был ТPL List, а щас что ...
--
С уважением,
SAN mailto:vgsan@yandex.ru
Написал: ClaList(2)
Browse для маленьких файлов
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Чем?У меня море таблиц с количеством записей до 10 - 100 - 1000. На каждый из них натравливать Browse из ШVC мне кажется расточительным. Что надо ...
- Тавтологией кода - goto ABC
- Загрузкой сетки при листаниях - грузи весь файл сразу, опять же, ABC поможет. Только учти, что чем дольше будешь держить окно открытым, тем менее актуальным будет твой буфер.
В 6-ке In-Memory драйвер. Для константных справочников без права на редактирование очень хорош. Сэкономишь трафик не только на браузах, но и везде, где они используются как lookup-ы.... использовать? Раньше кажется был ТPL List, а щас что ...
http://www.softvelocity.com/products/pipeline_imdd.htm
Nick Tsigouro <nick@arsis.ru>
Ник, а нельзя ли по-подробнее, для тех кто в танке ,
где этот драйвер в 6-ке ? Я что-то не нашёл.
Или это отдельная фича?
С уважением
Алексей Демьяненко
(Добавление)
Объемом кода (представляешь сколько надо будет прокачать по сетке при обновлении проги! У меня еще ничего нет, а уже exe 3 метра. А для 3 записей ставить вровс у меня совесть не позволяет.Чем?
Странный ты Ник, ты же прекрасно знаешь что вопреки теории АБС дает больший объем кода, кроме того значительно более медленный код (см ваш пример к курсам переключение закладок хотя бы), менее устойчивый код (см комментарий к FREE ABC если сам не убедился), трудно модифицируемый программером код, а значит опасный для сопровождения. Короче если ты не хочешь чтоб меня тут убили про АБС молчим!- Тавтологией кода - goto ABC
Вот был в досе List. Я им понятное дело не пользовался, но идею использовал. Процедурка коротенькая и не менее функциональная чем бровз. Под виндой чем народ пользуется для 1-10 записей?- Загрузкой сетки при листаниях - грузи весь файл сразу, опять же, ABC поможет.
Ну, обижаешь ...Только учти, что чем дольше будешь держить окно открытым, тем менее актуальным будет твой буфер.
Так все таки что?... использовать? Раньше кажется был ТPL List, а щас что ...
Посмотреть бы для начала, а что квея хуже?В 6-ке In-Memory драйвер. Для константных справочников без права на редактирование очень хорош. Сэкономишь трафик не только на браузах, но и везде, где они используются как lookup-ы.
Спасибо, щас погляжу. Ба, да тут только описалово...
--
С уважением, SAN
А отладочная информация отключена? Отключи ее, .exe будет 200-300 кило. У меня весь проект с DLL 1.4МбОбъемом кода (представляешь сколько надо будет прокачать по сетке при обновлении проги! У меня еще ничего нет, а уже exe 3 метра. А для 3 записей ставить вровс у меня совесть не позволяет.
--
С Уважением,
Антон Балкин
А ты думал, что будет что-то типа "Уважаемый SAN, специально для Вас фри-версия In-Memory Driver" )Спасибо, щас погляжу. Ба, да тут только описалово...
Алексей,
начальник отдела ПТО
ООО "ОРК"
mail: alex@jrcn.donetsk.ua, icq: 62605472
www: http://www.nikasoft.co.uk
http://www.clarionline.h1.ru (FAQ-онлайн)
origin: Hе имей 100 pублей - бедность не поpок.
Я для подобных справочников использую небольшую процедурку, которая работает ТОЛЬКО на просмотр заданного файла.У меня море таблиц с количеством записей до 10 - 100 - 1000. На каждый из них натравливать Browse из ШVC мне кажется расточительным. Что надо использовать? Раньше кажется был ТPL List, а щас что ...
Хотя, в принципе, не трудно подключить и вызов формы для редактирования.
Выкладывать не буду - писал для себя и поэтому в нем много лишнего кода - а выделять "чистый" бровз, честно говоря, времени нет.
Общая идея:
BrowseAnyFile(FILE _File,<KEY _Key>,<STRING _Filter>, !
<STRING _Break>,<STRING _Fields>,...)
- файл "заливается" целиком в очередь.
Очередь лучше сделать из STRING-полей - удобное форматирование/использование/сортировка.
Кол-во полей выбирай сам - или по кол-ву самой большой таблицы или "с запасом" до десятка.
Обычно такие таблицы бывают всего с несколькими колонками.
- если файл не открыт - открываем и устанавливаем порядок чтения по _Key или, если он не задан, то по файлу.
Если файл уже открыт, то используем порядок чтения по _File{PROP:CurrentKey}.
В принципе, так как файлы небольшие, то для сортировки вместо ключа можно использовать и обычный SORT очереди, в которую будет "залит" файл.
Кстати, можно к List`у по этой очереди подключить классы для интерактивной сортировки по колонкам.
- при "заливке" файла одновременно можно производить и фильтрацию записей - если задан _Filter.
Фильтр записывается в стандартном синтаксисе и в цикле обрабатывается или стандартным Evaluate или моим классом ExtEval, который выложен на сайте DynaLib.
Для C5/C55 ExtEval поможет ускорить обработку в несколько раз. Для C60/C61 - до 25%
Хотя, учитывая небольшое общее кол-во записей, это не критично.
- можно использовать и Break-условие, если задан _Break.
Особенно удобно, если один файл содержит несколько подобных справочников. Тогда, перед чтением устанавливаешь ключ на первую запись нужного справочника а в Break-условие вбиваешь условие "вылета" из цикла чтения.
Опять-же, Break-условие обрабатывается или стандартным оператором Evaluate или ExtEval.
- для обхода полей записи файла используй What/Who/Where.
Если задан _Fields, то используешь его для выборки только заданных полей из записи (по метке/имени). Формат _Fields - "MY:Name!MY:Desc!MY:Index".
Для записи значений полей из буфера файла в буфер очереди используешь что-то типа этого кода:
Код: Выделить всё
QueField ANY
FileRec &GROUP
RecField ANY
FileRec &= _File{PROP:Record}
! Для C50 прийдется использовать более сложный код
! Более побробно - см. мои письма в этой рассылке
! по данной теме.
Clear(Queue)
Col# = 1
Loop
RecField &= What(FileRec,Col#)
if RecField &= Null then Break.
QueField &= What(Queue,Col#)
QueField = RecField
Col# += 1
.
Add(Queue)
Только поймите правильно - я не противник использования ANY в очередях! Часто сам их использую. Просто считаю, что если можно обойтись без них, и при этом без особых усилий (!), то не следует себе усложнять жизнь.
Если используется _Fields, то в вышеприведенный код вносятся некоторые коррективы, используя оператор Who.
Как форматировать List по информации о полях из буфера файла можно посмотреть в одном из тестовых примеров из состава либы DynaLib.
В данном случае можно поступить еще проще - отформатировать List заранее, в оконном редакторе на все поля очереди.
А при подготовке просто поменять названия колонок на названия полей файла, при необходимости "подогнать" тип выравнивания в колонке по типу поля, убрать лишние колонки из листа ?List{PROP:Width} = 0.
Частично можно воспользоваться кодом формирования колонок Excel-файла из либы dExcel.
Будут вопросы - пиши.
Удачи!
=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru
(Добавление)
Ну это я давно знаю, просто я чуть увеличил размер ехешника для примеру!А отладочна информаци отключена? Отключи ее, .exe будет 200-300 кило. У мен весь проект с DLL 1.4Мб
Так про CUSTOM я задавал вопрос хоть подскажите чуть, дальше я и сам пойму. Плиз и спасибо Вам сразу!
--
С уважением, SAN
Об чем, собственно, речь? Если под таблицами подразумеваются файлы на диске, то таблицы эти разные по своей структуре?
Если под таблицами подразумевается структуры в DCT, то при чем здесь количество записей.
Если количество структур все же ограничено, и если оно невелико, то очевидно бровзов надо делать столько, сколько структур, а параметром в бровз передавать имя файла и там его устанавливать.
Если же огромное количество разных описаний и их надо непременно все показывать, то возможно подумать над реализацией некоего универсального бровза, стандартного такого я вроде не встечал. Передавать ему параметром FILE, и далее механизмами WHO/WHAT/WHERE считывать имена полей (искать для них их дескрипшины (для заголовков колонок) в заранее подготовленной с помощью небольшого шаблончика queue ), форматировать FORMAT ListBox и считывать поля в заранее подготовленную очередь.
Код: Выделить всё
ShowQue QUEUE,PRE(SQ)
Col1 STRING(250)
Col2 STRING(250)
Col3 STRING(250)
Col4 STRING(250)
Col5 STRING(250)
Col6 STRING(250)
Col7 STRING(250)
Col8 STRING(250)
...
END
Удачи!
__________________________________
Владимир Якимченко (IСQ 16 993 194)
Речь идет о нескольких десятках таблиц разной структуры описанной в DCT. Поскольку количество записей минимально и чаще всего укладывается в List объем кода броуза мне кажется избыточным, а темп работы не соразмерным количеству записей. В досе я просто закачивал это в квею сортировал и тд. Был и шаблон List кажется так назывался. А под виндой я таких шаблонов не вижу, в тоже время много народа давно и успешно работает вроде. Отсюда и вопрос возник.
Кажется Олег Р. развил именно это направление.ShowQue QUEUE,PRE(SQ)
Спасибо!
--
С уважением, SAN
Написал: ClaList(2)
Так по другому, увы, и не получиться!Кажется Олег Р. развил именно это направление.
Если, конечно, не использовать DynaLib или подобные библиотеки.
Что-же касается шаблона List аля-CFD, то был подобный в первых версиях CW. По крайней мере у меня был:)) Хотя, возможно, я его просто перенес из CFD. Уже не помню - давно было. А потом как-то перестал им пользоваться.
Ну, а тут недавно понадобился подобный функционал и решил не писать новый шаблон, а написать именно процедурку, описанную в предыдущем письме - одна на все файлы! Ведь шаблон все-равно сгенерит для каждого файла свой отдельный бровз с практически идентичным кодом.
=============================
С уважением, Олег А. Руденко
Легко. http://www.softvelocity.com/products/imdb.pdfНик, а нельзя ли по-подробнее, для тех кто в танке ),
Это мне как-то не понятно. Продукт анонсирован, как-то "сбоку". Цены на негогде этот драйвер в 6-ке ? Я что-то не нашёл.
Или это отдельная фича?
нет. В составе с60 тоже нет.
WBR, Nick Tsigouro. MailTo:Nick@arsis.ru
(Добавление)
Не понял, у тебя по сетке раз в N дней прокачать 3 метра проблема? Пошли гонца с парой дискет.Объемом кода (представляешь сколько надо будет прокачать по сетке при ...
"Чукча писатель"... (с восхищением)... обновлении проги! У меня еще ничего нет, а уже exe 3 метра. А для 3
А зачем обновлять _все_? Если у тебя DLL-и, и они какой-нибудь защитой меж собой не повязаны, зачем все обновлять. Одну-две длл-ки и хорош. Опять же, если ABC в отдельную DLL-ку вынесешь, далеко не каждый раз обновлять удешь.
Ставь LIST+QUEUE. Тебе чего в 3-х записях бровзовым шаблоном делать?записей ставить вровс у меня совесть не позволяет.
Сортировать 6-ю способами и фильтровать 8-ю? Колонки перетаскивать и без сортировки кликом по заголовку не прожить? Или без QBE никуда?
Ну, если бровза одна, да еще совсем простенькая, то тады да.Странный ты Ник, ты же прекрасно знаешь что вопреки теории АБС дает больший объем кода,
Под "значительно" и "много" я понимаю - "в три и более раз". Цифры в студию.кроме того значительно более медленный код
Ну да. А легасевй код с самого начала работал как часы ;-0)(см ваш пример к курсам переключение закладок хотя бы), менее устойчивый код
Сори, ну просто бред какой-то. Разобраться - да сложнее, но модифицировать (писать в ембеды) - во сто крат легче. Просто потому, что он _существенно_лучше и глубже структурирован.комментарий к FREE ABC если сам не убедился), трудно модифицируемый программером код, а значит опасный для сопровождения. Короче если ты ...
Что значит лучше? Ты ее можешь в словаре описать c тем, чтобы в любом стандартном шаблоне юзать? По сути - это она и есть, только оформлена как файловый драйвер.Посмотреть бы для начала, а что квея хуже?
WBR, Nick Tsigouro
(Добавление)
Здравствуйте, Nick!
Я так понял, что выйдет после финального релиза 6.1 как отдельная позиция в прайсе.Это мне как-то не понятно. Продукт анонсирован, как-то "сбоку". Цены на него нет. В составе с60 тоже нет.
С уважением,
Вячеслав Черников support@finsoft.ryazan.ru
Hi,
В догонку.
"The In-Memory driver is done and will ship as sson as c6.1 is finalized.
There are some ideas we have as to additional class support that may be desired by the community, but they won't delay the release.
The IP driver/server is probably about 3 weeks away. "
WBR, Nick Tsigouro
(Добавление)
Нет Ник, не уговоришь. Пока в кларионе не сделаю более - менее приличную задачку в АБС больше не полезу."Чукча писатель"... (с восхищением)
Остальное не принципиально. А по поводу объма я проверял. Как-то писал даже про 20 бровзов по одной таблице. Разница в темпе заметна на глаз.
Мерять ее мне без надобности. Медленнее и все. Ресурсов требует больше тож. Ну и если в инструменте я ничего для самовыражения не могу принципиального поменять нафиг мне такой инструмент!
Ник, а ты про этот CUSTOM знаешь? Никто с утра двух слов не написал, а мне вечером хотелось бы посмотреть спокойно.
Давно жду когда появится в поле зрения. Я ж твои обзоры читаю.... стандартном шаблоне юзать? По сути - это она и есть, только оформлена как файловый драйвер.
--
С уважением, SAN
Написал: ClaList(2)