uclasstosubject.~pas
来自「一.录入学生信息(预计有81个学生」· ~PAS 代码 · 共 218 行
~PAS
218 行
unit uClassToSubject;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, Grids, DBGridEh, ComCtrls, DB,
ADODB, ImgList;
type
TfrmClassToSubject = class(TForm)
GroupBox1: TGroupBox;
Panel1: TPanel;
GroupBox2: TGroupBox;
Panel2: TPanel;
GroupBox3: TGroupBox;
sbDown: TSpeedButton;
sbUp: TSpeedButton;
DBGridEh1: TDBGridEh;
DBGridEh2: TDBGridEh;
Tree: TTreeView;
dsQuery: TADODataSet;
ImageList1: TImageList;
dsSubject: TADODataSet;
dsSubjectMain: TADODataSet;
DataSource1: TDataSource;
DataSource2: TDataSource;
ADOCommand1: TADOCommand;
Function ReadyData():Boolean;
Function ReadyList():Boolean;
procedure TreeClick(Sender: TObject);
procedure sbUpClick(Sender: TObject);
procedure DBGridEh2DblClick(Sender: TObject);
procedure sbDownClick(Sender: TObject);
procedure DBGridEh1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Function ShowClassToSubject():Boolean;
implementation
uses uPub,uDM;
{$R *.dfm}
Function ShowClassToSubject():Boolean;
var
frmClassToSubject: TfrmClassToSubject;
begin
Result:=False;
frmClassToSubject:=TfrmClassToSubject.Create(nil);
if Not frmClassToSubject.ReadyData then
begin
frmClassToSubject.Free;
Exit;
end;
frmClassToSubject.ShowModal;
frmClassToSubject.Free;
Result:=True;
end;
Function TfrmClassToSubject.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 TfrmClassToSubject.ReadyList():Boolean;
var TmpSQL:String;
begin
Result:=False;
if Tree.Selected=nil then
begin
dsSubject.Close;
dsSubjectMain.Close;
Exit;
end;
if Tree.Selected.Level=0 then
begin
dsSubject.Close;
dsSubjectMain.Close;
Exit;
end;
TmpSQL:='SELECT TClassToSubject.*,TSubject.SubjName from TClassToSubject,TSubject Where'+
' TClassToSubject.SubjCode= TSubject.SubjCode'+
' And TClassToSubject.TermCode='+PNodeData(Tree.Selected.Parent.Data)^.Code+
' And TClassToSubject.ClassCode='+''''+PNodeData(Tree.Selected.Data)^.Code+'''';
dsSubject.Close;
dsSubject.CommandText:=TmpSQL;
Try
dsSubject.Open;
Except
ShowMessage('打开数据文件发生错误!');
Exit;
End;
GroupBox2.Caption:='学期['+PNodeData(Tree.Selected.Parent.Data)^.Name+']班级['+
PNodeData(Tree.Selected.Data)^.Name+']开设的课程科目!';
TmpSQL:='select * from TSubject Where 1=1 '+
' and Not SubjCode in (Select SubjCode from TClassToSubject Where 1=1 '+
' And TermCode='+PNodeData(Tree.Selected.Parent.Data)^.Code+
' And ClassCode='+''''+PNodeData(Tree.Selected.Data)^.Code+''''+
')'+' Order by SubjCode';
dsSubjectMain.Close;
dsSubjectMain.CommandText:=TmpSQL;
Try
dsSubjectMain.Open;
Except
ShowMessage('读取本地数据文件发生错误!');
Exit;
End;
Result:=True;
end;
procedure TfrmClassToSubject.TreeClick(Sender: TObject);
begin
ReadyList;
end;
procedure TfrmClassToSubject.sbUpClick(Sender: TObject);
var TmpSQL:String;
begin
if Tree.Selected=nil then Exit;
if Tree.Selected.Level=0 then Exit;
if dsSubjectMain.IsEmpty then Exit;
TmpSQL:='Insert into TClassToSubject (TermCode,ClassCode,SubjCode) Values('+
PNodeData(Tree.Selected.Parent.Data)^.Code+','+''''+PNodeData(Tree.Selected.Data)^.Code+''''+','+
''''+dsSubjectMain.fieldByName('SubjCode').AsString+''''+')';
ADOCommand1.CommandText:=TmpSQL;
Try
ADOCommand1.Execute;
Except
ShowMessage('增加数据发生错误!');
Exit;
end;
ReadyList;
end;
procedure TfrmClassToSubject.DBGridEh2DblClick(Sender: TObject);
begin
sbUpClick(nil);
end;
procedure TfrmClassToSubject.sbDownClick(Sender: TObject);
var TmpSQL:String;
begin
if Tree.Selected=nil then Exit;
if Tree.Selected.Level=0 then Exit;
if dsSubject.IsEmpty then Exit;
TmpSQL:='Delete From TClassToSubject where TermCode='+
PNodeData(Tree.Selected.Parent.Data)^.Code+' And ClassCode='+''''+
PNodeData(Tree.Selected.Data)^.Code+''''+
' And SubjCode='+''''+dsSubject.fieldByName('SubjCode').AsString+'''';
ADOCommand1.CommandText:=TmpSQL;
Try
ADOCommand1.Execute;
Except
ShowMessage('删除数据发生错误,可能该对应班级记录已经进入使用!');
Exit;
End;
ReadyList;
end;
procedure TfrmClassToSubject.DBGridEh1DblClick(Sender: TObject);
begin
sbDownClick(nil);
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?