📄 studenttakeunit.pas
字号:
unit StudentTakeUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids;
type
TfrmStudentTake = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
ComboBox1: TComboBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Edit11: TEdit;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Edit4Exit(Sender: TObject);
procedure Edit7Exit(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure Edit9Change(Sender: TObject);
procedure DBGrid1ColEnter(Sender: TObject);
private
procedure LoadClassData();//加载班级信息
procedure LoadBookData();//加载教材信息
procedure initializtionfrm();//清空填 写的数据
public
{ Public declarations }
end;
var
frmStudentTake: TfrmStudentTake;
Cla:TADOTable;
book:TADODataSet;
StudentTakeBook:TADOStoredProc;
bookID,award,publishDate,orderDepartmentName,UsingWay,About:string;
implementation
uses DataModuleUnit, MainUnit;
{$R *.dfm}
//清空输入的内容
procedure TfrmStudentTake.initializtionfrm();
var
i:integer;
begin
for i:=0 to self.ComponentCount-1 do
begin
if self.Components[i] is TCustomEdit then
(self.Components[i] as TCustomEdit).Text:='';
if self.Components[i] is TCheckBox then
(self.Components[i] as TCheckBox).Checked:=false;
if self.Components[i] is TCombobox then
(self.Components[i] as TCombobox).Text:='';
end;
end;
//加载教材信息
procedure TfrmStudentTake.LoadBookData();
begin
with book do
begin
//Locate('Classname',E,[loCaseInsensitive]);
Edit4.Text:=FieldByName('BookName').AsString;
Edit5.Text:=FieldByName('press').AsString;//出版社
edit6.Text:=FieldByName('Author').AsString; //人数
Edit11.Text:=FieldByName('BookAmount').AsString; //库存
Edit8.Text:=FieldByName('price').AsString; //单价
Edit10.Text:=frmMain.OperatorInfo.OperatorName;//经办人
BookID:=FieldByName('ISBN').Value;
award:=FieldByName('award').Value;
publishDate:=FieldByName('publishDate').Value;
orderDepartmentName:=FieldByName('orderDepartmentName').Value;
usingway:=FieldByName('usingway').AsString;
about:=FieldByName('about').AsString;
end;
end;
//加载班级信息
procedure TfrmStudentTake.LoadClassData();
var
TotalFee:real;
begin
with Cla do
begin
Locate('Classname',ComboBox1.Text,[loCaseInsensitive]);
edit1.Text:=FieldByName('Strength').AsString; //人数
Edit2.Text:=FieldByName('totalFee').AsString; //总书费
TotalFee:=strtofloatdef(Edit2.Text,0);
Edit3.Text:=FieldByName('Department').AsString;
if TotalFee>0 then
Edit4.Enabled:=true
else
Edit4.Enabled:=false;
end;
end;
//初始化班级名
procedure TfrmStudentTake.FormCreate(Sender: TObject);
var
i:integer;
begin
//学生领书存储过程建立
StudentTakeBook:=TADOStoredProc.Create(nil);
StudentTakeBook.Connection:=frmDataModule.Connection;
StudentTakeBook.ProcedureName:='StudentTakeBook';
//教材信息表初始化
Book:=TADODataSet.Create(nil);
Book.CommandType:=cmdText;
book.Connection:=frmDataModule.Connection;
Datasource1.DataSet:=book;
dbGrid1.DataSource:=DataSource1;
//班级信息表初始化
Cla:=TADOTable.Create(nil); //班级表
Cla.Connection:=frmDataModule.Connection;
Cla.TableName:='Classes';
Cla.Active:=true;
for i:=0 to Cla.RecordCount-1 do
begin
comboBox1.Items.Add(Cla.Fields[0].Value);
Cla.Next;
end;
end;
procedure TfrmStudentTake.ComboBox1Change(Sender: TObject);
begin
self.LoadClassData
end;
//查询指定的教材
procedure TfrmStudentTake.Edit4Exit(Sender: TObject);
begin
with book do
begin
close;
{
Parameters.Clear;
Parameters.CreateParameter('@BookName',ftstring,pdinput,50,Edit4.Text);
CommandText:='select * from books where bookName like :bookName';//+quotedstr('% :BookName');
Parameters[0].Value:='%'+Edit4.Text+'%'; 方法之一}
//方法之二
CommandText:='select * from books where bookName like '+quotedstr('%'+edit4.Text+'%');
Active:=true;
if RecordCount>0 then
begin
self.LoadBookData;
Edit7.Enabled:=true;
end;
end;
end;
//计算总书费
procedure TfrmStudentTake.Edit7Exit(Sender: TObject);
var
m,P,t:real;
begin
m:=strtoFloatdef(edit7.Text,0);//数量
p:=strtoFloatdef(Book.FieldByName('price').AsString,0); //单价
t:=m*p;//总 书费
Edit9.Text:=Floattostr(t);
DBgrid1.SetFocus;
end;
//提交领书信息
procedure TfrmStudentTake.BitBtn1Click(Sender: TObject);
var
totalFee:real;
amount,nowAmount:integer;
begin // I:= StrToIntDef(aEdit.Text, 0); 这样当转换不成功时,第二个参数就会赋给I。类似的函数还有strToInt64Def,StrToFloatDef等等。
nowAmount:=0;
if strtointdef(edit7.Text,1)>strtointdef(edit11.Text,0)then
begin
Application.MessageBox('库存量不足,请少领些!','出错提示',mb_ok);
edit7.SetFocus;
abort;
end
else
nowAmount:=strtointdef(edit11.Text,1)-strtointdef(edit7.Text,0); //当前数量
if strtofloatdef(edit9.Text,1.0)>strtofloatdef(edit2.Text,0.0)then
begin
Application.MessageBox('书费不足,请去补交书费!','出错提示',mb_ok);
edit9.SetFocus;
abort;
end;
with StudentTakeBook do //设置领书存储过程的参数
begin
Parameters.CreateParameter('@whoTake_1',ftstring,pdinput,20,Combobox1.Text);
Parameters.CreateParameter('@bookID_2 ',ftstring,pdinput,13,bookID);
Parameters.CreateParameter('@bookName_3',ftstring,pdinput,50,Edit4.Text);
Parameters.CreateParameter('@press_4',ftstring,pdinput,50,Edit5.Text);
Parameters.CreateParameter('@author_5',ftstring,pdinput,8,Edit6.Text);
Parameters.CreateParameter('@award_6',ftstring,pdinput,50,award);
Parameters.CreateParameter('@publishDate_7',ftDateTime,pdinput,8,publishDate);
Parameters.CreateParameter('@orderDepartmentName_8',ftstring,pdinput,20,orderDepartmentName);
Parameters.CreateParameter('@handler_9',ftstring,pdinput,8,edit10.Text);
Parameters.CreateParameter('@lastAmount_10',ftInteger,pdinput,4,Edit11.Text);
Parameters.CreateParameter('@theAmount_11',ftInteger,pdinput,4,Edit7.Text);
Parameters.CreateParameter('@nowAmount_12',ftInteger,pdinput,4,nowAmount);
Parameters.CreateParameter('@price_13',ftFloat,pdinput,4,Edit8.Text);
Parameters.CreateParameter('@usingWay_14',ftstring,pdinput,50,usingWay);
Parameters.CreateParameter('@about_16',ftstring,pdinput,50,about);
Parameters.CreateParameter('@operatorID_17',ftstring,pdinput,8,frmMain.OperatorInfo.OperatorID);//'fdsa;f;sdla'
Parameters.CreateParameter('@ClassName_1',ftstring,pdinput,20,combobox1.Text);
totalfee:=strtoFloat(edit2.Text)-strtofloat(edit9.Text);
amount:=Strtoint(Edit11.Text)-Strtoint(edit7.Text);
//showmessage(floattostr(totalfee));
Parameters.CreateParameter('@totalfee_2',ftFloat,pdinput,4,totalfee);
Parameters.CreateParameter('@bookAmount_2',ftinteger,pdinput,4,amount);
try
ExecProc;
Application.MessageBox('领书信息填写成功!','提示',mb_ok);
book.Close;
self.initializtionfrm;
edit7.Text:='0';
except
Application.MessageBox('领书信息填写失败!','出错提示',mb_ok);
end;
end;
end;
procedure TfrmStudentTake.BitBtn2Click(Sender: TObject);
begin
close;
end;
//如果领书数量大于0则可以进行提交领书信息
procedure TfrmStudentTake.Edit7Change(Sender: TObject);
var
str:shortstring;
begin
str:=trim(edit7.Text);
if str ='' then
edit7.Text:='0';
if strtoint(edit7.Text)>0then
bitbtn1.Enabled:=true
else
bitbtn1.Enabled:=false;
end;
procedure TfrmStudentTake.Edit9Change(Sender: TObject);
begin
dbGrid1.SetFocus;
end;
procedure TfrmStudentTake.DBGrid1ColEnter(Sender: TObject);
begin
self.LoadBookData;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -