Смекни!
smekni.com

База даних "Кафедра" в Access з меню MDI (стр. 5 из 7)

2.2.4 Розробка фізичної схеми бази даних

Таким чином,остаточна схема бази даних „Кафедра” виглядає так, як це зображено на рис.10.

Рис.10.

Схема даних маєзв’язки типу „Один-до-багатьох”.


3. .Інтерфейс користувача інформаціїної системи

Інтерфейскористувача – це зручний засіб спілкування з даними який дозволяє швидкозробити певну дію не використовуя ніяких особових команд.

Схема алгоритмудоступу до БД і меню наведена на рис.11.

Рис.11. Схемаалгоритму.


Інтерфейс задопомогою технології MDI у Windows реалізується наступним чином (рис.12):

Рис.12.

Меню „Файл” маєпідменю „Знищити об’єкт” (деяку таблицю).

Меню„Редагування” має підменю „Додати новий запис”, „”Знищити запис”, „На останнійзапис”.

Меню „Сервіс” маєпідменю „Доступ до даних” (відкриття сторінки доступу до даних через Інтернет).

Меню „Вихід”здійснює вихід з інформаційної системи зі збереженням усіх даних.


4. Програмні додатки, які реалізують пункт меню

Модуль реалізаціїменю у вікнах MDI наведений у лістингу 1.

Лістинг 1

unit MainFrm;

interface

uses

WinTypes,WinProcs, Classes, Graphics, Forms, Controls, Menus,

StdCtrls,Messages, Dialogs, SysUtils, ComCtrls,

ToolWin, ExtCtrls, Buttons, ImgList;

type

TMainForm =class(TForm)

mmMain:TMainMenu;

OpenDialog:TOpenDialog;

mmiFile:TMenuItem;

mmiExit:TMenuItem;

N3: TMenuItem;

mmiOpen:TMenuItem;

mmiNew:TMenuItem;

mmiWindow:TMenuItem;

mmiArrangeIcons:TMenuItem;

mmiCascade:TMenuItem;

mmiTile:TMenuItem;

mmiCloseAll:TMenuItem;

tlbMain:TToolBar;

ilMain:TImageList;

tbFileOpen:TToolButton;

 { File EventHandlers }

proceduremmiNewClick(Sender: TObject);

proceduremmiOpenClick(Sender: TObject);

proceduremmiExitClick(Sender: TObject);

 { Window EventHandlers }

proceduremmiTileClick(Sender: TObject);

proceduremmiArrangeIconsClick(Sender: TObject);

proceduremmiCascadeClick(Sender: TObject);

proceduremmiCloseAllClick(Sender: TObject);

public

{ User definedmethods }

procedureOpenTextFile(EditForm: TForm; Filename: string);

procedureOpenBMPFile(FileName: String);

procedure Open MDBFile(RTFForm:TForm; FileName: string);

procedureSetToolBar(AToolBar: TToolBar);

end;

var

MainForm:TMainForm;

implementation

uses MDIBmpFrm,MdiEditFrm, MdiRtfFrm, FTypForm;

const

{ Defineconstants to represent file name extensions }

BMPExt  ='.BMP';  // Bitmapped file

TextExt   ='.TXT';  // Text file

RTFExt  = '.MDB'; // File BD

{$R *.DFM}

procedureTMainForm.mmiNewClick(Sender: TObject);

begin

{ Determine thefile type the user wishes to open by calling the

GetFileTypefunction. Call the appropriate method based on the

retrieved filetype. }

case GetFileTypeof

mrTXT:OpenTextFile(nil, ''); // Open a text file.

mrMDB: OpenMDBFile(nil,'');  // Open an MDB file.

mrBMP:

 begin

  { Set thedefalt filter for OpenDialog1 for BMP files. }

 OpenDialog.FilterIndex := 2;

 mmiOpenClick(nil);

 end;

end;

end;

procedureTMainForm.mmiOpenClick(Sender: TObject);

var

Ext: string[4];

begin

{ Call theappropriate method based on the file type of the file

selected fromOpenDialog1 }

ifOpenDialog.Execute then

begin

{ Get the file'sextension and compare it to determine the

file type theuser is opening. Call the appropriate method and

pass in the filename. }

Ext :=ExtractFileExt(OpenDialog.FileName);

ifCompareStr(UpperCase(Ext), TextExt) = 0 then

OpenTextFile(ActiveMDIChild,OpenDialog.FileName)

else ifCompareStr(UpperCase(Ext), BMPExt) = 0 then

OpenBMPFile(OpenDialog.FileName)

else ifCompareStr(UpperCase(Ext), MDBExt) = 0 then

Open MDBFile(ActiveMDIChild,OpenDialog.FileName);

end;

end;

procedureTMainForm.mmiExitClick(Sender: TObject);

begin

Close;

end;

{ Window EventHandlers }

procedureTMainForm.mmiTileClick(Sender: TObject);

begin

Tile;

end;

procedureTMainForm.mmiArrangeIconsClick(Sender: TObject);

begin

 ArrangeIcons;

end;

procedureTMainForm.mmiCascadeClick(Sender: TObject);

begin

Cascade;

end;

procedureTMainForm.mmiCloseAllClick(Sender: TObject);

var

i: integer;

begin

{ Close all formsin revers order as they appear in the

MDIChildrenproperty. }

for i :=MdiChildCount - 1 downto 0  do

MDIChildren[i].Close;

end;

{ User DefinedMethods }

procedureTMainForm.OpenTextFile(EditForm: TForm; FileName: string);

begin

{ If EditForm isof a TEditForm type, then give the user the option

 of loading thefile contents into this form. Otherwise, create a

 new TEditForminstance and load the file into that instance }

if (EditForm<> nil) and (EditForm is TMdiEditForm) then

if MessageDlg('Loadfile into current form?', mtConfirmation,

[mbYes, mbNo], 0)= mrYes then

begin

TMdiEditForm(EditForm).OpenFile(FileName);

 Exit;

end;

{ Create a newTEditForm and call its OpenFile() method }

withTMdiEditForm.Create(self) do

if FileName<> '' then

OpenFile(FileName)

end;

procedureTMainForm.OpenMDBFile(MDBForm: TForm; FileName: string);

begin

{ If MDBForm isof a TMDBForm type, then give the user the option

 of loading thefile contents into this form. Otherwise, create a

 new TMDBForminstance and load the file into that instance }

if (MDBForm<> nil) and (MDBForm is TMdiMDBForm) then

ifMessageDlg('Load file into current form?', mtConfirmation,

[mbYes, mbNo], 0)= mrYes then begin

  (MDBForm asTMdiMDBForm).OpenFile(FileName);

Exit;

end;

{ Create a new TMDBFormand call its OpenFile() method }

with TMdiMDBForm.Create(self)do

if FileName<> '' then

 OpenFile(FileName);

end;

procedureTMainForm.OpenBMPFile(FileName: String);

begin

{ Create a newTBMPForm instances and load a BMP file into it. }

withTMdiBmpForm.Create(self) do

OpenFile(FileName);

end;

procedureTMainForm.SetToolBar(AToolBar: TToolBar);

begin

if (MDIChildCount= 1) and (AToolBar = nil) then

tlbMain.Parent :=self

else begin

tlbMain.Parent :=nil;

if not (AToolBar= nil) then

AToolBar.Parent:= self;

end;

end;

end.

Контрольнийприклад роботи випливаючого меню наведено на рис.13.

Рис.13.

Для доступу до БДв локальній мережі та через інтернет розроблена сторінка доступу до даних, якаможе бути розміщена на сервері.

Поперше нижскористатися пунктами випливаючого меню, необхідно закрити форму (кнопка„Закрити форму”), яка зявляється автоматично при відкритті БД „Кафедра”, так якменю демонструє команди на прикладі цієї форми.


5. Запити на мові SQL. Структура бази даних

5.1 Структура БД„Кафедра” наведена на наступному рис.14.

Рис 14.

5.2 Запити до бази даних і відповіді на них

Запит на вибіркуз БД інформації, для заповнення таблиці за №групи1 та №групи5 мовою SQL:

SELECT [Base1].[№ кафедри], [Base 1].[№ групи 1], [Base 1].[№ групи 5]

FROM [Base 1]

WHERE ((([Base1].[№ групи 1]) Like "C*#") AND (([Base 1].[№ групи 5]) Like"C*#"));

Запит 1 у режимітаблиці (рис.15):

Рис.15.

Запит 2 з використаннямвнутрішнього підзапиту мовою SQL:

TRANSFORMFirst([Base 1].[№ групи 1]) AS [First-№ групи 1]

SELECT [Base1].[№ кафедри], First([Base 1].[№ групи 1]) AS [Итоговое значение № групи 1]

FROM [Base 1]

GROUP BY [Base1].[№ кафедри]

PIVOT [Base 1].[№групи 2];

Запит з використаннямвнутрішнього підзапиту у режимі таблиці (рис.16):