FRMAdd.DBLookupComboBoxM3.Visible:=false;
FRMAdd.DBLookupComboBoxM4.Visible:=false;
FRMAdd.DBEditm1.Visible:=false;
FRMAdd.DBEditm2.Visible:=false;
FRMAdd.Label1.Caption:=('ФИО Клиента');
FRMAdd.Label2.Caption:=('Название машины');
FRMAdd.Label3.Caption:=('Дата заключения');
FRMAdd.Label4.Caption:=('Дата окончания');
FRMAdd.Label5.Caption:=('');
FRMAdd.Label6.Caption:=('');
end;
procedure set_add_form_mashin;
begin
FRMAdd.DBLookupComboBoxD1.Visible:=false;
FRMAdd.DBLookupComboBoxD2.Visible:=false;
FRMAdd.DBEditD1.Visible:=false;
FRMAdd.DBEditD2.Visible:=false;
FRMAdd.DBLookupComboBoxM1.Visible:=true;
FRMAdd.DBLookupComboBoxM2.Visible:=true;
FRMAdd.DBLookupComboBoxM3.Visible:=true;
FRMAdd.DBLookupComboBoxM4.Visible:=true;
FRMAdd.DBEditm1.Visible:=true;
FRMAdd.DBEditm2.Visible:=true;
FRMAdd.Label1.Caption:=('Процессор');
FRMAdd.Label2.Caption:=('Жесткий диск');
FRMAdd.Label3.Caption:=('Память');
FRMAdd.Label4.Caption:=('Скорость подключения');
FRMAdd.Label5.Caption:=('Название');
FRMAdd.Label6.Caption:=('Цена');
end;
procedure TFRMTable.Button1Click(Sender: TObject);
begin
if DBGrid1.DataSource=DM.DS_DOGOVOR then begin
DM.T_DOGOVOR.Append;
set_add_form_dogovor;
FRMAdd.Caption:='Добавить договор';
end else
if DBGrid1.DataSource=DM.DS_MASHIN then begin
DM.T_MASHIN.Append;
set_add_form_mashin;
FRMAdd.Caption:='Добавить конфигурацию';
end;
FRMAdd.show;
end;
procedure TFRMTable.Button2Click(Sender: TObject);
begin
if DBGrid1.DataSource=DM.DS_DOGOVOR then begin
DM.T_DOGOVOR.Edit;
set_add_form_dogovor;
FRMAdd.Caption:='Редактировать договор';
end else
if DBGrid1.DataSource=DM.DS_MASHIN then begin
DM.T_MASHIN.Edit;
set_add_form_mashin;
FRMAdd.Caption:='Редактировать конфигурацию';
end;
FRMAdd.show;
end;
procedure TFRMTable.Button3Click(Sender: TObject);
begin
if DBGrid1.DataSource=DM.DS_DOGOVOR then begin
DM.T_DOGOVOR.Delete;
end else
if DBGrid1.DataSource=DM.DS_MASHIN then begin
DM.T_MASHIN.Delete;
end;
end;
procedure TFRMTable.Button4Click(Sender: TObject);
var s:string;
begin
if DBGrid1.DataSource=DM.DSQ_DOGOVOR then begin
DM.QP_Dogovor.Close;
s:='SELECT NAIM_KLIENT, NAIM_MASH, CENA, Date_zakl, Date_okonch, ';
s:=s+' Stoimost FROM PR_DOGOVOR ';
s:=s+'WHERE NAIM_MASH =('''+edit1.Text+''')';
DM.QP_Dogovor.SQL.Clear;
DM.QP_Dogovor.SQL.Add(s);
try
dm.QP_Dogovor.Open;
except
showmessage('ошибка');
end;
end else
if DBGrid1.DataSource=DM.DSP_Poisk then begin
dm.P_Poisk.close;
dm.P_Poisk.Parameters.ParamByName('@p').Value:=Edit1.Text;
dm.P_Poisk.Open;
end;
end;
end.
unit UnitAdd;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, Mask;
type
TFRMAdd = class(TForm)
Button1: TButton;
DBEditD1: TDBEdit;
DBEditD2: TDBEdit;
DBLookupComboBoxD1: TDBLookupComboBox;
DBLookupComboBoxD2: TDBLookupComboBox;
Button2: TButton;
DBLookupComboBoxM1: TDBLookupComboBox;
DBLookupComboBoxM2: TDBLookupComboBox;
DBLookupComboBoxM3: TDBLookupComboBox;
DBLookupComboBoxM4: TDBLookupComboBox;
DBEditM1: TDBEdit;
DBEditM2: TDBEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FRMAdd: TFRMAdd;
implementation
uses UnitDM, UnitTable;
{$R *.dfm}
procedure TFRMAdd.Button1Click(Sender: TObject);
begin
if FRMTable.DBGrid1.DataSource=DM.DS_DOGOVOR then begin
DM.T_Dogovor.Fields[5].AsFloat:=round(DM.T_Dogovor.Fields[4].AsDateTime-DM.T_Dogovor.Fields[3].AsDateTime)*(round(DM.T_Mashin.Fields[6].AsInteger/30));
DM.T_DOGOVOR.Post;
DM.T_DOGOVOR.Active:=false;
DM.T_DOGOVOR.Active:=true;
DM.T_DOGOVOR.Append;
end
else if FRMTable.DBGrid1.DataSource=DM.DS_MASHIN then begin
DM.T_MASHIN.Post;
DM.T_MASHIN.Active:=false;
DM.T_MASHIN.Active:=true;
DM.T_MASHIN.Append;
end;
end;
procedure TFRMAdd.Button2Click(Sender: TObject);
begin
close;
end;
end.
Главная форма (рис. 3.1) позволяет получить доступ ко всем функциям программы, путем использования главного меню. Так же на ней отображен весь список договоров.
Рисунок 3.1 Главная форма
С помощью главного меню открывается редактор таблиц, путем использования кнопок «Добавить», «Редактировать», «Удалить» можно внести изменения в состав таблиц (рис. 3.2, 3.3). При нажатии кнопки «Ок» на форме добавления/редактирования записи автоматически посчитается сумма договора на основании длительности договора и стоимости аренды данной конфигурации.
Рисунок 3.2 Таблица «Договора» и форма для внесения изменений.
Рисунок 3.3 Таблица «Прайс-лист» и форма для внесения изменений.
При использовании второго пункта меню «Справочники» Можно внести изменения в имеющиеся в базе данных справочники (рис. 3.4 – 3.8)
Рисунок 3.4 Справочник «Клиенты».
Рисунок 3.5 Справочник «Процессоры».
Рисунок 3.6 Справочник «Жесткие диски».
Рисунок 3.7 Справочник «Оперативная память».
Рисунок 3.8 Справочник «Скорость».
Для удобства просмотра хранящейся в базе данных информации сделаны представления, которые можно увидеть с помощью пункта меню «Представления» (рис. 3.9, 3.10)
Рисунок 3.9 Представление Договоров.
Рисунок 3.10 Представление Прайс-листа.
Для получения каких-либо сведений из базы данных используются запросы. На рис 3.11 показан результат запроса на выборку всех арендаторов заданной конфигурации.
Рисунок 3.11 Запрос.
Для удобства просмотра и возможности вывода информации на печать была использована программа RaveReports с помощью которой можно создавать отчеты. На рис. 3.12 показан внешний вид получаемого отчета.
Рисунок 3.12 Вид отчета.
В результате работы была создана реляционная база данных в Microsoft SQL Server, содержащая 7 таблиц, 5 из которых справочники. Клиентское приложение написанное с помощью CodeGear Delphi позволяющее просматривать, изменять и искать нужную информацию. Были рассмотрены различные способы внесения и получения данных из базы данных. Построен отчет для вывода на печать с помощью программы RaveReports. Изучены свойства и методы компонентов CodeGear Delphi для работы с базами данных.