Страница 1 из 3
MAV: вопросы
Добавлено: 25 Октябрь 2005, 4:44
StillZero
Все относится к MS SQL серверу и шаблону SQLBrowse
--------------------------------------------------------------------------
1. На сервере стоит сортировка: Cyrillic_General_CI_AS.
При просмотре таблицы в MAVSQLBrowse сортировка регистро-зависимая, как избавиться?
Пример:
Код: Выделить всё
сейчас надо
------ -------
TEST best
best TEST
test test
2. Фокус на лист-боксе, набираем первые буквы (поиск), фокус перемещается на строку локатора, зачем? Хочу чтобы фокус оставался на листе.
3. По дефолту все колонки можно сортировать, можно ли как нибудь запретить сортировку, запретить отрисовку иконок сортировки, запретить локатор по этой колонке, т.е. по сути запретить "выбор" колонки?
4. Всего 5 записей в таблице, установил в настройках листа - показывать 2 записи, в хэлп контроле показывает [2], а ожидал увидеть [2:5]
Добавлено: 25 Октябрь 2005, 5:40
StillZero
по первому вопросу...
насколько я понял в Кларе нет стд возможности отсортировать очередь регистро-независимо
в 6-ой кларе появилась возможность использовать при сортировке очереди свою функцию, т.е. типа
в этой процедуре можно самому задать правила сортировки
пример в аттаче
вообщем ... хочется вот так вот...
Добавлено: 25 Октябрь 2005, 8:26
Admin
Кстати попробовал сделать QBE -> не работает.
т.е. сделал процедуру для QBE как нужно, выбрал ее в глобальном шаблоне и проставил в browse VCR.
При нажатии на "?" никакого результата нет.
На поле для поиска/фильтра есть менюшка с пунктом "Other filter" что это такое и как работает?
P.S. Clarion 9048 уже стоит, т.е. желательно обновление ...

Добавлено: 25 Октябрь 2005, 11:29
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 уже стоит, т.е. желательно обновление ...

сегодня дам ссылку
Добавлено: 25 Октябрь 2005, 14:31
Admin
про QBE я же написал что все сделал как в твоих примерах...
не работает, даже в твоих же демонстрационных апликашках типа abcmavt.app
еще вопрос. была по полю дефолтовая возможность поиска по первой букве. т.е. по мере набора в локаторе курсор перемещался по записям. что то сделал и не могу в одном бровзе эту фичу вернуть. что не так?
не в курсе?
Ну и про сортировку очереди ответь что нибудь а то регистрозависимая сортировка очереди ну оченно неприятная вещь.
Добавлено: 25 Октябрь 2005, 14:38
Andrew™
Admin писал(а):про QBE я же написал что все сделал как в твоих примерах...
не работает, даже в твоих же демонстрационных апликашках типа abcmavt.app
это я погляжу
Admin писал(а):
еще вопрос. была по полю дефолтовая возможность поиска по первой букве. т.е. по мере набора в локаторе курсор перемещался по записям. что то сделал и не могу в одном бровзе эту фичу вернуть. что не так?
не в курсе?
в свойствах шаблона BrowseBox отвязался локатор
Admin писал(а):
Ну и про сортировку очереди ответь что нибудь а то регистрозависимая сортировка очереди ну оченно неприятная вещь.
У BrowseBox есть метод и соответсвующий EMBED Sortered
на входе *Сolumn +-номер колонки по которой будет происходить сортировка, если до вызова PARENT'а сделаешь свою сортировку и RETURN 1, то библа сортировать сама не будет
Добавлено: 25 Октябрь 2005, 16:26
Admin
т.е. как мы и предполагали - если хочешь сортировать по другому - сортируй сам!?

Добавлено: 25 Октябрь 2005, 16:31
Andrew™
Admin писал(а):т.е. как мы и предполагали - если хочешь сортировать по другому - сортируй сам!?

ты же хочешь нештатную сортировку, под штатной я понимаю следующее:
SORT(Q,Q.Field)
ты хочешь SORT(Q,UPPER(Q.Field))
хотя может быть и надо вставить, определить ISSTRING поля я могу,
почему бы и нет, хотя сомневаюсь что надо это
Добавлено: 25 Октябрь 2005, 16:44
Andrew™
Admin писал(а):Кстати попробовал сделать QBE -> не работает.
т.е. сделал процедуру для QBE как нужно, выбрал ее в глобальном шаблоне и проставил в browse VCR.
При нажатии на "?" никакого результата нет.
стал проверять, и что же я увидел, не генерится EVENT:Locate на VCR "?" кнопку в LIST контроле, это что, у меня конец рабочего дня, или велосипедисты напортачили?
пример прилагается
Добавлено: 25 Октябрь 2005, 16:58
Admin
Про EVENT:Locate -> хреново если так...
Про сортировку:
Для человека смотрящего текстовый список чего то, по моему гораздо удобнее видеть строки набранные большими буквами в том же порядке как и остальные. а не впереди всего списка...
Вот так как сейчас реализовано как раз по моему и есть вариант для специфических случаев.
В общем я текущий вариант сортировки абсолютно не одобряю.
P.S. Надеюсь не я один

Добавлено: 26 Октябрь 2005, 8:39
Andrew™
Admin писал(а):т.е. как мы и предполагали - если хочешь сортировать по другому - сортируй сам!?

QBE теперь работает
т к я не использую IMM в BrowseBox, то и все события связанные с VCR кнопками в ACCEPT не попадают, НО попадают в переопределённый обработчик событий LIST контрола, так вот номер этого события в C6.2 стал другой по сравнению с младшими версиями C6, в C5 и C5.5 он одинаков.
и сортировки по колонкам теперь не чувствительны к регистру
линк на обновление для C6.2 9048 ушёл мылом
Добавлено: 26 Октябрь 2005, 8:57
StillZero
сортировки по колонкам теперь не чувствительны к регистру
как этого добился? ...
я сам сегодня решил добить этот вопрос и пришел к выводу, что сортировка при помощи sort(MyQueue,MyFunc) работает некорректно, если использовать ее для разных полей очереди...пришел к выводу, что можно только так:
sort(MyQueue,MyFunc11) - для первого поля прямой сортировки
sort(MyQueue,MyFunc12) - для первого поля для обратной сортировки
sort(MyQueue,MyFunc21) - для второго поля прямой сортировки
sort(MyQueue,MyFunc22) - для второго поля для обратной сортировки
т.е. для каждой сортировки своя функция.
А при использовании одной функции для всех полей получаются грабли...такое чувсто, что не сбрасывается "счетчик оптимизации".
и плиз на эти вопросы чего-нибудь:
2. Фокус на лист-боксе, набираем первые буквы (поиск), фокус перемещается на строку локатора, зачем? Хочу чтобы фокус оставался на листе.
4. Всего 5 записей в таблице, установил в настройках листа - показывать 2 записи, в хэлп контроле показывает [2], а ожидал увидеть [2:5]
Добавлено: 26 Октябрь 2005, 8:57
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
Добавлено: 26 Октябрь 2005, 9:11
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]
увидел, и правда, разберусь
Добавлено: 26 Октябрь 2005, 9:16
Andrew™
Admin писал(а):Локатор тоже сейчас стал регистронезависимым?
Если нет то хотелось бы...
А ЛОКАТОР ВСЕГДА БЫЛ НЕ ЧУВСТВИТЕЛЕН К РЕГИСТРУ
Admin писал(а):
Вот еще вопрос. Есть процедура импорта Clarion -> MS SQL
Можно ли увеличить скорость закачки данных на сервер?
Посмотри может что не так...
вроде всё правильно, используется MAVBufferInsert объект,
тут скорее чтение тормозит
