📄 unitclassroom.pas.~107~
字号:
unit UnitClassRoom;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs,UnitDatamodule,CheckLst,unitCollide;
type
TClassRoom = class(TObject)
public
procedure readClassroomList(school:String;List1:TCheckListBox;Subject:String);//读取某个科目的考室列表
function inceptClassroom(school:string;classNum:Integer;Subject:String):Boolean; //接收某个科目的某个考室成绩
procedure DeleteClassroom(school:string;classNum:Integer;Subject:String);//清除某个科目的某个考室成绩
end;
implementation
uses UnitGlobal;
{
********************************** TClassRoom **********************************
}
procedure TClassRoom.DeleteClassroom(school: string; classNum: Integer;
Subject: String);
var
startZkzh,schorder:String;
begin
dm.Trans1.Active:=false;
dm.Query1.Close;
dm.Query1.SQL.Text:='select schorder from school where schname='''+school+'''';
dm.Query1.Open;
dm.Query1.First;
schorder:=dm.Query1.FieldByName('schorder').AsString;
if classNum<10 then
startZkzh:=schorder+'0'+inttostr(classNum)+'01'
else
startZkzh:=schorder+inttostr(classNum)+'01';
dm.Query1.Close;
dm.Query1.SQL.Text:='delete from incepted where substring(zkzh from 2 for 8)='''+startZkzh+
''' and subject='''+subject+'''';
dm.Query1.ExecSQL;
dm.Trans1.Commit;
dm.TransIncept.Active:=false;
dm.QueryIncept.Close;
dm.QueryIncept.SQL.Text:='select first 30 skip '+inttostr((classNum-1)*30)+' zkzh,'+Subject+
' from student where substring(zkzh from 2 for 4)='''+schorder+'''';
dm.QueryIncept.Open;
dm.UpdateIncept.ModifySQL.Text:='update student set '+Subject+'=:'+Subject+' where zkzh=:OLD_zkzh';
dm.QueryIncept.First;
while not dm.QueryIncept.Eof do
begin
dm.QueryIncept.Edit;
dm.QueryIncept.FieldByName(subject).AsFloat:=0;
dm.QueryIncept.Post;
dm.QueryIncept.Next;
end;
dm.TransIncept.Commit;
end;
function TClassRoom.inceptClassroom(school: string; classNum: Integer;
Subject: String):Boolean;
var
fmCollide:TfmCollide;
schorder:String;
begin
result:=true;
fmCollide:=TfmCollide.Create(nil);
fmCollide.StringGrid1.RowCount:=1;
fmCollide.StringGrid1.Cells[0,0]:='准考证号';
fmCollide.StringGrid1.Cells[1,0]:='一号录入';
fmCollide.StringGrid1.Cells[2,0]:='二号录入';
dm.Trans1.Active:=false;
dm.Trans1.Active:=false;
dm.Query1.Close;
dm.Query1.SQL.Text:='select schorder from school where schname='''+school+'''';
dm.Query1.Open;
schOrder:=dm.Query1.FieldByName('schorder').AsString;
dm.Query1.Close;
dm.Query1.SQL.Text:='select first 30 skip '+inttostr((classNum-1)*30)+' zkzh,'+Subject+
' from ach1 where substring(zkzh from 2 for 4)='''+schorder+''' order by substring(zkzh,2,8)';
dm.Query1.Open;
dm.Trans2.Active:=false;
dm.Query2.Close;
dm.Query2.SQL.Text:='select first 30 skip '+inttostr((classNum-1)*30)+' zkzh,'+Subject+
' from ach2 where substring(zkzh from 2 for 4)='''+schorder+''' substring(zkzh,2,8)';
dm.Query2.Open;
dm.Query1.First;
dm.Query2.First;
while not dm.Query1.Eof do
begin
if dm.Query1.FieldByName(subject).AsFloat<>dm.Query2.FieldByName(subject).AsFloat then
begin
result:=false;
fmCollide.StringGrid1.RowCount:=fmCollide.StringGrid1.RowCount+1;
fmCollide.StringGrid1.Cells[0,fmCollide.StringGrid1.RowCount-1]:=dm.Query1.FieldByName('zkzh').AsString;
fmCollide.StringGrid1.Cells[1,fmCollide.StringGrid1.RowCount-1]:=floattostr(dm.Query1.FieldByName(subject).AsFloat);
fmCollide.StringGrid1.Cells[2,fmCollide.StringGrid1.RowCount-1]:=floattostr(dm.Query2.FieldByName(subject).AsFloat);
end;
dm.Query1.Next;
dm.Query2.Next;
end;
if result=false then
fmCollide.ShowModal //有冲突,则显示冲突窗体,没冲突则将成绩接收
else
begin
dm.TransIncept.Active:=false;
dm.QueryIncept.Close;
dm.QueryIncept.SQL.Text:='select first 30 skip '+inttostr((classNum-1)*30)+' zkzh,'+Subject+
' from student where substring(zkzh from 2 for 4)='''+schorder+''' order by substring(zkzh,2,8)';
dm.QueryIncept.Open;
dm.UpdateIncept.ModifySQL.Text:='update student set '+Subject+'=:'+Subject+' where zkzh=:OLD_zkzh';
dm.Query1.First;
dm.QueryIncept.First;
while not dm.Query1.Eof do
begin
dm.QueryIncept.Edit;
dm.QueryIncept.FieldByName(subject).AsFloat:=dm.Query1.FieldByName(subject).AsFloat;
dm.QueryIncept.Post;
dm.Query1.Next;
dm.QueryIncept.Next;
end;
try
dm.TransIncept.Commit;
except
dm.TransIncept.Rollback;
result:=false;
end;
//将标志添加进已接收表
dm.Query1.First;
dm.Trans2.Active:=false;
dm.Query2.Close;
dm.Query2.SQL.Text:='insert into incepted values('''+
copy(dm.Query1.FieldByName('zkzh').AsString,2,Length(dm.Query1.FieldByName('zkzh').AsString)-1)+
''','''+Subject+''')';
try
dm.Query2.ExecSQL;
dm.Trans2.Commit;
except
dm.Trans2.Rollback;
end;
end;
FreeAndNil(fmCollide);
end;
procedure TClassRoom.readClassroomList(school:String;List1:TCheckListBox;Subject:String);
var
mycnt,classcnt,i:Integer;
schOrder,startZkzh:String;
begin
dm.Trans1.Active:=false;
dm.Query1.Close;
dm.Query1.SQL.Text:='select schorder from school where schname='''+school+'''';
dm.Query1.Open;
schOrder:=dm.Query1.FieldByName('schorder').AsString;
dm.Query1.Close;
dm.Query1.SQL.Text:='select count(*) as cnt from student where substring(zkzh from 2 for 4)='''+schorder+'''';
dm.Query1.Open;
mycnt:=dm.Query1.FieldByName('cnt').AsInteger;
if (mycnt mod 30)=0 then
classcnt:=(mycnt div 30)
else
classcnt:=(mycnt div 30)+1;
List1.Clear;
for i:=1 to classcnt do
List1.Items.Add('第'+Inttostr(i)+'考室');
for i:=0 to classcnt-1 do
begin
if i<9 then
startZkzh:=schOrder+'0'+Inttostr(i+1)+'01'
else
startZkzh:=schOrder+Inttostr(i+1)+'01';//每个考室的第一个号,据此判断是否接收
dm.Query1.Close;
dm.Query1.SQL.Text:='select count(*) as cnt from incepted where zkzh='''+
startzkzh+''' and subject='''+subject+'''';
dm.Query1.Open;
// showmessage(dm.Query1.SQL.Text);
if dm.Query1.FieldByName('cnt').AsInteger>0 then
list1.Checked[i]:=true
else
list1.Checked[i]:=false;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -