С точки зрения пользователя, база данных — это программа, которая обеспечивает работу с информацией. При запуске такой программы на экране, как правило, появляется таблица, просматривая которую пользователь может найти интересующие его сведения. Если система позволяет, то он может внести изменения в базу данных: добавить новую информацию или удалить ненужную.
С точки зрения программиста, база данных — это набор файлов, содержащих информацию. Разрабатывая базу данных для пользователя, программист создает программу, которая обеспечивает работу с файлами данных.
В настоящее время существует достаточно большое количество программных систем, позволяющих создавать и использовать локальные (dBASE, FoxPro, Access, Paradox) и удаленные (Interbase, Oracle, Sysbase, Infomix, Microsoft SQL Server) базы данных.
В состав Delphi входят компоненты, позволяющие создавать программы работы с файлами данных, созданными различными системами: от dBASE до Infomix и Oracle. Delphi также позволяет программисту создавать файлы баз данных в различных форматах, используя различные утилиты. В нашем случае база данных, используемая в программе, создана в системе InterBase, при помощи утилиты IBConsole.
База данных содержит 1 таблицу: ANKETA, описание полей которой приведено ниже.
Nom – поле, которое является ключевым в таблице «ANKETA». Это поле имеет тип данных как числовой – Smallint, и автоматически увеличивает своё значение. Этот тип данных как поле Autoincrement (+).
Fam – Поле предназначенное для хранения фамилии. Тип данных поля: Varchar. Максимально допустимый размер поля – 20 символ.
Name – Поле, предназначенное для хранения имени. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символ.
Otch – Поле, предназначенное для хранения отчества. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символ.
Pol – Поле, предназначенное для хранения информации о пола. Тип данных поля: Varchar. Максимально допустимый размер поля – 1 символов.
Rost – Поле, предназначенное для хранения информации о росте. Тип данных поля: Varchar. Максимально допустимый размер поля – 5 символов.
Ves – Поле, предназначенное для хранения информации о весе. Тип данных поля: Varchar. Максимально допустимый размер поля – 5 символов.
Foto – Поле, предназначенное для хранения фотографии. Тип данных поля: BLOB.
DR – Поле, предназначенное для хранения даты рождения. Тип данных поля: DATE.
Ard_str – Поле, предназначенное для хранения информации о стране. Тип данных поля: Varchar. Максимально допустимый размер поля – 25 символов.
Ard_obl – Поле, предназначенное для хранения информации об области. Тип данных поля: Varchar. Максимально допустимый размер поля – 25 символов.
Ard_gor – Поле, предназначенное для хранения информации о городе. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символов.
Ard_yl – Поле, предназначенное для хранения информации о улице. Тип данных поля: Varchar. Максимально допустимый размер поля – 20 символов.
Ard_dom – Поле, предназначенное для хранения информации о доме. Тип данных поля: Varchar. Максимально допустимый размер поля – 5 символов.
Ard_kv – Поле, предназначенное для хранения информации о квартире. Тип данных поля: Varchar. Максимально допустимый размер поля – 5 символов.
Ard_ind – Поле, предназначенное для хранения информации о индексе. Тип данных поля: Varchar. Максимально допустимый размер поля – 6 символов.
Ard_tel – Поле, предназначенное для хранения информации о телефоне. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символов.
Mroz_str – Поле, предназначенное для хранения информации о стране, месте рождения. Тип данных поля: Varchar. Максимально допустимый размер поля – 25 символов.
Mroz_obl – Поле, предназначенное для хранения информации об области, месте рождения. Тип данных поля: Varchar. Максимально допустимый размер поля – 25 символов.
Mroz_gor – Поле, предназначенное для хранения информации о городе, месте рождения. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символов.
Grazdan – Поле, предназначенное для хранения информации о гражданстве. Тип данных поля: Varchar. Максимально допустимый размер поля – 15 символов.
Obrazov – Поле, предназначенное для хранения информации об образовании. Тип данных поля: Varchar. Максимально допустимый размер поля – 30 символов.
Nom_strax_sved – Поле, предназначенное для хранения информации о номере страхового сведетельства. Тип данных поля: Varchar. Максимально допустимый размер поля – 13 символов.
INN – Поле, предназначенное для хранения информации о ИНН. Тип данных поля: Varchar. Максимально допустимый размер поля – 12 символов.
Tryd_kn_seriya – Поле, предназначенное для хранения информации о серии трудовой книжки. Тип данных поля: Varchar. Максимально допустимый размер поля – 6 символов.
Tryd_kn_nomer – Поле, предназначенное для хранения информации о номере трудовой книжки. Тип данных поля: Varchar. Максимально допустимый размер поля – 20 символов.
Paspost_nom – Поле, предназначенное для хранения информации о номере паспорта. Тип данных поля: Varchar. Максимально допустимый размер поля – 4 символов.
Paspost_ ser – Поле, предназначенное для хранения информации о серии паспорта. Тип данных поля: Varchar. Максимально допустимый размер поля – 6 символов.
Paspost_vidan – Поле, предназначенное для хранения информации о том кем паспорт был выдан. Тип данных поля: Varchar. Максимально допустимый размер поля – 50 символов.
Paspost_data – Поле, предназначенное для хранения информации о том когда паспорт был выдан. Тип данных поля: DATE.
Экспериментальный раздел
Описание процесса отладки
Успешное завершение процесса компиляции не означает, что в программе нет ошибок. Убедиться, что программа работает правильно можно только в процессе проверки ее работоспособности, который называется тестирование.
Обычно программа редко сразу начинает работать так, как надо, или работает правильно только на некотором ограниченном наборе исходных данных. Это свидетельствует о том, что в программе есть алгоритмические ошибки. Процесс поиска и устранение ошибок называется отладкой.
Delphi обладает мощнейшим, встроенным в редактор графическим отладчиком, позволяющим находить и устранять ошибки в коде. Мы можем установить точки остановки, проверить и изменить переменные, при помощи пошагового выполнения в точности понять поведение программы.
В процессе отладки программы я столкнулся с ошибкой. Эта ошибка возникла, когда программой не была найдена база данных.
Исправил я эту ошибку, создав папку «BD» и поместил в неё базу «BD». Далее в свойстве DatabaseName компонента IBDatabase1 я написал следуюшее:
BD\BD.gdb
Программа автоматически определяет свое место положения и сообщает компоненту IBDatabase путь до базы данных.
Характеристика программы
Разработанный программный продукт представляет собой программу, которая формирует базу данных и соответствующее приложение для автоматизации ведения кадрового учёта некоторого предприятия.
При запуске программы появляется окошко, содержащее компоненты визуализирующие содержимое базы данных, кнопки, с помощью которых можно добавлять, изменять, удалять записи в базе данных.
Окно о программе
Инструкция пользователя
Для работы в данной программе вам не потребуются большие навыки работы с Windows-приложениями. Сам интерфейс программы прост и ясен.
Для начала работы необходимо в корневой директории диска открыть папку «Анкетные данные», в которой находиться программа и запустить файл Анкетные данные.exe. При запуске программы на экране появиться главное окно в котором вы можите просмотреть все личные данные. При нажатии на кнопку «Поиск» можно произвести поиск по трем полям: фамилия, пол, ИНН. При нажатии на кнопку «Сортировка» можно провести сортировку по полям указанным в программе.
При нажатии на вкладку «Редактировать» возникает окошко с данными той записи, на которой стоит указатель. Здесь можно изменить информацию любую информацию, имеющуюся в базе данных.
При нажатии на кнопку «Фильтрация» можно включить или выключить фильтр. Фильтрация происходит по всем полям базы данных.
При выборе вкладки «Добавление записи» можно добавить в базу свои анкетные данные предварительно заполнив все поля после чего нажимаем на кнопку «Добавить» поля добавляются. Также можно добавить свою фотографию нажав на кнопку «Добавить фото» и прописать путь к своей фотографии.
При нажатии на вкладку «Редактирование записей» возникает окошко с данными той записи, на которой стоит указатель. Здесь можно изменить информацию любую информацию, имеющуюся в базе данных.
Чтобы вывести распечатать анкетные данные в главном окне выбираем нужное поле нажимаем кнопку «Отчет» и распечатываем.
При нажатии на кнопку «О программе» на панели сверху, возникает окно с информацией о разработчике данного программного продукта.
Заключение
Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий.
Программный продукт, разработанный в рамках данного курсового проекта, предназначается для проектирования баз данных и соответствующего приложение для автоматизации ведения кадрового учёта некоторого предприятия.
Программа имеет возможности фильтровать записи, осуществлять поиск необходимой записи, печатать записи, содержащиеся в базе.
Литература
1. Бобровский С.И. Delphi7. Учебный курс.- СПб.: Питер.2004.
2. Избачков Ю. С., Петров В. Н. Информационные системы: Учебник. - СПб.: Питер, 2005.
3. Волков Ю.С., Петров В.Н. Информационные системы. - СПб.: Питер. 2005.
4. Рудаков А. В. Технология разработки программных продуктов: Учеб. пособие. – М.: Издательский центр «Академия», 2005.
5. Стандартная документация Delphi.
Приложение
Основной модуль приложения
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {DataModule2: TDataModule},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5};
{$R *.res}
begin
Application.Initialize;
Application.Title := 'Àíêåòíûå äàííûå';
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TDataModule2, DataModule2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm5, Form5);
Application.Run;
end.
Модуль хранения невизуальных компонентов
unit Unit2;
interface
uses
SysUtils, Classes, IBDatabase, DB;
type
TDataModule2 = class(TDataModule)
IBDatabase1: TIBDatabase;
IBTransaction1: TIBTransaction;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule2: TDataModule2;
implementation
{$R *.dfm}
end.
Модуль основной формы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, DBGrids, IBCustomDataSet, IBTable, ExtCtrls,
StdCtrls, Mask, DBCtrls, XPMan, Menus, IBQuery, ComCtrls, ExtDlgs;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Panel1: TPanel;
Panel2: TPanel;
DBGrid1: TDBGrid;
XPManifest1: TXPManifest;
OpenDialog1: TOpenDialog;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
IBQuery1: TIBQuery;
IBQuery2: TIBQuery;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox4: TGroupBox;
Label19: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Edit18: TEdit;
Edit20: TEdit;
Edit21: TEdit;
Edit22: TEdit;
GroupBox5: TGroupBox;
Label24: TLabel;
Label25: TLabel;
Edit23: TEdit;
Edit24: TEdit;
GroupBox2: TGroupBox;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit15: TEdit;
Edit14: TEdit;
GroupBox3: TGroupBox;
Label17: TLabel;
Label18: TLabel;
Label20: TLabel;
Edit16: TEdit;
Edit17: TEdit;
Edit19: TEdit;
GroupBox6: TGroupBox;
Label28: TLabel;
Label29: TLabel;
Edit27: TEdit;
Edit28: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label26: TLabel;
Label27: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit5: TEdit;
Edit4: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit25: TEdit;
Edit26: TEdit;
Button1: TButton;
Button3: TButton;
TabSheet3: TTabSheet;
IBQuery1NOM: TSmallintField;
IBQuery1FAM: TIBStringField;
IBQuery1NAME: TIBStringField;
IBQuery1OTCH: TIBStringField;
IBQuery1POL: TIBStringField;
IBQuery1ROST: TIBStringField;
IBQuery1VES: TIBStringField;
IBQuery1FOTO: TBlobField;
IBQuery1DR: TDateField;
IBQuery1ADR_STR: TIBStringField;
IBQuery1ADR_OBL: TIBStringField;
IBQuery1ADR_GOR: TIBStringField;
IBQuery1ADR_YL: TIBStringField;
IBQuery1ADR_DOM: TIBStringField;
IBQuery1ADR_KV: TIBStringField;
IBQuery1ADR_IND: TIBStringField;
IBQuery1ADR_TEL: TIBStringField;
IBQuery1MROZ_STR: TIBStringField;
IBQuery1MROZ_OBL: TIBStringField;
IBQuery1MROZ_GOR: TIBStringField;
IBQuery1GRAZDAN: TIBStringField;
IBQuery1OBRAZOV: TIBStringField;
IBQuery1NOM_STRAX_SVED: TIBStringField;
IBQuery1INN: TIBStringField;
IBQuery1TRYD_KN_SERIYA: TIBStringField;
IBQuery1TRYD_KN_NOMER: TIBStringField;
IBQuery1PASPOST_NOM: TIBStringField;
IBQuery1PASPOST_SER: TIBStringField;
IBQuery1PASPOST_VIDAN: TIBStringField;
IBQuery1PASPOST_DATA: TDateField;
GroupBox8: TGroupBox;
Label30: TLabel;
Label31: TLabel;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Label35: TLabel;
Label36: TLabel;
Label37: TLabel;
Label38: TLabel;
Label39: TLabel;
GroupBox9: TGroupBox;
Label40: TLabel;
Label41: TLabel;
GroupBox10: TGroupBox;
Label42: TLabel;
Label43: TLabel;
Label44: TLabel;
GroupBox11: TGroupBox;
Label45: TLabel;
Label46: TLabel;
Label47: TLabel;
Label48: TLabel;
Label49: TLabel;
Label50: TLabel;
Label51: TLabel;
Label52: TLabel;
GroupBox12: TGroupBox;
Label53: TLabel;
Label54: TLabel;
Label55: TLabel;
Label56: TLabel;
GroupBox13: TGroupBox;
Label57: TLabel;
Label58: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
DBEdit9: TDBEdit;
DBEdit10: TDBEdit;
DBEdit11: TDBEdit;
DBEdit12: TDBEdit;
DBEdit13: TDBEdit;
DBEdit14: TDBEdit;
DBEdit15: TDBEdit;
DBEdit16: TDBEdit;
DBEdit17: TDBEdit;
DBEdit18: TDBEdit;
DBEdit19: TDBEdit;
DBEdit20: TDBEdit;
DBEdit21: TDBEdit;
DBEdit22: TDBEdit;
DBEdit23: TDBEdit;
DBEdit24: TDBEdit;
DBEdit25: TDBEdit;
DBEdit26: TDBEdit;
DBEdit27: TDBEdit;
DBEdit28: TDBEdit;
GroupBox7: TGroupBox;
ComboBox1: TComboBox;
Edit500: TEdit;
Button2: TButton;
DBNavigator3: TDBNavigator;
IBQueryFoto: TIBQuery;
OpenPictureDialog1: TOpenPictureDialog;
DBImage2: TDBImage;
DBImage1: TDBImage;
GroupBox14: TGroupBox;
Label59: TLabel;
Label60: TLabel;
Label61: TLabel;
Label62: TLabel;
Label63: TLabel;
Label64: TLabel;
Label65: TLabel;
Label66: TLabel;
Label67: TLabel;
Label68: TLabel;
Edit29: TEdit;
Edit30: TEdit;
Edit31: TEdit;
Edit32: TEdit;
Edit33: TEdit;
Edit34: TEdit;
Edit35: TEdit;
Edit36: TEdit;
Edit37: TEdit;
GroupBox15: TGroupBox;
Label69: TLabel;
Label70: TLabel;
Edit38: TEdit;
Edit39: TEdit;
GroupBox16: TGroupBox;
Label71: TLabel;
Label72: TLabel;
Label73: TLabel;
Edit40: TEdit;
Edit41: TEdit;
Edit42: TEdit;
GroupBox17: TGroupBox;
Label74: TLabel;
Label75: TLabel;
Label76: TLabel;
Label77: TLabel;
Label78: TLabel;
Label79: TLabel;
Label80: TLabel;
Label81: TLabel;
Edit43: TEdit;
Edit44: TEdit;
Edit45: TEdit;
Edit46: TEdit;
Edit47: TEdit;
Edit48: TEdit;
Edit49: TEdit;
Edit50: TEdit;
GroupBox18: TGroupBox;
Label82: TLabel;
Label83: TLabel;
Edit51: TEdit;
Edit52: TEdit;
GroupBox19: TGroupBox;
Label84: TLabel;
Label85: TLabel;
Label86: TLabel;
Label87: TLabel;
Edit53: TEdit;
Edit54: TEdit;
Edit55: TEdit;
Edit56: TEdit;
Button4: TButton;
IBQuery3: TIBQuery;
DBImage3: TDBImage;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
Button5: TButton;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
IBQuery4: TIBQuery;
N18: TMenuItem;
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure IBQuery1AfterScroll(DataSet: TDataSet);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N18Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4, Unit5;
{$R *.dfm}
procedure TForm1.FormDestroy(Sender: TObject);
begin
IBQuery1.Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute Then
begin
DBImage2.Picture.LoadFromFile(OpenPictureDialog1.FileName);
IBQueryFoto.ParamByName('FOTO').LoadFromFile(OpenPictureDialog1.FileName,ftBlob);
IBQueryFoto.ParamByName('Nom').Value := IBQuery1.FieldByName('Nom').Value;
Try
IBQueryFoto.ExecSQL;
Except
DataModule2.IBTransaction1.RollbackRetaining;
ShowMessage('Ошибка установки фотографии');
Exit;
End;
DataModule2.IBTransaction1.CommitRetaining;
IBQuery1.Close;
IBQuery1.Open;
ShowMessage('Фотография установлена');
end;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
s : String;
begin
case ComboBox1.ItemIndex of
0 : S := 'Fam';
1 : S := 'Pol';
2 : S := 'INN';
end;
IBQuery1.Locate(S, Edit500.Text,[loPartialKey]);
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Form3.QuickRep1.Preview;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
IBQuery2.Params.ParamByName('Fam').Value:=Edit1.Text;
IBQuery2.Params.ParamByName('Name').Value:=Edit2.Text;
IBQuery2.Params.ParamByName('Otch').Value:=Edit3.Text;
IBQuery2.Params.ParamByName('Pol').Value:=Edit4.Text;
IBQuery2.Params.ParamByName('DR').Value:=Edit5.Text;
IBQuery2.Params.ParamByName('Ves').Value:=Edit6.Text;
IBQuery2.Params.ParamByName('Rost').Value:=Edit7.Text;
IBQuery2.Params.ParamByName('Adr_str').Value:=Edit8.Text;
IBQuery2.Params.ParamByName('Adr_obl').Value:=Edit9.Text;
IBQuery2.Params.ParamByName('Adr_gor').Value:=Edit10.Text;
IBQuery2.Params.ParamByName('Adr_yl').Value:=Edit11.Text;
IBQuery2.Params.ParamByName('Adr_dom').Value:=Edit12.Text;
IBQuery2.Params.ParamByName('Adr_kv').Value:=Edit13.Text;
IBQuery2.Params.ParamByName('Adr_ind').Value:=Edit14.Text;
IBQuery2.Params.ParamByName('Adr_tel').Value:=Edit15.Text;
IBQuery2.Params.ParamByName('Mroz_str').Value:=Edit16.Text;
IBQuery2.Params.ParamByName('Mroz_obl').Value:=Edit17.Text;
IBQuery2.Params.ParamByName('Paspost_nom').Value:=Edit18.Text;
IBQuery2.Params.ParamByName('Mroz_gor').Value:=Edit19.Text;
IBQuery2.Params.ParamByName('Paspost_ser').Value:=Edit20.Text;
IBQuery2.Params.ParamByName('Paspost_vidan').Value:=Edit21.Text;
IBQuery2.Params.ParamByName('Paspost_data').Value:=Edit22.Text;
IBQuery2.Params.ParamByName('Tryd_kn_seriya').Value:=Edit23.Text;
IBQuery2.Params.ParamByName('Tryd_kn_nomer').Value:=Edit24.Text;
IBQuery2.Params.ParamByName('Obrazov').Value:=Edit25.Text;
IBQuery2.Params.ParamByName('Grazdan').Value:=Edit26.Text;
IBQuery2.Params.ParamByName('Nom_strax_sved').Value:=Edit27.Text;
IBQuery2.Params.ParamByName('INN').Value:=Edit28.Text;
try
IBQuery2.ExecSQL;
Except
DataModule2.IBTransaction1.RollbackRetaining;
ShowMessage('Невозможно передать запись');
Exit;
end;
DataModule2.IBTransaction1.CommitRetaining;
ShowMessage('Запись добавлена');
IBQuery1.Close;
IBQuery1.Open;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if MessageDlg('Обновить анкетные данные?', mtConfirmation, [mbYes, mbNo],0)=mrYes then
begin
IBQuery4.Params.ParamByName('Nom').Value:=IBQuery1NOM.Value;
IBQuery4.Params.ParamByName('Fam').Value:=Edit29.Text;
IBQuery4.Params.ParamByName('Name').Value:=Edit30.Text;
IBQuery4.Params.ParamByName('Otch').Value:=Edit31.Text;
IBQuery4.Params.ParamByName('Pol').Value:=Edit33.Text;
IBQuery4.Params.ParamByName('DR').Value:=Edit32.Text;
IBQuery4.Params.ParamByName('Ves').Value:=Edit34.Text;
IBQuery4.Params.ParamByName('Rost').Value:=Edit35.Text;
IBQuery4.Params.ParamByName('Adr_str').Value:=Edit43.Text;
IBQuery4.Params.ParamByName('Adr_obl').Value:=Edit44.Text;
IBQuery4.Params.ParamByName('Adr_gor').Value:=Edit45.Text;
IBQuery4.Params.ParamByName('Adr_yl').Value:=Edit46.Text;
IBQuery4.Params.ParamByName('Adr_dom').Value:=Edit47.Text;
IBQuery4.Params.ParamByName('Adr_kv').Value:=Edit48.Text;
IBQuery4.Params.ParamByName('Adr_ind').Value:=Edit50.Text;
IBQuery4.Params.ParamByName('Adr_tel').Value:=Edit49.Text;
IBQuery4.Params.ParamByName('Mroz_str').Value:=Edit40.Text;
IBQuery4.Params.ParamByName('Mroz_obl').Value:=Edit41.Text;
IBQuery4.Params.ParamByName('Paspost_nom').Value:=Edit53.Text;
IBQuery4.Params.ParamByName('Mroz_gor').Value:=Edit42.Text;
IBQuery4.Params.ParamByName('Paspost_ser').Value:=Edit54.Text;
IBQuery4.Params.ParamByName('Paspost_vidan').Value:=Edit55.Text;
IBQuery4.Params.ParamByName('Paspost_data').Value:=Edit56.Text;
IBQuery4.Params.ParamByName('Tryd_kn_seriya').Value:=Edit51.Text;
IBQuery4.Params.ParamByName('Tryd_kn_nomer').Value:=Edit52.Text;
IBQuery4.Params.ParamByName('Obrazov').Value:=Edit36.Text;
IBQuery4.Params.ParamByName('Grazdan').Value:=Edit37.Text;
IBQuery4.Params.ParamByName('Nom_strax_sved').Value:=Edit38.Text;
IBQuery4.Params.ParamByName('INN').Value:=Edit39.Text;
try
IBQuery4.ExecSQL;
Except
DataModule2.IBTransaction1.RollbackRetaining;
ShowMessage('Запись не добавлена');
exit;
end;
DataModule2.IBTransaction1.CommitRetaining;
ShowMessage('Запись обновлена');
IBQuery1.Close;
IBQuery1.Open;
end;
end;
procedure TForm1.IBQuery1AfterScroll(DataSet: TDataSet);
begin
if IBQuery1.FieldValues['Fam']<> null then
Edit29.Text:=IBQuery1.FieldValues['Fam'];
if IBQuery1.FieldValues['Name']<> null then
Edit30.Text:=IBQuery1.FieldValues['Name'];
if IBQuery1.FieldValues['Otch']<> null then
Edit31.Text:=IBQuery1.FieldValues['Otch'];
if IBQuery1.FieldValues['Pol']<> null then
Edit33.Text:=IBQuery1.FieldValues['Pol'];
if IBQuery1.FieldValues['DR']<> null then
Edit32.Text:=IBQuery1.FieldValues['DR'];
if IBQuery1.FieldValues['Ves']<> null then
Edit34.Text:=IBQuery1.FieldValues['Ves'];
if IBQuery1.FieldValues['Rost']<> null then
Edit35.Text:=IBQuery1.FieldValues['Rost'];
if IBQuery1.FieldValues['Adr_str']<> null then
Edit43.Text:=IBQuery1.FieldValues['Adr_str'];
if IBQuery1.FieldValues['Adr_obl']<> null then
Edit44.Text:=IBQuery1.FieldValues['Adr_obl'];
if IBQuery1.FieldValues['Adr_gor']<> null then
Edit45.Text:=IBQuery1.FieldValues['Adr_gor'];
if IBQuery1.FieldValues['Adr_yl']<> null then
Edit46.Text:=IBQuery1.FieldValues['Adr_yl'];
if IBQuery1.FieldValues['Adr_dom']<> null then
Edit47.Text:=IBQuery1.FieldValues['Adr_dom'];
if IBQuery1.FieldValues['Adr_kv']<> null then
Edit48.Text:=IBQuery1.FieldValues['Adr_kv'];
if IBQuery1.FieldValues['Adr_ind']<> null then
Edit50.Text:=IBQuery1.FieldValues['Adr_ind'];
if IBQuery1.FieldValues['Adr_tel']<> null then
Edit49.Text:=IBQuery1.FieldValues['Adr_tel'];
if IBQuery1.FieldValues['Mroz_str']<> null then
Edit40.Text:=IBQuery1.FieldValues['Mroz_str'];
if IBQuery1.FieldValues['Mroz_obl']<> null then
Edit41.Text:=IBQuery1.FieldValues['Mroz_obl'];
if IBQuery1.FieldValues['Paspost_nom']<> null then
Edit53.Text:=IBQuery1.FieldValues['Paspost_nom'];
if IBQuery1.FieldValues['Mroz_gor']<> null then
Edit42.Text:=IBQuery1.FieldValues['Mroz_gor'];
if IBQuery1.FieldValues['Paspost_ser']<> null then
Edit54.Text:=IBQuery1.FieldValues['Paspost_ser'];
if IBQuery1.FieldValues['Paspost_vidan']<> null then
Edit55.Text:=IBQuery1.FieldValues['Paspost_vidan'];
if IBQuery1.FieldValues['Paspost_data']<> null then
Edit56.Text:=IBQuery1.FieldValues['Paspost_data'];
if IBQuery1.FieldValues['Tryd_kn_seriya']<> null then
Edit51.Text:=IBQuery1.FieldValues['Tryd_kn_seriya'];
if IBQuery1.FieldValues['Tryd_kn_nomer']<> null then
Edit52.Text:=IBQuery1.FieldValues['Tryd_kn_nomer'];
if IBQuery1.FieldValues['Obrazov']<> null then
Edit36.Text:=IBQuery1.FieldValues['Obrazov'];
if IBQuery1.FieldValues['Grazdan']<> null then
Edit37.Text:=IBQuery1.FieldValues['Grazdan'];
if IBQuery1.FieldValues['Nom_strax_sved']<> null then
Edit38.Text:=IBQuery1.FieldValues['Nom_strax_sved'];
if IBQuery1.FieldValues['INN']<> null then
Edit39.Text:=IBQuery1.FieldValues['INN'];
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Form4.Notebook1.PageIndex := 0;
Form4.GroupBox1.Caption := ' По фамилии: ';
Form4.ShowModal;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Form4.Notebook1.PageIndex := 1;
Form4.GroupBox1.Caption := ' По полу: ';
Form4.ShowModal;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Form4.Notebook1.PageIndex := 2;
Form4.GroupBox1.Caption := ' По дате рождения: ';
Form4.ShowModal;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select * from anketa order by fam');
IBQuery1.Open;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select * from anketa order by dr');
IBQuery1.Open;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select * from anketa order by rost');
IBQuery1.Open;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute Then
begin
DBImage3.Picture.LoadFromFile(OpenPictureDialog1.FileName);
IBQueryFoto.ParamByName('FOTO').LoadFromFile(OpenPictureDialog1.FileName,ftBlob);
IBQueryFoto.ParamByName('Nom').Value := IBQuery1.FieldByName('Nom').Value;
Try
IBQueryFoto.ExecSQL;
Except
DataModule2.IBTransaction1.RollbackRetaining;
ShowMessage('Ошибка установки фотографии');
Exit;
End;
DataModule2.IBTransaction1.CommitRetaining;
IBQuery1.Close;
IBQuery1.Open;
ShowMessage('Фотография установлена');
end;
end;
procedure TForm1.N13Click(Sender: TObject);
begin
PageControl1.ActivePageIndex := 1;
end;
procedure TForm1.N14Click(Sender: TObject);
begin
PageControl1.ActivePageIndex := 2;
end;
procedure TForm1.N15Click(Sender: TObject);
begin
if MessageBox(Handle,'Вы действительно хотите удалить запись?','Подтверждение удаления', MB_YESNO or MB_ICONWARNING)=mrYes then
begin
IBQuery3.ParamByName('NOM').Value := IBQuery1.FieldByName('NOM').Value;
Try
IBQuery3.ExecSQL;
Except
DataModule2.IBTransaction1.RollbackRetaining;
MessageBox(Handle,'Невозможно удалить запись.','Ошибка удаления записи', MB_OK or MB_ICONERROR);
Exit;
End;
DataModule2.IBTransaction1.CommitRetaining;
IBQuery1.Close;
IBQuery1.Open;
MessageBox(Handle,'Запись удалина.','Событие', MB_OK or MB_ICONINFORMATION);
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
IBQuery1.Open;
end;
procedure TForm1.N16Click(Sender: TObject);
begin
Form5.ShowModal;
end;
procedure TForm1.N18Click(Sender: TObject);
begin
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('SELECT * FROM ANKETA');
IBQuery1.Open;
end;
end.
Модуль формы с фильтрацией
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm4 = class(TForm)
GroupBox1: TGroupBox;
Notebook1: TNotebook;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Button4: TButton;
Button5: TButton;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
Edit3: TEdit;
Button6: TButton;
Button7: TButton;
Button8: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit1, Unit2, Unit3;
{$R *.dfm}
procedure TForm4.Button1Click(Sender: TObject);
begin
Form1.IBQuery1.Close;
form1.IBQuery1.SQL.Clear;
Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE Fam='+#39+Edit1.text+#39'');
Form1.IBQuery1.Open;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
Form1.IBQuery1.Close;
form1.IBQuery1.SQL.Clear;
Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA');
Form1.IBQuery1.Open;
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
Edit1.Text:='';
end;
procedure TForm4.Button5Click(Sender: TObject);
begin
Form1.IBQuery1.Close;
form1.IBQuery1.SQL.Clear;
Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA');
Form1.IBQuery1.Open;
end;
procedure TForm4.Button4Click(Sender: TObject);
begin
Form1.IBQuery1.Close;
form1.IBQuery1.SQL.Clear;
if RadioButton1.Checked=true then
Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE POL='+#39+'М'+#39);
if RadioButton2.Checked=true then
Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE POL='+#39+'Ж'+#39);
Form1.IBQuery1.Open;
end;
procedure TForm4.Button6Click(Sender: TObject);
begin
Form1.IBQuery1.Close;
form1.IBQuery1.SQL.Clear;
Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA WHERE(DR>='+#39+Edit2.text+#39+') and (DR<='+#39+Edit3.text+#39+') ');
Form1.IBQuery1.Open;
end;
procedure TForm4.Button8Click(Sender: TObject);
begin
Edit2.Text:='';
Edit3.Text:='';
end;
procedure TForm4.Button7Click(Sender: TObject);
begin
Form1.IBQuery1.Close;
form1.IBQuery1.SQL.Clear;
Form1.IBQuery1.SQL.Add('SELECT * FROM ANKETA');
Form1.IBQuery1.Open;
end;
end.
Дата: 2019-05-28, просмотров: 215.