ЭТАПЫ РАЗРАБОТКА ПРОГРАММНОГО ПРОДУКТА

Данная программа создана для учета успеваемости студентов.

Для работы с программой необходимо нужные группы или списки студентов копировать из имеющегося списка, в электронную таблицу «spisok.xls». Списки копируются однажды, после чего могут удаляться напрямую из базы данных «poseshaemost.mdb». После копирования списков или групп необходимо принять данные с помощью кнопки «Сервис - принять данные», в появившемся окне нажать кнопку «Принять данные». Для ввода специальности для выбранной группы нажать на кнопку «справочники- специальности», в появившемся окне ввести группу и код специальности, списки копируются однажды, после чего могут удаляться напрямую из базы данных «poseshaemost.mdb». Для добавления дисциплины для этой группы необходимо нажать на кнопку «справочники- дисциплины», в появившемся окне ввести дисциплины. Дисциплины копируются однажды, после чего могут удаляться напрямую из базы данных «poseshaemost.mdb».

Для ввода оценок нужно нажать на кнопку «Данные - Разноска», где выбирается месяц и год обучения, а также дисциплина, специальность и группа. После ввода данных в эти строки следует «Добавить данные по дисциплине», на экране выведется группа, фамилия имя и отчество студентов, а также пустая графа оценок по выбранной дисциплине, которую необходимо заполнить. Корректировка данных производиться при помощи команды «Данные - корректировка», где корректируются месяц и год обучения, а также дисциплина, специальность и группа. В графе отчеты можно подвести итоги по успеванию и качеству знаний по БПЭК. Подвести итоги можно как по группе, так и по специальности и по колледжу в целом за определенный месяц и год обучения. После нажатия кнопки «Вычислить». Выведется успеваемость и качество. Также в графе подведение итогов можно посмотреть списки студентов неуспевающих (у которых есть хотя бы одна оценка «2»), а также успевающих на отлично (средний бал успеваемости которых «5»). После нажатия кнопки «Вывести», выведется список в электронной таблице Excel, неуспевающих студентов, либо успевающих на отлично. В графе «Отчет» за введенный месяц после нажатия кнопки «Пересчитать итоги» и «Отчет» выведется группа, месяц и год, а также количество студентов и процентное соотношение успеваемости общей и качество в электронной таблице Excel.

unit Unit12;

interface

uses

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

Dialogs, Menus, DB, ADODB;

type

TForm12 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

ADOConnection1: TADOConnection;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

procedure N9Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form12: TForm12;

implementation

uses Unit13, Unit15, Unit14, Unit16, Unit17, Unit18;

{$R *.dfm}

procedure TForm12.N9Click(Sender: TObject);

begin

Form13.Show;

end;

procedure TForm12.N11Click(Sender: TObject);

begin

Form15.Show;

end;

procedure TForm12.N12Click(Sender: TObject);

begin

Form14.Show;

end;

procedure TForm12.FormCreate(Sender: TObject);

begin

//Form16.Show;

end;

procedure TForm12.N2Click(Sender: TObject);

begin

Form16.Show;

end;

procedure TForm12.N3Click(Sender: TObject);

begin

Form17.show;

end;

procedure TForm12.N4Click(Sender: TObject);

begin

Form18.show;

end;

end.

unit Unit13;

interfa

ceuses

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

Dialogs, ExcelXP, OleServer, Grids, DBGrids, StdCtrls, DB, ADODB;

type

TForm13 = class(TForm)

Label1: TLabel;

DBGrid1: TDBGrid;

ExcelWorkbook1: TExcelWorkbook;

ExcelApplication1: TExcelApplication;

ADOQuery1: TADOQuery;

DataSource1: TDataSource;

Button1: TButton;

ADOQuery2: TADOQuery;

ADOQuery1gruppa: TWideStringField;

ADOQuery1fio: TWideStringField;

ADOQuery1Datapr: TWideStringField;

ADOQuery1Prim: TWideStringField;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form13: TForm13;

implementation

{$R *.dfm}

procedure TForm13.Button1Click(Sender: TObject);

var n: OleVariant;

i:integer;

//S:String;

begin

ADOQuery2.ExecSQL;

AdoQuery1.Open;

n:=d:55spisok.xls;

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=2;

ADOQUERY1.Insert;

ExcelApplication1.Visible[0]:=False;

While i<2000 do

begin;

ADOQuery1.FieldByName(gruppa).AsString:=ExcelApplication1.Cells.Item[i,1].Value;

ADOQuery1.FieldByName(Fio).AsString:=ExcelApplication1.Cells.Item[i,2].Value;

ADOQuery1.FieldByName(Datapr).AsString:=ExcelApplication1.Cells.Item[i,3].Value;

ADOQuery1.FieldByName(Prim).AsString:=ExcelApplication1.Cells.Item[i,4].Value;

If ADOQuery1.FieldByName(gruppa).AsString= then

begin

ADOQUERY1.Delete;

i:=2001;

end;

ADOQUERY1.Insert;

i:=i+1;

end;

ADOQuery1.Open;

Showmessage(Прием данных выполнен);

end;

end.

unit Unit14;

interface

uses

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

Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids;

type

TForm14 = class(TForm)

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

ADOQuery1Disziplina: TWideStringField;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form14: TForm14;

implementation

{$R *.dfm}

procedure TForm14.FormCreate(Sender: TObject);

begin

ADOQuery1.Active:=true;

end;

end.

unit Unit15;

interface

uses

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

Dialogs, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids;

type

TForm15 = class(TForm)

ADOQuery1: TADOQuery;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

DataSource1: TDataSource;

ADOQuery1Grupa: TWideStringField;

ADOQuery1Spez: TWideStringField;

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form15: TForm15;

implementation

{$R *.dfm}

procedure TForm15.FormCreate(Sender: TObject);

begin

ADOQuery1.Active:=true;

end;

end.

unit Unit16;

interface

uses

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

Dialogs, DB, ADODB, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids;

type

TForm16 = class(TForm)

ADOQuery1: TADOQuery;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

DataSource1: TDataSource;

ADOQuery1stud: TWideStringField;

ComboBox1: TComboBox;

ComboBox2: TComboBox;

ComboBox3: TComboBox;

ComboBox4: TComboBox;

ComboBox5: TComboBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Button1: TButton;

Dobav: TADOQuery;

ADOQuery1ozenka: TIntegerField;

ADOQuery1koddis: TWideStringField;

ADOQuery2: TADOQuery;

ADOTable1: TADOTable;

ADOTable2: TADOTable;

ADOTable1DSDesigner: TAutoIncField;

ADOTable1Grupa: TWideStringField;

ADOTable1Disziplina: TWideStringField;

procedure Button1Click(Sender: TObject);

procedure ComboBox4Change(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form16: TForm16;

implementation

{$R *.dfm}

procedure TForm16.Button1Click(Sender: TObject);

begin

Dobav.SQL.Clear;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Text:=delete from ozenka where(ozenka.kodspez = "+Combobox4.Text+"and ozenka.koddis = "+Combobox3.Text+"and ozenka.mes = "+Combobox1.Text+"and ozenka.god = "+Combobox2.Text+" and ozenka.gruppa="+Combobox5.Text+");

ADOQuery2.ExecSQL;

Dobav.SQL.Add(Insert Into Ozenka ( gruppa,stud));

Dobav.SQL.Add(Select gruppa,fio);

Dobav.SQL.Add( From stud where (gruppa="+Combobox5.text+"));

//ShowMessage(Dobav.SQL.Text); //Dobav.SQL.Add(

Dobav.ExecSQL;

Dobav.SQL.Clear;

Dobav.SQL.Add(UPDATE ozenka SET ozenka.kodspez = "+Combobox4.Text+", ozenka.koddis = "+Combobox3.Text+", ozenka.mes = "+Combobox1.Text+", ozenka.god = "+Combobox2.Text+" WHERE (((ozenka.gruppa)="+Combobox5.Text+")and(ozenka.koddis is null )););

Dobav.ExecSQL;

ADOQUERY1.SQL.Clear;

ADOQUERY1.SQL.Add(Select* from ozenka where(ozenka.kodspez = "+Combobox4.Text+"and ozenka.koddis = "+Combobox3.Text+"and ozenka.mes = "+Combobox1.Text+"and ozenka.god = "+Combobox2.Text+" and ozenka.gruppa="+Combobox5.Text+"));

//ShowMessage(ADOQUERY1.SQL.Text);

ADOQUERY1.Active:=True;

end;

procedure TForm16.ComboBox4Change(Sender: TObject);

begin

ADOTable2.Open;

ADOTable2.First;

ComboBox5.Items.Clear;

While not ADOTable2.Eof do

begin

if ADOTable2.Fieldbyname(Spez).AsString=ComboBox4.Text Then

ComboBox5.Items.Add(ADOTable2.fieldbyname(grupa).AsString);

ADOTable2.Next;

end;

ADOTable2.Close;

ComboBox5.Sorted:=True;

end;

procedure TForm16.FormCreate(Sender: TObject);

begin

ADOTable1.Open;

ADOTable1.First;

ComboBox3.Items.Clear;

While not ADOTable1.Eof do

begin

ComboBox3.Items.Add(ADOTable1.fieldbyname(disziplina).AsString);

//ShowMessage(ADOTable1.fieldbyname(disziplina).AsString);

ADOTable1.Next;

end;

ADOTable1.Close;

ComboBox3.Sorted:=True;

end;

end.

unit Unit17;

interface

uses

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

Dialogs, DB, ADODB, StdCtrls, Ex tCtrls, DBCtrls, Grids, DBGrids;

type

TForm17 = class(TForm)

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

ComboBox1: TComboBox;

ComboBox2: TComboBox;

ComboBox3: TComboBox;

ComboBox5: TComboBox;

Button1: TButton;

ADOQuery1: TADOQuery;

ADOQuery1stud: TWideStringField;

DataSource1: TDataSource;

ADOQuery1ozenka: TIntegerField;

ADOQuery1koddis: TWideStringField;

ComboBox4: TComboBox;

ADOTable1: TADOTable;

ADOTable2: TADOTable;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ComboBox4Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form17: TForm17;

implementation

{$R *.dfm}

procedure TForm17.Button1Click(Sender: TObject);

begin

ADOQUERY1.SQL.Clear;

ADOQUERY1.SQL.Add(Select* from ozenka where(ozenka.kodspez = "+Combobox4.Text+"and ozenka.koddis = "+Combobox3.Text+"and ozenka.mes = "+Combobox1.Text+"and ozenka.god = "+Combobox2.Text+" and ozenka.gruppa="+Combobox5.Text+"));

//ShowMessage(ADOQUERY1.SQL.Text);

ADOQUERY1.Active:=True;

end;

procedure TForm17.FormCreate(Sender: TObject);

begin

ADOTable1.Open;

ADOTable1.First;

ComboBox3.Items.Clear;

While not ADOTable1.Eof do

begin

ComboBox3.Items.Add(ADOTable1.fieldbyname(disziplina).AsString);

//ShowMessage(ADOTable1.fieldbyname(disziplina).AsString);

ADOTable1.Next;

end;

ADOTable1.Close;

ComboBox3.Sorted:=True;

end;

procedure TForm17.ComboBox4Change(Sender: TObject);

begin

ADOTable2.Open;

ADOTable2.First;

ComboBox5.Items.Clear;

While not ADOTable2.Eof do

begin

if ADOTable2.Fieldbyname(Spez).AsString=ComboBox4.Text Then

ComboBox5.Items.Add(ADOTable2.fieldbyname(grupa).AsString);

ADOTable2.Next;

end;

ADOTable2.Close;

ComboBox5.Sorted:=True;

end;

end.

unit Unit18;

interface

uses

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

Dialogs, StdCtrls, DB, ADODB, Buttons, ExtCtrls, ComCtrls, ExcelXP,

OleServer, Grids, DBGrids;

type

TForm18 = class(TForm)

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

RadioGroup1: TRadioGroup;

BitBtn1: TBitBtn;

Label1: TLabel;

Label2: TLabel;

ComboBox1: TComboBox;

ComboBox2: TComboBox;

Label4: TLabel;

Label5: TLabel;

ADOQuery1: TADOQuery;

Edit1: TEdit;

Edit2: TEdit;

Label3: TLabel;

Label6: TLabel;

Label7: TLabel;

ComboBox3: TComboBox;

ComboBox6: TComboBox;

Label8: TLabel;

Label9: TLabel;

RadioGroup3: TRadioGroup;

ExcelWorkbook1: TExcelWorkbook;

ExcelApplication1: TExcelApplication;

BitBtn2: TBitBtn;

ADOQuery2: TADOQuery;

ComboBox7: TComboBox;

ComboBox8: TComboBox;

Label10: TLabel;

Label11: TLabel;

BitBtn3: TBitBtn;

ADOQuery3: TADOQuery;

ADOQuery4: TADOQuery;

ADOQuery5: TADOQuery;

ADOTable2: TADOTable;

ComboBox4: TComboBox;

ComboBox5: TComboBox;

DataSource1: TDataSource;

ADOQuery6: TADOQuery;

ADOTable6: TADOTable;

Button1: TButton;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure ComboBox4Change(Sender: TObject);

// procedure ComboBox4Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form18: TForm18;

implementation

{$R *.dfm}

procedure TForm18.BitBtn1Click(Sender: TObject);

var

k1:integer;

k2:integer;

k3:integer;

k4,k:double;

begin

//по группе

If radiogroup1.ItemIndex=0

then begin

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.gruppa)="+Combobox5.Text+")));

AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname(Count1).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.gruppa)="+Combobox5.Text+")));

AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname(Count2).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.gruppa)="+Combobox5.Text+")));

AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname(Count3).AsInteger;

k4:=Round((k3/k2*100)*100)/100;

k:=Round((k1/k2*100)*100)/100;

Edit1.Text:=FloatToStr(k4);

Edit2.Text:=FloatToStr(k);

end;

//по специальности

If radiogroup1.ItemIndex=1

then begin

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.kodspez)="+Combobox4.Text+")));

AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname(Count1).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.kodspez)="+Combobox4.Text+")));

AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname(Count2).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.kodspez)="+Combobox4.Text+")));

AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname(Count3).AsInteger;

k4:=Round((k3/k2*100)*100)/100;

k:=Round((k1/k2*100)*100)/100;

Edit1.Text:=FloatToStr(k4);

Edit2.Text:=FloatToStr(k);

end;

//по колледжу

If radiogroup1.ItemIndex=2

then begin

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+")));

AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname(Count1).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+")));

AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname(Count2).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+")));

AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname(Count3).AsInteger;

k4:=Round((k3/k2*100)*100)/100;

k:=Round((k1/k2*100)*100)/100;

Edit1.Text:=FloatToStr(k4);

Edit2.Text:=FloatToStr(k);

end;

end;

procedure TForm18.BitBtn2Click(Sender: TObject);

var n: OleVariant;

i:integer;

//S:String;

begin

if radiogroup3.ItemIndex=0 then begin

AdoQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add(SELECT ozenka.ozenka, ozenka.stud, ozenka.gruppa, ozenka.koddis, ozenka.kodspez, ozenka.mes, ozenka.god FROM ozenka WHERE (((ozenka.ozenka)=2)));

ADOQuery1.SQL.Add(and mes="+ combobox3.Text+" and god="+combobox6.Text+");

//Showmessage(adoquery1.SQL.Text);

ADOQuery1.Open;

ADOQuery1.First;

n:=d:55spisok55.xls;

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=3;

ExcelApplication1.Cells.Item[1,1].Value:=Cписок неуспевающих;

ExcelApplication1.Cells.Item[1,2].Value:=Combobox3.Text;

ExcelApplication1.Cells.Item[1,3].Value:=Combobox6.Text;

ExcelApplication1.Visible[0]:=true;

While not ADOQuery1.Eof do

begin;

ExcelApplication1.Cells.Item[i,1].Value:=ADOQuery1.FieldByName(Stud).AsString;

ExcelApplication1.Cells.Item[i,2].Value:=ADOQuery1.FieldByName(koddis).AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOQuery1.FieldByName(ozenka).AsString;

ExcelApplication1.Cells.Item[i,4].Value:=ADOQuery1.FieldByName(gruppa).AsString;

ADOQUERY1.Next;

//ADOQUERY1.Post;

i:=i+1;

end;

end;

if radiogroup3.ItemIndex=1 then begin

AdoQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add(SELECT ozenka.stud, Avg(ozenka.ozenka) AS [Avg-ozenka], ozenka.mes,ozenka.gruppa, ozenka.god FROM ozenka);

ADOQuery1.SQL.Add(GROUP BY ozenka.stud, ozenka.mes,ozenka.gruppa, ozenka.god);

ADOQuery1.SQL.Add(HAVING (((Avg(ozenka.ozenka))=5)););

//ADOQuery1.SQL.Add(and mes="+ combobox3.Text+" and god="+combobox6.Text+");

ADOQuery1.Open;

ADOQuery1.First;

n:=d:55spisok55.xls;

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=3;

ExcelApplication1.Cells.Item[1,1].Value:=Cписок успевающих на отлично;

ExcelApplication1.Cells.Item[1,2].Value:=Combobox3.Text;

ExcelApplication1.Cells.Item[1,3].Value:=Combobox6.Text;

ExcelApplication1.Visible[0]:=true;

While not ADOQuery1.Eof do

begin;

ExcelApplication1.Cells.Item[i,1].Value:=ADOQuery1.FieldByName(Stud).AsString;

ExcelApplication1.Cells.Item[i,2].Value:=все;

ExcelApplication1.Cells.Item[i,3].Value:=5;

ExcelApplication1.Cells.Item[i,4].Value:=ADOQuery1.FieldByName(gruppa).AsString;

ADOQUERY1.Next;

//ADOQUERY1.Post;

i:=i+1;

end;

end;

end;

procedure TForm18.BitBtn3Click(Sender: TObject);

var

n: OleVariant;

i:integer;

k1:integer;

k2:integer;

k3:integer;

k4,k:double;

begin

ADOQuery4.SQL.Text:=drop table ots1;

ADOQuery4.ExecSQL;

//ADoQuery.Active:=false;

ADoQuery2.Active:=true;

ADOQuery2.Edit;

ADoQuery2.First;

ADoQuery5.Active:=true;

ADoQuery5.First;

ADOQuery2.insert;

ADoQuery3.SQL.Text:=Select* from spez;

ADOQuery3.Active:=true;

While not ADoQuery3.Eof do

begin

ADOQuery2.FieldByName(Gruppa).AsString:=ADOQuery3.FieldByName(Grupa).AsString;

ADOQuery2.FieldByName(Spez).AsString:=ADOQuery3.FieldByName(Spez).AsString;

ADOQuery2.FieldByName(kolledg).AsString:=koledg;

Combobox1.Text:=Combobox7.Text;

Combobox2.Text:=Combobox8.Text;

Combobox5.Text:=ADOQuery2.FieldByName(Gruppa).AsString;

Combobox4.Text:=ADOQuery2.FieldByName(Spez).AsString;

//Combobox1.Text:=Combobox7.Text;

//Combobox2.Text:=Combobox8.Text;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.gruppa)="+Combobox5.Text+")));

AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname(Count1).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.gruppa)="+Combobox5.Text+")));

AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname(Count2).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god, ozenka.gruppa );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.gruppa)="+Combobox5.Text+")));

AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname(Count3).AsInteger;

//ShowMessage(FloatToStr(k4));

// ShowMessage(FloatToStr(k));

IF K2>0 then begin

k4:=Round((k3/k2*100));

k:=Round((k1/k2*100));

//Edit1.Text:=FloatToStr(k4);

//Edit2.Text:=FloatToStr(k);

ADOQuery2.FieldByName(usp).AsString:=FloatToStr(k4);

ADOQuery2.FieldByName(kas).AsString:=FloatToStr(k);

ADOQuery2.FieldByName(kol).AsString:=FloatToStr(k2);

end;

ADOQuery2.Insert;

ADOQuery3.Next;

end;

//по специальностям

ADoQuery2.Active:=true;

ADOQuery2.Edit;

ADoQuery2.First;

ADoQuery3.SQL.Text:=Select spez from spez;

ADoQuery3.Active:=true;

ADoQuery3.First;

ADOQuery2.insert;

While not ADoQuery3.Eof do

begin

//ADOQuery2.FieldByName(Gruppa).AsString:=ADOQuery3.FieldByName(Grupa).AsString;

ADOQuery2.FieldByName(Spez).AsString:=ADOQuery3.FieldByName(Spez).AsString;

ADOQuery2.FieldByName(kolledg).AsString:=koledg;

Combobox1.Text:=Combobox7.Text;

Combobox2.Text:=Combobox8.Text;

//Combobox5.Text:=ADOQuery2.FieldByName(Gruppa).AsString;

Combobox4.Text:=ADOQuery2.FieldByName(Spez).AsString;

//Combobox1.Text:=Combobox7.Text;

//Combobox2.Text:=Combobox8.Text;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez);

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.kodspez)="+Combobox4.Text+")));

AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname(Count1).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.kodspez)="+Combobox4.Text+")));

AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname(Count2).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god, ozenka.kodspez );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+") AND ((ozenka.kodspez)="+Combobox4.Text+")));

AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname(Count3).AsInteger;

//ShowMessage(FloatToStr(k4));

//ShowMessage(FloatToStr(k));

IF K2>0 then begin

k4:=Round((k3/k2*100));

k:=Round((k1/k2*100));

//Edit1.Text:=FloatToStr(k4);

//Edit2.Text:=FloatToStr(k);

ADOQuery2.FieldByName(usp).AsString:=FloatToStr(k4);

ADOQuery2.FieldByName(kas).AsString:=FloatToStr(k);

ADOQuery2.FieldByName(kol).AsString:=FloatToStr(k2);

end;

ADOQuery2.Insert;

ADOQuery3.Next;

end;

//по колледжу

ADOQuery2.insert;

//ADOQuery2.FieldByName(Gruppa).AsString:=ADOQuery3.FieldByName(Grupa).AsString;

//ADOQuery2.FieldByName(Spez).AsString:=ADOQuery3.FieldByName(Spez).AsString;

ADOQuery2.FieldByName(kolledg).AsString:=koledg;

Combobox1.Text:=Combobox7.Text;

Combobox2.Text:=Combobox8.Text;

//Combobox5.Text:=ADOQuery2.FieldByName(Gruppa).AsString;

Combobox4.Text:=ADOQuery2.FieldByName(Spez).AsString;

//Combobox1.Text:=Combobox7.Text;

//Combobox2.Text:=Combobox8.Text;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count1] FROM ozenka where (((ozenka.ozenka)>3))GROUP BY ozenka.mes, ozenka.god);

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+")));

AdoQuery1.Active:=True;

k1:=AdoQuery1.fieldbyname(Count1).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count2] FROM ozenka where (((ozenka.ozenka)>0))GROUP BY ozenka.mes, ozenka.god );

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+")));

AdoQuery1.Active:=True;

k2:=AdoQuery1.fieldbyname(Count2).AsInteger;

ADOQuery1.SQL.Clear;

AdoQuery1.SQL.Add(SELECT Count(ozenka.stud) AS [Count3] FROM ozenka where (((ozenka.ozenka)>2))GROUP BY ozenka.mes, ozenka.god);

AdoQuery1.SQL.Add(HAVING (((ozenka.mes)="+Combobox1.Text+") AND ((ozenka.god)="+Combobox2.Text+")));

AdoQuery1.Active:=True;

k3:=AdoQuery1.fieldbyname(Count3).AsInteger;

//ShowMessage(FloatToStr(k4));

//ShowMessage(FloatToStr(k));

IF K2>0 then begin

k4:=Round((k3/k2*100));

k:=Round((k1/k2*100));

//Edit1.Text:=FloatToStr(k4);

//Edit2.Text:=FloatToStr(k);

ADOQuery2.FieldByName(usp).AsString:=FloatToStr(k4);

ADOQuery2.FieldByName(kas).AsString:=FloatToStr(k);

ADOQuery2.FieldByName(kol).AsString:=FloatToStr(k2);

ADOQuery2.Post;

end;

//S:String;

begin

//if radiogroup3.ItemIndex=0 then begin

AdoQuery6.Close;

ADOQuery6.SQL.Clear;

ADOQuery6.SQL.Add(SELECT ots.kolledg, ots.spez, ots.gruppa, ots.kol, ots.usp, ots.kas into ots1 FROM ots GROUP BY ots.kolledg, ots.spez, ots.gruppa, ots.kol, ots.usp, ots.kas);

//ORDER BY ots.kolledg DESC , ots.spez DESC , ots.gruppa DESCSELECT ozenka.ozenka, ozenka.stud, ozenka.gruppa, ozenka.koddis, ozenka.kodspez, ozenka.mes, ozenka.god FROM ozenka WHERE (((ozenka.ozenka)=2)));

ADOQuery6.SQL.Add(ORDER BY ots.kolledg DESC , ots.spez DESC , ots.gruppa DESC);

//Showmessage(adoquery1.SQL.Text);

ADOQuery6.ExecSQL;

{ADOTable6.TableName:=ots1;

ADOTable6.Active:=true;

ADOTable6.Active:=false;

ADOTable6.Active:=true;

//ADOTable6.First;

n:=d:55usp.xls;

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=10;

ExcelApplication1.Cells.Item[1,2].Value:=Combobox7.Text;

ExcelApplication1.Cells.Item[1,3].Value:=Combobox8.Text;

ADOTable6.First;

//

If ADOTable6.FieldByName(gruppa).AsString<> then

ExcelApplication1.Cells.Item[i,2].Value:=ADOTable6.FieldByName(gruppa).AsString

else

// If (ADOQuery6.FieldByName(Spez).AsString<>) then

ExcelApplication1.Cells.Item[i,2].Value:=итого по специальности +ADOTable6.FieldByName(Spez).AsString;

If (ADOTable6.FieldByName(Spez).AsString=) then

ExcelApplication1.Cells.Item[i,2].Value:=итого по колледжу ;//+ADOQuery1.FieldByName(Kolledg).AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOTable6.FieldByName(kol).AsString;

ExcelApplication1.Cells.Item[i,4].Value:=ADOTable6.FieldByName(usp).AsString;

ExcelApplication1.Cells.Item[i,5].Value:=ADOTable6.FieldByName(kas).AsString;

//While not ADOTable6.Eof do

begin;

ShowMessage(fdgiiii);

k4:= ADOTable6.FieldByName(usp).AsFloat;

k:=ADOTable6.FieldByName(kas).AsFloat;

ShowMessage(FloatToStr(k4));

If ADOTable6.FieldByName(gruppa).AsString<> then

ExcelApplication1.Cells.Item[i,2].Value:=ADOTable6.FieldByName(gruppa).AsString

else

// If (ADOQuery6.FieldByName(Spez).AsString<>) then

ExcelApplication1.Cells.Item[i,2].Value:=итого по специальности +ADOTable6.FieldByName(Spez).AsString;

If (ADOTable6.FieldByName(Spez).AsString=) then

ExcelApplication1.Cells.Item[i,2].Value:=итого по колледжу ;//+ADOQuery1.FieldByName(Kolledg).AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOTable6.FieldByName(kol).AsString;

ExcelApplication1.Cells.Item[i,4].Value:=k4;

ExcelApplication1.Cells.Item[i,5].Value:=k;

ADOTable6.Next;

//ADOQUERY1.Post;

i:=i+1;

end;

end;

//ExcelApplication1.Visible[0]:=true; }

ADOQuery4.SQL.Clear;

ADOQuery4.SQL.Text:=delete * from ots;

ADOQuery4.ExecSQL;

ADOQuery4.SQL.Text:=drop table ots1;

//ADOQuery4.ExecSQL;

//end;

end;

ShowMessage(Перерасчет данных успешно выполнен можно делать отчет!);

end;

procedure TForm18.Button1Click(Sender: TObject);

var

n:Olevariant;

i:Integer;

k1:integer;

k2:integer;

k3:integer;

k4,k:double;

begin

ADOTable6.TableName:=ots1;

ADOTable6.Active:=true;

ADOTable6.Active:=false;

ADOTable6.Active:=true;

//ADOTable6.First;

n:=d:55usp.xls;

ExcelApplication1.Workbooks.Add(n,0);

Excelworkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);

i:=10;

ExcelApplication1.Cells.Item[1,2].Value:=Combobox7.Text;

ExcelApplication1.Cells.Item[1,3].Value:=Combobox8.Text;

ADOTable6.First;

// If ADOTable6.FieldByName(gruppa).AsString<> then

ExcelApplication1.Cells.Item[i,2].Value:=ADOTable6.FieldByName(gruppa).AsString

else

// If (ADOQuery6.FieldByName(Spez).AsString<>) then

ExcelApplication1.Cells.Item[i,2].Value:=итого по специальности +ADOTable6.FieldByName(Spez).AsString;

If (ADOTable6.FieldByName(Spez).AsString=) then

ExcelApplication1.Cells.Item[i,2].Value:=итого по колледжу ;//+ADOQuery1.FieldByName(Kolledg).AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOTable6.FieldByName(kol).AsString;

ExcelApplication1.Cells.Item[i,6].Value:=ADOTable6.FieldByName(usp).AsString;

ExcelApplication1.Cells.Item[i,7].Value:=ADOTable6.FieldByName(kas).AsString;

//While not ADOTable6.Eof do

begin;

ShowMessage(ADOTable6.FieldByName(kas).AsString);

k4:= ADOTable6.FieldByName(usp).AsFloat;

k:=ADOTable6.FieldByName(kas).AsFloat;

//ShowMessage(FloatToStr(k4));

If ADOTable6.FieldByName(gruppa).AsString<> then

ExcelApplication1.Cells.Item[i,2].Value:=ADOTable6.FieldByName(gruppa).AsString

else

// If (ADOQuery6.FieldByName(Spez).AsString<>) then

ExcelApplication1.Cells.Item[i,2].Value:=итого по специальности +ADOTable6.FieldByName(Spez).AsString;

If (ADOTable6.FieldByName(Spez).AsString=) then

ExcelApplication1.Cells.Item[i,2].Value:=итого по колледжу ;//+ADOQuery1.FieldByName(Kolledg).AsString;

ExcelApplication1.Cells.Item[i,3].Value:=ADOTable6.FieldByName(kol).AsString;

ExcelApplication1.Cells.Item[i,4].Value:=ADOTable6.FieldByName(usp).AsString;

ExcelApplication1.Cells.Item[i,5].Value:=ADOTable6.FieldByName(kas).AsString; ADOTable6.Next;

//ADOQUERY1.Post;

i:=i+1;

end;

ExcelApplication1.Visible[0]:=true;

end;

procedure TForm18.ComboBox4Change(Sender: TObject);

begin

ADOTable2.Open;

ADOTable2.First;

ComboBox5.Items.Clear;

While not ADOTable2.Eof do

begin

if ADOTable2.Fieldbyname(Spez).AsString=ComboBox4.Text Then

ComboBox5.Items.Add(ADOTable2.fieldbyname(grupa).AsString);

ADOTable2.Next;

end;

ADOTable2.Close;

ComboBox5.Sorted:=True;

end;

end.