MAVBrowse и строка фильтра на этот бровз
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
MAVBrowse и строка фильтра на этот бровз
Добрый день!
C63 9058 ABC
Собственно, как реализовать subj?
При выставлении флага Customize Where Statement, приписываю
SELF.Select.Where(LOC:FilterStr).
Строка LOC:FilterStr формируется перед вызовом Browse.
Идет ругань: Warning: Calling function as procedure
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 и строка фильтра на этот бровз
флажок я не выставлял никогда, не работало это вроде или... не стал разбираться вообщем, пишу руками в точке на браузе в 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
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
Все сайты закрыты...
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().Хотя и так работает...
Сложные фильтры лучше действительно писать ручками, чем в самом шаблоне.
Да, пришлось идти по такому же пути, т.к. запихивание таких конструкций в переменную - не дают результата. Только вот что не понял. Ты пишешь, что делаешь ручные вставки, но вопрос - в какое место. Вот участок кода:
----------------------
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 и строка фильтра на этот бровз
я заводил какой нибудь стандартный Where в шаблоне, а потом рядом руками втыкал свой
Все сайты закрыты...
Re: MAVBrowse и строка фильтра на этот бровз
Андрей, так там же нет точки вставки. Вот участок с предудущего моего примера:
SELF.Select.Where('INS_REG_NUM' & ' BETWEEN 7003032329 AND 7003032330')
IF NOT SELF.LocatorFiltered()
....
Здесь Where прописанный по Defauilt (т.е. в шаблоне) и ниже уже (без точек вставки) генерится шаблонный код
SELF.Select.Where('INS_REG_NUM' & ' BETWEEN 7003032329 AND 7003032330')
IF NOT SELF.LocatorFiltered()
....
Здесь Where прописанный по Defauilt (т.е. в шаблоне) и ниже уже (без точек вставки) генерится шаблонный код
Re: MAVBrowse и строка фильтра на этот бровз
Customize Where Statement - это означает что данный набитый текст в водном поле вставляется в исходник AS IS, т е нет разницы набить тут или залезть в Source, поглядите что при этом генерится в исходниках. На самом деле данная фишка придумана для формирования сложных Where конструкций, и я делаю вот так:Леонид писал(а):Добрый день!
C63 9058 ABC
Собственно, как реализовать subj?
При выставлении флага Customize Where Statement, приписываю
SELF.Select.Where(LOC:FilterStr).
Строка LOC:FilterStr формируется перед вызовом Browse.
Идет ругань: Warning: Calling function as procedure
расширяю MAVBrowse на доп метод с помощью спец шаблона, а реализацию далаю в Source в этом методе, и строк при этом может быть сколько угодно
Re: MAVBrowse и строка фильтра на этот бровз
А что это за спец шаблон? Можно получить?Andrew™ писал(а): Customize Where Statement - это означает что данный набитый текст в водном поле вставляется в исходник AS IS, т е нет разницы набить тут или залезть в Source, поглядите что при этом генерится в исходниках. На самом деле данная фишка придумана для формирования сложных Where конструкций, и я делаю вот так:
расширяю MAVBrowse на доп метод с помощью спец шаблона, а реализацию далаю в Source в этом методе, и строк при этом может быть сколько угодно
Re: MAVBrowse и строка фильтра на этот бровз
встань в EMBEDах на декларацию нужной Browse и нажми INSERT, увидишь MAVBrowseExpansion, можно задекларировать как процедуру так и функцию с произвольным набором параметров, только чтобы после этого DATA и CODE секции этого метода появились в дереве EMBEDов надо выйти и войти заново в EMBEDыЛеонид писал(а):А что это за спец шаблон? Можно получить?Andrew™ писал(а): Customize Where Statement - это означает что данный набитый текст в водном поле вставляется в исходник AS IS, т е нет разницы набить тут или залезть в Source, поглядите что при этом генерится в исходниках. На самом деле данная фишка придумана для формирования сложных Where конструкций, и я делаю вот так:
расширяю MAVBrowse на доп метод с помощью спец шаблона, а реализацию далаю в Source в этом методе, и строк при этом может быть сколько угодно