📄 purchase.~pas
字号:
unit purchase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls,DB,DBTables;
type
TPurchaseFrm = class(TForm)
LblPurchaseID: TLabel;
LblPurchaseDate: TLabel;
LblPurchaser: TLabel;
LblFrmTitle: TLabel;
DBGridBookInfo: TDBGrid;
BtbOK: TButton;
BtnClose: TButton;
EdtPurchaseID: TEdit;
DtpPurchaseDate: TDateTimePicker;
DBNavigator1: TDBNavigator;
CBoxpurhcaser: TComboBox;
LblTatolText: TLabel;
LblTotal: TLabel;
LblNum: TLabel;
procedure BtnCloseClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGridBookInfoKeyPress(Sender: TObject; var Key: Char);
procedure BtbOKClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
TmpTableName:String;
IFTotal:Boolean;
procedure GetBookInfo(StrBID:String);
procedure GetPurchaserAndCurTime;
Function GetPID:String;
{ Private declarations }
public
{ Public declarations }
end;
var
PurchaseFrm: TPurchaseFrm;
implementation
uses DataModuel, Main;
{$R *.dfm}
procedure TPurchaseFrm.BtnCloseClick(Sender: TObject);
begin
MainForm.PurchaseBook_Sub.Enabled:=True;
close;
end;
procedure TPurchaseFrm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DM.TempTable.Close;
DM.TempTable.TableName:='';
Action:=caFree;
end;
procedure TPurchaseFrm.DBGridBookInfoKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if DBGridBookInfo.SelectedIndex<>DBGridBookInfo.FieldCount-1 then
begin
if DBGridBookInfo.SelectedIndex=0 then
begin
if DBGridBookInfo.Fields[0].IsNull then
begin
MessageDlg('图书编号不能为空',mtinformation,[mbok],0);
exit;
end;
GetBookInfo(DBGridBookInfo.Fields[0].Value);
IFTotal:=True;
key:=#0;
exit;
end;
//**如果在数量一行,并且数量和单价都不为0时,计算金额
if DBGridBookInfo.SelectedIndex=5 then
begin
LblNum.Caption:=IntToStr(StrToInt(Trim(LblNum.Caption))+DBGridBookInfo.Fields[5].Value);
if (DBGridBookInfo.Fields[4].Value>0.0) and (DBGridBookInfo.Fields[5].Value<>0) then
DBGridBookInfo.Fields[6].Value:=DBGridBookInfo.Fields[4].Value*DBGridBookInfo.Fields[5].Value;
if IFTotal then
begin
LblTotal.Caption:=FloatToStr(StrToFloat(Trim(LblTotal.Caption))+DBGridBookInfo.Fields[6].Value);
IFTotal:=False;
end;
end;
if DBGridBookInfo.Fields[0].IsNull then
begin
MessageDlg('图书编号不能为空',mtinformation,[mbok],0);
exit;
end;
DBGridBookInfo.SelectedIndex:=DBGridBookInfo.SelectedIndex+1;
end
else
DBGridBookInfo.SelectedIndex:=0;
key:=#0;
exit;
end;
end;
//****查找所输入的图书编号在图书库中是否存在,如存在则显示
procedure TPurchaseFrm.GetBookInfo(StrBID: String);
begin
StrBID:=Trim(StrBID);
With DM.TempQry do
begin
Close;
SQL.Text:='Select * from BookInfo where BookID='''+StrBID+'''';
Open;
if RecordCount<>0 then
begin
DM.TempTable.Edit;
DM.TempTable['BookID1']:=StrBID;
DM.TempTable['BookName1']:=FieldByName('BookName').AsString;
DM.TempTable['Author']:=FieldByName('Author').AsString;
DM.TempTable['Press']:=FieldByName('Press').AsString;
DM.TempTable['Price']:=FieldByName('Price').AsString;
DM.TempTable['PurhchaseQuantity1']:=0;
DM.TempTable['PurchaseAmount1']:=0.0;
DM.TempTable.Post;
DBGridBookInfo.SelectedIndex:=5;
end
else
begin
MessageDlg('图书库中不存在此书号的图书'+#13+'请先在图书库中新增此书号。',mtInformation,[mbOK],0);
DBGridBookInfo.SelectedIndex:=0;
end;
Close;
end;
end;
procedure TPurchaseFrm.BtbOKClick(Sender: TObject);
var
PurID:String; //采购员ID
IsNum:integer;
begin
if Trim(EdtPurchaseID.Text)='' then
begin
MessageDlg('采购单不能为空',mtInformation,[mbOK],0);
exit;
EdtPurchaseID.SetFocus;
end;
with DM.PurchaseQry do
begin
close;
SQL.Text:='select PurchaseID from PurchaseMaster where PurchaseID='''+Trim(EdtPurchaseID.Text)+'''';
open;
if DM.PurchaseQry.RecordCount<>0 then
begin
MessageDlg('此采购单已存在,请检查是否有误输入!',mtinformation,[mbOK],0);
exit;
end;
close;
end;
if Trim(CBoxpurhcaser.Text)='' then
begin
MessageDlg('采购员没有选中,请先选中!',mtInformation,[mbOk],0);
CBoxpurhcaser.SetFocus;
exit;
end
else
begin
with DM.PurchaseQry do
begin
close;
SQL.Text:='select PurchaserID from Purchaser where PurchaserName='''+Trim(CBoxpurhcaser.Text)+'''';
Open;
if RecordCount<>0 then
PurID:=FieldByName('PurchaserID').AsString
else
begin
MessageDlg('此采购员不存在,请确认!',mtInformation,[mbOk],0);
exit;
end;
close;
end;
end;
with DM.TempTable do
begin
if Active=False then
Active:=True;
if RecordCount=0 then
begin
Messagedlg('此采购单没有采购的图书信息!'+#13+'请输入图书信息',mtInformation,[mbOK],0);
exit;
end;
end;
try
with DM.PurchaseQry do
begin
Close;
SQL.Text:='Insert into PurchaseMaster(PurchaseID,PurchaseDate,Purchaser)';
SQL.Add('Values');
SQL.Add('(:PurchaseID,:PurchaseDate,:Purchaser)');
Params.ParamByName('PurchaseID').Value:=Trim(EdtPurchaseID.Text);
Params.ParamByName('PurchaseDate').Value:=DtpPurchaseDate.Date;
Params.ParamByName('Purchaser').Value:=PurID;
ExecSQL;
close;
end;
DM.TempTable.First;
while not DM.TempTable.Eof do
begin
with DM.PurchaseQry do
begin
Close;
SQL.Text:='Insert into PurchaseSub(PurchaseID,BookID,PurhchaseQuantity,PurchaseAmount)';
SQL.Add('Values');
SQL.Add('(:PurchaseID,:BookID,:PurhchaseQuantity,:PurchaseAmount)');
Params.ParamByName('PurchaseID').Value:=Trim(EdtPurchaseID.Text);
Params.ParamByName('BookID').Value:=DM.TempTable['BookID1'];
Params.ParamByName('PurhchaseQuantity').Value:=DM.TempTable['PurhchaseQuantity1'];
Params.ParamByName('PurchaseAmount').Value:=DM.TempTable['PurhchaseQuantity1'];
ExecSQL;
close;
end;
IsNum:=0;
with DM.SaleManageQry do
begin
close;
SQL.Text:='Select * from BookNum where BookID='''+DM.TempTable['BookID1']+'''';
Open;
IsNum:=RecordCount;
close;
end;
if IsNum<>0 then
begin
with DM.SaleManageQry do
begin
close;
SQL.Clear;
SQL.Text:='Update BookNum set BookNum=BookNum+:Num';
SQL.Add(' Where BookID=:BID');
Params.ParamByName('Num').Value:=DM.TempTable['PurhchaseQuantity1'];
Params.ParamByName('BID').Value:=DM.TempTable['BookID1'];
ExecSQL;
close;
end;
end
else
begin
with DM.SaleManageQry do
begin
close;
SQL.Clear;
SQL.Text:='Insert into BookNum(BookID,BookNum)';
SQL.Add('Values');
SQL.Add('(:BookID,:BookNum)');
Params.ParamByName('BookID').Value:=DM.TempTable['BookID1'];
Params.ParamByName('BookNum').Value:=DM.TempTable['PurhchaseQuantity1'];
ExecSQL;
close;
end;
end;
DM.TempTable.Next;
end;
except
MessageDlg('数据保存出错,请检查是否数据录入是否有误!',mtInformation,[mbOK],0);
exit;
end;
GetPID;
DM.TempTable.Close;
DM.TempTable.EmptyTable;
DM.TempTable.Active:=True;
MessageDlg('数据保存成功!!',mtInformation,[mbOK],0);
end;
procedure TPurchaseFrm.FormCreate(Sender: TObject);
begin
GetPurchaserAndCurTime;
//****使用日期加时间作为数据库表名和采购单号******
TmpTableName:=GetPID;
TmpTableName:=TmpTableName+'.db';
if FileExists('Temp\Temp.db') then
begin
TmpTableName:='Temp.db';
DM.TempTable.TableName:='Temp\'+TmpTableName;
DM.TempTable.EmptyTable;
DM.TempTable.Active:=True;
end
else
begin
//****创建临时数据库表,使其处于插入状态******
DM.TempTable.TableName:='Temp\'+TmpTableName;
DM.TempTable.FieldDefs.Clear;
DM.TempTable.FieldDefs.Add('BookID1',ftString,15,True);
DM.TempTable.FieldDefs.Add('BookName1',ftString,20,False);
DM.TempTable.FieldDefs.Add('Author',ftString,8,False);
DM.TempTable.FieldDefs.Add('Press',ftString,20,False);
DM.TempTable.FieldDefs.Add('Price',ftCurrency,0,False);
DM.TempTable.FieldDefs.Add('PurhchaseQuantity1',ftfloat,0,False);
DM.TempTable.FieldDefs.Add('PurchaseAmount1',ftCurrency,0,False);
DM.TempTable.CreateTable;
DM.TempTable.Active:=True;
end;
end;
procedure TPurchaseFrm.GetPurchaserAndCurTime;
begin
//****添加采购员
with DM.PurchaseQry do
begin
Close;
SQL.Text:='Select * from Purchaser';
Open;
While not Eof do
begin
CBoxpurhcaser.Items.Add(FieldByName('PurchaserName').AsString);
Next;
end;
Close;
end;
//***取得当前日期
DtpPurchaseDate.Date:=Date();
end;
procedure TPurchaseFrm.FormDestroy(Sender: TObject);
begin
PurchaseFrm:=nil;
end;
function TPurchaseFrm.GetPID: String;
var
Perent:TDateTime;
Year, Month, Day, Hour, Min, Sec,MSec: Word;
begin
//****使用日期加时间作为数据库表名和采购单号******
Perent:=Now();
DecodeDate(Perent,Year,Month,Day);
DecodeTime(Perent,Hour,Min,Sec,MSec);
EdtPurchaseID.Text:=IntToStr(Year)+IntToStr(Month)+IntToStr(Day)+IntToStr(Hour)+IntToStr(Min);
Result:=Trim(EdtPurchaseID.Text);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -