MAV: вопросы
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
В одном бровзе у меня с чего то локатор реестрозависимым стал. Почему? Все опции по дефолту! Мистика...
Как то раньше при использовании двух MAVBufferInsert (импорт счетов и дитейлов) у меня падала программа. Сейчас что нибудь изменилось?
Сейчас импортирование двух связанных файлов я делаю просто с помощью MAVINSERT.
Чем отличается простое использование MAVINSERT от MAVBufferInsert если я каждые несколько тысяч записей выполняю:
MAVCOMMIT
MAVLOGOUT
Как то раньше при использовании двух MAVBufferInsert (импорт счетов и дитейлов) у меня падала программа. Сейчас что нибудь изменилось?
Сейчас импортирование двух связанных файлов я делаю просто с помощью MAVINSERT.
Чем отличается простое использование MAVINSERT от MAVBufferInsert если я каждые несколько тысяч записей выполняю:
MAVCOMMIT
MAVLOGOUT
Мистика, т к проверка именно по UPPER идётAdmin писал(а):В одном бровзе у меня с чего то локатор реестрозависимым стал. Почему? Все опции по дефолту! Мистика...
только надо понимать, что все действия надо делать последовательноAdmin писал(а):Как то раньше при использовании двух MAVBufferInsert (импорт счетов и дитейлов) у меня падала программа. Сейчас что нибудь изменилось?
т е если есть шапки и детали и хочется заюзать для этих целей MAVBufferInsert, то сначало заливаем шапки, потом заливаем все детальки. Паралельно два открытых курсора в одном соединении нельзя держать, второй будет ждать закрытия первого. Такая вот специфика, зато скорости доступа как в Query Analizer'е, тут одно из двух, либо снимаем это ограничение и приобретаем тормоза, либо учитываем данную специфику и работаем без тормозов
для этих целей и придуман в принципе крыжик в свойствх BrowseBox шаблона на закладке Other, кнопка Optimization - Not use receiver queue, это означает что читаем сразу в List Queue, если её выключить
то будем сначало читать в свою очередь и только потом наполнять ListQueue, когда это надо, когда на каждую запись .FillQueue хотим что то ещё подчитать из БД (по сути второй курсор, но первый уже отработал - залил приёмную очередь). Я никогда таких трюков не делал, т к на каждую запись будет создаваться курсор и это приведёт к тормозам загрузки, надо всё делать минимальным количеством запросов, если всё таки и надо что то на каждую запись подкачивать дополнительно, то лучше это ВСЁ дополнительно перед загрузкой ListQueue одним SELECT'ом залить в LocalQueue, и брать при заполнении ListQueue данные от туда.
Обновление для официальных пользователей
теперь фокус остаётся в LIST контролеStillZero писал(а): 2. Фокус на лист-боксе, набираем первые буквы (поиск), фокус перемещается на строку локатора, зачем? Хочу чтобы фокус оставался на листе.
пофиксеноStillZero писал(а):4. Всего 5 записей в таблице, установил в настройках листа - показывать 2 записи, в хэлп контроле показывает [2], а ожидал увидеть [2:5]
сортировка в BrowseBox Queue
сейчас динамически работает сортировка по одной колонке(полю), хочу расширить и давать возможность в свойствах BrowseBox шаблона добавлять доп поля из очереди для организации сортировки по определённой колонке, но как реализовать такую фунцию нечувствительную к регистру по комбинации полей пока не пойму.
может у кого есть идеи?
может у кого есть идеи?
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Берем твою программу MAV_tvDemo\abcmavt.exe
Запускаем на двух компьютерах.
Открываем Browse Vendors
Первый комп открывает форму и второй открывает форму на той же записи.
Первый изменяет имя вендора и жмет Ok. Все записывается и все в порядке.
Второй пытается нажать Ok… По идее должно выскочить сообщение о том что запись изменена. Сообщения НЕТ!
Мало того. Жмем Cancel… Форма закрылась. Программу не закрываем.
В первой программе жмем Refresh на окне и получаем мертвый зависон программы.
Развешать первую программу можно только выйдя из второй программы…
Тестировалось на разных программах, на разных серверах и на разных компьютерах…
Везде результат один и тот же.
Запускаем на двух компьютерах.
Открываем Browse Vendors
Первый комп открывает форму и второй открывает форму на той же записи.
Первый изменяет имя вендора и жмет Ok. Все записывается и все в порядке.
Второй пытается нажать Ok… По идее должно выскочить сообщение о том что запись изменена. Сообщения НЕТ!
Мало того. Жмем Cancel… Форма закрылась. Программу не закрываем.
В первой программе жмем Refresh на окне и получаем мертвый зависон программы.
Развешать первую программу можно только выйдя из второй программы…
Тестировалось на разных программах, на разных серверах и на разных компьютерах…
Везде результат один и тот же.
это маленькая бырка в ABC шаблонах моих, по OK То форма не закрывается, т е проверка сработала и не пускает, просто соответсвующего сообщения нет, будет время поправлю.Admin писал(а):Берем твою программу MAV_tvDemo\abcmavt.exe
Запускаем на двух компьютерах.
Открываем Browse Vendors
Первый комп открывает форму и второй открывает форму на той же записи.
Первый изменяет имя вендора и жмет Ok. Все записывается и все в порядке.
Второй пытается нажать Ok… По идее должно выскочить сообщение о том что запись изменена. Сообщения НЕТ!
Мало того. Жмем Cancel… Форма закрылась. Программу не закрываем.
а вот это я не смог воспроизвести, да и по трассе видно, что всё корректно отрабатывается MAVLOGOUT и MAVCOMMITAdmin писал(а):В первой программе жмем Refresh на окне и получаем мертвый зависон программы.
Развешать первую программу можно только выйдя из второй программы…
Тестировалось на разных программах, на разных серверах и на разных компьютерах…
Везде результат один и тот же.
Admin писал(а):Я так понял что после выполнения MAVINSERT выполняется AUTOCOMMIT ?
P.S. Кстати можешь в двух словах описать что такое в MAV транзакция?
Код: Выделить всё
MAVLOGOUT:
SELF.RetCode = SQLSetConnectAttr(SELF.hdbc, SQL_ATTR_AUTOCOMMIT,SQL_AUTOCOMMIT_OFF,SQL_IS_UINTEGER)
MAVCOMMIT:
SQLEndTran(SQL_HANDLE_DBC,SELF.HDBC,SQL_COMMIT)
MAVROLLBACK:
SQLEndTran(SQL_HANDLE_DBC,SELF.HDBC,SQL_ROLLBACK)
после MAVCOMMIT и MAVROLLBACK:
SELF.RetCode = SQLSetConnectAttr(SELF.HDBC, SQL_ATTR_AUTOCOMMIT,SQL_AUTOCOMMIT_ON,SQL_IS_UINTEGER)
ОБНОВЛЕНИЕ!!!Andrew Myalin писал(а):пока с помощью промежуточной очереди, но хотелось бы от неё в дальнейшем отказаться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)
код оказался очень тормознутым на больших объёмах данных, перевёл на более оптимальныёй режим сортировки, при этом сортировка по строкам осталась не чувствительна к регистру, никаких дополнительных очередей и перетасовок записей в ListQueue, всё делается за один раз.
Главная беда, библиотеку развиваю и развиваю, а остановиться и начать писать полноценную документацию ну никак не получается.Admin писал(а):Молодец! Это супер...
Вот еще бы QBE и документацию разрулить...
Ты кстати в этом форуме повешай тему с типом "Объявление" о том что ищешь документатора... Этот тред вверху будет всегда висеть!
Ищу человечка, который умеет именно то, чего я не умею, отдам все свои продукты, отвечу на все вопросы, при желани поделюсь исходниками.
- Alexander Ivanovsky
- Директор
- Сообщения: 5
- Зарегистрирован: 07 Июль 2005, 13:59
- Откуда: Хабаровск
- Контактная информация:
Андрей, начал работу по переводу нашей кадровой программы под SQL.Andrew Myalin писал(а): пока с помощью промежуточной очереди, но хотелось бы от неё в дальнейшем отказаться
И вот всплыла еще одна проблема с сортировкой. Буква "Ё".
Человек с фамилией начинающейся на "Ё" стоит первым в списке

Пофиксишь?
Александр Ивановский
конЭчно, если уже не пофиксил, механизмы сортировки я вчера уже поменял, проверю.Alexander Ivanovsky писал(а):Андрей, начал работу по переводу нашей кадровой программы под SQL.Andrew Myalin писал(а): пока с помощью промежуточной очереди, но хотелось бы от неё в дальнейшем отказаться
И вот всплыла еще одна проблема с сортировкой. Буква "Ё".
Человек с фамилией начинающейся на "Ё" стоит первым в списке
Пофиксишь?
Гуд! Будем ждать обновления для проверкиAndrew Myalin писал(а):конЭчно, если уже не пофиксил, механизмы сортировки я вчера уже поменял, проверю.Alexander Ivanovsky писал(а): Андрей, начал работу по переводу нашей кадровой программы под SQL.
И вот всплыла еще одна проблема с сортировкой. Буква "Ё".
Человек с фамилией начинающейся на "Ё" стоит первым в списке
Пофиксишь?
