📄 ufpublish_jhmnt.pas
字号:
{**********************************************
Copyright (C) 2004 hill
<Written By> 刘山
<Unit> 进货单元
<What> 实现发行站进货输入,查询功能
<When> 2003-12-31
**********************************************}
unit ufPublish_JhMnt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, Grids, DBGrids, DBCtrls,
Mask, DB, Menus, CheckLst, ADODB, Provider, DBTables, DBClient, {DBLocal,
DBLocalB,} StrUtils;
type
TfPublish_JhMnt = class(TForm)
dsJh: TDataSource;
pnlHead: TPanel;
Panel1: TPanel;
UpdateBtn: TBitBtn;
ApplyBtn: TBitBtn;
CancelBtn: TBitBtn;
InsertBtn: TBitBtn;
DeleteBtn: TBitBtn;
PrintBtn: TBitBtn;
ExitBtn: TBitBtn;
dgrdJh_Head: TDBGrid;
grpbxHead: TGroupBox;
dtxtID: TDBText;
StaticText1: TStaticText;
StaticText3: TStaticText;
dedtBarcode: TDBEdit;
StaticText4: TStaticText;
StaticText5: TStaticText;
StaticText6: TStaticText;
StaticText7: TStaticText;
StaticText8: TStaticText;
dedtCode: TDBEdit;
dedtISBN: TDBEdit;
StaticText9: TStaticText;
StaticText10: TStaticText;
StaticText11: TStaticText;
StaticText12: TStaticText;
StaticText13: TStaticText;
StaticText14: TStaticText;
dedtEnName: TDBEdit;
dedtGetID: TDBEdit;
dedtInP: TDBEdit;
dedtPage: TDBEdit;
P_name: TStaticText;
StaticText17: TStaticText;
dedtQty: TDBEdit;
StaticText18: TStaticText;
dedtAQty: TDBEdit;
dedtCnName: TDBEdit;
dedtPrice: TDBEdit;
StaticText2: TStaticText;
dgrdBook: TDBGrid;
StaticText20: TStaticText;
dchkbxStatus1: TDBCheckBox;
StaticText21: TStaticText;
dtxtDate: TDBText;
StaticText22: TStaticText;
dtxtOpe: TDBText;
SaveBtn: TBitBtn;
StaticText16: TStaticText;
dchkbxStatus2: TDBCheckBox;
dcbxType: TDBComboBox;
dcbxMType: TDBComboBox;
dcbxZaiti: TDBComboBox;
dcbxPro_ID: TDBComboBox;
p_ID: TStaticText;
cbxPro_name: TComboBox;
dsShare: TDataSource;
Splitter1: TSplitter;
Splitter2: TSplitter;
dchxbxstatus3: TDBCheckBox;
procedure ExitBtnClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure InsertBtnClick(Sender: TObject);
procedure ApplyBtnClick(Sender: TObject);
procedure cbxPro_nameChange(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure cbxPro_nameExit(Sender: TObject);
procedure dchkbxStatus1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure dcbxTypeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DeleteBtnClick(Sender: TObject);
procedure UpdateBtnClick(Sender: TObject);
procedure dcbxTypeExit(Sender: TObject);
procedure dcbxMTypeExit(Sender: TObject);
procedure dcbxZaitiExit(Sender: TObject);
procedure edtBookTypeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure dedtBarcodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure dedtBarcodeExit(Sender: TObject);
procedure dgrdBookCellClick(Column: TColumn);
procedure dedtCodeExit(Sender: TObject);
procedure PrintBtnClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure cbxPro_nameKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
//判断入库表是添加还是修改 保存时使用
// 0-默认;1-添加保存;2-修改保存
adoStatus:integer;
//判断新增的书籍是新增的还是已有的
// 0-默认;1-新增的;2-已有的;
// 3-新增,但该记录的条形码是已存在的,要小心记录会重复
BookStatus:integer;
//判断选择的是哪个表的书籍数据
// 0-默认;1-Publish_Book表
dsStatus:integer;
//保留当前日期
CurrentDate:String;
//置控件状态
procedure SetStatus(status:boolean);
//置按钮状态
procedure SetBStatus(status:boolean);
//置供应商对应的控件状态
procedure SEtPstatus(status:boolean);
//处理条形码
procedure OperateBarcode;
//查看记录输入是否完全
function check():Boolean;
{ Private declarations }
public
{ Public declarations }
end;
const
Ope='张三';
var
fPublish_JhMnt: TfPublish_JhMnt;
implementation
uses udmpublish,
Uglobal,
ufPublish_JhMnt_qr;
{$R *.dfm}
procedure TfPublish_JhMnt.ExitBtnClick(Sender: TObject);
begin
close;
end;
procedure TfPublish_JhMnt.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
fPublish_Jhmnt:=nil;
action:=cafree;
end;
//窗体显示
procedure TfPublish_JhMnt.FormShow(Sender: TObject);
begin
//置控件状态为无效
SetStatus(false);
SetPstatus(false);
//置按钮状态为有效
SetBStatus(true);
//重新查询一遍
dmpublish.adsJh.Requery();
adoStatus:=0;
BookStatus:=0;
dsStatus:=0;
dgrdbook.DataSource:=nil;
dgrdbook.Columns.Clear;
end;
//窗体初始化
procedure TfPublish_JhMnt.FormCreate(Sender: TObject);
begin
//打开表
if c_getid(dmpublish.adsShare,'Value','dict',' Class=''币种'' and Parent=''币种'' and Status',dcbxMType)
and c_getid(dmpublish.adsShare,'Value','dict',' Class=''载体'' and Parent=''载体'' and Status',dcbxZaiti)
and c_getPid2(dmpublish.adsShare,'ID','NAME','PROVIDER','STATUS',dcbxPro_id,cbxPro_name)
then
begin
with dmpublish do
begin
if adsjh.Active then
adsjh.Active:=false;
if adspubbook.Active then
adspubbook.Active:=false;
if not adsjh.Active then
begin
adsjh.commandtext:='select * from PUBLISH_STORAGE_IN where STATUS=''1''';
adsjh.Active:=true;
end;
if not adspubbook.Active then
begin
adspubbook.commandtext:='select * from PUBLISH_BOOK where STATUS=''1''';
adspubbook.Active:=true;
end;
end;
end
else
begin
MSG('加入外码出错,请检查数据库!','W');
end;
end;
procedure TfPublish_JhMnt.SetStatus(status: boolean);
begin
dcbxMType.Enabled:=status;
dcbxType.Enabled:=status;
dcbxZaiti.Enabled:=status;
dedtAQty.Enabled:=status;
dedtBarcode.Enabled:=status;
dedtCnname.Enabled:=status;
dedtCode.Enabled:=status;
dedtEnname.Enabled:=status;
dedtGEtID.Enabled:=status;
dedtInp.Enabled:=status;
dedtisbn.Enabled:=status;
dedtpage.Enabled:=status;
dedtprice.Enabled:=status;
dedtqty.Enabled:=status;
dgrdBook.Enabled:=status;
end;
procedure TfPublish_JhMnt.SetBStatus(status: boolean);
begin
InsertBtn.Enabled:=status;
UpdateBtn.Enabled:=status;
DeleteBtn.Enabled:=status;
ExitBtn.Enabled:=status;
PrintBtn.Enabled:=status;
SaveBtn.Enabled:=status;
Applybtn.Enabled:=not status;
CancelBtn.Enabled:=not status;
end;
procedure TfPublish_JhMnt.InsertBtnClick(Sender: TObject);
begin
//置控件状态为有效
SetStatus(true);
SetPstatus(true);
//置按钮状态为无效
SetBStatus(false);
//获得币种和载体的数据
adoStatus:=1;
dmpublish.adsJh.Append;
dchkbxStatus1.Checked:=true;
dchkbxStatus2.Checked:=false;
dchkbxstatus2.Field.AsString:='0';
dchkbxstatus1.Field.AsString:='1';
dedtqty.Field.AsInteger:=1;
dedtaqty.Field.AsInteger:=1;
dtxtOpe.Field.AsString:=Ope;
dcbxtype.ItemIndex:=-1;
dcbxMtype.ItemIndex:=-1;
dcbxzaiti.ItemIndex:=-1;
dedtBarcode.SetFocus;
end;
procedure TfPublish_JhMnt.ApplyBtnClick(Sender: TObject);
var
i:integer;
txtid:string;
begin
//检查输入记录是否完整
if check() then
begin
//取数据库时间
with dmpublish.l_store do
begin
procedurename:='geddate;1';
parameters.Clear;
parameters.CreateParameter('@out',ftDatetime,pdoutput,0,Unassigned);
Prepared;
execproc;
if parameters[0].Value<>null then
begin
dtxtDate.Field.AsString:=FormatDateTime('YYYY-MM-DD HH:MM:SS',parameters[0].Value);
CurrentDate:=FormatDateTime('YYYYMMDD',parameters[0].Value);
end
else
dtxtDate.Field.AsString:=FormatDateTime('YYYY-MM-DD HH:MM:SS',Now());
CurrentDate:=FormatDateTime('YYYYMMDD',Now());
end;
{ TODO : 判断是增加的操作,还是修改的操作 }
//增加的操作
if adoStatus=1 then
begin
{ TODO : 取操作流水号 }
with dmpublish.adsShare do
begin
if Active then
Active := False;
CommandText := 'select operate_order from publish_storage_in where (Id in'+
' (select Max(id) from publish_storage_in where '+
' status=''1'' and operate_order like ''RK'''+'+'''+CurrentDate+'''+'+'''%'') )';
Active := True;
end;
if dmpublish.adsShare.RecordCount=0 then
begin
//若是第一条记录
dtxtID.Field.AsString:='RK'+CurrentDate+'001';
txtid:='RK'+CurrentDate+'001';
end
else begin
//若不是,则取出最大,+1
i:=strtoint(copy(dmpublish.adsShare.fieldbyname('operate_order').AsString,11,3))+1;
dtxtID.Field.AsString:='RK'+CurrentDate+copy('000',1,3-length(inttostr(i)))+inttostr(i);
txtid:='RK'+CurrentDate+copy('000',1,3-length(inttostr(i)))+inttostr(i);
end;
if BookStatus=2 then //该书籍是已有的
dchxbxstatus3.Field.AsString:='1'
else if BookStatus=3 then
begin
{ TODO : 如果是新增的记录,判断是否会有重复记录 }
if not dmpublish.adsPubBook.Locate('book_barcode;cn_name;show_price;status',varArrayOF([trim(dedtbarcode.Text),trim(dedtcnname.Text),trim(dedtprice.Text),'1']),[loCaseInsensitive]) then
dchxbxstatus3.Field.AsString:='0'
else
begin
MSG('输入的书籍记录已经存在,请重新输入!','W');
exit;
end;
end
else
dchxbxstatus3.Field.AsString:='0';
end;
{ TODO : 如果书籍类型为标准,保存时isbn为空,则用标准号代替isbn }
if (trim(dcbxtype.Text)='标准') and (trim(dedtisbn.Text)='') then
dedtisbn.Field.asstring:=dedtcode.Field.AsString;
{ TODO : 保存记录 }
try
dmpublish.adsJh.UpdateBatch(); //保存
if adostatus=1 then
MSG('记录添加成功!当前流水号为'+txtid,'I')
else
MSG('记录修改成功!','I');
formshow(fPublish_JhMnt);
except
if adostatus=1 then
MSG('操作出错,记录添加失败!','W')
else
MSG('操作出错,记录修改失败!','W');
dmpublish.adsJh.CancelUpdates;
formshow(fPublish_JhMnt);
end;
end
else
begin
MSG('信息录入不全,请检查后再保存!','W');
end;
end;
function TfPublish_JhMnt.check: Boolean;
begin
Result:=True;
if trim(dedtBarcode.Text)='' then
result:=false;
if trim(dedtCnName.Text)='' then
result:=false;
if trim(dedtPrice.Text)='' then
result:=false;
if trim(dcbxType.Text)='' then
result:=false;
if trim(dedtQty.Text)='' then
result:=false;
if trim(dedtAQty.Text)='' then
result:=false;
if trim(dcbxMType.Text)='' then
result:=false;
if trim(dcbxZaiti.Text)='' then
result:=false;
if trim(cbxPro_name.Text)='' then
result:=false;
end;
procedure TfPublish_JhMnt.cbxPro_nameChange(Sender: TObject);
begin
if cbxpro_name.ItemIndex<>-1 then
begin
dcbxpro_id.ItemIndex:=cbxpro_name.ItemIndex;
dcbxpro_id.Field.AsString:=dcbxpro_id.Text;
end;
end;
procedure TfPublish_JhMnt.CancelBtnClick(Sender: TObject);
begin
if Msg('确定要取消操作吗?','Q')then
begin
dmpublish.adsJh.CancelUpdates;
formshow(fPublish_JhMnt);
end;
end;
procedure TfPublish_JhMnt.cbxPro_nameExit(Sender: TObject);
begin
if trim(cbxpro_name.Text)<>'' then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -