Визуальный построитель запросов на извлечение

Автор работы: Пользователь скрыл имя, 23 Октября 2012 в 09:16, курсовая работа

Краткое описание

Целью данной курсовой работы является разработка программы, способной на основе отношений строить запросы на извлечение информации посредством визуального построителя запросов.
На современном этапе развития информационных технологий, базы данных, а также умение пользователей получать нужную информацию приобретает всё большее значение.

Содержание

Введение………………………………………………………………………..…5
Постановка задачи………………………………………………………………..6
Реализация поставленной задачи…………………………………………….….8
Алгоритм построения запроса………………………………………….……….16
Тестирование и пример работы программы…………………………………...18
Заключение……………………………………………………………………….20
Список литературы………………………………………………………………21
Приложение……………………………………………………………………....22

Вложенные файлы: 1 файл

Визуальный построитель запросов.doc

— 268.00 Кб (Скачать файл)

end;

 

procedure TForm2.Button2Click(Sender: TObject);

var i,k:integer;

      f:boolean;

begin

//Измение в UseTAble

f:=true;

combobox1.Enabled:=true;

 

for i:=1 to strtoint(Unit1.UseTables[0].name) do

  if (useTables[i].name=combobox1.Text)and(useTables[i].psevdo=prev) then k:= i;

 

for i:= 1 to strtoint(usetables[0].name)do

  begin

  if (i<>k)and(usetables[i].name=combobox1.Text)and(usetables[i].psevdo='') then showmessage('повторяющаяся таблица не имеет псевдонима');

 

  if (i<>k)and(usetables[i].psevdo=edit1.Text)then

          if ((edit1.Text='')and(usetables[i].name=combobox1.Text))or(edit1.Text<>'')then

           begin

           showmessage('псевдоним не уникален');

           f:=false;

           end;

 

  end;

if f then begin    //если добалвен уникальный псевдоним

          unit1.usetables[k].psevdo:=edit1.Text;

          form1.ListBox1.Items[k-1]:=usetables[k].name+' :  '+usetables[k].psevdo;

          form2.Visible:=false;

          for i:= 1 to 20 do

          if edit1.Text='' then unit1.combo[i,0].items[k-1]:=usetables[k].name

                           else unit1.combo[i,0].items[k-1]:=usetables[k].psevdo;

          end;

button1.Enabled:=true;

end;

 

procedure TForm2.Button3Click(Sender: TObject);

var i, index:integer;

begin

//Удаление в UseTAble

if form1.FindTable(combobox1.Text,UseTables)<>0 then index:=form1.FindTable(combobox1.Text,UseTables)

                                                else index:=form1.FindTable(Edit1.Text,UseTables);

for i:= index to strtoint(UseTables[0].name)-1 do

begin

UseTables[i]:=UseTAbles[i+1]

end;

UseTables[0].name:=inttostr(StrToInt(UseTAbles[0].name)-1);

form1.ListBox1.Items.Delete(form1.listbox1.ItemIndex);

form2.Visible:=false;

end;

 

end.

 

 

unit Unit3;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls,syscat;

 

type

 

TImageForm=record

           IndexRadio:integer;

           edit1,edit2,edit3,edit4:string;

           combo1,combo2,combo3:string;

           usl:string;

           end;

 

  TForm3 = class(TForm)

    RadioButton1: TRadioButton;

    Label2: TLabel;

    RadioButton2: TRadioButton;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    RadioButton3: TRadioButton;

    ComboBox1: TComboBox;

    Button1: TButton;

    ComboBox2: TComboBox;

    ComboBox3: TComboBox;

    Edit4: TEdit;

    procedure initforms;

    procedure setindex(i:integer);

    procedure FormCreate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure ComboBox2Change(Sender: TObject);

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  index:integer;

  Form3: TForm3;

  frm:array[1..20] of TImageForm;

implementation

 

uses Unit1;

 

{$R *.dfm}

 

procedure tform3.initforms;

var i:integer;

begin

for i:=  1 to 20 do

begin

frm[i].IndexRadio:=0;

frm[i].edit1:='';

frm[i].edit2:='';

frm[i].edit3:='';

frm[i].combo1:='';

frm[i].combo2:='';

end;

end;

 

procedure tform3.setindex(i:integer);

begin

index:=i;

end;

 

procedure TForm3.FormCreate(Sender: TObject);

begin

combobox1.items.Add('=');

combobox1.items.Add('>');

combobox1.items.Add('<');

combobox1.items.Add('<=');

combobox1.items.Add('>=');

combobox2.Items.Add('значение');

combobox2.Items.Add('поле');

initforms;

end;

 

procedure TForm3.Button1Click(Sender: TObject);

var f:boolean;

begin

f:=true;

frm[index].edit1:=edit1.Text;

frm[index].edit2:=edit2.Text;

frm[index].edit3:=edit3.Text;

frm[index].edit4:=edit4.Text;

frm[index].combo1:=combobox1.Text;

frm[index].combo2:=combobox2.Text;

frm[index].combo3:=combobox3.Text;

if radiobutton1.Checked then begin

                             if GetTypeStr(unit1.Combo[index,0].text,unit1.Combo[index,1].text)<>'число'

                             then begin

                                     frm[index].IndexRadio:=1;

                                     frm[index].usl:=combo[index,0].text+'.'+ combo[index,1].text+' like ''' + edit1.Text+'''';

                                  end

                             else f:=false;

                             end;

if radiobutton2.Checked then begin

                             frm[index].IndexRadio:=2;

                             if GetTypeStr(unit1.Combo[index,0].text,unit1.Combo[index,1].text)='строка'

                                  then frm[index].usl:=unit1.combo[index,0].text+'.'+unit1.combo[index,1].text+' between '''+ edit2.Text  + ''' and '''+edit3.Text+''''

                                  else frm[index].usl:=unit1.combo[index,0].text+'.'+unit1.combo[index,1].text+' between '+ edit2.Text  + ' and '+edit3.Text;

                             end;

if radiobutton3.Checked then begin

                             frm[index].IndexRadio:=3;

                             if combobox2.Text='поле' then frm[index].usl:=unit1.combo[index,0].text+'.'+unit1.combo[index,1].text+combobox1.Text+combobox3.Text

                                                      else frm[index].usl:=unit1.combo[index,0].text+'.'+unit1.combo[index,1].text+combobox1.Text+edit4.Text;

                             end;

 

if f then begin

form3.Visible:=false;

form1.stringgrid2.cells[index,4]:=frm[index].usl;

end

else showmessage('Несоответствие типов');

 

 

end;

 

procedure TForm3.ComboBox2Change(Sender: TObject);

var i,j:integer;

begin

combobox3.Clear;

if combobox2.Text='поле' then begin

                              edit4.Visible:=false;

                              combobox3.Visible:=true;

                              for i:=1 to strtoint(unit1.usetables[0].name)do

                                 for j:=1 to strtoint(unit1.usetables[i].atribs[0].name)do

                                  if unit1.UseTables[i].atribs[j].typ=GetTypeStr(usetables[form1.findTable(unit1.Combo[index,0].text,usetables)].name,unit1.Combo[index,1].text)then

                                  if unit1.usetables[i].psevdo='' then combobox3.Items.Add(unit1.usetables[i].name+'.'+unit1.usetables[i].atribs[j].name)

                                                                  else combobox3.Items.Add(unit1.usetables[i].psevdo+'.'+unit1.usetables[i].atribs[j].name)

 

                              end

                         else begin

                              edit4.Visible:=true;

                              combobox3.Visible:=false;

                              end;

end;

 

end.




Информация о работе Визуальный построитель запросов на извлечение