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 + -
显示快捷键?