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

6.1.13.2. Методы подменю Отчет

Подменю Отчет содержит 2 пункта: Просмотр и Печать. Метод команды Просмотр вызывает форму отчета и отображает его содержимое для проверки перед его печатью операторами:

Form3.Show; // - показать форму с отчетом

Form3.QuickRep1.Preview; // - предварительный просмотр

Метод Печать вызывает печать отчета, представленного на Form3.

6.1.14. Листинги примера проекта

Листинг 6.1. Фрагмент методов модуля основной формы для определения вычисляемого поля и полей для сортировки

// Определение значения вычисляемого поля - для ТаЫе1 procedureTForm1.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;

Tablel.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.N18Click(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, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBTables, Mask,

StdCtrls, ComCtrls, XPMan;

type

TForm1 = class(TForm)

Table1: TTable;

Query1: TQuery;

Query2: TQuery;

Query3: TQuery;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

MainMenu1: TMainMenu;

Timer1: TTimer;

StatusBar1: TStatusBar;

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Button1: TButton;

MaskEdit1: TMaskEdit;

Edit2: TEdit;

XPManifest1: TXPManifest;

Table1NZ: TFloatField;

Table1FIO: TStringField;

Table1RS: TFloatField;

Table1FOTO: TGraphicField;

Label4: TLabel;

DBEdit1: TDBEdit;

Label5: TLabel;

DBEdit2: TDBEdit;

Label6: TLabel;

DBEdit3: TDBEdit;

Label7: TLabel;

DBImage1: TDBImage;

Label8: TLabel;

DBEdit4: TDBEdit;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N1501: TMenuItem;

Cpflfyysvyjvthjvpfxtnrb1: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

Query4: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

N14: TMenuItem;

N16: TMenuItem;

N17: TMenuItem;

N18: TMenuItem;

N19: TMenuItem;

N20: TMenuItem;

N21: TMenuItem;

N22: TMenuItem;

N23: TMenuItem;

N24: TMenuItem;

N15: TMenuItem;

StringGrid1: TStringGrid;

DBNavigator1: TDBNavigator;

Table1RNS: TIntegerField;

Label9: TLabel;

procedure Table1CalcFields(DataSet: TDataSet);

procedure N21Click(Sender: TObject);

procedure N15Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N1501Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N23Click(Sender: TObject);

procedure Cpflfyysvyjvthjvpfxtnrb1Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure MaskEdit1DblClick(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure N16Click(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure Edit2DblClick(Sender: TObject);

procedure N19Click(Sender: TObject);

procedure N24Click(Sender: TObject);

procedure N20Click(Sender: TObject);

procedure Query1CalcFields(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

S:real;

J:integer;

implementation

uses Unit2,Unit3;

{$R *.dfm}

procedure TForm1.Table1CalcFields(DataSet: TDataSet);

begin

with DataSet do

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

end;

procedure TForm1.N21Click(Sender: TObject);

begin

Form2.Show;

end;

procedure TForm1.N15Click(Sender: TObject);

begin

Form1.Close;

Form2.Close;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

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

end;

procedure TForm1.N8Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1;

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

with Sender as TMenuItem do

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

end;

procedure TForm1.N9Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1;

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

with Sender as TMenuItem do

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

end;

procedure TForm1.N10Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1;

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

with Sender as TMenuItem do

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

end;

procedure TForm1.N2Click(Sender: TObject);

begin

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

DataSource1.DataSet:=Table1;

end;

procedure TForm1.N1501Click(Sender: TObject);

begin

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

if Query1.Active=false then Query1.Active:=true;

DataSource1.DataSet:=Query1;

end;

procedure TForm1.FormCreate(Sender: TObject);

var i,j:integer;

const c:array[0..1,0..5] of string=(('','номер зач.','ФИО','стипендия','','нов.стип.'),('','','','','',''));

begin

J:=Tag;

for i:=0 to 1 do

for j:=0 to 5 do StringGrid1.Cells[j,i]:=c[i,j];

end;

procedure TForm1.N23Click(Sender: TObject);

begin

Form3.Show;

Form3.QuickRep1.Preview;

end;

procedure TForm1.Cpflfyysvyjvthjvpfxtnrb1Click(Sender: TObject);

begin

with sender as TMenuItem do Begin

J:=Tag;

Panel3.Visible:=True;

Label7.WordWrap:=True;

Label7.Height:=39;

Label7.Width:=146;

end;end;

procedure TForm1.N12Click(Sender: TObject);

begin

with sender as TMenuItem do begin

J:=Tag;

Panel1.Visible:=true;

Edit1.SetFocus;

if J=8 then begin

Panel2.Visible:=true;

MaskEdit1.SetFocus;

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

end; end; end;

procedure TForm1.MaskEdit1DblClick(Sender: TObject);

var A:integer;

begin

case J of

1: begin

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

DataSource1.DataSet:=Query2;

A:=StrToInt(MaskEdit1.Text);

with Query2 do begin Close;

Query2.Active:=False;

ParamByName('NZ').Value:=A;

//Params[0].AsInteger:=A; //или это вместо предыдущ. 2 строчек

Open; end;end;

2: begin

DataSource1.DataSet:=Table1;

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

Table1.Filter:='NZ>'+MaskEdit1.Text;

end;

3: begin

DataSource1.DataSet:=Query1;

Query1.Close;

Query1.Filter:='NZ>'+MaskEdit1.Text;

if Query1.Filtered=false then Query1.Filtered:=True;

Query1.Open;

end;

4: begin

DataSource1.DataSet:=Query3;

Query3.Close;

Query3.SQL.Clear;

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

Query3.Open;

end;

end;

Panel3.Visible:=False;

end;

procedure TForm1.Button1Click(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;

Panel3.Visible:=false;

end; end;

Panel1.Visible:=false;

end;

procedure TForm1.N16Click(Sender: TObject);

begin

Panel2.Visible:=true;

Edit2.SetFocus;

end;

procedure TForm1.Edit2Change(Sender: TObject);

begin

Table1.IndexFieldNames:='FIO';

Table1.FindNearest([Edit2.Text]);

end;

procedure TForm1.Edit2DblClick(Sender: TObject);

begin

Panel2.Visible:=false;

end;

procedure TForm1.N19Click(Sender: TObject);

var st:string;

begin

Table1.First;

S:=0;

while not (Table1.Eof) do

begin

S:=S+Table1RS.Value;

Table1.Next;

end;

st:=FloatToStr(S);

Label9.Caption:='Сумма стипендий = '+st;

end;

procedure TForm1.N24Click(Sender: TObject);

begin

Form3.QuickRep1.Print;

end;

procedure TForm1.N20Click(Sender: TObject);

var st:string;n:integer;

begin

n:=Table1.RecordCount;

N19Click(Sender);

s:=s/n;

st:=FloatToStr(s);

Label9.Caption:='Средняя стипендия = '+st;

end;

procedure TForm1.Query1CalcFields(DataSet: TDataSet);

begin

with DataSet do

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

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.

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