quot;doÎDog)((do.DataN<=’10.10.2006’ Ú do.KDet¹de.KDet)Ú
("doÎDog)((do.DataN<=’10.10.2006’ Ú do.KDet¹de.KDet)Ú
($psÎPsts)(( ps.KPst=do.KPst)&(ps.AdrPst¹’Казань’))Ú
($pvÎPst)((pv.KPst=do.KPst)&(pv.KDet=do.KDet)))
{ NewTable - таблица, куда помещаются результаты запроса. Эта таблица должна быть создана заранее}
NewTable.Close; NewTable.EmptyTable; NewTable.Open;
{ Открываются все таблицы }
PstsTable.Open; DogTable.Open; DetTable.Open; PstTable.Open; ;
{Внешний цикл строится по таблице Det}
DetTable.First;
WHILE NOT DetTable.EOF DO begin
{ aDog – переменная селектор для реализации квантора }
aDog:=true;
{Вложенный цикл строится по таблице Dog c учетом условия aDog }
DogTable.First;
WHILE aDog AND NOT DogTable.EOF DO begin
{в переменной DogUsl по частям формируется условие aDog, первоначальное значение переменной соответствует значению . Проверка условия С имеет смысл только при условии, что }
DogUsl:=dog.DataN<=’10.10.2006’ OR dog.Kdet<>det.KDet);
IF NOT DogUsl then begin
{в переменной PstsUsl формируется условие С, цикл по таблице Psts}
PstsUsl:=false; PstsTable.First;
WHILE Not PstsUsl AND NOT PstsTable.EOF DO begin
PstsUsl:=(psts.KPst=dog.KPst)&(psts.AdrPst¹’Казань’);
{Навигация по таблицев Psts}
PstsTable.Next;
|