⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ufpublish_jhmnt.pas

📁 一个功能较全的图书进销存软件,功能还算完备
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -