Страница 1 из 1

Строка как условие

Добавлено: 17 янв 2005, 09:47
zanuda
Есть строковые переменные - strAll, strCMol, strCParty.
Они равны:

strAll:='aSP == SaldoMC.SP and aMC == SaldoMC.cMC and aCurrDate >>= SaldoMC.dSaldo and aPodr == SaldoMC.cPodr'

strCMol:='and aMol == SaldoMC.cMol'

strCParty:='and aParty == SaldoMC.cParty'

Далее, в зависимости от входных данных, из этих переменных формируется одна:
if aMol<>0 then {strAll:=StrAll +' '+ strCMol;}
if aparty<>0 then {strAll:=strAll +' '+ strCParty;}

Как дальше сделать так, чтобы компилятор понял эту строку как условие для Where??:

if (GetLast SaldoMC where(( strAll ))=tsOK) { ... }

Или все таки так здесь нельзя и каждый раз (в завис от входных) формировать новое условие??

Re: Строка как условие

Добавлено: 17 янв 2005, 12:10
dp
такие штуки реализуются через bounds

в подцепке после where (( ))
пишется
Bounds strcmol = aMol == SaldoMC.cMol
Bounds strcparty = aParty == SaldoMC.cParty
;

а потом в нужном месте

if aMol<>0 then {PushBounds(tbstrcmol)}
else {PushBounds(tbstrcparty)}

в конце не забыть снять popbounds('траляля')

Re: Строка как условие

Добавлено: 17 янв 2005, 17:46
Savich
Точно не помню тему на этом форуме, но там была следующая подсказка:
Select 'Update Basedoc where (( ', Katotg.nrec ,' == ', Basedoc.cOrg, ' ))'
from Katorg where ....

Результат выполнения этого запроса - текст нового запроса.

Попробуй сделать по аналогии, может получится.

Re: Строка как условие

Добавлено: 18 янв 2005, 15:41
zanuda
Все это будет возможно верным, но мне кажется...мне кажется даже то, что я предложил (предположил) упрется в ключи. Вот как бы их мне избежать, через временные таблицы в памяти или как то по другому??

Re: Строка как условие

Добавлено: 19 янв 2005, 12:15
dp
если начало выборки по индексу, то можно смело в конце написать (noindex) и будет счастье (т.е. оттормаживать сильно не будет).

Re: Строка как условие

Добавлено: 19 янв 2005, 13:08
zanuda
при NoIndex будут негарантированы результаты. Да и скорость важна...

Re: Строка как условие

Добавлено: 21 янв 2005, 12:14
dp
> при NoIndex будут негарантированы результаты

вот это не понял - как это не гарантированы? ???

Re: Строка как условие

Добавлено: 24 янв 2005, 09:41
zanuda
Осталось такое чувство....)))

Re: Строка как условие

Добавлено: 24 янв 2005, 15:27
Maverick
noindex - это всего лишь директива компилеру шоб не ругался... а в остальном сия подцепка будет работать как фильтр в индексном выражении.. а филтьтры, заюзанные как доп условия в индексе не всегда ведут себя ккорректно...

Re: Строка как условие

Добавлено: 25 янв 2005, 10:40
zanuda
Вот от этого чувство и осталось. И что делать, как избавиться от некорректности?