Страница 2 из 3
Добавлено: 26 Октябрь 2005, 9:32
Admin
В одном бровзе у меня с чего то локатор реестрозависимым стал. Почему? Все опции по дефолту! Мистика...
Как то раньше при использовании двух MAVBufferInsert (импорт счетов и дитейлов) у меня падала программа. Сейчас что нибудь изменилось?
Сейчас импортирование двух связанных файлов я делаю просто с помощью MAVINSERT.
Чем отличается простое использование MAVINSERT от MAVBufferInsert если я каждые несколько тысяч записей выполняю:
MAVCOMMIT
MAVLOGOUT
Добавлено: 26 Октябрь 2005, 9:58
Andrew™
Admin писал(а):В одном бровзе у меня с чего то локатор реестрозависимым стал. Почему? Все опции по дефолту! Мистика...
Мистика, т к проверка именно по UPPER идёт
Admin писал(а):Как то раньше при использовании двух MAVBufferInsert (импорт счетов и дитейлов) у меня падала программа. Сейчас что нибудь изменилось?
только надо понимать, что все действия надо делать последовательно
т е если есть шапки и детали и хочется заюзать для этих целей MAVBufferInsert, то сначало заливаем шапки, потом заливаем все детальки. Паралельно два открытых курсора в одном соединении нельзя держать, второй будет ждать закрытия первого. Такая вот специфика, зато скорости доступа как в Query Analizer'е, тут одно из двух, либо снимаем это ограничение и приобретаем тормоза, либо учитываем данную специфику и работаем без тормозов
для этих целей и придуман в принципе крыжик в свойствх BrowseBox шаблона на закладке Other, кнопка Optimization - Not use receiver queue, это означает что читаем сразу в List Queue, если её выключить
то будем сначало читать в свою очередь и только потом наполнять ListQueue, когда это надо, когда на каждую запись .FillQueue хотим что то ещё подчитать из БД (по сути второй курсор, но первый уже отработал - залил приёмную очередь). Я никогда таких трюков не делал, т к на каждую запись будет создаваться курсор и это приведёт к тормозам загрузки, надо всё делать минимальным количеством запросов, если всё таки и надо что то на каждую запись подкачивать дополнительно, то лучше это ВСЁ дополнительно перед загрузкой ListQueue одним SELECT'ом залить в LocalQueue, и брать при заполнении ListQueue данные от туда.
Обновление для официальных пользователей
Добавлено: 26 Октябрь 2005, 10:21
Andrew™
StillZero писал(а):
2. Фокус на лист-боксе, набираем первые буквы (поиск), фокус перемещается на строку локатора, зачем? Хочу чтобы фокус оставался на листе.
теперь фокус остаётся в LIST контроле
StillZero писал(а):4. Всего 5 записей в таблице, установил в настройках листа - показывать 2 записи, в хэлп контроле показывает [2], а ожидал увидеть [2:5]
пофиксено
сортировка в BrowseBox Queue
Добавлено: 26 Октябрь 2005, 10:29
Andrew™
сейчас динамически работает сортировка по одной колонке(полю), хочу расширить и давать возможность в свойствах BrowseBox шаблона добавлять доп поля из очереди для организации сортировки по определённой колонке, но как реализовать такую фунцию нечувствительную к регистру по комбинации полей пока не пойму.
может у кого есть идеи?
Добавлено: 26 Октябрь 2005, 10:49
Admin
Берем твою программу MAV_tvDemo\abcmavt.exe
Запускаем на двух компьютерах.
Открываем Browse Vendors
Первый комп открывает форму и второй открывает форму на той же записи.
Первый изменяет имя вендора и жмет Ok. Все записывается и все в порядке.
Второй пытается нажать Ok… По идее должно выскочить сообщение о том что запись изменена. Сообщения НЕТ!
Мало того. Жмем Cancel… Форма закрылась. Программу не закрываем.
В первой программе жмем Refresh на окне и получаем мертвый зависон программы.
Развешать первую программу можно только выйдя из второй программы…
Тестировалось на разных программах, на разных серверах и на разных компьютерах…
Везде результат один и тот же.
Добавлено: 26 Октябрь 2005, 10:52
Admin
Я так понял что после выполнения MAVINSERT выполняется AUTOCOMMIT ?
P.S. Кстати можешь в двух словах описать что такое в MAV транзакция?
Добавлено: 26 Октябрь 2005, 11:01
Andrew™
Admin писал(а):Берем твою программу MAV_tvDemo\abcmavt.exe
Запускаем на двух компьютерах.
Открываем Browse Vendors
Первый комп открывает форму и второй открывает форму на той же записи.
Первый изменяет имя вендора и жмет Ok. Все записывается и все в порядке.
Второй пытается нажать Ok… По идее должно выскочить сообщение о том что запись изменена. Сообщения НЕТ!
Мало того. Жмем Cancel… Форма закрылась. Программу не закрываем.
это маленькая бырка в ABC шаблонах моих, по OK То форма не закрывается, т е проверка сработала и не пускает, просто соответсвующего сообщения нет, будет время поправлю.
Admin писал(а):В первой программе жмем Refresh на окне и получаем мертвый зависон программы.
Развешать первую программу можно только выйдя из второй программы…
Тестировалось на разных программах, на разных серверах и на разных компьютерах…
Везде результат один и тот же.
а вот это я не смог воспроизвести, да и по трассе видно, что всё корректно отрабатывается MAVLOGOUT и MAVCOMMIT
Добавлено: 26 Октябрь 2005, 11:04
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)
Добавлено: 01 Ноябрь 2005, 16:10
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, всё делается за один раз.
Добавлено: 01 Ноябрь 2005, 16:25
Admin
Молодец! Это супер...
Вот еще бы QBE и документацию разрулить...
Ты кстати в этом форуме повешай тему с типом "Объявление" о том что ищешь документатора... Этот тред вверху будет всегда висеть!
Добавлено: 01 Ноябрь 2005, 16:42
Andrew™
Admin писал(а):Молодец! Это супер...
Вот еще бы QBE и документацию разрулить...
Ты кстати в этом форуме повешай тему с типом "Объявление" о том что ищешь документатора... Этот тред вверху будет всегда висеть!
Главная беда, библиотеку развиваю и развиваю, а остановиться и начать писать полноценную документацию ну никак не получается.
Ищу человечка, который умеет именно то, чего я не умею, отдам все свои продукты, отвечу на все вопросы, при желани поделюсь исходниками.
Добавлено: 01 Ноябрь 2005, 16:49
Admin
Не. Ты не реплику сделай а новую тему.
И в ней поставь галку - "Объявление", она внизу где то ...
Добавлено: 02 Ноябрь 2005, 4:02
Alexander Ivanovsky
Andrew Myalin писал(а):
пока с помощью промежуточной очереди, но хотелось бы от неё в дальнейшем отказаться
Андрей, начал работу по переводу нашей кадровой программы под SQL.
И вот всплыла еще одна проблема с сортировкой. Буква "Ё".
Человек с фамилией начинающейся на "Ё" стоит первым в списке

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

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

Пофиксишь?
конЭчно, если уже не пофиксил, механизмы сортировки я вчера уже поменял, проверю.
Гуд! Будем ждать обновления для проверки
