home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1997 April
/
Chip_1997-04_cd.bin
/
tema
/
602propc
/
disk5
/
data.5
/
WINTIME
/
APPS
/
I_SESTAV.PGM
< prev
next >
Wrap
Text File
|
1996-12-03
|
4KB
|
136 lines
Include
function Num2atrib(num : short) : string[10];
{************************************************}
begin
case num of
1 : Num2atrib := 'cislo ';
2 : Num2atrib := 'firma ';
3 : Num2atrib := 'firma2 ';
4 : Num2atrib := 'jmeno ';
5 : Num2atrib := 'prijmeni ';
6 : Num2atrib := 'titul ';
7 : Num2atrib := 'funkce ';
8 : Num2atrib := 'muz ';
9 : Num2atrib := 'mesto ';
10 : Num2atrib := 'ulice ';
11 : Num2atrib := 'psc ';
12 : Num2atrib := 'stat ';
13 : Num2atrib := 'ico ';
14 : Num2atrib := 'dic ';
15 : Num2atrib := 'pozn ';
16 : Num2atrib := 'prep1 ';
17 : Num2atrib := 'prep2 ';
18 : Num2atrib := 'prep3 ';
19 : Num2atrib := 'prep4 ';
20 : Num2atrib := 'prep5 ';
21 : Num2atrib := 'prep6 ';
22 : Num2atrib := 'prep7 ';
23 : Num2atrib := 'prep8 ';
end;
end;
function Num2oper(num : short) : string[4];
{************************************************}
begin
case num of
1 : Num2oper := '= ';
2 : Num2oper := '< ';
3 : Num2oper := '<= ';
4 : Num2oper := '> ';
5 : Num2oper := '>= ';
6 : Num2oper := '<> ';
7 : Num2oper := '.= ';
8 : Num2oper := '.=. ';
9 : Num2oper := '~ ';
end;
end;
function Num2spoj(num : short) : string[5];
{************************************************}
begin
case num of
1 : Num2spoj := 'and ';
2 : Num2spoj := 'or ';
end;
end;
function KolikPodminek : short;
{************************************************}
var
i : short;
stop : boolean;
begin
i := 7;
stop := false;
while not stop do begin
if atr[i] > 0 then stop := true;
i := i-1;
end;
KolikPodminek := i+1;
end;
procedure SestavitDotaz;
{************************************************}
var
pomstr : string[40];
i,mez : short;
begin
if (atr[1]=0) and (oper[1]=0) and (hodn[1]='') and (spoj[1]=0) then begin
if vsechnysk then dotaz := 'SELECT * FROM Tfirma'
else dotaz := 'SELECT * FROM Tfirma WHERE skup='+Int2str(skup)
end
else begin
if vsechnysk then dotaz := ''
else dotaz := '(skupina='+Int2str(skup)+') AND ';
mez := KolikPodminek;
for i := 1 to mez do begin
if i = 1 then
pomstr := '('+Num2atrib(atr[i])+Num2oper(oper[i])+hodn[i]+') '
else
pomstr := Num2spoj(spoj[i-1])+'('+Num2atrib(atr[i])+Num2oper(oper[i])+hodn[i]+') ';
StrInsert(pomstr, dotaz, StrLength(dotaz)+1);
end;
StrTrim(dotaz);
if mez>1 then begin
if vsechnysk then StrInsert("(", dotaz, 1)
else StrInsert("(", dotaz, 17);
StrInsert(")", dotaz, StrLength(dotaz));
end;
StrInsert('SELECT * FROM Tfirma WHERE ',dotaz,1);
end;
end;
procedure SestavitDotazKateg;
{************************************************}
var
spojka : string[4];
len : short;
begin
if sp = 2 then spojka := " or" else spojka := " and";
if vsechnysk then dotaz := ''
else dotaz := '(skupina='+Int2str(skup)+') AND';
len := StrLength(dotaz);
if p[1] then dotaz := dotaz+spojka+" prep1=true";
if p[2] then dotaz := dotaz+spojka+" prep2=true";
if p[3] then dotaz := dotaz+spojka+" prep3=true";
if p[4] then dotaz := dotaz+spojka+" prep4=true";
if p[5] then dotaz := dotaz+spojka+" prep5=true";
if p[6] then dotaz := dotaz+spojka+" prep6=true";
if p[7] then dotaz := dotaz+spojka+" prep7=true";
if p[8] then dotaz := dotaz+spojka+" prep8=true";
if len < StrLength(dotaz) then begin
if Strcopy(dotaz,17,3)="and" then Strdelete(dotaz,17,4);
if Strcopy(dotaz,17,2)="or" then Strdelete(dotaz,17,3);
StrInsert("(", dotaz, 17);
StrInsert(")", dotaz, StrLength(dotaz)+1);
dotaz :='SELECT * FROM Tfirma WHERE"+dotaz;
end else
dotaz := 'SELECT * FROM Tfirma WHERE skupina='+Int2str(skup);
end;