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

📄 ufpbookinfo_update.pas

📁 一个功能较全的图书进销存软件,功能还算完备
💻 PAS
字号:
unit ufPBookInfo_Update;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, DB, DBCtrls, Mask, Grids, DBGrids,ADODB;

type
  TfPBookInfo_update = class(TForm)
    pltop: TPanel;
    plbottom: TPanel;
    GroupBox1: TGroupBox;
    dedtBarcode: TDBEdit;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    dedtCnName: TDBEdit;
    StaticText5: TStaticText;
    dedtPrice: TDBEdit;
    StaticText6: TStaticText;
    dcbxType: TDBComboBox;
    StaticText7: TStaticText;
    dedtCode: TDBEdit;
    StaticText8: TStaticText;
    dedtISBN: TDBEdit;
    StaticText17: TStaticText;
    dedtQty: TDBEdit;
    StaticText18: TStaticText;
    dedtAQty: TDBEdit;
    StaticText9: TStaticText;
    dedtEnName: TDBEdit;
    StaticText22: TStaticText;
    dtxtOpe: TDBText;
    StaticText10: TStaticText;
    dedtGetID: TDBEdit;
    StaticText11: TStaticText;
    dedtInP: TDBEdit;
    StaticText12: TStaticText;
    dedtPage: TDBEdit;
    StaticText13: TStaticText;
    dcbxMType: TDBComboBox;
    StaticText14: TStaticText;
    dcbxZaiti: TDBComboBox;
    p_ID: TStaticText;
    cbxPro_name: TComboBox;
    StaticText21: TStaticText;
    dtxtDate: TDBText;
    StaticText1: TStaticText;
    dsPubBook: TDataSource;
    dedtInfo: TDBEdit;
    StaticText2: TStaticText;
    dedtDID: TDBEdit;
    StaticText20: TStaticText;
    dchkbxStatus1: TDBCheckBox;
    dcbxPro_ID: TDBComboBox;
    P_name: TStaticText;
    DBGrid1: TDBGrid;
    Panel2: TPanel;
    UpdateBtn: TBitBtn;
    ApplyBtn: TBitBtn;
    CancelBtn: TBitBtn;
    ExitBtn: TBitBtn;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    procedure ExitBtnClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure UpdateBtnClick(Sender: TObject);
    procedure CancelBtnClick(Sender: TObject);
    procedure ApplyBtnClick(Sender: TObject);
    procedure dcbxTypeExit(Sender: TObject);
    procedure dedtCodeExit(Sender: TObject);
    procedure dcbxMTypeExit(Sender: TObject);
    procedure dcbxZaitiExit(Sender: TObject);
    procedure cbxPro_nameChange(Sender: TObject);
    procedure cbxPro_nameExit(Sender: TObject);
    procedure dcbxTypeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dchkbxStatus1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DeleteBtnClick(Sender: TObject);
  private
    procedure SetStatus(status:boolean);   //置控件状态
    procedure SetBStatus(status:boolean);  //置按钮状态
    procedure SEtPstatus(status:boolean);  //置供应商对应的控件状态
    function check():Boolean;//查看记录输入是否完全
    { Private declarations }
  public
    { Public declarations }
  end;
const
  Ope='张三';
var
  fPBookInfo_update: TfPBookInfo_update;

implementation

uses udmpublish, Uglobal;

{$R *.dfm}

procedure TfPBookInfo_update.ExitBtnClick(Sender: TObject);
begin
close;
end;

procedure TfPBookInfo_update.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  fPBookInfo_update:=nil;
  action:=cafree;
end;
//窗体初始化
procedure TfPBookInfo_update.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 adspubbook.Active then
        adspubbook.Active:=false;
      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 TfPBookInfo_update.FormShow(Sender: TObject);
begin
  //置控件状态为无效
  SetStatus(false);
  SetPstatus(false);
  //置按钮状态为有效
  SetBStatus(true);
  //重新查询一遍
  dmpublish.adspubbook.Requery();
end;

procedure TfPBookInfo_update.SetBStatus(status: boolean);
begin
  UpdateBtn.Enabled:=status;
  ExitBtn.Enabled:=status;
  Applybtn.Enabled:=not status;
  CancelBtn.Enabled:=not status;

end;

procedure TfPBookInfo_update.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 TfPBookInfo_update.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;
  dedtinfo.Enabled:=status;
  dedtDID.Enabled:=status;
end;
{ TODO : 修改 }
procedure TfPBookInfo_update.UpdateBtnClick(Sender: TObject);
begin
  if dmpublish.adspubbook.RecordCount <= 0 then
    MSG('数据库为空,修改操作取消!','E')
  else
  begin
    //置按钮状态为无效
    SetBStatus(false);
    { TODO : 除了条形码,书名和价格,馆藏数量不能改,其他的信息都能改动 }
    setStatus(true);
    SetPStatus(true);
    dedtbarcode.Enabled:=false;
    dedtcnname.Enabled:=false;
    dedtprice.Enabled:=false;
    dedtqty.Enabled:=false;
    dmpublish.adspubbook.Edit;
    cbxpro_name.ItemIndex:=dcbxpro_id.Items.IndexOf(trim(dcbxpro_id.Text));
    
    dcbxtype.SetFocus;
  end;

end;

procedure TfPBookInfo_update.CancelBtnClick(Sender: TObject);
begin
 if Msg('确定要取消操作吗?','Q')then
  begin
    dmpublish.adspubbook.CancelUpdates;
    formshow(fPBookInfo_update);
  end;
end;

function TfPBookInfo_update.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 TfPBookInfo_update.ApplyBtnClick(Sender: TObject);
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',parameters[0].Value);
      end
      else
        dtxtDate.Field.AsString:=FormatDateTime('YYYY-MM-DD',Now());
    end;
    dtxtOpe.Field.AsString:=Ope;
    { TODO : 如果书籍类型为标准,保存时isbn为空,则用标准号代替isbn }
    if (trim(dcbxtype.Text)='标准') and (trim(dedtisbn.Text)='') then
      dedtisbn.Field.asstring:=dedtcode.Field.AsString;
    { TODO : 保存记录 }
    try
      dmpublish.adspubbook.UpdateBatch();      //保存
      MSG('记录修改成功!','I');
      formshow(fPBookInfo_update);
    except
      MSG('操作出错,记录修改失败!','W');
      dmpublish.adspubbook.CancelUpdates;
      formshow(fPBookInfo_update);
    end;
  end
  else
  begin
    MSG('信息录入不全,请检查后再保存!','W');
  end;
end;

procedure TfPBookInfo_update.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 TfPBookInfo_update.dedtCodeExit(Sender: TObject);
begin
if (trim(dedtcode.Text)='') and (trim(dcbxtype.Text)='标准') then
begin
  MSG('当文献类型为”标准“时,标准号不能为空!','E');
  dedtcode.SetFocus;
end;
end;

procedure TfPBookInfo_update.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 TfPBookInfo_update.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 TfPBookInfo_update.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 TfPBookInfo_update.cbxPro_nameExit(Sender: TObject);
begin
if trim(cbxpro_name.Text)<>'' then
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.Text:='';
    cbxpro_name.SetFocus;
  end;
end;
end;

procedure TfPBookInfo_update.dcbxTypeKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if (Key = VK_RETURN)
  then SelectNext(ActiveControl, True, True);
end;

procedure TfPBookInfo_update.dchkbxStatus1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  applybtn.SetFocus;
end;

procedure TfPBookInfo_update.DeleteBtnClick(Sender: TObject);
begin
  if dmpublish.adspubbook.RecordCount <= 0 then
    MSG('数据库为空,删除操作取消!','E')
  else
  begin
      if MSG('确定要删除该记录吗?','Q') then
      begin
        try
          dmpublish.adspubbook.Edit;
          dmpublish.adspubbook.FieldByName('status').AsString:='0';
          dmpublish.adspubbook.Post;
          MSG('删除该记录成功!','I');
          formshow(fPBookInfo_update);
        except
          MSG('操作出错,记录删除失败!','E');
          formshow(fPBookInfo_update);
        end;
      end;

  end;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -