MAVBrowse и строка фильтра на этот бровз

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

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Леонид
Бывалый
Сообщения: 84
Зарегистрирован: 31 Август 2005, 17:07

MAVBrowse и строка фильтра на этот бровз

Сообщение Леонид »

Добрый день!

C63 9058 ABC

Собственно, как реализовать subj?
При выставлении флага Customize Where Statement, приписываю
SELF.Select.Where(LOC:FilterStr).
Строка LOC:FilterStr формируется перед вызовом Browse.
Идет ругань: Warning: Calling function as procedure
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: MAVBrowse и строка фильтра на этот бровз

Сообщение StillZero »

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

BRW9:Browse.Where PROCEDURE
CODE
...
IF LOC:ShowOnlyPartOutgoingGoods AND LOC:ShowOnlyPartNotOutgoingGoods
SELF.Select.Where('(('&CLIP(SELF.Select.Field(DB:QtyEnd)) & ' > 0','AND')
SELF.Select.Where(CLIP(SELF.Select.Field(AD:Quantity)) & ' <> ' & CLIP(SELF.Select.Field(DB:QtyEnd))&')','AND')
SELF.Select.Where('('&CLIP(SELF.Select.Field(AD:Quantity)) & ' > 0','OR')
SELF.Select.Where(CLIP(SELF.Select.Field(AD:Quantity)) & ' = ' & CLIP(SELF.Select.Field(DB:QtyEnd))&'))','AND')
ELSIF LOC:ShowOnlyPartOutgoingGoods
SELF.Select.Where('('&CLIP(SELF.Select.Field(DB:QtyEnd)) & ' > 0','AND')
SELF.Select.Where(CLIP(SELF.Select.Field(AD:Quantity)) & ' <> ' & CLIP(SELF.Select.Field(DB:QtyEnd))&')','AND')
ELSIF LOC:ShowOnlyPartNotOutgoingGoods
SELF.Select.Where('('&CLIP(SELF.Select.Field(AD:Quantity)) & ' > 0','AND')
SELF.Select.Where(CLIP(SELF.Select.Field(AD:Quantity)) & ' = ' & CLIP(SELF.Select.Field(DB:QtyEnd))&')','AND')
END
...


или можно просто строкой

IF Mode=2
SELF.Select.Where('DateTimeEnd = ''' & FORMAT(GLO:ToDate,@D12)&'''')
END
IF Mode=3
SELF.Select.Where('DATEPART(year,DateTimeEnd) = ''' & YEAR(GLO:ToDate)&''' AND DATEPART(month,DateTimeEnd) = ''' & MONTH(GLO:ToDate)&'''')
END
IF Mode=4
SELF.Select.Where('DateTimeEnd <= ''' & FORMAT(GLO:ToDate,@D12)&'''')
END
Все сайты закрыты...
Леонид
Бывалый
Сообщения: 84
Зарегистрирован: 31 Август 2005, 17:07

Re: MAVBrowse и строка фильтра на этот бровз

Сообщение Леонид »

Добрый день!

Да, пришлось идти по такому же пути, т.к. запихивание таких конструкций в переменную - не дают результата. Только вот что не понял. Ты пишешь, что делаешь ручные вставки, но вопрос - в какое место. Вот участок кода:
----------------------
BRW1:Browse.Where PROCEDURE
...
CODE
! Start of "MAV BrowseBox"
! [Priority 30]

! Relation tables
SELF.Select.Relation(MAVINSUR:INS_ID,MAVCORP:INS_ID,False)
! [Priority 80]
!! SELF.Select.Where('B."CRP_SHORT_NAME"' & 'LIKE ''М%''')
!! SELF.Select.Where('A."INS_REG_NUM"' & ' BETWEEN 7003032329 AND 7003040000')
!SELF.Select.Where(RV:RestTypeID,GLO:InventarRestID2,'=','OR)')
!LOC:FilterStr = 'STH_INSURER.INS_REG_NUM=7001000005'
!LOC:FilterStr = 'MAVCORP:CRP_SHORT_NAME' & ',' & '''ГАБ''' & ',' & '''%_%''' & ',' & '''AND'''
!stop(LOC:FilterStr)
SELF.ResetField
SELF.SP &= NULL
SELF.Select.Where('INS_REG_NUM' & ' BETWEEN 7003032329 AND 7003032330')
IF NOT SELF.LocatorFiltered()
RETURN
END
IF SELF.QBE.Where()
RETURN
END
------------------------
Единственное место - это [Priority 80].
По-хорошему бы надо было предусмотреть точку вставки после SELF.SP &= NULL и перед IF NOT SELF.LocatorFiltered().Хотя и так работает...
Сложные фильтры лучше действительно писать ручками, чем в самом шаблоне.
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

Re: MAVBrowse и строка фильтра на этот бровз

Сообщение StillZero »

я заводил какой нибудь стандартный Where в шаблоне, а потом рядом руками втыкал свой
Все сайты закрыты...
Леонид
Бывалый
Сообщения: 84
Зарегистрирован: 31 Август 2005, 17:07

Re: MAVBrowse и строка фильтра на этот бровз

Сообщение Леонид »

Андрей, так там же нет точки вставки. Вот участок с предудущего моего примера:
SELF.Select.Where('INS_REG_NUM' & ' BETWEEN 7003032329 AND 7003032330')
IF NOT SELF.LocatorFiltered()
....

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

Re: MAVBrowse и строка фильтра на этот бровз

Сообщение StillZero »

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

Re: MAVBrowse и строка фильтра на этот бровз

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

Леонид писал(а):Добрый день!

C63 9058 ABC

Собственно, как реализовать subj?
При выставлении флага Customize Where Statement, приписываю
SELF.Select.Where(LOC:FilterStr).
Строка LOC:FilterStr формируется перед вызовом Browse.
Идет ругань: Warning: Calling function as procedure
Customize Where Statement - это означает что данный набитый текст в водном поле вставляется в исходник AS IS, т е нет разницы набить тут или залезть в Source, поглядите что при этом генерится в исходниках. На самом деле данная фишка придумана для формирования сложных Where конструкций, и я делаю вот так:

расширяю MAVBrowse на доп метод с помощью спец шаблона, а реализацию далаю в Source в этом методе, и строк при этом может быть сколько угодно
Леонид
Бывалый
Сообщения: 84
Зарегистрирован: 31 Август 2005, 17:07

Re: MAVBrowse и строка фильтра на этот бровз

Сообщение Леонид »

Andrew™ писал(а): Customize Where Statement - это означает что данный набитый текст в водном поле вставляется в исходник AS IS, т е нет разницы набить тут или залезть в Source, поглядите что при этом генерится в исходниках. На самом деле данная фишка придумана для формирования сложных Where конструкций, и я делаю вот так:

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

Re: MAVBrowse и строка фильтра на этот бровз

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

Леонид писал(а):
Andrew™ писал(а): Customize Where Statement - это означает что данный набитый текст в водном поле вставляется в исходник AS IS, т е нет разницы набить тут или залезть в Source, поглядите что при этом генерится в исходниках. На самом деле данная фишка придумана для формирования сложных Where конструкций, и я делаю вот так:

расширяю MAVBrowse на доп метод с помощью спец шаблона, а реализацию далаю в Source в этом методе, и строк при этом может быть сколько угодно
А что это за спец шаблон? Можно получить?
встань в EMBEDах на декларацию нужной Browse и нажми INSERT, увидишь MAVBrowseExpansion, можно задекларировать как процедуру так и функцию с произвольным набором параметров, только чтобы после этого DATA и CODE секции этого метода появились в дереве EMBEDов надо выйти и войти заново в EMBEDы
Ответить