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

Ограничение в запросах по условию.

Добавлено: 18 май 2006, 18:19
spark
Суть вопроса вот в чем:
Есть логическая таблица в отчете, есть интерфейс с Чекбоксами для запуска этого отчета.
Можно ли как-нибудь сделать чтобы в зависимости от выбранного чекбокса в интерфейсе, включалось то или иное ограничение на логическую таблицу.
надеюсь изложил ясно... =)

Добавлено: 18 май 2006, 20:41
Max_Fin
Почитайте про Bounds
PushBounds, PopBounds, ResetBounds, AddBounds, SubBouns

Код: Выделить всё

interface MY;
...

create view
as select *
from PlPor
where
((
  Word(1) == PlPor.TiDk
))
Bounds byDesCr CurDesCr  == PlPor.DesCr;

....

HandleEvent
cmCheckField:
{
  case CurField of
    #wPar:
    {
       if (wPar and coFltDesCr) = coFltDesCr
      {
         AddBounds(tibyDesCr);
      }
      else
      {
         SubBounds(tibyDesCr);
      }
    }
  end;
}
end;

end.

Добавлено: 19 май 2006, 05:55
Алексей
Если помечать можно только один чек бокс - тогда баундсы в самый раз. (Radio Button)

Если же необходимо различное сочетание чекбоксов, например первый плюс третий, то думаю в данном случае лучше всего Condition.
По выбранному чекбоксу либо накладываем PushCondition() либо нет.

Добавлено: 19 май 2006, 12:19
spark
Max_Fin
Читал про них, но что-то как-то не получилось у меня...
Они в ард-отчетах работают?

Добавлено: 19 май 2006, 12:34
spark
Алексей
Наверное это самое то... =)
спасибо

Добавлено: 19 май 2006, 15:28
spark
Алексей
Не работает у меня PushCondition() в отчете...
Пишет при компиляции, что нет такой функции tcNaznachenie(это у меня так кондиция называется)... =\

То есть саму логическую таблицу съедает без ошибок, а PushCondition() делать не хочет... =(

Добавлено: 19 май 2006, 17:04
dp
spark
tcNaznachenie
кондишин должен называться Naznachenie, а при его вызове использовать tcNaznachenie

Добавлено: 19 май 2006, 18:16
edward_K
.create view vpers
as select persons.fio,persons.tabnmb
where (( 'æ' == Persons.ISEMPLOYEE ))
bounds byFio = 'æ' == Persons.ISEMPLOYEE
ordered by Persons.ISEMPLOYEE,persons.fio
bounds bytabn = 'æ' == Persons.ISEMPLOYEE
ordered by Persons.ISEMPLOYEE,persons.tabnmb
;
wtyp:=1 ;
case wtyp of
0: vpers.PushBounds(vpers.tbbyfio) ;
else vpers.PushBounds(vpers.tbbytabn) ;
end ;

Добавлено: 20 май 2006, 16:16
spark
dp
Так и есть...

Добавлено: 20 май 2006, 16:17
spark
edward_K
О!!! Заработало... ссылку на таблицу не ставил дурень... =))
Спасибо огромное ВСЕМ!