lend.pas
上传用户:blmaxia
上传日期:2010-02-17
资源大小:657k
文件大小:8k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit lend;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls, DBCtrls, Mask, DB, DBTables, data, ownbook;
  6. type
  7.   Tlendform = class(TForm)
  8.     GroupBox1: TGroupBox;
  9.     StaticText9: TStaticText;
  10.     ComboBox1: TComboBox;
  11.     StaticText10: TStaticText;
  12.     DBName: TDBEdit;
  13.     StaticText11: TStaticText;
  14.     DBAuthor: TDBEdit;
  15.     StaticText12: TStaticText;
  16.     DBPress: TDBEdit;
  17.     StaticText13: TStaticText;
  18.     DBOutDate: TDBEdit;
  19.     StaticText14: TStaticText;
  20.     DBCost: TDBEdit;
  21.     StaticText15: TStaticText;
  22.     DBMemo: TDBMemo;
  23.     GroupBox2: TGroupBox;
  24.     StaticText1: TStaticText;
  25.     StaticText2: TStaticText;
  26.     StaticText3: TStaticText;
  27.     StaticText4: TStaticText;
  28.     StaticText5: TStaticText;
  29.     ReaderIDEdit: TEdit;
  30.     TotalEdit: TEdit;
  31.     OwnTimeEdit: TEdit;
  32.     FineEdit: TEdit;
  33.     Button1: TButton;
  34.     Button2: TButton;
  35.     Button3: TButton;
  36.     tempADOQuery1: TQuery;
  37.     TEMPADOQuery2: TQuery;
  38.     DataSource1: TDataSource;
  39.     procedure FormShow(Sender: TObject);
  40.     procedure ComboBox1Change(Sender: TObject);
  41.     procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
  42.       Shift: TShiftState);
  43.     procedure ReaderIDEditChange(Sender: TObject);
  44.     procedure Button1Click(Sender: TObject);
  45.     procedure Button2Click(Sender: TObject);
  46.     procedure Button3Click(Sender: TObject);
  47.   private
  48.     { Private declarations }
  49.   public
  50.     { Public declarations }
  51.   end;
  52. type
  53.    TOwnBook = record
  54.       code:string;
  55.       name:string;
  56.       price:string;
  57.       owndays:integer;
  58.     end;
  59. var
  60.   lendform: Tlendform;
  61. implementation
  62. {$R *.dfm}
  63. procedure Tlendform.FormShow(Sender: TObject);
  64. var
  65.   i:integer;
  66. begin
  67.   with datamoduleado.ADOQuery1 do
  68.   begin
  69.     sql.Clear ;
  70.     sql.Add('select code from book');
  71.     open;
  72.     first;
  73.     for i:=0 to recordcount-1 do
  74.     begin
  75.       combobox1.Items.Add(fieldbyname('code').AsString );
  76.       next;
  77.     end;
  78.     close;
  79.   end;
  80. end;
  81. procedure Tlendform.ComboBox1Change(Sender: TObject);
  82. var
  83.   fdate:tdate;
  84.   owntime:Tdate;
  85. begin
  86.   readeridedit.Text :='';
  87.   totaledit.Text :='';
  88.   owntimeedit.Text :='';
  89.   fineEdit.Text :='';
  90.   if length(combobox1.Text )=10 then
  91.   begin
  92.     try
  93.        with datamoduleado.ADOTable1 do
  94.        begin
  95.          tablename:='book';
  96.          dbname.DataField :='name';
  97.          dbauthor.DataField :='author';
  98.          dbpress.DataField :='press';
  99.          dboutdate.DataField :='outdate';
  100.          dbcost.DataField :='cost';
  101.          dbmemo.DataField :='memo0';
  102.          active:=true;
  103.          if not locate('code',combobox1.Text ,[]) then
  104.          begin
  105.            messagedlg('没有数据或数据库操作失败',mterror,[mbok],0);
  106.            exit;
  107.          end;
  108.        end;
  109.     except
  110.       messagedlg('数据操作出错',mterror,[mbok],0);
  111.     end;
  112.     try
  113.       with datamoduleado.ADOQuery1 do
  114.       begin
  115.         sql.Clear ;
  116.         sql.Add('select * from lend where code=:code');
  117.         parameters.ParamByName('code').Value :=combobox1.Text;
  118.         open;
  119.         if recordcount<>0 then
  120.         begin
  121.           fdate:=fieldbyname('outdate').AsDateTime ;
  122.           owntime:=date-fdate;
  123.           owntimeedit.Text :=floattostr(owntime);
  124.           readerIDEdit.Text :=fieldbyname('readerid').AsString;
  125.           statictext1.Visible :=true;
  126.           owntimeedit.Visible :=true;
  127.           if strtoint(owntimeedit.Text )>60 then
  128.           begin
  129.             statictext12.Visible :=true;
  130.             fineedit.Visible :=true;
  131.             fineedit.Text :=floattostr((strtoint(owntimeedit.Text )-60)*0.1);
  132.           end;
  133.           button1.Enabled :=false;
  134.           button2.Enabled :=true;
  135.           button2.SetFocus ;
  136.           close;
  137.         end
  138.         else  begin
  139.                 readeridedit.SetFocus ;
  140.                 button1.Enabled :=true;
  141.                 button2.Enabled :=false;
  142.               end;
  143.         end;
  144.       except
  145.         readeridedit.SetFocus ;
  146.       end;
  147.     end;
  148. end;
  149. procedure Tlendform.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  150.   Shift: TShiftState);
  151. begin
  152.   if key=13 then
  153.     combobox1change(sender);
  154. end;
  155. procedure Tlendform.ReaderIDEditChange(Sender: TObject);
  156. begin
  157.   if length(readerIDEdit.Text )=10 then
  158.   begin
  159.     with datamoduleADO.ADOQuery1 do
  160.     begin
  161.       sql.Clear ;
  162.       sql.Add('select readerid from reader where readerid=:readerid');
  163.       parameters.ParamByName('readerid').Value :=readeridedit.Text ;
  164.       open;
  165.       if recordcount=0 then
  166.       begin
  167.         button1.Enabled :=false;
  168.         messagedlg('借书证号<'+readeridedit.Text +'>不存在',mterror,[mbok],0);
  169.         close;
  170.         exit;
  171.       end;
  172.       close;
  173.     end;
  174.     try
  175.       with datamoduleado.ADOQuery1 do
  176.       begin
  177.         sql.Clear ;
  178.         sql.Add('select count(readerid) from lend where readerid=:readerid');
  179.         parameters.ParamByName('readerid').Value :=readeridedit.Text ;
  180.         open;
  181.         totaledit.Text :=inttostr(fields[0].Value );
  182.         close;
  183.       end;
  184.     except
  185.       totaledit.Text :='0';
  186.     end;
  187.     button2.Enabled :=false;
  188.     button1.Enabled :=true;
  189.     button1.SetFocus ;
  190.   end;
  191. end;
  192. procedure Tlendform.Button1Click(Sender: TObject);
  193. var
  194.   tempownbook:townbook;
  195.   canlend:boolean;
  196.   mmcode:string;
  197. begin
  198.   if readeridedit.Text <>'' then
  199.   begin
  200.   try
  201.     with datamoduleado.adoquery1 do
  202.     begin
  203.       sql.clear;
  204.       sql.Add('select code from lend where readerid=:readerid');
  205.       parameters.ParamByName('readerid').Value :=readeridedit.Text ;
  206.       open;
  207.       canlend:=true;
  208.       ownbookform.ListView1.Items.Clear ;
  209.       mmcode:=fieldbyname('code').AsString;
  210.       while not eof do
  211.       begin
  212.         with tempadoquery1 do
  213.         begin
  214.         sql.Clear ;
  215.         sql.Add('select * from book where code =:code') ;
  216.         parameters.ParamByName('code').Value :=mmcode;
  217.         open;
  218.         tempownbook.code:=fieldbyname('code').asstring;
  219.         tempownbook.name:=fieldbyname('name').asstring;
  220.         tempownbook.price:=fieldbyname('cost').asstring;
  221.         try
  222.          with tempadoquery2 do
  223.          begin
  224.            sql.Clear ;
  225.            sql.Add('select * from lend where code=:code and readerid=:readerid');
  226.            parameters.ParamByName('code').Value :=datamoduleado.ADOQuery1.fieldbyname('code').AsString ;
  227.            parameters.ParamByName('readerid').Value := readeridedit.Text ;
  228.            open;
  229.            tempownbook.owndays:=round(date-fieldbyname('outdate').AsDateTime );
  230.            close;
  231.          end;
  232.         except
  233.            tempownbook.owndays:=0;
  234.         end;
  235.         close;
  236.       end;
  237.       if tempownbook.owndays>60 then
  238.       begin
  239.         with ownbookform.listview1.Items.add do
  240.         begin
  241.          caption:=tempownbook.code;
  242.          subitems.add(tempownbook.name);
  243.          subitems.add(tempownbook.price);
  244.          subitems.Add(inttostr(tempownbook.owndays));
  245.          subitems.Add(floattostr((tempownbook.owndays-60)*0.1));
  246.         end;
  247.         canlend:=false;
  248.       end;
  249.     next;
  250.   end;
  251.     close;
  252.   end;
  253. except
  254.  canlend:=true;
  255. end;
  256. if canlend=false then
  257. begin
  258.   ownbookform.Caption :=readeridedit.text+'有以下书籍没按时归还';
  259.   ownbookform.showmodal;
  260.   exit;
  261. end;
  262. try
  263.   with DatamoduleADO.adoquery1 do
  264.   begin
  265.     sql.clear;
  266.     sql.add('insert into lend(code,readerid,outdate)'+' values(:code,:readerid,:outdate)');
  267.     parameters.parambyname('code').value:=combobox1.text;
  268.     parameters.parambyname('readerid').value:=readeridedit.text;
  269.     parameters.parambyname('outdate').value:=datetostr(now());
  270.     execsql;
  271.   end;
  272. except
  273.   messagedlg('借书不成功',mterror,[mbok],0);
  274. end;
  275. end
  276. else begin
  277.         showmessage('请输入借书证号!');
  278.         readeridedit.setfocus;
  279.      end;
  280. end;
  281. procedure Tlendform.Button2Click(Sender: TObject);
  282. begin
  283.   try
  284.     with datamoduleado.adoquery1 do
  285.     begin
  286.       sql.clear;
  287.       sql.add('delete from lend where code=:code');
  288.       parameters.parambyname('code').value:=combobox1.text;
  289.       execsql;
  290.       close;
  291.     end;
  292.   except
  293.     messagedlg('还书不成功',mterror,[mbok],0);
  294.   end;
  295.   readeridedit.text:='';
  296.   totaledit.text:='';
  297.   owntimeedit.text:='';
  298.   fineedit.text:='';
  299. end;
  300. procedure Tlendform.Button3Click(Sender: TObject);
  301. begin
  302.   close;
  303. end;
  304. end.