📄 ufpublish_jhmnt.pas
字号:
begin
if cbxpro_name.Items.IndexOf(trim(cbxpro_name.Text))<>-1 then
begin
dcbxpro_id.ItemIndex:=cbxpro_name.ItemIndex;
dcbxpro_id.Field.AsString:=dcbxpro_id.Text;
end
else
begin
MSG('输入的供应商名称不存在,请重新输入!','E');
cbxpro_name.SetFocus;
end;
end;
end;
procedure TfPublish_JhMnt.dchkbxStatus1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
Applybtn.SetFocus;
end;
procedure TfPublish_JhMnt.dcbxTypeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_RETURN)
then SelectNext(ActiveControl, True, True);
end;
procedure TfPublish_JhMnt.DeleteBtnClick(Sender: TObject);
begin
if dmpublish.adsJh.RecordCount <= 0 then
MSG('数据库为空,删除操作取消!','E')
else
begin
if dmpublish.adsJh.FieldByName('status2').AsString='1' then
MSG('记录已更新,删除操作取消!','W')
else
begin
if MSG('确定要删除该记录吗?','Q') then
begin
try
dmpublish.adsJh.Edit;
dmpublish.adsJh.FieldByName('status').AsString:='0';
dmpublish.adsJh.Post;
MSG('删除该记录成功!','I');
formshow(fPublish_JhMnt);
except
MSG('操作出错,记录删除失败!','E');
formshow(fPublish_JhMnt);
end;
end;
end;
end;
end;
procedure TfPublish_JhMnt.UpdateBtnClick(Sender: TObject);
begin
if dmpublish.adsJh.RecordCount <= 0 then
MSG('数据库为空,修改操作取消!','E')
else
begin
if dmpublish.adsJh.FieldByName('status2').AsString='1' then
MSG('记录已更新,修改操作取消!','W')
else
begin
AdoStatus:=2; //操作状态为修改
//置按钮状态为无效
SetBStatus(false);
if dmpublish.adsJh.FieldByName('status3').AsString='1' then //该记录是已存的
begin
{ TODO : 只能改动数量和预警数量 }
setStatus(false);
setPStatus(true);
dedtQTy.Enabled:=true;
dedtaqty.Enabled:=true;
cbxpro_name.Enabled:=false;
end
else
begin
{ TODO : 除了条形码,书名和价格不能改,其他的信息都能改动 }
setStatus(true);
SetPStatus(true);
dedtbarcode.Enabled:=false;
dedtcnname.Enabled:=false;
dedtprice.Enabled:=false;
end;
dmpublish.adsJh.Edit;
cbxpro_name.ItemIndex:=dcbxpro_id.Items.IndexOf(trim(dcbxpro_id.Text));
end;
end;
end;
procedure TfPublish_JhMnt.SEtPstatus(status: boolean);
begin
P_ID.Visible:=not Status;
dcbxPro_ID.Visible:=not Status;
dcbxPro_ID.Enabled:=status;
P_name.Visible:=status;
cbxPro_name.Visible:=status;
cbxPro_Name.Enabled:=status;
end;
procedure TfPublish_JhMnt.dcbxTypeExit(Sender: TObject);
begin
if trim(dcbxtype.Text)<>'' then
begin
if dcbxtype.Items.IndexOf(trim(dcbxtype.Text))<>-1 then
else
begin
MSG('输入的文献类型不存在,请重新输入!','E');
dcbxtype.SetFocus;
end;
end;
end;
procedure TfPublish_JhMnt.dcbxMTypeExit(Sender: TObject);
begin
if trim(dcbxMType.Text)<>'' then
begin
if dcbxMType.Items.IndexOf(trim(dcbxMType.Text))<>-1 then
else
begin
MSG('输入的币种不存在,请重新输入!','E');
dcbxMType.SetFocus;
end;
end;
end;
procedure TfPublish_JhMnt.dcbxZaitiExit(Sender: TObject);
begin
if trim(dcbxZaiti.Text)<>'' then
begin
if dcbxZaiti.Items.IndexOf(trim(dcbxZaiti.Text))<>-1 then
else
begin
MSG('输入的载体不存在,请重新输入!','E');
dcbxZaiti.SetFocus;
end;
end;
end;
procedure TfPublish_JhMnt.edtBookTypeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_RETURN)
then SelectNext(ActiveControl, True, True);
end;
procedure TfPublish_JhMnt.dedtBarcodeKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if trim(dedtbarcode.Text)<>'' then
begin
if (Key = VK_RETURN) then
begin
SelectNext(activecontrol,true,true);
end;
end;
end;
procedure TfPublish_JhMnt.OperateBarcode;
begin
{ TODO :在发行站书籍表Publish_Book里查找是否已经有相同barcode的有效记录存在(状态为1) }
if dmpublish.adsPubBook.Locate('book_barcode;status',varArrayOF([trim(dedtbarcode.Text),'1']),[loCaseInsensitive]) then
begin
//存在 ---1
if MSG('在发行站中已有匹配书籍,是否将其信息导入?','Q') then
begin
//导入匹配书籍数据 ---2
{ TODO :将Publish_BOOK表里包含该barcode字段的记录提取出来,将这些记录
的书名和标价做一个列表,让用户选择 }
with dmpublish.adsShare do
begin
if Active then
Active := False;
CommandText := 'select * from publish_book where status=''1'' and book_barcode='''+trim(dedtbarcode.Text)+'''';
Active := True;
end;
{ TODO : 操作书籍浏览框 }
//dbgrid的指向分配
dgrdbook.DataSource:=dsshare;
with dgrdbook.Columns do
begin
clear;
add;
Items[0].FieldName:='cn_name';
items[0].Title.caption:='书籍名称';
items[0].Width:=95;
Add;
Items[1].FieldName:='show_price';
items[1].Title.caption:='标价';
items[1].Width:=60;
end;
//若只有一条记录
if dmpublish.adsShare.RecordCount=1 then
begin
{ TODO : 系统自动将该记录剩余的信息填入对话框中 }
dedtcnname.Field.AsString:=dmpublish.adsShare.Fieldbyname('cn_name').AsString;
dedtprice.Field.AsString:=dmpublish.adsShare.fieldbyname('show_price').AsString;
dcbxtype.Field.AsString:=dmpublish.adsShare.fieldbyname('book_type').AsString;
dedtCode.Field.AsString:=dmpublish.adsShare.fieldbyname('book_code').AsString;
dedtISBN.Field.AsString:=dmpublish.adsShare.fieldbyname('ISBN_code').AsString;
dedtAQty.Field.AsString:=dmpublish.adsShare.fieldbyname('alert_quantity').AsString;
dedtEnName.Field.AsString:=dmpublish.adsShare.fieldbyname('en_name').AsString;
dedtGetID.Field.AsString:=dmpublish.adsShare.fieldbyname('get_id').AsString;
dedtInP.Field.AsString:=dmpublish.adsShare.fieldbyname('in_price').AsString;
dedtPage.Field.AsString:=dmpublish.adsShare.fieldbyname('pages').AsString;
dcbxMType.Field.AsString:=dmpublish.adsShare.fieldbyname('money_type').AsString;
dcbxZaiti.Field.AsString:=dmpublish.adsShare.fieldbyname('zaiti').AsString;
dcbxPro_ID.Field.AsString:=dmpublish.adsShare.fieldbyname('supplier_id').AsString;
cbxpro_name.ItemIndex:=dcbxpro_id.Items.IndexOf(trim(dcbxpro_id.Text));
{ TODO : 此时除了“数量”能操作,其他的栏目都为灰色 }
setStatus(false);
setPStatus(true);
dedtqty.Enabled:=true;
cbxpro_name.Enabled:=false;
{ TODO : 自动跳到数量的对话框栏中 }
dedtqty.SetFocus;
end
else
begin
//若有多条,需要选择
dgrdbook.Enabled:=true;
dgrdbook.SetFocus;
end;
//赋值,表示该记录是已经存在的
BookStatus:=2;
//表示现在是操作publish_book
dsStatus:=1;
end //---2
else //---2
begin //---2
{ TODO : 用户自己输入剩余的信息 }
//dbgrid的指向分配
dgrdbook.DataSource:=nil;
dgrdbook.Columns.Clear;
//新增,但该记录的条形码是已存在的,要小心记录会重复
BookStatus:=3;
dedtcnname.SetFocus;
dsStatus:=0;
end; //---2
end; //---1
end;
procedure TfPublish_JhMnt.dedtBarcodeExit(Sender: TObject);
begin
if trim(dedtbarcode.Text)<>'' then
begin
OperateBarcode;
end;
end;
procedure TfPublish_JhMnt.dgrdBookCellClick(Column: TColumn);
begin
if dsstatus=1 then //表示现在是操作publish_book
begin
{ TODO : 系统自动将该记录剩余的信息填入对话框中 }
dedtcnname.Field.AsString:=dmpublish.adsShare.Fieldbyname('cn_name').AsString;
dedtprice.Field.AsString:=dmpublish.adsShare.fieldbyname('show_price').AsString;
dcbxtype.Field.AsString:=dmpublish.adsShare.fieldbyname('book_type').AsString;
dedtCode.Field.AsString:=dmpublish.adsShare.fieldbyname('book_code').AsString;
dedtISBN.Field.AsString:=dmpublish.adsShare.fieldbyname('ISBN_code').AsString;
dedtAQty.Field.AsString:=dmpublish.adsShare.fieldbyname('alert_quantity').AsString;
dedtEnName.Field.AsString:=dmpublish.adsShare.fieldbyname('en_name').AsString;
dedtGetID.Field.AsString:=dmpublish.adsShare.fieldbyname('get_id').AsString;
dedtInP.Field.AsString:=dmpublish.adsShare.fieldbyname('in_price').AsString;
dedtPage.Field.AsString:=dmpublish.adsShare.fieldbyname('pages').AsString;
dcbxMType.Field.AsString:=dmpublish.adsShare.fieldbyname('money_type').AsString;
dcbxZaiti.Field.AsString:=dmpublish.adsShare.fieldbyname('zaiti').AsString;
dcbxPro_ID.Field.AsString:=dmpublish.adsShare.fieldbyname('supplier_id').AsString;
cbxpro_name.ItemIndex:=dcbxpro_id.Items.IndexOf(trim(dcbxpro_id.Text));
{ TODO : 此时除了“数量”能操作,其他的栏目都为灰色 }
setStatus(false);
setPStatus(true);
dedtqty.Enabled:=true;
dgrdbook.Enabled:=true;
cbxpro_name.Enabled:=false;
{ TODO : 自动跳到数量的对话框栏中 }
dedtqty.SetFocus;
end;
end;
procedure TfPublish_JhMnt.dedtCodeExit(Sender: TObject);
begin
if (trim(dedtcode.Text)='') and (trim(dcbxtype.Text)='标准') then
begin
MSG('当文献类型为”标准“时,标准号不能为空!','E');
dedtcode.SetFocus;
end;
end;
procedure TfPublish_JhMnt.PrintBtnClick(Sender: TObject);
begin
try
if not assigned(fpublish_jhmnt_qr) then
fpublish_jhmnt_qr:=tfpublish_jhmnt_qr.Create(application);
with fpublish_jhmnt_qr.ADOQuery1 do
begin
close;
open;
end;
fpublish_jhmnt_qr.Preview;
except
MSG('打印报表出错!','W');
formshow(fPublish_JhMnt);
end;
end;
procedure TfPublish_JhMnt.SaveBtnClick(Sender: TObject);
var
Savedate:string;
begin
{ TODO : 取操作时间 }
//取数据库时间
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
SaveDate:=FormatDateTime('YYYY-MM-DD',parameters[0].Value);
end
else
SaveDate:=FormatDateTime('YYYY-MM-DD',Now());
end;
{ TODO : 在入库表里取出STATUS=1和STATUS2=0的记录 }
with dmpublish.adsShare do
begin
if Active then
Active := False;
CommandText := 'select * from publish_storage_in where status=''1'' and status2=''0''';
Active := True;
end;
if dmpublish.adsShare.RecordCount=0 then
begin
MSG('没有需要更新的记录!','I');
formshow(fPublish_JhMnt);
exit;
end
else
begin
with dmpublish.adsShare do
begin
first;
while not eof do
begin
{ TODO :根据条形码、标价、名称判断,若存在,在Publsih_Book表里找到
对应的书籍,改写它的数量和预警数量,同时将该记录的STATUS2=1 }
if dmpublish.adsPubBook.Locate('book_barcode;cn_name;show_price;Status',varArrayof([fieldbyname('book_barcode').Value,fieldbyname('cn_name').Value,fieldbyname('show_price').Value,'1']),[loCaseInsensitive]) then
begin //--2
dmpublish.adsPubBook.Edit;
dmpublish.adsPubBook.FieldByName('store_quantity').AsInteger:=dmpublish.adsPubBook.FieldByName('store_quantity').AsInteger+fieldbyname('quantity').AsInteger;
dmpublish.adsPubBook.FieldByName('alert_quantity').AsInteger:=fieldbyname('alert_quantity').AsInteger;
dmpublish.adsPubBook.FieldByName('operate_date').AsString:=SaveDate;
dmpublish.adsPubBook.Post;
edit;
fieldbyname('status2').AsString:='1';
post;
end
{ TODO :若不存在,则将该条记录插入Publsih_Book表里,同时将该记录的STATUS2=1 }
else begin //--2
dmpublish.adsPubBook.Append;
dmpublish.adsPubBook.FieldByName('book_type').AsString:=fieldbyname('book_type').AsString;
dmpublish.adsPubBook.FieldByName('book_code').AsString:=fieldbyname('book_code').AsString;
dmpublish.adsPubBook.FieldByName('cn_name').AsString:=fieldbyname('cn_name').AsString;
dmpublish.adsPubBook.FieldByName('en_name').AsString:=fieldbyname('en_name').AsString;
dmpublish.adsPubBook.FieldByName('isbn_code').AsString:=fieldbyname('isbn_code').AsString;
dmpublish.adsPubBook.FieldByName('book_barcode').AsString:=fieldbyname('book_barcode').AsString;
dmpublish.adsPubBook.FieldByName('get_id').AsString:=fieldbyname('get_id').AsString;
dmpublish.adsPubBook.FieldByName('zaiti').AsString:=fieldbyname('zaiti').AsString;
dmpublish.adsPubBook.FieldByName('in_price').AsFloat:=fieldbyname('in_price').AsFloat;
dmpublish.adsPubBook.FieldByName('show_price').AsFloat:=fieldbyname('show_price').AsFloat;
dmpublish.adsPubBook.FieldByName('money_type').AsString:=fieldbyname('money_type').AsString;
dmpublish.adsPubBook.FieldByName('pages').AsInteger:=fieldbyname('pages').AsInteger;
dmpublish.adsPubBook.FieldByName('store_quantity').AsInteger:=fieldbyname('quantity').AsInteger;
dmpublish.adsPubBook.FieldByName('supplier_id').AsInteger:=fieldbyname('supplier_id').AsInteger;
dmpublish.adsPubBook.FieldByName('alert_quantity').AsInteger:=fieldbyname('alert_quantity').AsInteger;
dmpublish.adsPubBook.FieldByName('operator').AsString:=Ope;
dmpublish.adsPubBook.FieldByName('operate_date').AsString:=SaveDate;
dmpublish.adsPubBook.FieldByName('status').AsString:='1';
dmpublish.adsPubBook.Post;
edit;
fieldbyname('status2').AsString:='1';
post;
end;//--2
next;
end;
end;
end;
MSG('记录更新成功!','I');
formshow(fPublish_JhMnt);
end;
procedure TfPublish_JhMnt.cbxPro_nameKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
applybtn.SetFocus;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -