MAV Direct ODBC

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

MAV Direct ODBC

Сообщение Andrew™ »

Жду вопросов, господа разработчики!
Раскрытый дистрибутив для всех версий Clarion начиная с C5 выложен на этом сайте для ознакомления
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Re: MAV Direct ODBC

Сообщение Admin »

Andrew Myalin писал(а):Жду вопросов, господа разработчики!
Ну ты скоростной, я еще в процессе установки а мы уже пишем :)
Гость

Re: MAV Direct ODBC

Сообщение Гость »

Admin писал(а):
Andrew Myalin писал(а):Жду вопросов, господа разработчики!
Ну ты скоростной, я еще в процессе установки а мы уже пишем :)
стараемси!
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

MAV & Clarion 6.2

Сообщение Admin »

Версия которую ты закачал на сайт под 6.2 последний заточена?
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: MAV & Clarion 6.2

Сообщение Andrew™ »

Admin писал(а):Версия которую ты закачал на сайт под 6.2 последний заточена?
С5 С55 С6.1 C6.2

для ABC, Legasy, ШВС классов шаблонов, 32 bit, все режимы сборки

для ШВС есть маленькое условие при использовании
в глобальных настройках приложения имеют место быть выпадающие DROP LISTы в которых присутствуют как рускоязычные так и англоязычные установки, выбирать надо англоязычные

в остальном ограничений нет
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

MAV Direct ODBC fix

Сообщение Andrew™ »

В BrowseBox при загрузке Browse отключается перерисовка LIST контрола, но если возникает ошибочная ситуация загрузки, и появляется сообщение об ошибке (чего в основном не бывает при нормально работающем приложении), то происходит залипание этого MESSAGE, сам понять не смог почему, но как выяснилось надо было выключать блокировку перерисовки перед ошибочными сообщениями, пофиксено.
Огромное спасибо за обнаруженный баг Марине!

Скачайте последнюю версию с http://www.clarionlife.net
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

MAV Direct ODBC от 05 июля 2005 года

Сообщение Andrew™ »

Добавления: в трассировке библиотеки (MAVTRACE.EXE) появилась дополнительная опция как и в штатном клашином драйверном трассировщике "Show record buffer contents" - отображать содержаие записей при их чтении, можно включать и отключать, раньше всегда отображалась информация в трассе и при больших выборках было не очень удобно читать последовательность SQL операций. И для компактности, если время выполнения SQL операции меньше секунды, то информация о времени выполнения не попадёт в трассу.
В ЦЕЛЯХ КОПМПАКТОНСТИ АРХИВА И ПОСЛЕДУЮЩИХ ВЫКЛАДЫВАЕТСЯ ДЛЯ ОЗНАКОМЛЕНИЯ ТОЛЬКО DLL СБОРКА БИБЛИОТЕКИ.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Файлы

Сообщение 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

Сообщение Света »

Все очень здорово, а я извиняюсь конечно, но если можно - скажите А ЗАЧЕМ ЭТОТ НАБОР НУЖЕН (ЧТО ОН ДЕЛАЕТ) ? Заранее спасибо ...
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Набор из библиотеки и шаблона позволяющий вам красиво работать с базами данных на SQL серверах...

Если этого мало, автор добавит :) или вот сюда сходите http://mavcla.arsis.ru/about.htm
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: DirectODBC

Сообщение 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 и т д.
Последний раз редактировалось Andrew™ 08 Июль 2005, 10:15, всего редактировалось 1 раз.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

кратко о шаблоне BrowseBox

Сообщение Andrew™ »

Может выступать как LIST, DROPLIST, DROPCOMBO, TREE
Сортировка по любой колонке, индикация сортировки иконкой в заголовке клолонки, чего штатно в клаше нет, иконки настраиваются через шаблон, заголовки колонок реально нажимаются, поиск по колонке текущей сортировки, не надо плодить кучу условий в шаблоне (хотя такая возможность есть) и кучу табов на экране для каждой сортировки Browse. Локатор вводной инкрементальный, может выступать как фильтрующий для Browse, т е можно урезать выборку загрузки по содержимому в локатое, при этом можно установить два режима фильтрации (через MouseRight в локаторе POPUP меню, которе настраивается через BrowseBox шаблон), ищем с использование других фильтров (есть несколько дочерних фильтрующих контрол шаблонов для BrowseBox) или ищем только по локатору, для чего это надо, ну например, работает с документами типа счёт, фильтр стоит на период - текущая дата, вводим документы, приходит клиент и говорит что с его счётом есть проблемы, счёт старый не входит в данный период, пользователь набирает номер счёта, жмёт рефреш кнопку и находит данный счёт не зависимо от установленного периода, решили проблему со счётом очистили локатор, нажали рефреш кнопку и продолжили работу со своими документами. В Browse нет постраничной загрузки, я в ClaList'е писал почему, грузим либо всё, либо не более определённого количества записей, данная настройка присутсвует в шаблоне и ей можно динамически менять. В Help контроле отображается сколько записей было прочитано, и в скобках сколько записей в БД реально по условию, если прочитали не всё, библа сама понимает, когда прочитано не всё кол-во записей, если требуемый документ не был обнаружен - включаем доп фильтры или используем тот же фильтрующий локатор для урезания выборки для поиска документа. Для каждой колонки можно установить в свойствах шаблона режим поиска в БД, типа =, LIKE... В качестве загрузки данных может строить соответствующие SELECT запросы к БД, так и грузить результат выполнения хранимой процедуры... Browse может работать как штатно, так и как буферизованная, т е в формах редактирования как дочерняя по отношению к редактируемой(ым) записи(ям) в форме, редактироваие которой будет вестись на клиенте и сохраннение в транзационных рамках редактируемой(ых) записи(ях) в форме. О самом шаблоне SaveButton чуть позже...
Последний раз редактировалось Andrew™ 08 Июль 2005, 11:03, всего редактировалось 3 раза.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

BrowseBox в виде дерева

Сообщение Andrew™ »

Дерево строится по одному файлу, если надо построить дерево по нескольким файлам, на сервере строится соответсвующая SQL View (если обычный SELECT по нескольким таблицам не спасает) и по ней строится дерево, загрузка идёт одним SELECT запросом, WHERE в шаблоне устанавливается на всю выборку, как и штатно есть фильтрация записей на клиенте, запись прочитали но в список не добавили, рекурсивно дерево раскручвается уже на клиете после загрузки всех записей, т е дерево строится очень быстро, т к если бы была рекурсивная загрузка из БД мы бы тормозили за счёт многих SELECT запросов к БД. Browse многоколоночный, сортировки уровней, внутри уровней, поиск по деревянной колонке, может выступать в качестве SELECT процедуры - выбор записи. Cортировки и поиски возможны только по деревянной колонке, т к если бы были сортировки по не деревянной колонке дерево бы просто развалилось, но если по дереву тяжело найти требуемую запись можно в динамике переключиться в режим НЕ ДЕРЕВО, тогда станут доступны сортировки и поиски по всем колонкам, нашли требуемую запись, включили режим ДЕРЕВО и автоматом спозиционировались в дереве на требуемую запись.
При наличии одинаковых атрибутов DRAG и DROP у контрола ветки автоматом перебрасываются мышкой. После изменения, удаления, добавления записи Browse целиком не перечитывается, происходит перестроение дерева только на клиенте, это касается и обычного Browse.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

SQL Автонумерация

Сообщение Andrew™ »

В библиотеки реализованы механизмы автонумерации, настраивается в глобальном EXTENSION шаблоне.
1. Через таблицу в которой есть как миниму два поля, первое(Primary Key Field) - индентификатор таблицы из словаря требующая поддержки автонумерации, второе поле - следующее значение для поля первичого ключа. Идентифиактор таблицы настраивается черех File User Option таблицы в Dictionary NEXTREF = КонстантаДляИдентификатораТаблицыДляИспользованияВпрограммах,ИдентификаторТаблицыВсинтакисиеКларион. Идентификатор таблицы может быть как числовой так и 'строковый'.
2. Через ХП
3. None - вы сами реализуете механизмы автонумерации и в формах редактирования перед добавлением записи в транзакционных рамках инициализируете поля первичного ключа.

Если поле первичного ключа инициализируется на сервере, то в словаре в свойствах данного поля ставите атрибут READONLY, а в Initial Value выставляете SQL запрос необходимый для получения значения поля с сервера, если это необходимо, для BrowseBox - Form это необходимо, т к по завершении ввода в форме редактирования необходимо будет спозиционироваться в Browse, значения полей первичного ключа записи должны быть известны на тот момент.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Форма редактирования или SaveButton control template

Сообщение 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 тоже не хватает И всё это штатно приходится либо реализовывать руками, либо отказываться от таких ситуаций и накладывать на разработку определённые ограничения.
Ответить