Строка как условие
Модераторы: m0p3e, edward_K, Модераторы
Строка как условие
Есть строковые переменные - 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) { ... }
Или все таки так здесь нельзя и каждый раз (в завис от входных) формировать новое условие??
Они равны:
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) { ... }
Или все таки так здесь нельзя и каждый раз (в завис от входных) формировать новое условие??
-
- Местный житель
- Сообщения: 216
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Беларусь, Минск
- Контактная информация:
Re: Строка как условие
такие штуки реализуются через bounds
в подцепке после where (( ))
пишется
Bounds strcmol = aMol == SaldoMC.cMol
Bounds strcparty = aParty == SaldoMC.cParty
;
а потом в нужном месте
if aMol<>0 then {PushBounds(tbstrcmol)}
else {PushBounds(tbstrcparty)}
в конце не забыть снять popbounds('траляля')
в подцепке после where (( ))
пишется
Bounds strcmol = aMol == SaldoMC.cMol
Bounds strcparty = aParty == SaldoMC.cParty
;
а потом в нужном месте
if aMol<>0 then {PushBounds(tbstrcmol)}
else {PushBounds(tbstrcparty)}
в конце не забыть снять popbounds('траляля')
dP
Re: Строка как условие
Точно не помню тему на этом форуме, но там была следующая подсказка:
Select 'Update Basedoc where (( ', Katotg.nrec ,' == ', Basedoc.cOrg, ' ))'
from Katorg where ....
Результат выполнения этого запроса - текст нового запроса.
Попробуй сделать по аналогии, может получится.
Select 'Update Basedoc where (( ', Katotg.nrec ,' == ', Basedoc.cOrg, ' ))'
from Katorg where ....
Результат выполнения этого запроса - текст нового запроса.
Попробуй сделать по аналогии, может получится.
Re: Строка как условие
Все это будет возможно верным, но мне кажется...мне кажется даже то, что я предложил (предположил) упрется в ключи. Вот как бы их мне избежать, через временные таблицы в памяти или как то по другому??
-
- Местный житель
- Сообщения: 216
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Беларусь, Минск
- Контактная информация:
Re: Строка как условие
если начало выборки по индексу, то можно смело в конце написать (noindex) и будет счастье (т.е. оттормаживать сильно не будет).
dP
Re: Строка как условие
при NoIndex будут негарантированы результаты. Да и скорость важна...
-
- Местный житель
- Сообщения: 216
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Беларусь, Минск
- Контактная информация:
Re: Строка как условие
> при NoIndex будут негарантированы результаты
вот это не понял - как это не гарантированы? ???
вот это не понял - как это не гарантированы? ???
dP
Re: Строка как условие
Осталось такое чувство....)))
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Строка как условие
noindex - это всего лишь директива компилеру шоб не ругался... а в остальном сия подцепка будет работать как фильтр в индексном выражении.. а филтьтры, заюзанные как доп условия в индексе не всегда ведут себя ккорректно...
Re: Строка как условие
Вот от этого чувство и осталось. И что делать, как избавиться от некорректности?