MAV: вопросы

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

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

В одном бровзе у меня с чего то локатор реестрозависимым стал. Почему? Все опции по дефолту! Мистика...

Как то раньше при использовании двух MAVBufferInsert (импорт счетов и дитейлов) у меня падала программа. Сейчас что нибудь изменилось?

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

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

Admin писал(а):В одном бровзе у меня с чего то локатор реестрозависимым стал. Почему? Все опции по дефолту! Мистика...
Мистика, т к проверка именно по UPPER идёт
Admin писал(а):Как то раньше при использовании двух MAVBufferInsert (импорт счетов и дитейлов) у меня падала программа. Сейчас что нибудь изменилось?
только надо понимать, что все действия надо делать последовательно
т е если есть шапки и детали и хочется заюзать для этих целей MAVBufferInsert, то сначало заливаем шапки, потом заливаем все детальки. Паралельно два открытых курсора в одном соединении нельзя держать, второй будет ждать закрытия первого. Такая вот специфика, зато скорости доступа как в Query Analizer'е, тут одно из двух, либо снимаем это ограничение и приобретаем тормоза, либо учитываем данную специфику и работаем без тормозов

для этих целей и придуман в принципе крыжик в свойствх BrowseBox шаблона на закладке Other, кнопка Optimization - Not use receiver queue, это означает что читаем сразу в List Queue, если её выключить
то будем сначало читать в свою очередь и только потом наполнять ListQueue, когда это надо, когда на каждую запись .FillQueue хотим что то ещё подчитать из БД (по сути второй курсор, но первый уже отработал - залил приёмную очередь). Я никогда таких трюков не делал, т к на каждую запись будет создаваться курсор и это приведёт к тормозам загрузки, надо всё делать минимальным количеством запросов, если всё таки и надо что то на каждую запись подкачивать дополнительно, то лучше это ВСЁ дополнительно перед загрузкой ListQueue одним SELECT'ом залить в LocalQueue, и брать при заполнении ListQueue данные от туда.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Обновление для официальных пользователей

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

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

сортировка в BrowseBox Queue

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

сейчас динамически работает сортировка по одной колонке(полю), хочу расширить и давать возможность в свойствах BrowseBox шаблона добавлять доп поля из очереди для организации сортировки по определённой колонке, но как реализовать такую фунцию нечувствительную к регистру по комбинации полей пока не пойму.

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

Сообщение Admin »

Берем твою программу MAV_tvDemo\abcmavt.exe
Запускаем на двух компьютерах.
Открываем Browse Vendors
Первый комп открывает форму и второй открывает форму на той же записи.
Первый изменяет имя вендора и жмет Ok. Все записывается и все в порядке.
Второй пытается нажать Ok… По идее должно выскочить сообщение о том что запись изменена. Сообщения НЕТ!
Мало того. Жмем Cancel… Форма закрылась. Программу не закрываем.

В первой программе жмем Refresh на окне и получаем мертвый зависон программы.
Развешать первую программу можно только выйдя из второй программы…

Тестировалось на разных программах, на разных серверах и на разных компьютерах…
Везде результат один и тот же.
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

Я так понял что после выполнения MAVINSERT выполняется AUTOCOMMIT ?

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

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

Admin писал(а):Берем твою программу MAV_tvDemo\abcmavt.exe
Запускаем на двух компьютерах.
Открываем Browse Vendors
Первый комп открывает форму и второй открывает форму на той же записи.
Первый изменяет имя вендора и жмет Ok. Все записывается и все в порядке.
Второй пытается нажать Ok… По идее должно выскочить сообщение о том что запись изменена. Сообщения НЕТ!
Мало того. Жмем Cancel… Форма закрылась. Программу не закрываем.
это маленькая бырка в ABC шаблонах моих, по OK То форма не закрывается, т е проверка сработала и не пускает, просто соответсвующего сообщения нет, будет время поправлю.
Admin писал(а):В первой программе жмем Refresh на окне и получаем мертвый зависон программы.
Развешать первую программу можно только выйдя из второй программы…

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

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

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

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

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
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Сообщение Admin »

Молодец! Это супер...
Вот еще бы QBE и документацию разрулить...

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

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

Admin писал(а):Молодец! Это супер...
Вот еще бы QBE и документацию разрулить...

Ты кстати в этом форуме повешай тему с типом "Объявление" о том что ищешь документатора... Этот тред вверху будет всегда висеть!
Главная беда, библиотеку развиваю и развиваю, а остановиться и начать писать полноценную документацию ну никак не получается.

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

Сообщение Admin »

Не. Ты не реплику сделай а новую тему.
И в ней поставь галку - "Объявление", она внизу где то ...
Аватара пользователя
Alexander Ivanovsky
Директор
Сообщения: 5
Зарегистрирован: 07 Июль 2005, 13:59
Откуда: Хабаровск
Контактная информация:

Сообщение Alexander Ivanovsky »

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

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

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

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

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