www.pudn.com > jiaocaiguanlixitongdaima.rar > DepartmentTakeUnit.pas


unit DepartmentTakeUnit; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, DB, ADODB, StdCtrls, Buttons, Grids, DBGrids; 
 
type 
  TfrmDepartmentTake = class(TForm) 
    GroupBox1: TGroupBox; 
    Label1: TLabel; 
    Label2: TLabel; 
    Label3: TLabel; 
    Label4: TLabel; 
    ComboBox1: TComboBox; 
    Edit1: TEdit; 
    Edit2: TEdit; 
    Edit3: TEdit; 
    GroupBox2: TGroupBox; 
    Label5: TLabel; 
    Label6: TLabel; 
    Label7: TLabel; 
    Label8: TLabel; 
    Label9: TLabel; 
    Label10: TLabel; 
    Label11: TLabel; 
    Label12: TLabel; 
    Edit4: TEdit; 
    Edit5: TEdit; 
    Edit6: TEdit; 
    Edit7: TEdit; 
    Edit8: TEdit; 
    Edit9: TEdit; 
    Edit10: TEdit; 
    Edit11: TEdit; 
    BitBtn1: TBitBtn; 
    BitBtn2: TBitBtn; 
    DataSource1: TDataSource; 
    DBGrid1: TDBGrid; 
    procedure FormCreate(Sender: TObject); 
    procedure ComboBox1Change(Sender: TObject); 
    procedure Edit7Exit(Sender: TObject); 
    procedure Edit4Exit(Sender: TObject); 
    procedure BitBtn1Click(Sender: TObject); 
    procedure BitBtn2Click(Sender: TObject); 
    procedure DBGrid1ColEnter(Sender: TObject); 
  private 
    procedure LoadDepartmentData();//加载班级信息 
    procedure LoadBookData();//加载教材信息 
    procedure initializtionfrm();//清空填 写的数据 
  public 
    { Public declarations } 
  end; 
 
var 
  frmDepartmentTake: TfrmDepartmentTake; 
  Dep:TADOTable; 
  book:TADODataSet; 
  StudentTakeBook:TADOStoredProc; 
 
  bookID,award,publishDate,orderDepartmentName,UsingWay,About,author:string; 
implementation 
 
uses DataModuleUnit, MainUnit; 
 
{$R *.dfm} 
//清空输入的数据 
procedure TfrmDepartmentTake.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 TfrmDepartmentTake.LoadBookData(); 
begin 
  with book do 
  begin 
    //Locate('bookName',trim(Edit4.Text),[loCaseInsensitive]); 
    Edit7.Text:='0'; 
    Edit9.Text:='0'; 
    Edit4.Text:=FieldByName('BookName').AsString; 
    Edit5.Text:=FieldByName('press').AsString;//出版社 
    edit6.Text:=FieldByName('BookAmount').AsString;  //人数 
    Edit8.Text:=FieldByName('price').AsString; //单价 
    Edit10.Text:=frmMain.OperatorInfo.OperatorName;//经办人 
    Edit11.Text:=FieldByName('About').AsString;       //库存 
    BookID:=FieldByName('ISBN').Value;  //书号 
    award:=FieldByName('award').Value; //获奖 
    publishDate:=FieldByName('publishDate').Value; //出版日期 
    orderDepartmentName:=FieldByName('orderDepartmentName').Value;//订书院系 
    usingway:=FieldByName('usingway').AsString; //使用说明 
    about:=FieldByName('about').AsString;//说明 
    author:=FieldByName('Author').AsString;//作者 
  end; 
end; 
//加载院系信息 
procedure TfrmDepartmentTake.LoadDepartmentData(); 
var 
  fee:real; 
begin 
  with Dep do 
  begin 
    Locate('DepartmentName',ComboBox1.Text,[loCaseInsensitive]); 
    Edit1.Text:=FieldByName('totalfee').Value; 
    Edit2.Text:=FieldByName('charger').Value; 
    Edit3.Text:=FieldByName('chargerPhone').Value; 
    fee:=strtoFloatDef(edit1.Text,0); 
    if fee>0 then 
      edit4.Enabled:=true 
    else 
      edit4.Enabled:=false; 
  end; 
end; 
//初始化 
procedure TfrmDepartmentTake.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; 
    //院系信息表初始化 
   Dep:=TADOTable.Create(nil); //班级表 
   with Dep do 
   begin 
     Connection:=frmDataModule.Connection; 
     TableName:='Departments'; 
     Active:=true; 
     for i:=0 to RecordCount-1 do 
     begin 
       comboBox1.Items.Add(Fields[0].Value); 
       Next; 
     end; 
   end; 
end; 
//加载院系信息 
procedure TfrmDepartmentTake.ComboBox1Change(Sender: TObject); 
begin 
   self.initializtionfrm; 
   self.LoadDepartmentData; 
end; 
 
procedure TfrmDepartmentTake.Edit7Exit(Sender: TObject); 
var 
  TotalFee,BookFee,Price:real; 
  AMount:integer; 
begin 
   TotalFee:=StrToFloatDef(Edit1.Text,0); //书费 
   Price:=StrToFloatDef(Edit8.Text,0);//单价 
   AMount:=StrToIntDef(Edit7.Text,0); //领书数量 
   BookFee:=Amount*Price;//费用 
   Edit9.Text:=FloatToStr(BookFee); 
   if AMount>0 then 
     bitbtn1.Enabled:=true 
   else 
     bitbtn1.Enabled:=false; 
   if TotalFee0 then 
    begin 
      self.LoadBookData; 
      Edit7.Enabled:=true; 
    end; 
  end; 
end; 
 //提交领书信息 
procedure TfrmDepartmentTake.BitBtn1Click(Sender: TObject); 
var 
   totalFee:real; 
   amount:integer; 
begin // I:= StrToIntDef(aEdit.Text, 0); 这样当转换不成功时,第二个参数就会赋给I。类似的函数还有strToInt64Def,StrToFloatDef等等。 
  if strtointdef(edit7.Text,1)>strtointdef(edit6.Text,0)then 
  begin 
      Application.MessageBox('库存量不足,请少领些!','出错提示',mb_ok); 
      edit7.SetFocus; 
      abort; 
  end; 
  if strtofloatdef(edit9.Text,1.0)>strtofloatdef(edit1.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,Author); 
    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,Edit6.Text); 
    Parameters.CreateParameter('@theAmount_11',ftInteger,pdinput,4,Edit7.Text); 
    Parameters.CreateParameter('@nowAmount_12',ftInteger,pdinput,4,strtointdef(Edit6.Text,0)-STRTOINTDef(Edit7.Text,0)); 
    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:=strtoFloatDef(edit1.Text,0)-strtofloatDef(edit9.Text,0); 
    amount:=StrtointDef(Edit6.Text,0)-StrtointDef(edit7.Text,0); 
    //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 TfrmDepartmentTake.BitBtn2Click(Sender: TObject); 
begin 
  close; 
end; 
 
procedure TfrmDepartmentTake.DBGrid1ColEnter(Sender: TObject); 
begin 
   self.LoadBookData; 
end; 
 
end.