www.pudn.com > jiaocaiguanlixitongdaima.rar > 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.