⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bks.~pas

📁 高校教师工作量计算管理系统的设计与开发
💻 ~PAS
字号:
unit BKS;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ToolWin, Db, ADODB, Grids, DBGrids, StdCtrls,
  LMDCustomComponent, LMDContainerComponent, LMDBaseDialog, LMDCalendarDlg,
  LMDCustomControl, LMDCustomPanel, LMDCustomBevelPanel, LMDBaseEdit,
  LMDCustomEdit, LMDCustomMaskEdit, LMDCalendarEdit, LMDCustomExtCombo,
  LMDCalendarComboBox, Mask, ToolEdit, RXSpin, CurrEdit, THExtCtrls,
  RxLookup, Buttons, DBGridEh, PrnDbgeh,EhLibADO;

type
  TFBKS = class(TForm)
    ToolBar1: TToolBar;
    TBNEW: TToolButton;
    TBDel: TToolButton;
    TBEdit: TToolButton;
    TBsave: TToolButton;
    TBcancel: TToolButton;
    TBoutput: TToolButton;
    TBPrint: TToolButton;
    TBEXIT: TToolButton;
    ADO_BKS: TADOQuery;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    DataSource1: TDataSource;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edit_XM: TEdit;
    CB_XQ: TComboBox;
    Edit_KCMC: TEdit;
    RxS_KS: TRxSpinEdit;
    Label8: TLabel;
    Edit_CS1: TCurrencyEdit;
    Edit_CS2: TCurrencyEdit;
    RxS_ND: TRxSpinEdit;
    THZT: TTHBevel;
    ADO_TEST: TADOQuery;
    GB_CX: TGroupBox;
    CB_ZD: TComboBox;
    Edit_SQL: TEdit;
    Label9: TLabel;
    BitBtn1: TBitBtn;
    Label10: TLabel;
    Label11: TLabel;
    RxS_RS: TRxSpinEdit;
    Edit_KSL: TCurrencyEdit;
    Label12: TLabel;
    CB_JJ: TComboBox;
    Label13: TLabel;
    TB_JS: TToolButton;
    DBGridEh1: TDBGridEh;
    PrintDBGridEh1: TPrintDBGridEh;
    procedure EDITZT(Sender: TObject);    //设置编辑状态
    procedure FZ(Sender: TObject);    //赋值
    procedure TBEXITClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure TBNEWClick(Sender: TObject);
    procedure TBcancelClick(Sender: TObject);
    procedure TBsaveClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure ADO_BKSBeforeScroll(DataSet: TDataSet);
    procedure TBEditClick(Sender: TObject);
    procedure TBoutputClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure TB_JSClick(Sender: TObject);
    procedure TBPrintClick(Sender: TObject);
    procedure DBGridEh1CellClick(Column: TColumnEh);
    procedure DBGridEh1SortMarkingChanged(Sender: TObject);

  private

   //编辑状态    0 查看 1新增 2编辑
    { Private declarations }
  public
  ZT:integer;
    { Public declarations }
  end;

var
    FBKS: TFBKS;
implementation

uses main,tools,DBGridEhToExcel;
{$R *.DFM}

procedure TFBKS.FZ(Sender: TObject);
begin
if ADO_BKS.RecordCount<>0 then
begin
Edit_XM.Text:=ado_BKS['xm'];
RxS_ND.Text:=ado_BKS['ND'];
CB_XQ.Text:=ado_BKS['XQ'];
Edit_KCMC.Text:=ado_BKS['KCMC'];
RxS_RS.text:=inttostr(ado_BKS['RS']);
RxS_KS.text:=inttostr(ado_BKS['KS']);
Edit_CS1.Value:=ado_BKS['CS1'] ;
Edit_CS2.Value:=ado_BKS['CS2'];
edit_KSL.Value:=ado_BKS['KSL'];
end;
end;

procedure TFBKS.EDITZT(Sender: TObject);
begin
if ZT=0 then //查看
 BEGIN
 THZT.Caption:='查看';
 TBnew.Enabled:=true;
 TBDel.Enabled :=true;
 tbedit.Enabled :=true;
 TBoutput.Enabled :=true;
 TBPrint.Enabled :=true;
 tbsave.Enabled :=false;
 tbcancel.Enabled:=false;
 GB_CX.Enabled:=true;
 TB_JS.Enabled:=TRUE; 
 //----------------------------
 edit_xm.Enabled:=false;
 RxS_RS.Enabled:=false;
 RxS_ND.Enabled:=false;
 CB_XQ.Enabled:=false;
 Edit_KCMC.Enabled:=false;
 RxS_KS.Enabled:=false;
 Edit_CS1.Enabled:=false;
 Edit_CS2.Enabled:=false;
 end;
if ZT=1 then //新增
 BEGIN
 THZT.Caption:='新增';
 TBnew.Enabled:=false;
 TBDel.Enabled :=FALSE;
 tbedit.Enabled :=FALSE;
 TBoutput.Enabled :=FALSE;
 TBPrint.Enabled :=FALSE;
 tbsave.Enabled :=true;
 tbcancel.Enabled:=true;
 GB_CX.Enabled:=false;
 TB_JS.Enabled:=FALSE;
 //----------
 edit_xm.Enabled:=true;
 RxS_RS.Enabled:=true;
 RxS_ND.Enabled:=true;
 CB_XQ.Enabled:=true;
 Edit_KCMC.Enabled:=true;
 RxS_KS.Enabled:=true;
 Edit_CS1.Enabled:=true;
 Edit_CS2.Enabled:=true;
 //赋值
 Edit_XM.Text:='';
 CB_XQ.Text:=ado_BKS['XQ'];
 Edit_KCMC.Text:='';
 Edit_KSL.Text:='';

 end;
if ZT=2 then //修改
 BEGIN
 THZT.Caption:='修改';
 TBnew.Enabled:=false;
 TBDel.Enabled :=FALSE;
 tbedit.Enabled :=FALSE;
 TBoutput.Enabled :=FALSE;
 TBPrint.Enabled :=FALSE;
 tbsave.Enabled :=true;
 tbcancel.Enabled:=true;
 GB_CX.Enabled:=false;
 TB_JS.Enabled:=FALSE;
 //---------------------------
 edit_xm.Enabled:=true;
 RxS_RS.Enabled:=true;
 RxS_ND.Enabled:=true;
 CB_XQ.Enabled:=true;
 Edit_KCMC.Enabled:=true;
 RxS_KS.Enabled:=true;
 Edit_CS1.Enabled:=true;
 Edit_CS2.Enabled:=true;
 end;
end;

procedure TFBKS.TBEXITClick(Sender: TObject);
begin
close;
end;

procedure TFBKS.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;

procedure TFBKS.FormDestroy(Sender: TObject);
begin
fBKS:=nil;
end;

procedure TFBKS.FormCreate(Sender: TObject);
begin
ADO_BKS.Close;
ADO_BKS.sql.Clear;
ADO_BKS.SQL.add('SELECT * from BKS ');
//showmessage(QueryJXKHMXB.SQL.Text);
ADO_BKS.Open;
if ADO_BKS.RecordCount<>0 then
begin
Edit_XM.Text:=ado_BKS['xm'];
RxS_ND.Text:=ado_BKS['ND'];
CB_XQ.Text:=ado_BKS['XQ'];
Edit_KCMC.Text:=ado_BKS['KCMC'];
RxS_RS.text:=inttostr(ado_BKS['RS']);
RxS_KS.text:=inttostr(ado_BKS['KS']);
Edit_CS1.Value:=ado_BKS['CS1'] ;
Edit_CS2.Value:=ado_BKS['CS2'];
edit_KSL.Value:=ado_BKS['KSL'];
end;
CB_ZD.ItemIndex:=0;
CB_JJ.ItemIndex:=0;
end;

procedure TFBKS.TBNEWClick(Sender: TObject);
begin
zt:=1;
FBKS.EDITZT(self);
RXS_nd.Text:=copy(datetostr(Now),1,4);
cb_xq.ItemIndex:=0; 
end;

procedure TFBKS.TBcancelClick(Sender: TObject);
begin
zt:=0;
FBKS.EDITZT(self);
if ADO_BKS.RecordCount<>0 then
begin
Edit_XM.Text:=ado_BKS['xm'];
RxS_ND.Text:=ado_BKS['ND'];
CB_XQ.Text:=ado_BKS['XQ'];
Edit_KCMC.Text:=ado_BKS['KCMC'];
RxS_RS.text:=inttostr(ado_BKS['RS']);
RxS_KS.text:=inttostr(ado_BKS['KS']);
Edit_CS1.Value:=ado_BKS['CS1'] ;
Edit_CS2.Value:=ado_BKS['CS2'];
edit_KSL.Value:=ado_BKS['KSL'];
end;
end;

procedure TFBKS.TBsaveClick(Sender: TObject);
begin

if (zt=1) or (zt=2)  then
begin
 if (Edit_XM.Text='') or (RxS_ND.Text='') or(Edit_KCMC.Text='') then
  begin
  showmessage('关键信息输入不全,请确定以下信息输入不能为空'+char(13)+'姓名'+char(13)+'年度'+char(13)+'科目名称') ;
  exit;
  end
 else
  begin
  if zt=1 then
  begin
   ADO_test.Close;
   ADO_test.sql.Clear;

   ADO_test.SQL.add ('SELECT * from BKS where xm='''+trim(Edit_XM.Text)+''' and ND='''+trim(RxS_ND.Text)+''' and xq='''+trim(CB_XQ.Text)+''' and KCMC='''+trim(Edit_KCMC.Text)+'''');
  // showmessage(ADO_test.SQL.Text);
   ADO_test.Open;
   if ADO_test.RecordCount<>0 then
    begin
    showmessage('教学信息重复,请确定以下项目不能重复一致!'+char(13)+'姓名'+char(13)+'年度'+char(13)+'学期'+char(13)+'课程名称');
    exit;
    end
    else
    ado_BKS.Insert ;
  end
  else
  ado_BKS.edit;
  ado_BKS['xm']:=trim(Edit_XM.Text);
  ado_BKS['RS']:=RxS_RS.Value;
  ado_BKS['ND']:=trim(RxS_ND.Text);
  ado_BKS['XQ']:=trim(CB_XQ.Text);
  ado_BKS['KCMC']:=trim(Edit_KCMC.Text);
  ado_BKS['KS']:=RxS_KS.Value;
  ado_BKS['CS1']:=Edit_CS1.Value ;
  ado_BKS['CS2']:=Edit_CS2.Value;
  try
  ado_BKS['KSL']:=(((RxS_RS.Value-Edit_CS1.Value)/Edit_CS1.Value)*Edit_CS2.Value+1)*RxS_KS.Value;
  ado_BKS.Post;
  except
  showmessage('课时量计算参数不正确,请重新赋值!');
  ado_BKS.cancel;
  end;
  zt:=0;
  FBKS.EDITZT(self);
  end;
end;
end;
procedure TFBKS.TBDelClick(Sender: TObject);
begin
if  ado_BKS.RecordCount<>0 then
begin
   if MessageDlg('确定要删除 '+trim(ado_BKS['XM'])+' 的教学信息吗?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
     ado_BKS.Delete;
   FBKS.FZ(self);
end;   
end;

procedure TFBKS.ADO_BKSBeforeScroll(DataSet: TDataSet);
begin
if (ado_BKS.RecordCount<>0) and (ZT=0) then
begin
zt:=0;
FBKS.EDITZT(self);
Edit_XM.Text:=ado_BKS['xm'];
RxS_ND.Text:=ado_BKS['ND'];
CB_XQ.Text:=ado_BKS['XQ'];
Edit_KCMC.Text:=ado_BKS['KCMC'];
RxS_RS.text:=inttostr(ado_BKS['RS']);
RxS_KS.text:=inttostr(ado_BKS['KS']);
Edit_CS1.value:=ado_BKS['CS1'] ;
Edit_CS2.value:=ado_BKS['CS2'];
edit_KSL.Value:=ado_BKS['KSL'];
end;
end;

procedure TFBKS.TBEditClick(Sender: TObject);
begin
zt:=2;
FBKS.EDITZT(self);

end;

procedure TFBKS.TBoutputClick(Sender: TObject);
var
DBGridEhToExcel: TDBGridEhToExcel;
begin
DBGridEhToExcel := TDBGridEhToExcel.Create(nil);
try
DBGridEhToExcel.TitleName := '本科教学信息一览表';
DBGridEhToExcel.DBGridEh := DBGridEh1;
DBGridEhToExcel.ShowProgress := True;
DBGridEhToExcel.FileName := ExtractFileDir(Application.Exename)+'\本科教学信息一览表.xls';
DBGridEhToExcel.ExportToExcel;
finally
DBGridEhToExcel.Free;
//CopyDbDataToExcel([DBGrid1]);
//CopyDbDataToExcel([DBGridEh1]);
end;
end;

procedure TFBKS.BitBtn1Click(Sender: TObject);
var
SQL:string;
SQLOLD:string;
begin
case CB_ZD.ItemIndex of
 0:
 SQL:='SELECT * from BKS ';
 1:
 SQL:='SELECT * from BKS where xm '+CB_JJ.Text+' '+Edit_SQL.text;
 2:
 SQL:='SELECT * from BKS where ND' +CB_JJ.Text+' '+Edit_SQL.text;
 3:
 SQL:='SELECT * from BKS where XQ' +CB_JJ.Text+' '+Edit_SQL.text;
 4:
 SQL:='SELECT * from BKS where KS' +CB_JJ.Text+' '+Edit_SQL.text;
 5:
 SQL:='SELECT * from BKS where KCMC' +CB_JJ.Text+' '+Edit_SQL.text;
 end;
try
SQLOLD:=ADO_BKS.SQL.Text;
ADO_BKS.Close;
ADO_BKS.Prepared:=false;
ADO_BKS.sql.Clear;
ADO_BKS.SQL.add (SQL);
//showmessage(ADO_BKS.SQL.Text);
ADO_BKS.Open;
except
showmessage('查询失败!请确认查询内容是否正确!');
ADO_BKS.sql.Clear;
ADO_BKS.SQL.add (SQLOLD);
ADO_BKS.Open;
end;
FBKS.FZ(self);
end;
procedure TFBKS.TB_JSClick(Sender: TObject);
begin
if MessageDlg('确定要重新计算教学课时量吗?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
begin
 ado_BKs.First;
 while not ado_BKs.Eof do
  begin
  ado_BKs.edit;
   try
   ado_BKS['KSL']:=(((ado_BKS['RS']-ado_BKS['CS1'])/ado_BKS['CS1'])*ado_BKS['CS2']+1)*ado_BKS['KS'];
   ado_BKS.Post;
   except
   showmessage(ado_BKS['XM']+ado_BKS['ND']+'年度'+ado_BKS['XQ']+'课时量计算参数不正确,请重新赋值!');
   ado_BKS.cancel;
   end;
   ado_BKs.Next;
  end;
end;
end;

procedure TFBKS.TBPrintClick(Sender: TObject);
begin
  PrintDBGridEh1.PageFooter.LeftText.Clear ;
  PrintDBGridEh1.PageFooter.LeftText.add('');
 //  PrintDBGridEh1.PageFooter.LeftText.add('单位:'+gsmc+'      打印人:'+czy);
  PrintDBGridEh1.PageFooter.LeftText.add('');
  //PrintDBGridEh1.PageFooter.LeftText.add('');
  PrintDBGridEh1.PageFooter.RightText.Clear ;
  PrintDBGridEh1.PageFooter.RightText.add('打印日期:'+formatdatetime('yyyy-mm-dd',date));
  //PrintDBGridEh1.PageFooter.RightText.add('');
  PrintDBGridEh1.PageFooter.RightText.add('');
  PrintDBGridEh1.PageFooter.centertext.Clear ;
  PrintDBGridEh1.PageFooter.centertext.Add('');
  PrintDBGridEh1.PageFooter.centertext.add(' 第 &[Page] 页 共 &[Pages] 页');
  PrintDBGridEh1.Preview; 
end;

procedure TFBKS.DBGridEh1CellClick(Column: TColumnEh);
begin
if ado_BKS.RecordCount<>0   then
begin
Edit_XM.Text:=ado_BKS['xm'];
RxS_ND.Text:=ado_BKS['ND'];
CB_XQ.Text:=ado_BKS['XQ'];
Edit_KCMC.Text:=ado_BKS['KCMC'];
RxS_RS.text:=inttostr(ado_BKS['RS']);
RxS_KS.text:=inttostr(ado_BKS['KS']);
Edit_CS1.value:=ado_BKS['CS1'] ;
Edit_CS2.value:=ado_BKS['CS2'];
edit_KSL.Value:=ado_BKS['KSL'];
end;
end;

procedure TFBKS.DBGridEh1SortMarkingChanged(Sender: TObject);
begin
zt:=0;
FBKS.EDITZT(self);
if DBGridEh1.Columns[DBGridEh1.Columns.Grid.SelectedIndex].Title.SortMarker= smDownEh then
ado_BKS.sort:=DBGridEh1.Columns[DBGridEh1.Columns.Grid.SelectedIndex].Field.DisplayName+' DESC'
else
ado_BKS.sort:=DBGridEh1.Columns[DBGridEh1.Columns.Grid.SelectedIndex].Field.DisplayName+' ASC';
//showmessage(DBGridEh1.Columns[DBGridEh1.Columns.Grid.SelectedIndex].Field.DisplayName);
ado_BKS.First; 
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -