📄 ubbgl.pas
字号:
unit Ubbgl;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Buttons, Grids, DBGrids, Report_Public,
ComCtrls, XPMenu;
type
TFmbbgl = class(TForm)
spb1: TSpeedButton;
spb3: TSpeedButton;
spb2: TSpeedButton;
DataSource1: TDataSource;
Label1: TLabel;
ComboBox1: TComboBox;
Label2: TLabel;
ComboBox2: TComboBox;
Label3: TLabel;
Edit1: TEdit;
ADOQuery1: TADOQuery;
ADOCommand1: TADOCommand;
ListBox1: TListBox;
SReport1: TSReport;
DBGrid1: TDBGrid;
ADOTable1: TADOTable;
BitBtn1: TBitBtn;
spb4: TSpeedButton;
stb: TStatusBar;
pgb: TProgressBar;
XPMenu1: TXPMenu;
ListBox2: TListBox;
RadioButton1: TRadioButton;
rt2: TRadioButton;
spb5: TSpeedButton;
spb6: TSpeedButton;
spb7: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure spb1Click(Sender: TObject);
procedure spb3Click(Sender: TObject);
procedure spb2Click(Sender: TObject);
// procedure SpeedButton3Click(Sender: TObject);
procedure spb4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure rt2Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure spb5Click(Sender: TObject);
procedure spb6Click(Sender: TObject);
procedure spb7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure getXB() ;
PROCEDURE getBj();
function getkc():boolean;
function setFields():string;
procedure createtab();
procedure insertcj();
procedure insertxh();
end;
var
Fmbbgl: TFmbbgl;
ord:string;
//xhs:Tstrings;
implementation
uses Ubb, Udata;
{$R *.dfm}
function TFmbbgl.getkc():boolean;
var
strsql:string;
strxq,strbj,strkc:string;
begin
if (combobox2.ItemIndex<1) then begin
showmessage('必须先指定班级');
result:=false;
exit;
end;
if edit1.Text ='' then begin
showmessage('必须先填写学期');
edit1.SetFocus;
result:=false;
exit;
end;
strxq:=edit1.Text;
strbj:=trim(combobox2.Text);
strsql:='select * from tkcb2 where ckcb2_xq='''+strxq+''' and ckcb2_bj = '''+strbj+'''';
try
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(strsql);
result:=true;
adoquery1.Open;
if adoquery1.Eof and adoquery1.Bof then begin
showmessage('该班级在所填的学期还没开设任何课程');
result:=false;
exit;
end;
listbox1.Clear;
pgb.Max :=ADOQuery1.FieldCount;
pgb.Min:=0;
pgb.Step:=1;
pgb.StepIt;
stb.Panels[0].Text :='导出班级课程列表';
// listbox1.Items.BeginUpdate ;
while not adoquery1.Eof do
begin
listbox1.Items.Add(adoquery1.FieldValues['ckcb2_kc']);
//kcstrs.Add(adoquery1.FieldValues['ckcb2_kc']);
adoquery1.Next;
end;
//listbox1.Items:=kcstrs;
// listbox1.Items.EndUpdate;
finally
adoquery1.Close;
end;
end;
procedure TFmbbgl.getXB() ;
begin
try
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from txbb order by cxbb_xbbh');
adoquery1.Open;
ComboBox1.Clear;
ComboBox1.Items.Add('所有系别');
while not adoquery1.Eof do
begin
//dbcxblist.Items.Add(adoquery1.FieldValues['cxbb_bbm']);
ComboBox1.Items.Add(adoquery1.FieldValues['cxbb_bbm']);
adoquery1.Next;
end;
ComboBox1.ItemIndex:=0;
finally
adoquery1.Close;
end;
end;
PROCEDURE TFmbbgl.getBj();
var
strsql:string;
begin
combobox2.Clear;
combobox2.Items.Add('所有班级');
if combobox1.ItemIndex=0 then
strsql:='select * from tbjb'
else
strsql:='select * from tbjb where cbjb_xb='''+ trim(ComboBox1.Text) + '''order by cbjb_bjbh';
try
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(strsql);
adoquery1.Open;
while not adoquery1.Eof do
begin
ComboBox2.Items.Add(adoquery1.FieldValues['cbjb_bjm']);
adoquery1.Next;
end;
combobox2.ItemIndex := 0;
finally
adoquery1.Close;
end;
end;
procedure TFmbbgl.FormCreate(Sender: TObject);
begin
ord:='ccjb_xh';
getxb();
getBj();
pgb.Parent:=Stb;
pgb.Top:=2;
pgb.Left:=stb.Panels[0].Width ;
pgb.Height :=stb.Height-2;
pgb.Width:=stb.Panels[1].Width ;
//setConn();
stb.Panels[0].Text :='当前没有生成报表数据';
//xhs:=TStrings.Create;
end;
procedure TFmbbgl.ComboBox1Change(Sender: TObject);
begin
getbj();
end;
procedure TFmbbgl.spb1Click(Sender: TObject);
begin
adotable1.Close;
if not getkc() then exit;
createtab();
insertxh();
insertcj();
adotable1.TableName :='ttmp';
adotable1.Open;
spb2.Enabled:=true;
spb3.Enabled:=true;
spb4.Enabled:=true;
spb5.Enabled:=true;
spb6.Enabled:=true;
spb7.Enabled:=true;
pgb.Max :=0;
pgb.Min:=0;
stb.Panels[0].Text :='成功导出打印数据';
end;
procedure TFmbbgl.insertcj();
var
n,k:integer;
strxq,strcj,strkc,strsql,strxh:string;
begin
strxq:=edit1.Text;
k:=0;
//for n:=0 to listbox1.Items.Count-1 do begin
//strkc:=trim(listbox1.Items[n]);
for k:=0 to listbox2.Items.Count -1 do begin
strxh:=trim(listbox2.Items[k]);
strsql:='select * from tcjb where ccjb_xq='''+strxq+
''' and ccjb_xh='''+strxh+'''';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(strsql);
adoquery1.Open;
pgb.Max :=ADOQuery1.FieldCount;
pgb.Min:=0;
pgb.Step:=1;
pgb.StepIt;
stb.Panels[0].Text :='开始导出学生成绩';
while not adoquery1.Eof do
begin
strkc:=adoquery1.FieldValues ['ccjb_kc'];
strcj:=adoquery1.FieldValues['ccjb_cj'];
strsql:='update ttmp set '+strkc+'='+strcj+' where 学号='''+strxh+'''' ;
adocommand1.CommandText :=strsql;
adocommand1.Execute;
adoquery1.Next;
end;
end;
end;
procedure TFmbbgl.insertxh();
var
strxq,strsql,strxh:string;
begin
listbox2.Clear;
strxq:=edit1.Text;
strsql:='select ccjb_xh from tcjb where ccjb_xq='''+strxq+''' and ccjb_kc=''综合评测'' order by '+ord;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(strsql);
adoquery1.Open;
pgb.Max :=ADOQuery1.FieldCount;
pgb.Min:=0;
pgb.Step:=1;
pgb.StepIt;
stb.Panels[0].Text :='正在创建该班级学生列表';
while not adoquery1.Eof do
begin
strxh:=adoquery1.FieldValues['ccjb_xh'];
strsql:='insert into ttmp(学号) values('''+strxh+''')';
listbox2.Items.Add(strxh);
adocommand1.CommandText :=strsql;
adocommand1.Execute;
adoquery1.Next;
end;
end;
procedure TFmbbgl.createtab();
var
strcrt:string;
begin
stb.Panels[0].Text :='开始创建临时表';
strcrt:='drop table ttmp';
adocommand1.CommandText :=strcrt;
adocommand1.Execute;
strcrt:='CREATE TABLE ttmp (';
strcrt:=strcrt+ setFields();
strcrt:=strcrt+')';
//showmessage(strcrt);
adocommand1.CommandText :=strcrt;
adocommand1.Execute;
stb.Panels[0].Text :='临时表创建完毕';
end;
function tfmbbgl.setFields():string;
var
strfileds:string;
strfi:string;
i:integer;
begin
if listbox1.Items.Count < 1 then exit;
strfi:='';
strfileds:='学号 text(20)';
pgb.Max :=listbox1.Items.Count;
pgb.Min:=0;
pgb.Step:=1;
pgb.StepIt;
for i:=0 to listbox1.Items.Count-1 do begin
strfi:=listbox1.Items[i];
strfileds:=strfileds+','+strfi+' text(10)'
end;
result:=strfileds;
end;
procedure TFmbbgl.spb3Click(Sender: TObject);
begin
SReport1.SRep_Print;
end;
procedure TFmbbgl.spb2Click(Sender: TObject);
begin
SReport1.SRep_Setting ;
end;
procedure TFmbbgl.spb4Click(Sender: TObject);
begin
SReport1.SRep_Preview;
end;
procedure TFmbbgl.FormClose(Sender: TObject; var Action: TCloseAction);
begin
adotable1.Close;
spb2.Enabled:=false;
spb3.Enabled:=false;
spb3.Enabled:=false;
spb5.Enabled:=false;
spb6.Enabled:=false;
spb7.Enabled:=false;
stb.Panels[0].Text :='当前没有生成报表数据';
end;
procedure TFmbbgl.rt2Click(Sender: TObject);
begin
if rt2.Checked then
ord:='ccjb_xh'
else
ord:='ccjb_cj desc' ;
end;
procedure TFmbbgl.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked then
ord:='ccjb_cj desc'
else
ord:='ccjb_xh' ;
end;
procedure TFmbbgl.spb5Click(Sender: TObject);
begin
SReport1.SRep_PrintToExeclSelect;
end;
procedure TFmbbgl.spb6Click(Sender: TObject);
begin
SReport1.SRep_PrintToTxtSelect;
end;
procedure TFmbbgl.spb7Click(Sender: TObject);
begin
SReport1.SRep_PrintToHtmlSelect;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -