📄 unitzhaosheng.pas.~154~
字号:
unit unitZhaosheng;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst, Buttons, ExtCtrls, Grids, DBGridEh,DBGridEhImpexp,
ShellApi, DB,Interpret;
type
TfmZhaosheng = class(TForm)
Panel1: TPanel;
cmbZhiyuan: TComboBox;
Label1: TLabel;
Label2: TLabel;
edtCode: TEdit;
lstJNCJ: TCheckListBox;
Label3: TLabel;
Label4: TLabel;
lstJNCJ2: TCheckListBox;
lstCaoxing: TCheckListBox;
Label5: TLabel;
btnSearch: TBitBtn;
DBGridEh1: TDBGridEh;
Panel2: TPanel;
Label6: TLabel;
lbResult: TLabel;
Label8: TLabel;
edtMans: TEdit;
btnRecord: TBitBtn;
SaveDialog1: TSaveDialog;
btnExportXLS: TBitBtn;
DataSource1: TDataSource;
BitBtn1: TBitBtn;
Label7: TLabel;
edtZDF: TEdit;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure btnRecordClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnSearchClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnExportXLSClick(Sender: TObject);
private
{ Private declarations }
Interpret:TInterpret;
procedure setGridTitle;
isSearch:Boolean;
public
{ Public declarations }
end;
implementation
uses unitDatamodule;
{$R *.dfm}
procedure TfmZhaosheng.btnExportXLSClick(Sender: TObject);
begin
if SaveDialog1.Execute then
try
saveDBGridEhToExportFile(TDBGridEhExportAsXLS,DBGridEh1,SaveDialog1.FileName,true);
if Application.MessageBox('导出数据成功,是否打开Excel文件?','请选择',MB_YESNO or MB_ICONINFORMATION)=ID_YES then
ShellExecute(handle,'open',pchar(SaveDialog1.FileName),'0','0',SW_MAXIMIZE);
except
Application.MessageBox('发生意外,生成Excel文件失败!','警告',MB_OK or MB_ICONERROR);
end;
end;
procedure TfmZhaosheng.FormShow(Sender: TObject);
begin
dm.Query1.Close;
DataSource1.DataSet:=dm.Query1;
lstJncj.Checked[0]:=true;
lstJncj2.Checked[0]:=true;
lstJncj2.Checked[1]:=true;
lstCaoxing.Checked[0]:=true;
lstCaoxing.Checked[1]:=true;
end;
procedure TfmZhaosheng.btnSearchClick(Sender: TObject);
var
zhiyuan,sql,sql1,sql2,sql3:String;
i:Integer;
begin
case cmbZhiyuan.ItemIndex of
0:zhiyuan:='gaozhi1';
1:zhiyuan:='gaozhi2';
2:zhiyuan:='gaozhi3';
3:zhiyuan:='gaozhi4';
4:zhiyuan:='wuzhi1';
5:zhiyuan:='wuzhi2';
6:zhiyuan:='zhongzhi1';
7:zhiyuan:='zhongzhi2';
8:zhiyuan:='zhongzhi3';
else
begin
Application.MessageBox('请选择一种志愿!','错误',MB_OK or MB_ICONERROR);
exit;
end;
end;
if trim(edtCode.Text)='' then
begin
Application.MessageBox('必需输入专业代码!','错误',MB_OK or MB_ICONERROR);
exit;
end;
sql1:='';
if lstJncj.Checked[0] then
sql1:=' ((dili=''A'') or (dili=''B'') or (dili=''C''))'+
' and ((shengwu=''A'') or (shengwu=''B'') or (shengwu=''C''))';
sql2:='';
if lstJncj2.Checked[0] then
sql2:=' and tiyu=''T''';
if lstJncj2.Checked[1] then
sql2:=sql2+' and shiyan=''T''';
sql3:='';
for i:=0 to lstCaoxing.Count-1 do
begin
if lstCaoxing.Checked[i] then
sql3:=sql3+' or Upper(caoxing)='''+lstCaoxing.Items[i]+'''';
end;
sql3:=copy(sql3,4,Length(sql3)-3);
sql:='';
if trim(sql1)<>'' then
sql:=sql+' and ('+sql1+')';
if trim(sql2)<>'' then
sql:=sql+sql2;
if trim(sql3)<>'' then
sql:=sql+' and ('+sql3+')';
sql:=sql+ ' and Upper('+zhiyuan+')='''+UpperCase(edtCode.Text)+'''';
sql:=sql+' and lqpc=0';
sql:=copy(sql,5,Length(sql)-4);
sql:='select * from student where '+sql+' order by tdf desc,yx desc';
// showMessage(sql);
dm.Trans1.Active:=false;
dm.Query1.Close;
dm.Query1.SQL.Text:=sql;
dm.Query1.Open;
dm.Query1.Last;
lbResult.Caption:=Inttostr(dm.Query1.RecordCount);
SetGridTitle;//设置Grid的标题
isSearch:=true;
end;
procedure TfmZhaosheng.FormClose(Sender: TObject; var Action: TCloseAction);
begin
dm.Query1.Close;
end;
procedure TfmZhaosheng.btnRecordClick(Sender: TObject);
var
mans,j,lqpc:Integer;
bzf:Real;//标准分
zdf:Extended;//最低分
mysql:String;
begin
if dm.Query1.Active=false then
begin
Application.MessageBox('请先按要求查询考生信息','提示',MB_OK or MB_ICONWARNING);
exit;
end;
tryStrToInt(edtMans.Text,mans);
if (mans=0) or (mans>dm.Query1.RecordCount) then
begin
Application.MessageBox('招生人数非法!','提示',MB_OK or MB_ICONWARNING);
exit;
end;
dm.Query1.DisableControls;
if cmbZhiyuan.ItemIndex<4 then
lqpc:=1
else if (cmbzhiyuan.ItemIndex>=4) and (cmbZhiyuan.ItemIndex<6) then
lqpc:=2
else
lqpc:=3;
dm.Query1.First;
for j:=1 to mans-1 do
dm.Query1.Next;
bzf:=dm.Query1.FieldByName('tdf').AsFloat;
tryStrToFloat(edtZDF.Text,zdf);
if bzf<zdf then
bzf:=zdf;//如果切线标准低于最低分,那么以最低分为标准
mysql:=copy(dm.Query1.SQL.Text,Pos('where',dm.Query1.SQL.Text),
Pos('order',dm.Query1.SQL.Text)-Pos('where',dm.Query1.SQL.Text)-1);
dm.Query2.Close;
dm.Query2.SQL.Text:='select count(*) as cnt from student '+mysql+
' and tdf='+FloatTostr(bzf);
dm.Query2.Open;
// showmessage(dm.Query1.SQL.Text+#13+dm.Query2.SQL.Text);
if Application.MessageBox(pchar('本次切线标准分为:'+FloatTostr(bzf)+#13+
'线上人数为:'+IntTostr(dm.Query2.FieldByName('cnt').AsInteger)+#13+
'是否要招生?'),'请确认',
MB_YESNO or MB_ICONQUESTION)<>IDYES then
begin
dm.Query1.EnableControls;
exit;
end;
dm.Query1.First;
dm.Query2.Transaction.Active:=false;
dm.Query2.Transaction.StartTransaction;
while not dm.Query1.Eof do
begin
dm.Query2.Close;
dm.Query2.SQL.Text:='update student set lqpc='+inttostr(lqpc)+
',lqzy='''+UpperCase(edtCode.Text)+''' where zkzh='''+
dm.Query1.FieldByName('zkzh').AsString+'''and tdf>='+FloatTostr(bzf);
dm.Query2.ExecSQL;
dm.Query1.Next;
if dm.Query1.FieldByName('tdf').AsFloat<bzf then
break;
end;
dm.Trans2.Commit;
Application.MessageBox('招生完毕,按确定之后可以看到本次招收的学生','提示',MB_OK or MB_ICONINFORMATION);
dm.Query1.Transaction.Active:=false;
dm.Query1.Close;
dm.Query1.SQL.Text:='select * from student '+copy(mysql,1,pos(' and lqpc=0',mysql))+
' and lqpc=1 and tdf>='+FloatTostr(zdf)+' order by tdf desc';
dm.Query1.Open;
dm.Query1.Last;
dm.Query1.First;
lbResult.Caption:=IntTostr(dm.Query1.RecordCount);
dm.Query1.EnableControls;
SetGridTitle;//设置Grid的标题
end;
procedure TfmZhaosheng.BitBtn1Click(Sender: TObject);
begin
dm.Trans2.Active:=false;
dm.Query2.Close;
dm.Query2.SQL.Text:='update student set lqzy=null,lqpc=0';
dm.Query2.ExecSQL;
dm.Trans2.Commit;
if dm.Query1.Active then
btnSearchClick(nil);
end;
procedure TfmZhaosheng.setGridTitle;
var
i:Integer;
begin
for i:=0 to DBGridEh1.Columns.Count-1 do
DBGridEh1.Columns[i].Title.Caption:=Interpret.GetTitle(DBGridEh1.Fields[i].FieldName);
end;
procedure TfmZhaosheng.FormCreate(Sender: TObject);
begin
interpret:=TInterpret.Create;
end;
procedure TfmZhaosheng.FormDestroy(Sender: TObject);
begin
Interpret.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -