MAV: вопросы

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

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

MAV: вопросы

Сообщение StillZero »

Все относится к MS SQL серверу и шаблону SQLBrowse
--------------------------------------------------------------------------
1. На сервере стоит сортировка: Cyrillic_General_CI_AS.
При просмотре таблицы в MAVSQLBrowse сортировка регистро-зависимая, как избавиться?
Пример:

Код: Выделить всё

сейчас               надо
------               -------
TEST                 best
best                 TEST
test                 test
2. Фокус на лист-боксе, набираем первые буквы (поиск), фокус перемещается на строку локатора, зачем? Хочу чтобы фокус оставался на листе.
3. По дефолту все колонки можно сортировать, можно ли как нибудь запретить сортировку, запретить отрисовку иконок сортировки, запретить локатор по этой колонке, т.е. по сути запретить "выбор" колонки?
4. Всего 5 записей в таблице, установил в настройках листа - показывать 2 записи, в хэлп контроле показывает [2], а ожидал увидеть [2:5]
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

по первому вопросу...
насколько я понял в Кларе нет стд возможности отсортировать очередь регистро-независимо

в 6-ой кларе появилась возможность использовать при сортировке очереди свою функцию, т.е. типа

Код: Выделить всё

 sort(MyQueue,MyFunc)
в этой процедуре можно самому задать правила сортировки

пример в аттаче

вообщем ... хочется вот так вот...
Аватара пользователя
Admin
Администратор
Сообщения: 3960
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Кстати попробовал сделать QBE -> не работает.
т.е. сделал процедуру для QBE как нужно, выбрал ее в глобальном шаблоне и проставил в browse VCR.
При нажатии на "?" никакого результата нет.

На поле для поиска/фильтра есть менюшка с пунктом "Other filter" что это такое и как работает?

P.S. Clarion 9048 уже стоит, т.е. желательно обновление ... :)
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

Admin писал(а):Кстати попробовал сделать QBE -> не работает.
т.е. сделал процедуру для QBE как нужно, выбрал ее в глобальном шаблоне и проставил в browse VCR.
При нажатии на "?" никакого результата нет.
в настройках глобального шаблона на закладке QBE надо закрепить процедуру которая будет вызываться по "?" в Browse, её разработка - это Window с MAVQBE контрол шаблоном, сделано так для того чтобы разработчик смог под свои нужды оформить это окно, раньше я это окошко держал в библе, и были проблемы с локализациями под разные языки и т д.
Admin писал(а): На поле для поиска/фильтра есть менюшка с пунктом "Other filter" что это такое и как работает?
есть куча доп фильтрующих шаблонов для Browse Box,
локатор может работать в двух режимах поиска:
1. с учётом доп фильтров
2. без учёта доп фильтров

это очень удобно, например, сидит юзверь и обрабатывает документы за определённый период, т е фильтрация шаблонная по диапазону дат, приходит другой юзверь к нему с документом не за рабочий период и говорит первому, что то с эти документом не то, надо посмотреть, первый вбивает в локатор номер документа (other filer = off) и находит требуемый документ, далее очистил локатор + Refresh и первый юзверь опять работает со своим списком документов.


Admin писал(а): P.S. Clarion 9048 уже стоит, т.е. желательно обновление ... :)
сегодня дам ссылку
Аватара пользователя
Admin
Администратор
Сообщения: 3960
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

про QBE я же написал что все сделал как в твоих примерах...
не работает, даже в твоих же демонстрационных апликашках типа abcmavt.app

еще вопрос. была по полю дефолтовая возможность поиска по первой букве. т.е. по мере набора в локаторе курсор перемещался по записям. что то сделал и не могу в одном бровзе эту фичу вернуть. что не так?
не в курсе?

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

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

Admin писал(а):про QBE я же написал что все сделал как в твоих примерах...
не работает, даже в твоих же демонстрационных апликашках типа abcmavt.app
это я погляжу
Admin писал(а): еще вопрос. была по полю дефолтовая возможность поиска по первой букве. т.е. по мере набора в локаторе курсор перемещался по записям. что то сделал и не могу в одном бровзе эту фичу вернуть. что не так?
не в курсе?
в свойствах шаблона BrowseBox отвязался локатор
Admin писал(а): Ну и про сортировку очереди ответь что нибудь а то регистрозависимая сортировка очереди ну оченно неприятная вещь.
У BrowseBox есть метод и соответсвующий EMBED Sortered
на входе *Сolumn +-номер колонки по которой будет происходить сортировка, если до вызова PARENT'а сделаешь свою сортировку и RETURN 1, то библа сортировать сама не будет
Аватара пользователя
Admin
Администратор
Сообщения: 3960
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

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

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

Admin писал(а):т.е. как мы и предполагали - если хочешь сортировать по другому - сортируй сам!? :)
ты же хочешь нештатную сортировку, под штатной я понимаю следующее:

SORT(Q,Q.Field)

ты хочешь SORT(Q,UPPER(Q.Field))

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

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

Admin писал(а):Кстати попробовал сделать QBE -> не работает.
т.е. сделал процедуру для QBE как нужно, выбрал ее в глобальном шаблоне и проставил в browse VCR.
При нажатии на "?" никакого результата нет.
стал проверять, и что же я увидел, не генерится EVENT:Locate на VCR "?" кнопку в LIST контроле, это что, у меня конец рабочего дня, или велосипедисты напортачили?

пример прилагается
Аватара пользователя
Admin
Администратор
Сообщения: 3960
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Про EVENT:Locate -> хреново если так...

Про сортировку:

Для человека смотрящего текстовый список чего то, по моему гораздо удобнее видеть строки набранные большими буквами в том же порядке как и остальные. а не впереди всего списка...

Вот так как сейчас реализовано как раз по моему и есть вариант для специфических случаев.

В общем я текущий вариант сортировки абсолютно не одобряю.

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

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

Admin писал(а):т.е. как мы и предполагали - если хочешь сортировать по другому - сортируй сам!? :)
QBE теперь работает

т к я не использую IMM в BrowseBox, то и все события связанные с VCR кнопками в ACCEPT не попадают, НО попадают в переопределённый обработчик событий LIST контрола, так вот номер этого события в C6.2 стал другой по сравнению с младшими версиями C6, в C5 и C5.5 он одинаков.

и сортировки по колонкам теперь не чувствительны к регистру

линк на обновление для C6.2 9048 ушёл мылом
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Сообщение StillZero »

сортировки по колонкам теперь не чувствительны к регистру
как этого добился? ...

я сам сегодня решил добить этот вопрос и пришел к выводу, что сортировка при помощи sort(MyQueue,MyFunc) работает некорректно, если использовать ее для разных полей очереди...пришел к выводу, что можно только так:
sort(MyQueue,MyFunc11) - для первого поля прямой сортировки
sort(MyQueue,MyFunc12) - для первого поля для обратной сортировки

sort(MyQueue,MyFunc21) - для второго поля прямой сортировки
sort(MyQueue,MyFunc22) - для второго поля для обратной сортировки

т.е. для каждой сортировки своя функция.

А при использовании одной функции для всех полей получаются грабли...такое чувсто, что не сбрасывается "счетчик оптимизации".

и плиз на эти вопросы чего-нибудь:

2. Фокус на лист-боксе, набираем первые буквы (поиск), фокус перемещается на строку локатора, зачем? Хочу чтобы фокус оставался на листе.
4. Всего 5 записей в таблице, установил в настройках листа - показывать 2 записи, в хэлп контроле показывает [2], а ожидал увидеть [2:5]
Аватара пользователя
Admin
Администратор
Сообщения: 3960
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Локатор тоже сейчас стал регистронезависимым?
Если нет то хотелось бы...

Вот еще вопрос. Есть процедура импорта Clarion -> MS SQL
Можно ли увеличить скорость закачки данных на сервер?
Посмотри может что не так...

Код: Выделить всё

Process                PROCEDURE
class_Insert           MAVBufferInsert
RowInTransaction       LONG(1000)
  CODE
  Access:LTOVS.Open
  Access:LTOVS.UseFile

  MAVLOGOUT
  IF class_Exec.Run('DELETE FROM ' & MAVTABLENAME(AllGoods))
    MAVSHOWERROR
    Access:LTOVS.Close
    RETURN
  END
  MAVCOMMIT

  MAVLOGOUT
  IF class_Exec.Run('SET IDENTITY_INSERT ' & MAVTABLENAME(AllGoods) & ' ON')
    MAVSHOWERROR
    Access:LTOVS.Close
    RETURN
  END
  MAVCOMMIT

  Err# = class_Insert.Init(AllGoods,CHOOSE(RowInTransaction<2,2,RowInTransaction))
  MAVLOGOUT
  SET(LTOVS,1)
  LOOP
    IF Access:LTOVS.Next() <> LEVEL:Benign THEN BREAK END
    CLEAR(AllGoods)
    ALG:GoodsID            = SUB(LTO:PRIM,1,6)
    ALG:GoodsName          = CLIP(LEFT(LTO:NAMETOV))
    ALG:GroupCode          = LTO:KODTG
    ALG:PriceUSD           = ROUND(LTO:PRBAX,.01)
    ALG:PriceRUR           = ROUND(LTO:PRRUBL,.01)
    ALG:PurchPriceUSD      = ROUND(LTO:ZAKUP,.01)
    ALG:Warranty           = LTO:GARANT
    ALG:TransportPriceUSD  = ROUND(LTO:TRANS,.01)
    AlG:PurchPriceMinUSD   = ROUND(LTO:ZAKMIN,.01)
    ALG:ChangeDate_DATE    = DEFORMAT(SUB(LTO:PRIM,8,10),@D6)
    ALG:ChangeDate_TIME    = 0
    IF class_Insert.Insert()
      MAVSHOWERROR
      Access:LTOVS.Close
      RETURN
    END
  END

  class_Insert.Kill
  MAVCOMMIT
  Access:LTOVS.Close
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

StillZero писал(а):сортировки по колонкам теперь не чувствительны к регистру
как этого добился? ...
пока с помощью промежуточной очереди, но хотелось бы от неё в дальнейшем отказаться

Код: Выделить всё

mySort                          PROCEDURE(Queue Q,LONG FieldNo,LONG RowFieldNo,LONG fDESC=0)
tmpQ            QUEUE,PRE(tmpQ)
Field           STRING(512)
Row             LONG
 END
I               LONG
pField          ANY
pRow            ANY
RowName         MAVString
        CODE

 pField &= WHAT(Q,FieldNo)
 pRow   &= WHAT(Q,RowFieldNo)

 RowName.Reset(WHO(Q,RowFieldNo))

 LOOP I = 1 TO RECORDS(Q)
  GET(Q,I)
  tmpQ:Field = UPPER(CLIP(pField))
  tmpQ:Row   = pRow
  ADD(tmpQ)
 END

 IF fDESC
  SORT(tmpQ,-tmpQ.Field)
 ELSE
  SORT(tmpQ,+tmpQ.Field)
 END

 LOOP I = RECORDS(tmpQ) TO 1 BY -1
  GET(tmpQ,I)
  pRow = tmpQ.Row
  GET(Q,RowName.S[1 : RowName.Pos])
  DELETE(Q)
  ADD(Q,1)
 END

 FREE(tmpQ)


StillZero писал(а):2. Фокус на лист-боксе, набираем первые буквы (поиск), фокус перемещается на строку локатора, зачем? Хочу чтобы фокус оставался на листе.
так сейчас задумано, хотя , соглашусь, некрасиво, исправлю
StillZero писал(а): 4. Всего 5 записей в таблице, установил в настройках листа - показывать 2 записи, в хэлп контроле показывает [2], а ожидал увидеть [2:5]
увидел, и правда, разберусь
Последний раз редактировалось Andrew™ 26 Октябрь 2005, 9:18, всего редактировалось 1 раз.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

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

Admin писал(а):Локатор тоже сейчас стал регистронезависимым?
Если нет то хотелось бы...
А ЛОКАТОР ВСЕГДА БЫЛ НЕ ЧУВСТВИТЕЛЕН К РЕГИСТРУ ;)
Admin писал(а): Вот еще вопрос. Есть процедура импорта Clarion -> MS SQL
Можно ли увеличить скорость закачки данных на сервер?
Посмотри может что не так...
вроде всё правильно, используется MAVBufferInsert объект,
тут скорее чтение тормозит ;)
Ответить