Разработка базы данных

Реферат - Компьютеры, программирование

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

by vch).

Кнопка Перейти нужна для перехода в таблице IBTable1 к аппарату, который является текущим в таблице отобранных с помощью запроса аппаратов. Процедура нажатия на кнопку Перейти:

procedure TZ1.SpeedButton1Click(Sender: TObject);

begin

dm.IBTable1.Locate('KOD5',vararrayof([dm.zapr1.FieldByName('kod5').Value]),[]);

ShowWindow(formvvod2.Handle, SW_SHOW);

formvvod2.Show;

end;

Переход нужен для просмотра параметров, которые не выводятся запросом или же для изменения значений полей.

Поиск аппарата по группам

 

После выбора данного вида поиска на экране появляется форма “Svazka”, дополненная несколькими элементами. Ее вид:

 

 

Добавились 3 CheckBox для выбора по какому критерию мы будем отбирать аппараты. Одновременно больше одного критерия быть выбрано не может. Процедура нажатия на кнопку Выполнить:

procedure TSvazka.SpeedButton2Click(Sender: TObject);

begin

with dm do begin

Zapr3.Active:=false;

zapr3.SQL.Clear;

zapr3.SQL.Add('select *');

zapr3.SQL.Add('from naimm,modell,chastt,svodka');

if c3.Checked then begin

zapr3.SQL.Add('where svodka.k3= '+dm.ibtable4.fieldbyname('KOD3').AsString);

zapr3.SQL.Add('and modell.kod3= '+dm.ibtable4.fieldbyname('KOD3').AsString);

zapr3.SQL.Add('and modell.k2=naimm.kod2');

zapr3.SQL.Add('and svodka.k4=chastt.kod');

end

else if c2.Checked then begin

zapr3.SQL.Add('where svodka.k3=modell.kod3');

zapr3.SQL.Add('and naimm.kod2= '+dm.ibtable3.fieldbyname('KOD2').AsString);

zapr3.SQL.Add('and modell.k2= '+dm.ibtable3.fieldbyname('KOD2').AsString);

zapr3.SQL.Add('and svodka.k4=chastt.kod');

end

else if c1.Checked then begin

zapr3.SQL.Add('where svodka.k3=modell.kod3');

zapr3.SQL.Add('and modell.k2=naimm.kod2');

zapr3.SQL.Add('and naimm.k1= '+dm.ibtable2.fieldbyname('KOD1').AsString);

zapr3.SQL.Add('and svodka.k4=chastt.kod');

end;

zapr3.SQL.Add('and svodka.k4=chastt.kod');

zapr3.SQL.Add('order by vch');

if c1.Checked or c2.Checked or c3.Checked then Zapr3.Active:=true

else messagedlg('Надо выделить хоть одну категорию!',mtinformation,[mbok],0);

z3.label2.Caption:=inttostr(zapr3.RecordCount);

end;

ShowWindow(z3.Handle, SW_SHOW);

z3.Show;

end;

 

Процедура заполняет sql запрос компонента zapr3 и выводит на экран форму “Z3” с результатом:

В этой форме таблица связанна с zapr3, а кнопка Перейти работает также как кнопка, описанная выше. Количество отобранных записей выводится с помощью метода recordcount.

Загрузка запроса из файла.

Текст запроса загружается с помощью метода loadfromfile. Возможность загрузки запроса из файла очень удобна, так как запрос очень легко можно перенести и не надо перекомпилировать программу.

Пример:

Текст запроса в файле Все из сводки.sql:

select *

from svodka

/* грузит все из таблицы сводки */

 

Форма с результатами:

 

Список аппаратов в определенной части

Для этого запроса меня просили сделать отчет. Запрос показывает все аппараты в заданной воинской части со всеми их характеристиками.

Поиск идет по неполному совпадению (Like). Но если нужен отчет, то надо задать номер воинской части полностью (чтоб по нескольким воинским частям выборки не произошло).

 

Вид формы:

 

Текст sql запроса:

select vch,razdel,naim,model,serno,dspis,dvvod,cena,ser,zol,pt,pg,kod5

from chastt,razdell,naimm,modell,svodka

where

chastt.vch like :par

and svodka.k4=chastt.kod

and svodka.k3=modell.kod3

and naimm.kod2=modell.k2

and razdell.kod1=naimm.k1

order by vch,razdel,naim,model,dspis

 

Этот запрос я сделал без подзапросов (не знаю что быстрее, наверное быстрее без подзапросов, зато с подзапросами нагляднее).

Формирование отчета.

В Delphi 7 отчеты делаются уже не с помощью компонентов QReport, а с помощью Rave Report. Вкладки QReport больше не существует. Так как система Delphi 7 вышла недавно, то пришлось разбираться по справке. В общем то принципы остались те же разбитие документа на несколько полос и т. д. Для работы с отчетами на форме расположено два не визуальных компонента - RvProject1, с помощью которого идет связь с файлом проекта и RvDataSetConnection1 связь с набором данных. Файл проекта строится с помощью утилиты Rave Designer. Отчет при проектировании выглядит так:

 

 

 

 

 

Я сформировал отчет, выровнял и сохранил как otch4.rav.

 

Вид отчета при работе приложения:

 

Отчет вызывается по нажатии на кнопку Отчет через метод execute компонента rvproject1.

Заключение

Самый сложный этап формирование таблиц, связей между ними, ссылочной целостности. Типы данных в InterBase какие-то корявые. Float точность 7 знаков. Если вносишь десятичную дробь, целая часть у которой равна нулю, то в дробной части гарантируется точность до 7 знаков после запятой. Например, если внести 0.123, а потом сохранить запись, то в этом поле будет число 0.1230000004233858, что конечно же не наглядно и прибавляет программисту лишней головной боли. Тип varchar доставляет пробелов до длины строки опять неудобства если максимальная длина строки 120 символов, а там допустим слово из 5 букв, то будет сохранено слово+115 пробелов перед ним, теперь смотрим в поле видим пусто (если поле длиной меньше 120 символов). При попытке переформировать таблицу данные исчезают. Возможно это неудобство InterBase, но есть системы и лучше MS SQLServer, Oracl. После соединения с сетевой базой данных работа с ней мало чем отличается от работы с локальной базой данных.

Я получил приложение, которое осуществляет все виды операций с удаленной базой данных, такие, как вставка, удаление, выборка данных. Подключение идет через стандартные сетевые протоколы к серверу баз данных InterBase. Если сравнивать локальные и сетевые базы данных, то, на мой взгляд, будущее за сетевыми базами данных, а локальные базы буду?/p>