Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VP_LAB_BD_DELPHI.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
10.19 Mб
Скачать

6.1.14. Проект мысалының листингісі

Листинг 6.1. Есептелетін өрістерді анықтау үшін және сұрыптауға арналған өрістердің негізгі формасының модулі әдістерінің фрагменті

//Table1 үшін есептелетін өрістің мәнін анықтау

procedure TForm1.Table1CalcFields(DataSet: TDataSet);

begin

Table1NRS.Value := Table1RS.Value * 1.5;

end;

//--------------------------------------------------------

//Query1 үшін есептелетін өрістің мәнін анықтау

procedure TForm1.Query1CalcFields(DataSet: TDataSet);

begin

Query1NRS.Value := Query1RS.Value * 1.5;

end;

//--------------------------------------------------------

//зачетка номері бойынша сұрыптау

procedure TForm1.N16Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1;

if Table1.Filtered=True then Table1.Filtered:=False;

Table1.IndexFieldNames:='NZ';

end;

//--------------------------------------------------------

// FIO бойынша сұрыптау

procedure TForm1.N17Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1;

if Table1.Filtered=True then Table1.Filtered:=False;

Table1.IndexFieldNames:='FIO';

end;

//--------------------------------------------------------

// RS бойынша сұрыптау

procedure TForm1.N10Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1;

if Table1.Filtered=True then Table1.Filtered:=False;

Table1.IndexFieldNames:='RS';

end;

Листинг 6.2. Локальді дерек қорымен жұмыс істеуге арналған қосымшаның негізгі формасының модулінің тексті

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, Grids,Menus, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBTables, Mask, Menus, StdCtrls, ComCtrls, Variants;

type

TForm1 = class(TForm) //-тип – мұрагер

//ДҚ-мен жұмыс істеуге арналған компоненттер

Table1: TTable; //-деректер кестесімен байланыс үшін

Query1: TQuery; //-статикалық сұраныс және фильтр үшін

Query2: TQuery; //-динамикалық сұраныс үшін

Query3: TQuery; //-құрылатын сұраныс үшін

DataSource1: TDataSource;//-көрсетілім компоненттерімен

//байланыс үшін

DBNavigator1: TDBNavigator;//-мәліметтерді басқару үшін

DBGrid1: TDBGrid; //-қордың мәліметтерінен

//тұратын кесте

//Кестенің статикалық

//өрістерінің аттары

Table1NRS: TFloatField; //-жаңа стипендия–есептелетін өріс

Table1NZ: TSmallintField;//-зачетка номері

Table1FIO: TStringField; //-фамилия

Table1RS: TFloatField; //-стипендия мөлшері

Table1FOTO: TGraphicField;//-фотосурет

//Жазбалар мен терезелер

Label1: TLabel; //-Зачетка номері

DBEdit1: TDBEdit; //-NZ үшін терезе

Label2: TLabel; //-Фамилия, инициалдар

DBEdit2: TDBEdit; //-FIO үшін терезе

Label3: TLabel; //-Стипендия

DBEdit3: TDBEdit; //-RS үшін терезе

Label4: TLabel; //-Жаңа стипендия

DBEdit4: TDBEdit; //-NRS үшін терезе

Label5: TLabel; //-Студенттің фотосуреті

DBImage1: TDBImage; //-FOTO үшін терезе

MainMenu1: TMainMenu; //Негізгі мәзір

//мәзірдегі пункттердің аттары

N1: TMenuItem; //-Показать данные

N8: TMenuItem; //-все

N9: TMenuItem; //-Отбора запросами с пунктами:

N11: TMenuItem; //-с N>150

N12: TMenuItem; //-с заданным NZ

N15: TMenuItem; //-с заданным запросом

N10: TMenuItem; //-Отбора фильтром с пунктами

N13: TMenuItem; //-для таблицы

N14: TMenuItem; //-для Query

N2: TMenuItem; //-Сортировать по:

N16: TMenuItem; //-номерам зачеток

N17: TMenuItem; //-фамилиям

N18: TMenuItem; //-размеру стипендии

N3: TMenuItem; //-Поиск

N19: TMenuItem; //-по фамилии

N20: TMenuItem; //-быстрый

N21: TMenuItem; //-ближайшего подходящего

N22: TMenuItem; //-постепенный

N23: TMenuItem; //-по фамилии и стипендии

N4: TMenuItem; //-Вычислить

N24: TMenuItem; //-сумму стипендий

N25: TMenuItem; //-среднюю стипендию

N5: TMenuItem; //-График

N6: TMenuItem; //-Отчет с пунктами

N26: TMenuItem; //-предварительный просмотр

//отчета

N27: TMenuItem; //-печать отчета

N7: TMenuItem; //-Выход

Timer1: TTimer; //-уақытты көрсету үшін

StatusBar1: TStatusBar; //-күй панелі

//Query компоненттерінің

статикалық өрістерінің аттары

Query1NZ: TSmallintField; //-зачетка номері

Query1FIO: TStringField; //-фамилия

Query1RS: TFloatField; //-стипендия мөлшері

Query1NRS: TFloatField; //-жаңа стипендия–есептелетін өріс

Query1FOTO: TGraphicField;//-фотосурет

Query2NZ: TSmallintField; //-зачетка номері

Query2FIO: TStringField; //-фамилия

Query2RS: TFloatField; //-стипендия мөлшері

Query2FOTO: TGraphicField;//-фотосурет

Query2NRS: TFloatField; //-жаңа стипендия–есептелетін өріс

Query3NZ: TSmallintField;//-зачетка номері

Query3FIO: TStringField; //-фамилия

Query3RS: TFloatField; //-стипендия мөлшері

Query3FOTO: TGraphicField;//-фотосурет

Query3NRS: TFloatField; //-жаңа стипендия–есептелетін өріс

Label11: TLabel; //Сумма стипендий=

Panel1: TPanel; //-Label6,Edit1,Poisk үшін

Edit1: TEdit; //-қажет фамилияны енгізу үшін

Poisk: TButton; //-Искать – іздеуді бастау

Label6: TLabel; //-Введите ФИО и нажмите Искать

Panel2: TPanel; //-Label7,MaskEdit1 үшін

MaskEdit1: TMaskEdit; //-зачетка номері немесе

//-стипендия мөлшерін енгізу үшін

Label7: TLabel; //-Введите номер зачетки

Panel3: TPanel; //-Label8,Edit2 үшін

Label8: TLabel; //-Вводите фамилия: по завершени

двойной щелчок в окне

Edit2: TEdit; //-біртіндеп іздеу кезінде ФИО

//енгізу үшін

//Қосымшаның әдістері

procedure Timer1Timer(Sender: TObject);//-таймерді қолдану

//үшін

procedure Table1CalcFields(DataSet: TDataSet);//-Table1

//өрісін есептеу үшін

procedure MaskEdit1DblClick(Sender: TObject);//іздеу үшін мән

//енгізу

procedure Poisk Click(Sender: TObject);//-іздеуге арналған

//Искать батырмасы

procedure Edit2Change(Sender: TObject);//-терезедегі мәннің

//-өзгеруі кезінде

//Мәзір командаларын

//жүзеге асыру әдістері

procedure N5Click(Sender: TObject); //-График

procedure N7Click(Sender: TObject); //-Выход

//-Показать данные:

procedure N8Click(Sender: TObject); //-все

//Отобранные запросами:

procedure N11Click(Sender: TObject); //-с N>150

procedure N12Click(Sender: TObject); //-с заданным NZ

//-Сортировать по:

procedure N16Click(Sender: TObject); //-номерам зачеток,

//-фамилии, стипендии

//-Поиск

procedure N19Click(Sender: TObject); //-по фамилии и стипенди

procedure N22Click(Sender: TObject); //-постепенный

procedure Edit2DblClick(Sender: TObject);//біртіндеп іздеудің

//аяқталуы

//-Вычислить

procedure N24Click(Sender: TObject); //-сумму стипендий

procedure N25Click(Sender: TObject); //-среднюю стипендию

//-Отчет

procedure N26Click(Sender: TObject); //-предварительный

//-просмотр отчета

procedure N27Click(Sender: TObject); //-печать отчета

procedure Label11Click(Sender: TObject); //-хабарламалы

//белгіні жасыру

Var Form1: TForm1;

J:integer;

S:real;

implementation

uses Unit2, Unit3;

{$R *.dfm}

//-----------------------------------------------------------

//Ағымдағы уақытты көрсету

procedure TForm1.Timer1Timer(Sender: TObject);

begin

StatusBar1.Panels[2].Text:=TimeToStr(Time);

end;

//-----------------------------------------------------------

//есептелетін өрістің мәнін анықтау – 1 Әдіс Table1, Query1, //Query2, Query3 үшін

procedure TForm1.Table1CalcFields(DataSet: TDataSet);

begin

with DataSet do //деректер жиынына параметрдің қосылуы

FieldByName('RNS').AsFloat:=FieldByName('RS').AsFloat * 1.5;

end;

//-----------------------------------------------------------

//Tag-та берілген номер бойынша сұрыптау: Tag=0 - NZ,1 – RS,2 //– FIO, N16-N18 пункттері

procedure TForm1.N16Click(Sender: TObject);

begin DataSource1.DataSet:=Table1; // Table1 арқылы ДҚ-ға

//қосылу

if Table1.Filtered=True then

Table1.Filtered:=False; //фильтрді өшіру

with Sender as TMenuItem do //мәзір пунктіне қосылу

//өріс номері бойынша IndexDefs өрістер тізімінен сұрыптау //үшін өріс атын орнату. Өріс номері Tag қасиетінде берілген

Table1.IndexFieldNames:=Table1.IndexDefs[0].Fields;

end;

//-----------------------------------------------------------

//Барлық мәліметтерді көрсету

procedure TForm1.N8Click(Sender: TObject);

begin // Table1 арқылы ДҚ-ға қосылу

if Table1.Filtered=True then

Table1.Filtered:=False; //фильтрді өшіру

DataSource1.DataSet:=Table1; // Table1 арқылы көрсетуге қосу

end;

//-----------------------------------------------------------

// Query1 статикалық сұранысымен іріктеу, N>150

procedure TForm1.N11Click(Sender: TObject);

begin

if Query1.Filtered=true then

Query1.Filtered:=false; //фильтрді өшіру

if Query1.Active=false then Query1.Active:=true;//Query1-ді

// белсенді ету

DataSource1.DataSet:=Query1; //Query1 арқылы көрсетуге қосу

end;

//-----------------------------------------------------------

//N12-N15 мәзір пункттері үшін әдістер. Мәліметтерді //іріктеуге дайындық.J Tag-тың мәнімен анықталады(6.2кесте)

procedure TForm1.NZ1Click(Sender: TObject);

begin

With sender as TMenuItem do begin //мәзір пунктіне қосылу

J:=Tag; //іріктеу белгісінің мәнін орнату

Panel2.Visible:=True; // Label7 және MaskEdit1-мен

Label7.WordWrap:=True;Label7.Height:=39;Label7.Width:=146;

Label7.Caption:='Введите номер зачетки и дважды щелкните в окне';

end;

end;

//-----------------------------------------------------------

// MaskEdit1 терезесіне шертуден-мәндерді іріктеу процесі

procedure TForm1.MaskEdit1DblClick(Sender: TObject);

var A:integer; //TNZ үшін параметр мәні

begin // динамикалық сұраныс бойынша көрсету үшін

мәліметтерді іріктеу

case J of

1: begin //Query2 арқылы мәліметтерді іріктеу - SQL динамикалық сұраныс бойынша

if Query2.Filtered=true then Query2.Filtered:=false;

DataSource1.DataSet:=Query2;

A:=StrToInt(MaskEdit1.Text); //А-шындық параметрі

with Query2 do begin //Query2-ге қосылу

Close; //деректер жиынтығын жабу

//Query2.Active:=False;//немесе

//ParamByName('NZ').Value:=A;//параметрді жіберу немесе

Params[0].AsInteger:=A;

Open; //деректер жиынтығын ашу

//Query2.Active:= True; //немесе

end;end;

2: begin // SQL берілген(құрылатын) сұранысы бойынша іріктеу

DataSource1.DataSet:=Query3; // Query3 бойынша қосылу

Query3.Close; //ДҚ-дан Query3-ті ажырату

Query3.SQL.Clear; //алдынғы сұранысты кетіру

Query3.SQL.Add //сұраныстың құрылуы

('SELECT * FROM Stud1 WHERE Stud1.NZ > '+MaskEdit1.Text);

Query3.Open; // Query3-тің белсенді болуы

end;

3: begin // Table1 фильтрі арқылы мәліметтерді іріктеу

DataSource1.DataSet:=Table1; //Table1 арқылы қосылу

if Table1.Filtered=false then

Table1.Filtered:=True; //фильтрді қосу

Table1.Filter:='NZ>'+MaskEdit1.Text; //фильтрді құру

end;

4: begin // Query1 фильтрі арқылы мәліметтерді іріктеу

DataSource1.DataSet:=Query1; // Query1 арқылы қосылу

Query1.Close; // Query1-ді ажырату

Query1.Filter:='NZ>'+MaskEdit1.Text; //фильтрді құру

if Query1.Filtered=false then

Query1.Filtered:=True; //фильтрді қосу

//фильтрдің приоритеті SQL-ден жоғарырақ

Query1.Open; //фильтр бойынша Query1-дің белсенді болуы

end;

end; // case

Panel2.Visible:=False; // Panel2-ні көрінбейтін ету

end;

//-----------------------------------------------------------

//N19 – N21, 23 пункттері үшін әдістер

//Іздеуге дайындық; J Tag-тың 6.4 кестедегі мәнімен //анықталады

procedure TForm1.N19Click(Sender: TObject);

begin //ағымдағы мәзір пунктіне қосылу

With sender as TMenuItem do begin

J:=Tag; //іздеу белгісі мәнін орнату

Panel1.Visible:=True; // Panel1-ді көрінетін ету

Edit1.SetFocus; // Edit1-ге фокус

if J=8 then begin //фамилия және стипендия бойынша

//іздеу үшін

Panel2.Visible:=True;

MaskEdit1.SetFocus;

Label2.Caption:='Введите размер стипендии:';

end;

end;

end;

//-----------------------------------------------------------

//Искать – іздеу процесі

procedure TForm1.PoiskClick(Sender: TObject);

procedure S1; //сәтті нәтиже туралы хабарлама

begin

MessageDlg('Запись найдена',mtInformation,[mbOK],0);

end;

procedure S2; //сәтсіз нәтиже туралы хабарлама

begin Beep;

MessageDlg('Запись не найдена',mtInformation,[mbOK],0);

end;

begin

case J of //фамилия бойынша іздеу

5: begin Table1.IndexFieldNames:='FIO';

Table1.SetKey;

Table1.FieldByName('FIO').AsString:=Edit1.Text;

if Table1.GotoKey then S1 //жазба табылды

else S2; //жазба табылған жоқ

end;

6: if Table1.Locate('FIO',Edit1.Text,[loCaseInsensitive, loPartialKey])

then S1 else S2;

7: begin //ең жақын сәйкестік бойынша іздеу

Table1.IndexFieldNames:='FIO'; //индекс орнату міндетті

Table1.SetKey; //деректер жинағын іздеу режиміне

// ауыстырады

Table1.FieldByName('FIO').AsString:=Edit1.Text;

Table1.GotoNearest; // жақын сәйкестік бойынша іздеу

end;

8: begin //фамилия және стипендия бойынша іздеу

if Table1.Locate('FIO;RS',

VarArrayOf([Edit1.Text, //фамилия және

MaskEdit1.Text]), //стипендия бойынша

[loCaseInsensitive,loPartialKey])

then S1 else S2;

Panel2.Visible:=false; // стипендияның мәні бар Panel2-ні

//көрінбейтін ету

end;

end; //Case

Panel1.Visible:=false; //фамилиясы бар панельді жасыру

end;

//-----------------------------------------------------------

//Біртіндеп іздеуге дайындық – фамилияны енгізуге арналған

// панельді көрсету

procedure TForm1.N22Click(Sender: TObject);

begin

Panel3.Visible:=true; // Panel3-ні көрінетін ету

Edit2.SetFocus; // Edit2-ге фокус

end;

//-----------------------------------------------------------

//Біртіндеп іздеу

procedure TForm1.Edit2Change(Sender: TObject);

begin

Table1.IndexFieldNames:='FIO';//баған бойынша іздеуге

// арналған индекс

Table1.FindNearest([Edit2.Text]); //жақын сәйкесті іздеу

end;

//-----------------------------------------------------------

//Біртіндеп іздеуді аяқтау

procedure TForm1.Edit2DblClick(Sender: TObject);

begin

Panel3.Visible:=false; // Panel3-ті жасыру

end;

//-----------------------------------------------------------

//Операторлар көмегімен стипендия суммасын есептеу

procedure TForm1.N24Click(Sender: TObject);

var st:string; //стипендия суммасын шығаратын жол

begin Table1.First; //бірінші жазбаға өту

S:=0; //суммарлы стипендия

while not (Table1.Eof) do //кестенің файлының соңына дейін

begin //стипендия суммасы

//S:=S+Nable1.Fields[2].AsFloat; //2-ші бағаннан немесе

S:=S+Table1RS.Value; //осылай оңайырақ!

Table1.Next; //келесі жазбаға өту

end; //жолды құру

st:=FloatToStr(S);//немесе

//Str(S:12:2,st); //немесе форматтаумен

Label11.Caption:='Сумма стипендий = '+st;//хабарламаны

// шығару

Label11.Visible:=true; //белгіні көрсету

end;

//-----------------------------------------------------------

//орташа стипендияны есептеу

procedure TForm1.N25Click(Sender: TObject);

var st:string;

n:integer;

begin

n:=Table1.RecordCount; //кесте жазбаларының саны

N24Click(Sender); //стипендия суммасын есептейтін әдісті

// шақыру

s:=s/n; //орташа стипендияны анықтау

st:=FloatToStr(s); //жолдың құрылуы

Label11.Caption:='Средняя стипендия = '+st;//хабарламаны

//шығару

Label11.Visible:=true; //белгіні көрсету

end;

//-----------------------------------------------------------

//Графигі бар форманы көрсету

procedure TForm1.N5Click(Sender: TObject);

begin

Form2.Show;

end;

//-----------------------------------------------------------

//Қарау үшін есеп беруі бар форманы көрсету

procedure TForm1.N26Click(Sender: TObject);

begin

Form3.QuickRep1.Preview; //алдын ала қарау

end;

//-----------------------------------------------------------

//Есеп беруді баспаға шығару

procedure TForm1.N27Click(Sender: TObject);

begin

Form3.QuickRep1.Print;

end;

//-----------------------------------------------------------

//Хабарламасы бар белгіні жасыру

procedure TForm1.Label11Click(Sender: TObject);

begin

Label11.Visible:=False;

end;

//-------------------------------------------------------------------------------------------

//Қосымшаның жабылуы

procedure Tform1.N7Click(Sender:Tobject);

begin Close; end;

end.

Листинг 6.3. Графигі бар форма модулінің мәтіні

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, DbChart, Series, StdCtrls;

type

TForm2 = class(TForm)

DBChart1: TDBChart;

Series1: TLineSeries;

Series2: TLineSeries;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1,Unit3;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.Hide;

end;

end.

Листинг 6.4. Есеп беруі бар форма модулінің мәтіні

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, QRCtrls, QuickRpt, ExtCtrls, Menus;

type

TForm3 = class(TForm)

QuickRep1: TQuickRep;

QRBand1: TQRBand;

QRLabel1: TQRLabel;

QRBand2: TQRBand;

QRLabel2: TQRLabel;

QRLabel3: TQRLabel;

QRLabel4: TQRLabel;

QRLabel5: TQRLabel;

QRBand3: TQRBand;

QRBand4: TQRBand;

QRDBText1: TQRDBText;

QRDBText2: TQRDBText;

QRDBText3: TQRDBText;

QRDBText4: TQRDBText;

QRDBImage1: TQRDBImage;

QRExpr1: TQRExpr;

QRExpr2: TQRExpr;

QRLabel6: TQRLabel;

QRLabel7: TQRLabel;

QRLabel8: TQRLabel;

QRLabel9: TQRLabel;

QRSysData1: TQRSysData;

procedure N1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1,Unit2;

{$R *.dfm}

procedure TForm3.N1Click(Sender: TObject);

begin

Form3.Hide;

end; end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]