Форма запроса
Экранная форма:
Код:
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Grids, DBGrids, DBTables, Buttons;
type
TForm6 = class(TForm)
Query1: TQuery;
GroupBox2: TGroupBox;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label4: TLabel;
Label3: TLabel;
Label2: TLabel;
Label1: TLabel;
Edit9: TEdit;
Edit8: TEdit;
Edit7: TEdit;
Edit6: TEdit;
Edit5: TEdit;
Edit4: TEdit;
Edit3: TEdit;
Edit2: TEdit;
Edit1: TEdit;
CheckBox7: TCheckBox;
CheckBox6: TCheckBox;
CheckBox5: TCheckBox;
CheckBox4: TCheckBox;
CheckBox3: TCheckBox;
CheckBox2: TCheckBox;
CheckBox1: TCheckBox;
Label5: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
implementation
{$R *.dfm}
procedure TForm6.BitBtn1Click(Sender: TObject);
var s, st : string;
begin
s:='';
st:='';
if CheckBox1.checked then begin
st:=st+'nazv, ';
if edit1.text<>'' then
S:=S+'AND nazv like "%'+edit1.text+'%" ';
end;
if CheckBox2.checked then begin
st:=st+'god, ';
if (edit2.text<>'') and (edit3.text<>'') then
S:=S+'AND god between '+edit2.text+' and '+edit3.text;
end;
if CheckBox3.checked then begin
st:=st+'janr, ';
if (edit4.text<>'') then
S:=S+'AND janr like "%'+edit4.text+'%" ';
end;
if CheckBox4.checked then begin
st:=st+'razr, ';
if (edit5.text<>'') then
S:=S+'AND razr like "%'+edit5.text+'%" ';
end;
if CheckBox5.checked then begin
st:=st+'izdat, ';
if (edit6.text<>'') then
S:=S+'AND izdat like "%'+edit6.text+'%" ';
end;
if CheckBox6.checked then begin
st:=st+'treb, ';
if (edit7.text<>'') then
S:=S+'AND treb like "%'+edit7.text+'%" ';
end;
if CheckBox7.checked then begin
st:=st+'cost, ';
if (edit8.text<>'') and (edit9.text<>'') then
S:=S+'AND cost between '+edit8.text+' and '+edit9.text;
end;
delete(st,length(st)-1,2);
delete(s,1,3);
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.add('SELECT '+st+' FROM main '+'WHERE '+S+' ORDER BY nazv');
Query1.Active:=true;
end;
procedure TForm6.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var i:integer;
begin
for i:=0 to DBGrid1.Columns.Count-1 do begin
if DBGrid1.Columns[i].Title.Caption='nazv' then DBGrid1.Columns[i].Title.Caption:='Название игры';
if DBGrid1.Columns[i].Title.Caption='god' then DBGrid1.Columns[i].Title.Caption:='Год выпуска';
if DBGrid1.Columns[i].Title.Caption='janr' then DBGrid1.Columns[i].Title.Caption:='Жанр';
if DBGrid1.Columns[i].Title.Caption='razr' then DBGrid1.Columns[i].Title.Caption:='Разработчик';
if DBGrid1.Columns[i].Title.Caption='izdat' then DBGrid1.Columns[i].Title.Caption:='Издатель';
if DBGrid1.Columns[i].Title.Caption='treb' then DBGrid1.Columns[i].Title.Caption:='Системные требования';
if DBGrid1.Columns[i].Title.Caption='cost' then DBGrid1.Columns[i].Title.Caption:='Цена за 1 копию (руб)';
end;
end;
procedure TForm6.BitBtn2Click(Sender: TObject);
begin
close;
end;
end.