uhonoursstd.pas

来自「一.录入学生信息(预计有81个学生」· PAS 代码 · 共 215 行

PAS
215
字号
unit uHonoursStd;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ImgList, DB, ADODB, Buttons, ExtCtrls,
  Grids, DBGridEh;

type
  TfrmHonoursStd = class(TForm)
    GroupBox1: TGroupBox;
    Tree: TTreeView;
    ImageList1: TImageList;
    dsQuery: TADODataSet;
    GroupBox2: TGroupBox;
    Panel2: TPanel;
    cmdAppend: TBitBtn;
    cmdEdit: TBitBtn;
    cmdClose: TBitBtn;
    DBGridEh1: TDBGridEh;
    DataSource1: TDataSource;
    dsStd: TADODataSet;
    ADOCommand1: TADOCommand;
    dsTemp: TADODataSet;
    Function ReadyData():Boolean;
    Function ReadyList():Boolean;

    procedure cmdCloseClick(Sender: TObject);
    procedure cmdAppendClick(Sender: TObject);
    procedure TreeClick(Sender: TObject);
    procedure cmdEditClick(Sender: TObject);
    procedure DBGridEh1DblClick(Sender: TObject);
    procedure DBGridEh1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Function ShowHonoursStd():Boolean;

implementation

uses uDM,uPub,uHonoursStdEdit;

{$R *.dfm}

Function ShowHonoursStd():Boolean;
var
  frmHonoursStd: TfrmHonoursStd;
begin
  Result:=False;
  frmHonoursStd:=TfrmHonoursStd.Create(nil);
  if Not frmHonoursStd.ReadyData then
  begin
    frmHonoursStd.Free;
    Exit;
  end;
  frmHonoursStd.ShowModal;
  frmHonoursStd.Free;
  Result:=True;
end;

Function TfrmHonoursStd.ReadyData():Boolean;
var TmpSQL:String;
    OldTerm:String;
    TmpData:PNodeData;
    TmpItem,LastPar:TTreeNode;
begin
  Result:=False;
  TmpSQL:='select TTermToClass.*,TTerm.TermName,TClass.ClassName from TTermToClass,TTerm,TClass'+
    ' where TTermToClass.TermCode=TTerm.TermCode And TTermToClass.ClassCode=TClass.ClassCode'+
    ' Order by TTermToClass.TermCode,TTermToClass.ClassCode';
  dsQuery.Close;
  dsQuery.CommandText:=TmpSQL;
  Try
    dsQuery.Open;
  Except
    ShowMessage('读取本地数据文件发生错误!');
    Exit;
  End;
  dsQuery.First;
  LastPar:=nil;
  While Not dsQuery.Eof Do
  begin
    if OldTerm<>dsQuery.FieldByName('TermCode').AsString then
    begin
      new(TmpData);
      TmpItem:=Tree.Items.Add(nil,dsQuery.FieldByName('TermName').AsString);
      TmpItem.ImageIndex:=0;
      TmpItem.SelectedIndex:=0;
      TmpData.Code:=dsQuery.FieldByName('TermCode').AsString;
      TmpData.Name:=dsQuery.FieldByName('TermName').AsString;
      TmpItem.Data:=TmpData;
      OldTerm:=dsQuery.FieldByName('TermCode').AsString;
      LastPar:=TmpItem;
    end;
    new(TmpData);
    TmpItem:=Tree.Items.AddChild(LastPar,dsQuery.FieldByName('ClassName').AsString);
    TmpItem.ImageIndex:=1;
    TmpItem.SelectedIndex:=1;
    TmpData.Code:=dsQuery.FieldByName('ClassCode').AsString;
    TmpData.Name:=dsQuery.FieldByName('ClassName').AsString;
    TmpItem.Data:=TmpData;
    dsQuery.Next;
  end;
  Result:=True;
end;

Function TfrmHonoursStd.ReadyList():Boolean;
var TmpSQL:String;
begin
  Result:=True;
  if Tree.Selected=nil then Exit;
  if Tree.Selected.Level=0 then Exit;
  TmpSQL:='SELECT THonoursStd.*,TSubject.SubjName from THonoursStd,TSubject'+
    ' where THonoursStd.SubjectCode=TSubject.SubjCode'+
    ' And THonoursStd.TermCode='+PNodeData(Tree.Selected.Parent.Data)^.Code+
    ' And THonoursStd.ClassCode='+''''+PNodeData(Tree.Selected.Data)^.Code+''''+
    ' Order by THonoursStd.SubjectCode';
  dsStd.Close;
  dsStd.CommandText:=TmpSQL;
  Try
    dsStd.Open;
  Except
    ShowMessage('读取本地数据文件发生错误!');
    Exit;
  End;
  Result:=True;
end;

procedure TfrmHonoursStd.cmdCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmHonoursStd.cmdAppendClick(Sender: TObject);
var TmpSQL:String;
begin
  if Tree.Selected=nil then Exit;
  if Tree.Selected.Level=0 then Exit;
  if Not dsStd.IsEmpty then
  begin
    if MessageDlg('已经有记录存在,初始化将把已有记录覆盖,是否继续?',mtWarning,[mbYes,mbno],0)=mrNo then Exit;
  end;
  TmpSQL:='Delete from THonoursStd Where TermCode='+PNodeData(Tree.Selected.Parent.Data)^.Code+
    ' And ClassCode='+''''+PNodeData(Tree.Selected.Data)^.Code+'''';
  ADOCommand1.CommandText:=TmpSQL;
  Try
    ADOCommand1.Execute;
  Except
    ShowMessage('初始化过程中发生错误!请重新初始化!');
    Exit;
  End;
  TmpSQL:='Select* from TClassToSubject Where TermCode='+PNodeData(Tree.Selected.Parent.Data)^.Code+
    ' And ClassCode='+''''+PNodeData(Tree.Selected.Data)^.Code+'''';
  dsTemp.Close;
  dsTemp.CommandText:=TmpSQL;
  Try
    dsTemp.Open;
  Except
    ShowMessage('初始化过程中发生错误!请重新初始化!');
    Exit;
  End;
  dsTemp.First;
  While Not dsTemp.Eof Do
  begin
    TmpSQL:='Insert into THonoursStd (TermCode,ClassCode,SubjectCode,Score) Values('+
      PNodeData(Tree.Selected.Parent.Data)^.Code+','+''''+PNodeData(Tree.Selected.Data)^.Code+''''+','+
      ''''+dsTemp.fieldByName('SubjCode').AsString+''''+',85)';
    ADOCommand1.CommandText:=TmpSQL;
    Try
      ADOCommand1.Execute;
    Except
      ShowMessage('初始化过程中发生错误!请重新初始化!');
      Exit;
    End;      
    dsTemp.Next;
  end;
  ShowMessage('指定学期,指定班级的评优标准初始化完成!');
  ReadyList;
end;

procedure TfrmHonoursStd.TreeClick(Sender: TObject);
begin
  ReadyList;
end;

procedure TfrmHonoursStd.cmdEditClick(Sender: TObject);
begin
  if Tree.Selected=nil then Exit;
  if Tree.Selected.Level=0 then Exit;
  if dsStd.IsEmpty then Exit;
  if Not ShowonoursStdEdit(dsStd.FieldByName('ID').AsInteger) then Exit;
  ReadyList;  
end;

procedure TfrmHonoursStd.DBGridEh1DblClick(Sender: TObject);
begin
  cmdEditClick(nil);
end;

procedure TfrmHonoursStd.DBGridEh1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=vk_Return then
  begin
    cmdEditClick(nil);
  end;
end;

end.

⌨️ 快捷键说明

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