Этапы разработка программного продукта
Данная программа создана для учета успеваемости студентов.
Для работы с программой необходимо нужные группы или списки студентов копировать из имеющегося списка, в электронную таблицу «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.