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

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование




Вµсто перечисления всех полей добавляется ключевой символ *.

Если включен режим Исключение дубликатов, то в запрос будет добавлено ключево слово DISTINCT и в результирующем отношении будут устранены значения-дубликаты.

В списке Таблицы следует выбрать таблицы, из которых производится извлечение данных (раздел FROM запроса).

В разделе Условия запроса можно накладывать дополнительные условия по выборке данных (раздел WHERE запроса). Для этого следует выбрать из выпадающих списков сопоставляемые величины (или ввести значения вручную) и нужный предикат, а затем нажать кнопку Добавить условие. Также можно менять способ логической связи между условиями (И, ИЛИ). Ненужные (неправильные) условия можно удалить, выбрав соответсвующее условие в списке и нажав кнопку Удалить условие.

В списке Группировка можно добавить поля, по которым будет проводиться группировка результируищих данных (раздел GROUP BY запроса). При этом можно добавлять дополнительные условия для группировки (раздел HAVING запроса) с использовнием агрегирующих функций.

В списке Сортировка можно выбрать поля, по которым будет произведена сортировка (раздел ORDER BY запроса). Также с помощью переключателя Направление можно выбрать направление сортировки - прямое или обратное.

В списке Временные таблицы можно выбрать способ использования вспомогательных таблиц (раздел INTO запроса). При выборе пункта Обычный метод в запрос будет добавлено ключевое слово TEMP. Вариант SCRATCH отличается от TEMP тем, что временная таблица фрагментируЂельных таблиц (раздел INTO запроса). При выборе пункта Обычный метод в запрос будет добавлено ключевое слово TEMP. Вариант SCRATCH отличается от TEMP тем, что временная таблица фрагментируется по всем дискам.

В поле SQL-запрос генерируется созданный запрос. Это происходит автоматически при любом изменении параметров запроса.

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

Заключение

Целью данной курсовой работы было создание приложения, реализующего визуальное создание запросов на извлечение данных.

В результате проведенной работы был рассмотрен теоретический материал по теме SQL-запросов, было написано приложение (визуальный построитель запросов на извлечение).

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

1. Кузнецов, С.Д. Основы современных баз данных [Текст]: учебное пособие. - М.: Интернет-университет информационных технологий, 2007. - 720 с.

. Свободная энциклопедия [Электронный ресурс]. - SQL - Википедия. - Режим доступа:

Приложение А (обязательное)

Листинг программы

Unit1;

interface

, SysUtils, Graphics, Controls, Forms, StdCtrls, Classes, CheckLst,, ExtCtrls, Math;

= class(TForm)_Querry: TGroupBox;_Tables: TGroupBox;_GroupBy: TGroupBox;_Fields: TGroupBox;_Having: TGroupBox;_OrderBy: TGroupBox;_Where: TGroupBox;_NewCondition: TGroupBox;_Querry: TMemo;_Having: TMemo;_Tables: TCheckListBox;_GroupBy: TCheckListBox;_Fields: TCheckListBox;_OrderBy: TCheckListBox;_Distinct: TCheckBox;_AllFields: TCheckBox;_OrderBy: TRadioGroup;_Into: TRadioGroup;_Agg: TComboBox;_Where1: TComboBox;_Where2: TComboBox;_Where3: TComboBox;_Agg: TSpeedButton;_NewCondition: TSpeedButton;_DeleteCondition: TSpeedButton;_AND: TSpeedButton;_OR: TSpeedButton;_Where: TListBox; ListBox_Logics: TListBox;

CheckListBox_TablesClickCheck(Sender: TObject);CheckBox_DistinctClick(Sender: TObject);UpdateSelectedFields;UpdateSelectedTables;UpdateSelectedGroups;UpdateHaving;UpdateWhere;UpdateOrder;UpdateInto;UpdateQuerry;CheckBox_AllFieldsClick(Sender: TObject);SpeedButton_AggClick(Sender: TObject);CheckListBox_GroupByClick(Sender: TObject);CheckListBox_FieldsClickCheck(Sender: TObject);Memo_HavingChange(Sender: TObject);CheckListBox_OrderByClickCheck(Sender: TObject);RadioGroup_OrderByClick(Sender: TObject);RadioGroup_IntoClick(Sender: TObject);Memo_WhereChange(Sender: TObject);ComboBox_Where2Change(Sender: TObject);SpeedButton_NewConditionClick(Sender: TObject);SpeedButton_DeleteConditionClick(Sender: TObject);SpeedButton_ANDClick(Sender: TObject);SpeedButton_ORClick(Sender: TObject);;

: TForm1;,,,,,,: String;

{$R *.dfm}

TForm1.UpdateSelectedFields;i, count: Byte;:= '';:= 0;CheckBox_AllFields.Checked then begin:= '*';i := 0 to 4 do begin_Fields.Checked[i] := TRUE;CheckListBox_GroupBy.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_GroupBy.Items.Add(CheckListBox_Fields.Items[i]);;CheckListBox_OrderBy.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_OrderBy.Items.Add(CheckListBox_Fields.Items[i]);;ComboBox_Where1.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_Where1.Items.Add(CheckListBox_Fields.Items[i]);;ComboBox_Where3.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_Where3.Items.Add(CheckListBox_Fields.Items[i]);;;else begini := 0 to 4 do beginCheckListBox_Fields.Checked[i] then begin(count = 0) then begin:= CheckListBox_Fields.Items[i]else begin:= SelectedFields + ', ' + CheckListBox_Fields.Items[i];;(count);CheckListBox_GroupBy.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_GroupBy.Items.Add(CheckListBox_Fields.Items[i]);;CheckListBox_OrderBy.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_OrderBy.Items.Add(CheckListBox_Fields.Items[i]);;ComboBox_Where1.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_Where1.Items.Add(CheckListBox_Fields.Items[i]);;ComboBox_Where3.Items.IndexOf(CheckListBox_Fields.Items[i]) = -1 then begin_Where3.Items.Add(CheckListBox_Fields.Items[i]);;else beginCheckListBox_GroupBy.Items.IndexOf(CheckListBox_Fields.Items[i]) >= 0 then begin_GroupBy.Items.Delete(CheckListBox_GroupBy.Items.IndexOf(CheckListBox_Fields.Items[i]));;CheckListBox_OrderBy.Items.IndexOf(CheckListBox_Fields.Items[i]) >= 0 then begin_OrderBy.Items.Delete(CheckListBox_OrderBy.Items.IndexOf(CheckListBox_Fields.Items[i]));;ComboBox_Where1.Items.IndexOf(CheckListBox_Fields.Items[i]) >= 0 then begin_Where1.Items.Delete(ComboBox_Where1.Items.IndexOf(CheckListBox_Fields.Items[i]));;ComboBox_Where3.Items.IndexOf(CheckListBox_Fields.Items[i]) >= 0 then begin_Where3.Items.Delete(ComboBox_Where3.Items.IndexOf(CheckListBox_Fields.Items[i]));;ComboBox_Where1.Text = CheckListBox_Fields.Items[i] then begin_Where1.Text := '';;ComboBox_Where3.Text = CheckListBox_Fields.Items[i] then begin_Where3.Text := '';;;;;;

TForm1.UpdateSelectedTables;i, count: Byte;:= '';:= 0;i := 0 to 1 do beginCheckListBox_Tables.Checked[i] then begin(count = 0) then begin:= ' FROM ' + CheckListBox_Tables.Items[i]else begin:= SelectedTables + ', ' + CheckListBox_Tables.Items[i];;(count);;;;

TForm1.UpdateSelectedGroups;i, count: Byte;:= '';:= 0;CheckListBox_GroupBy.Items.Count > 0 then begini := 0 to CheckListBox_GroupBy.Items.Count-1 do beginCheckListBox_GroupBy.Checked[i] then begin(count = 0) then begin:= #13#10' GROUP BY ' + CheckListBox_GroupBy.Items[i]else begin:= SelectedGroups + ', ' + CheckListBox_GroupBy.Items[i];;(count);;;;;

TForm1.UpdateHaving;i: Byte;(CheckListBox_GroupBy.Items.Count > 0) AND

(Length(Memo_Having.Text) > 0) then begini := 0 to CheckListBox_GroupBy.Items.Count-1 do beginCheckListBox_GroupBy.Checked[i] then begin:= SelectedGroups + ' HAVING ' + Memo_Having.Text;;;;;;

TForm1.UpdateOrder;i, count: Byte;:= '';:= 0;(CheckListBox_OrderBy.Items.Count > 0) then begini := 0 to CheckListBox_OrderBy.Items.Count-1 do beginCheckListBox_OrderBy.Checked[i] then begin(count = 0) then begin:= #13#10' ORDER BY ' + CheckListBox_GroupBy.Items[i]else begin:= OrderBy + ', ' + CheckListBox_GroupBy.Items[i];;(count);;;(count > 0) then beginRadioGroup_OrderBy.ItemIndex of

: OrderBy := OrderBy + ' ASC';

: OrderBy := OrderBy + ' DESC';;;;;

TForm1.UpdateInto;RadioGroup_Into.ItemIndex of

: Into := '';

: Into := #13#10' INTO TEMP';

: Into := #13#10' INTO SCRATCH';;;

TForm1.UpdateWhere;i: Byte;: String[4];:= '';(ListBox_Where.Items.Count > 0) then begin:= #13#10' WHERE';i := 0 to ListBox_Where.Items.C