Страница 1 из 12
MAV Direct ODBC
Добавлено: 05 Июль 2005, 16:37
Andrew™
Жду вопросов, господа разработчики!
Раскрытый дистрибутив для всех версий Clarion начиная с C5 выложен на этом сайте для ознакомления
Re: MAV Direct ODBC
Добавлено: 05 Июль 2005, 16:40
Admin
Andrew Myalin писал(а):Жду вопросов, господа разработчики!
Ну ты скоростной, я еще в процессе установки а мы уже пишем

Re: MAV Direct ODBC
Добавлено: 05 Июль 2005, 16:45
Гость
Admin писал(а):Andrew Myalin писал(а):Жду вопросов, господа разработчики!
Ну ты скоростной, я еще в процессе установки а мы уже пишем

стараемси!
MAV & Clarion 6.2
Добавлено: 06 Июль 2005, 13:14
Admin
Версия которую ты закачал на сайт под 6.2 последний заточена?
Re: MAV & Clarion 6.2
Добавлено: 06 Июль 2005, 15:02
Andrew™
Admin писал(а):Версия которую ты закачал на сайт под 6.2 последний заточена?
С5 С55 С6.1 C6.2
для ABC, Legasy, ШВС классов шаблонов, 32 bit, все режимы сборки
для ШВС есть маленькое условие при использовании
в глобальных настройках приложения имеют место быть выпадающие DROP LISTы в которых присутствуют как рускоязычные так и англоязычные установки, выбирать надо англоязычные
в остальном ограничений нет
MAV Direct ODBC fix
Добавлено: 06 Июль 2005, 17:47
Andrew™
В BrowseBox при загрузке Browse отключается перерисовка LIST контрола, но если возникает ошибочная ситуация загрузки, и появляется сообщение об ошибке (чего в основном не бывает при нормально работающем приложении), то происходит залипание этого MESSAGE, сам понять не смог почему, но как выяснилось надо было выключать блокировку перерисовки перед ошибочными сообщениями, пофиксено.
Огромное спасибо за обнаруженный баг Марине!
Скачайте последнюю версию с
http://www.clarionlife.net
MAV Direct ODBC от 05 июля 2005 года
Добавлено: 07 Июль 2005, 16:21
Andrew™
Добавления: в трассировке библиотеки (MAVTRACE.EXE) появилась дополнительная опция как и в штатном клашином драйверном трассировщике "Show record buffer contents" - отображать содержаие записей при их чтении, можно включать и отключать, раньше всегда отображалась информация в трассе и при больших выборках было не очень удобно читать последовательность SQL операций. И для компактности, если время выполнения SQL операции меньше секунды, то информация о времени выполнения не попадёт в трассу.
В ЦЕЛЯХ КОПМПАКТОНСТИ АРХИВА И ПОСЛЕДУЮЩИХ ВЫКЛАДЫВАЕТСЯ ДЛЯ ОЗНАКОМЛЕНИЯ ТОЛЬКО DLL СБОРКА БИБЛИОТЕКИ.
Файлы
Добавлено: 07 Июль 2005, 17:29
Andrew™
MAV Direct ODBC:
http://www.clarionlife.net/cgi-bin//bl_ ... t_odbc.rar
MAV Direct ODBC Example:
http://www.clarionlife.net/cgi-bin//bl_ ... xample.rar
по мере дальнейшего развития продукта будут обновляться и эти файлы, следите за новостями и за форумом
DirectODBC
Добавлено: 07 Июль 2005, 23:47
Света
Все очень здорово, а я извиняюсь конечно, но если можно - скажите А ЗАЧЕМ ЭТОТ НАБОР НУЖЕН (ЧТО ОН ДЕЛАЕТ) ? Заранее спасибо ...
Добавлено: 08 Июль 2005, 0:10
Admin
Набор из библиотеки и шаблона позволяющий вам красиво работать с базами данных на SQL серверах...
Если этого мало, автор добавит

или вот сюда сходите
http://mavcla.arsis.ru/about.htm
Re: DirectODBC
Добавлено: 08 Июль 2005, 8:59
Andrew™
Света писал(а):Все очень здорово, а я извиняюсь конечно, но если можно - скажите А ЗАЧЕМ ЭТОТ НАБОР НУЖЕН (ЧТО ОН ДЕЛАЕТ) ? Заранее спасибо ...
Предистория данного продукта такова:
Был создан большой проект обновременно работающий на двух серверах MSSQL и ORACLE, всё было реализовано штаттно на FILE,DRIVER структурах, шаблоны были немного подрихтованы в сторону SQL. Прошло время, объём базы стал большой и тут полезли проблемы с скоростями доступа к данным, клиенты стали засыпать у экранов мониторов при открытии, скролировании и обновлений Browse.
Начал копать, оказалось, что не я один наступил на эту пробелму, оказалось, что например, применительно к MSSQL серверу, тормоза при чтении происходят потому, что на каждый NEXT происходит вызов ХП на сервере sp_cursorfetch, что и приводило к тормозам. Всё дело в параметрах соединения к серверу, а в эти параметры невозможно влезть извне. Начал искать выход, попробовал ODBC API, БЛОЧНЫЕ ЧТЕНИЯ и т д, понравилось, скорости просто офигительные. Но возник вопрос - а как это всё красиво заюзать в клаше. Решение было найдено, работает штатно DCT + APP, но в результате генерятся не FILE,DRIVER структуры а GROUP, со стороны разработки окон и т д обращение к структурам FILE:RECORD такое же, что и к PRE:GROUP, так что ограничений при разработке форм нет. Соединение устанавливаю сам, Open File как таковой просто отсутсвует, при первом обращении к структуре на сервере происхоит проверка соответствия типов данных один раз - SqlDescribe, и всё (такая ошибка как File Already Open вообще смешная применительно к SQL). Результат - всем рулю сам, никаких ограничений, в частности таких что в качестве приёмного буфера должна выступать FILE:RECORD, могу читать что угодно куда угодно, например в BrowseBox читаю прямо в Queue Browse, как уже говорил скорости доступа просто офигительные, такие же как в Query Analyzer'е. Шаблонов, позволяющих быстро и удобно спроектировать приложение обширное, короче просто теперь не возникает вопросов типа как работать с NULL полями, как вызвать ХП с IN OUT параметрами, как прочитать произвольный SELECT и т д.
кратко о шаблоне BrowseBox
Добавлено: 08 Июль 2005, 9:33
Andrew™
Может выступать как LIST, DROPLIST, DROPCOMBO, TREE
Сортировка по любой колонке, индикация сортировки иконкой в заголовке клолонки, чего штатно в клаше нет, иконки настраиваются через шаблон, заголовки колонок реально нажимаются, поиск по колонке текущей сортировки, не надо плодить кучу условий в шаблоне (хотя такая возможность есть) и кучу табов на экране для каждой сортировки Browse. Локатор вводной инкрементальный, может выступать как фильтрующий для Browse, т е можно урезать выборку загрузки по содержимому в локатое, при этом можно установить два режима фильтрации (через MouseRight в локаторе POPUP меню, которе настраивается через BrowseBox шаблон), ищем с использование других фильтров (есть несколько дочерних фильтрующих контрол шаблонов для BrowseBox) или ищем только по локатору, для чего это надо, ну например, работает с документами типа счёт, фильтр стоит на период - текущая дата, вводим документы, приходит клиент и говорит что с его счётом есть проблемы, счёт старый не входит в данный период, пользователь набирает номер счёта, жмёт рефреш кнопку и находит данный счёт не зависимо от установленного периода, решили проблему со счётом очистили локатор, нажали рефреш кнопку и продолжили работу со своими документами. В Browse нет постраничной загрузки, я в ClaList'е писал почему, грузим либо всё, либо не более определённого количества записей, данная настройка присутсвует в шаблоне и ей можно динамически менять. В Help контроле отображается сколько записей было прочитано, и в скобках сколько записей в БД реально по условию, если прочитали не всё, библа сама понимает, когда прочитано не всё кол-во записей, если требуемый документ не был обнаружен - включаем доп фильтры или используем тот же фильтрующий локатор для урезания выборки для поиска документа. Для каждой колонки можно установить в свойствах шаблона режим поиска в БД, типа =, LIKE... В качестве загрузки данных может строить соответствующие SELECT запросы к БД, так и грузить результат выполнения хранимой процедуры... Browse может работать как штатно, так и как буферизованная, т е в формах редактирования как дочерняя по отношению к редактируемой(ым) записи(ям) в форме, редактироваие которой будет вестись на клиенте и сохраннение в транзационных рамках редактируемой(ых) записи(ях) в форме. О самом шаблоне SaveButton чуть позже...
BrowseBox в виде дерева
Добавлено: 08 Июль 2005, 9:47
Andrew™
Дерево строится по одному файлу, если надо построить дерево по нескольким файлам, на сервере строится соответсвующая SQL View (если обычный SELECT по нескольким таблицам не спасает) и по ней строится дерево, загрузка идёт одним SELECT запросом, WHERE в шаблоне устанавливается на всю выборку, как и штатно есть фильтрация записей на клиенте, запись прочитали но в список не добавили, рекурсивно дерево раскручвается уже на клиете после загрузки всех записей, т е дерево строится очень быстро, т к если бы была рекурсивная загрузка из БД мы бы тормозили за счёт многих SELECT запросов к БД. Browse многоколоночный, сортировки уровней, внутри уровней, поиск по деревянной колонке, может выступать в качестве SELECT процедуры - выбор записи. Cортировки и поиски возможны только по деревянной колонке, т к если бы были сортировки по не деревянной колонке дерево бы просто развалилось, но если по дереву тяжело найти требуемую запись можно в динамике переключиться в режим НЕ ДЕРЕВО, тогда станут доступны сортировки и поиски по всем колонкам, нашли требуемую запись, включили режим ДЕРЕВО и автоматом спозиционировались в дереве на требуемую запись.
При наличии одинаковых атрибутов DRAG и DROP у контрола ветки автоматом перебрасываются мышкой. После изменения, удаления, добавления записи Browse целиком не перечитывается, происходит перестроение дерева только на клиенте, это касается и обычного Browse.
SQL Автонумерация
Добавлено: 08 Июль 2005, 10:59
Andrew™
В библиотеки реализованы механизмы автонумерации, настраивается в глобальном EXTENSION шаблоне.
1. Через таблицу в которой есть как миниму два поля, первое(Primary Key Field) - индентификатор таблицы из словаря требующая поддержки автонумерации, второе поле - следующее значение для поля первичого ключа. Идентифиактор таблицы настраивается черех File User Option таблицы в Dictionary NEXTREF = КонстантаДляИдентификатораТаблицыДляИспользованияВпрограммах,ИдентификаторТаблицыВсинтакисиеКларион. Идентификатор таблицы может быть как числовой так и 'строковый'.
2. Через ХП
3. None - вы сами реализуете механизмы автонумерации и в формах редактирования перед добавлением записи в транзакционных рамках инициализируете поля первичного ключа.
Если поле первичного ключа инициализируется на сервере, то в словаре в свойствах данного поля ставите атрибут READONLY, а в Initial Value выставляете SQL запрос необходимый для получения значения поля с сервера, если это необходимо, для BrowseBox - Form это необходимо, т к по завершении ввода в форме редактирования необходимо будет спозиционироваться в Browse, значения полей первичного ключа записи должны быть известны на тот момент.
Форма редактирования или SaveButton control template
Добавлено: 08 Июль 2005, 12:06
Andrew™
Шаблон имеет три режима редактирования:
1. Table - редактируем штатно одну запись
2. View - редактируем записи учавствующие в формироваии SQL View, в словре такие таблицы должны иметь связь к SQL View как MANY TO ONE, при этом в шаблоне предлагается выбрать какие записи из данного списка подкачивать в форме, и задаётся последовательный список сохранения записей таких таблиц, это очень важно т к на сервере по хорошему должна быть организована поддержка целостности CONSTRAINT'ы, и детку раньше папы добавить нельзя.
3. Queue - редактирование буферизованных Browse, т е идёт редактирование по сути Browse Box Queue записи а не RECORD таблицы, а сохранение будет происходить в транзакционых рамках формы.
При включённой поддержки SQL автонумерации иницализация полей первичных ключей будет происходить автоматически для п.1 и п.2.
Для п.3 т к реально записи Browse будут сохраняться в момент сохранения родительской записи, инициализация полей первичных ключей будет происходить там автоматом.
п.2 и п.3 всегда не хватает как воздух в стандарте, часто работаем Browse по SQL View, форма редактирования по записям таблиц которые учавствуют в формировании данной SQL View, редактирование деток в Queue тоже не хватает И всё это штатно приходится либо реализовывать руками, либо отказываться от таких ситуаций и накладывать на разработку определённые ограничения.