Форум » [x]Harbour » Locate по виртуальному полю. » Ответить

Locate по виртуальному полю.

Dima: Есть база с 1 полем kod_kl , n , 6 На ее основе построен бровс , в котором есть одно поле (название контрагента) и оно вытаскивается по Dbseek() из базы контрагентов. Каким образом организовать поиск по вхождению в название или Locate по этому виртуальному столбцу бровса ?

Ответов - 6

Haz: Dima пишет: Каким образом организовать поиск по вхождению в название или Locate в блоке кода _dbLocate( bBlock,,,,.F.) используй обратное преобразование ID в название и в этом названии ищи вхождение

Sergy: Судя по вопросу, relation не установлен? У меня в паре мест такая схема используется: в dbedit() вызывается функция отображения строки с кучей виртуальных и не очень полей. Она, прежде чем что либо отображать, позиционируется в соотв. таблицах. Если мне нужно что-то найти в виртуальных полях, я ищу уже в результатах этой функции.

Dima: Haz пишет: в блоке кода _dbLocate( bBlock,,,,.F.) используй обратное преобразование ID в название и в этом названии ищи вхождение Попробую , спасибо. Sergy пишет: Судя по вопросу, relation не установлен? Не люблю я его , порой забываешь про него что он есть и лезут косяки , поэтому мне не трудно сделать Dbseek по нужной базе.


Pasha: b := oB:getColumn(nPos):block .. Eval(oB:goTopBlock) while ! eof() if Eval(b) = xValue // нашли endif if Eval(oB:SkipBlock, 1) # 1 exit endif enddo Поиск можно выполнять до первого попадания, или искать все. Можно заносить результат поиска в массив, и, если там более одного элемента, выдавать запрос, куда перемещаться. У меня в dbedit по кл.F7 поиск идет по такому принципу.

Dima: Pasha То же вариант , пасиб !

Pasha: Можно и упростить: __dbLocate({|| Eval(b)=xValue},,,,)



полная версия страницы