?? zulingfrm.pas
字號:
unit ZulingFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls, DB, ADODB, Grids, DBGrids;
type
TFrmZuling = class(TForm)
Image1: TImage;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
Panel1: TPanel;
Label1: TLabel;
edStore_ID: TEdit;
Panel2: TPanel;
Panel4: TPanel;
StaticText1: TStaticText;
edMem_ID: TEdit;
Label2: TLabel;
Label3: TLabel;
Panel6: TPanel;
Image2: TImage;
Panel3: TPanel;
Image3: TImage;
Label4: TLabel;
StaticText2: TStaticText;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
Label8: TLabel;
StaticText3: TStaticText;
StaticText4: TStaticText;
StaticText5: TStaticText;
edIncome: TEdit;
Label10: TLabel;
StaticText6: TStaticText;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edStore_IDKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
procedure edMem_IDKeyPress(Sender: TObject; var Key: Char);
procedure edIncomeKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmZuling: TFrmZuling;
implementation
uses MainFrm;
var
DiskNum, UserID : String;
Return_Date, Income : Real;
{$R *.dfm}
procedure TFrmZuling.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FrmZuling.Free;
FrmMain.sp1 := False;
end;
procedure TFrmZuling.edStore_IDKeyPress(Sender: TObject; var Key: Char);
var
DiskName : String;
DiskPhoto : String;
Borrow_Date, DateDiff : Real;
Btimes : Integer;
begin
if Key=#13 then
begin
if Length(Trim(edStore_ID.Text)) < 10 then
begin
Application.MessageBox('店內編號錯誤,重新輸入!','錯誤',MB_ICONWARNING+MB_OK);
edStore_ID.SetFocus;
edStore_ID.SelectAll;
Exit;
end;
DiskNum := Trim(edStore_ID.Text);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select CD_Info.CD_Namecn, CD_Info.Photo From CD_Info, CD_Store Where CD_Store.Store_ID = '''+DiskNum+''' and CD_Store.CD_ID=CD_Info.CD_ID';
ADOQuery1.Open;
if ADOQuery1.Eof and ADOQuery1.Bof then
begin
Application.MessageBox('沒有該光盤的信息,租賃/歸還操作失敗!','錯誤',MB_ICONWARNING+MB_OK);
edStore_ID.SetFocus;
edStore_ID.SelectAll;
Exit;
end
else
begin
DiskName := ADOQuery1.FieldByName('CD_NameCn').AsString;
DiskPhoto := ADOQuery1.FieldByName('Photo').AsString;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From BorrowInfo Where Store_ID = '''+DiskNum+''' and Yes_No=''0''';
ADOQuery1.Open;
if ADOQuery1.Eof and ADOQuery1.Bof then
begin //光盤租賃
Panel2.Visible := True;
try
Image2.Picture.LoadFromFile('DBS\Photo\'+ DiskPhoto);
except
Panel6.Caption := '未設定圖片';
end;
StaticText1.Caption := DiskName;
edMem_ID.SetFocus;
end
else
begin //光盤歸還
Panel4.Visible := True;
UserID := ADOQuery1.FieldByName('User_ID').AsString; //獲得歸還者的編號
try
Image3.Picture.LoadFromFile('DBS\Photo\'+ DiskPhoto);
except
Panel3.Caption := '未設定圖片';
end;
StaticText2.Caption := DiskName;
edIncome.SetFocus;
Borrow_Date := ADOQuery1.FieldByName('Borrow_Date').AsDateTime;
StaticText3.Caption := DateTimeToStr(Borrow_Date);
Return_Date := Now();
StaticText4.Caption := DateTimeToStr(Return_Date);
DateDiff := Return_Date - Borrow_Date; //求出時間差
btimes := Trunc(DateDiff)+1; //收費記次
if Length(UserID)=6 then //根據是否會員計費
Income := btimes * 1.50
else
Income := btimes * 2.00;
StaticText5.Caption := FormatFloat('0.00',Income);
end;
end;
end;
procedure TFrmZuling.FormCreate(Sender: TObject);
begin
Panel2.Visible := False;
Panel4.Visible := False;
end;
procedure TFrmZuling.edMem_IDKeyPress(Sender: TObject; var Key: Char);
var
CardID : String;
MemType : String;
AllowNum : Integer;
Sys_Date : real;
begin
if Key = #13 then
begin
CardID := edMem_ID.Text;
if Length(Trim(CardID)) = 6 then
begin //會員租借
//Application.MessageBox('會員租借!','錯誤',MB_ICONWARNING+MB_OK);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From MemberInfo Where Mem_ID = '''+CardID+'''';
ADOQuery1.Open;
if ADOQuery1.FieldByName('Deadline').AsDateTime - Date() <0 then //超過有效期
begin
Application.MessageBox('會員卡已過有效期,不可租借!','錯誤',MB_ICONWARNING+MB_OK);
edMem_ID.SetFocus;
edMem_ID.SelectAll;
Exit;
end;
MemType := Copy(CardId,1,1); //判斷會員類別
if MemType = 'A' then
AllowNum := 4
else
AllowNum := 2;
if ADOQuery1.FieldByName('Borrow_Num').AsInteger >= AllowNum then
begin
Application.MessageBox('已到最到租借數,不可借閱!','錯誤',MB_ICONWARNING+MB_OK);
edMem_ID.SetFocus;
edMem_ID.SelectAll;
Exit;
end;
ADOQuery1.Edit; //會員的在借光盤數增1
ADOQuery1.FieldByName('Borrow_Num').AsInteger := ADOQuery1.FieldByName('Borrow_Num').AsInteger + 1;
ADOQuery1.Post;
end
else if Length(Trim(CardID)) = 5 then
begin //非會員租借
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From BorrowInfo Where User_ID = '''+CardID+''' and Yes_No = ''0''';
ADOQuery1.Open;
if ADOQuery1.RecordCount <> 0 then
begin
Application.MessageBox('有在借光盤未歸還,不可租借!','錯誤',MB_ICONWARNING+MB_OK);
edMem_ID.SetFocus;
edMem_ID.SelectAll;
Exit;
end;
end
else
begin
Application.MessageBox('會員號或租借卡號錯誤,重新輸入!','錯誤',MB_ICONWARNING+MB_OK);
edMem_ID.SetFocus;
edMem_ID.SelectAll;
Exit;
end;
Sys_Date := Now();
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From BorrowInfo';
ADOQuery1.Open;
ADOQuery1.Append;
ADOQuery1.FieldByName('User_ID').AsString := CardID;
ADOQuery1.FieldByName('Store_ID').AsString := DiskNum;
ADOQuery1.FieldByName('Borrow_Date').AsDateTime := Sys_Date;
ADOQuery1.FieldByName('Yes_No').AsString := '0';
ADOQuery1.Post;
edStore_ID.Clear;
edStore_ID.SetFocus;
edMem_ID.Clear;
Panel2.Visible := False;
Application.MessageBox('本次租借成功!', '成功',MB_OK+MB_ICONINFORMATION);
end;
end;
procedure TFrmZuling.edIncomeKeyPress(Sender: TObject; var Key: Char); //輸入收費金額,收費
var
i, keynum : Integer;
dotkey : String;
begin
keynum := 0;
for i:=1 to Length(edIncome.Text) do
begin
dotkey := Copy(edIncome.Text,i,1);
if dotkey ='.' then
keynum := keynum + 1;
end;
if ((key<'0') or (key>'9')) and (key <> #13) and (Key<>#8) and (Key<>'.') or ((keynum=1) and (key='.')) then
key := chr(0);
if Key = #13 then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From BorrowInfo Where Store_ID = '''+DiskNum+''' and Yes_No=''0''';
ADOQuery1.Open;
ADOQuery1.Edit; //更新BorrowInfo表中的Income、Return_Date、Yes_N0=1
ADOQuery1.FieldByName('Income').AsFloat := Income;
ADOQuery1.FieldByName('Return_Date').AsDateTime := Return_Date;
ADOQuery1.FieldByName('Yes_No').AsString := '1';
ADOQuery1.Post;
ADOQuery1.Close; //將CD_Info表中的租借次數(Times_Borrow)值增1
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From CD_Info, CD_Store Where CD_Store.Store_ID = '''+DiskNum+''' and CD_Store.CD_ID = CD_Info.CD_ID';
ADOQuery1.Open;
ADOQuery1.Edit;
ADOQuery1.FieldByName('Times_Borrow').AsInteger := ADOQuery1.FieldByName('Times_Borrow').AsInteger + 1;
ADOQuery1.Post;
if Length(UserID) = 6 then //判斷是否是會員
begin
ADOQuery1.Close; //如果是會員,則將MemberInfo表中的在借光盤數(Borrow_Num)值減1
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From MemberInfo Where Mem_ID = '''+UserID+'''';
ADOQuery1.Open;
ADOQuery1.Edit;
ADOQuery1.FieldByName('Borrow_Num').AsInteger := ADOQuery1.FieldByName('Borrow_Num').AsInteger - 1;
ADOQuery1.Post;
end;
StaticText6.Caption := FormatFloat('0.00',StrToFloat(edIncome.Text) - StrToFloat(StaticText5.Caption));
Application.MessageBox('光盤歸還成功!', '成功',MB_OK+MB_ICONINFORMATION);
edIncome.Clear;
StaticText6.Caption := '';
Panel4.Visible := False;
edStore_ID.Clear;
edStore_ID.SetFocus;
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -