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

📄 instorelogout.pas

📁 物流管理系统是一个典型的数据库应用程序
💻 PAS
字号:

unit instorelogout;

interface

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

type
  Tf_Instorelogout = class(Tf_frame)
    Label1: TLabel;
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    master: TDataSource;
    Panel2: TPanel;
    Label2: TLabel;
    Query: TBitBtn;
    storageID: TCheckBox;
    Date: TCheckBox;
    FromDate: TDateTimePicker;
    ToDate: TDateTimePicker;
    Confirm: TBitBtn;
    Cancel: TBitBtn;
    InregID: TEdit;
    procedure CancelClick(Sender: TObject);virtual;
    procedure QueryClick(Sender: TObject);virtual;
    procedure FormShow(Sender: TObject); virtual;
    procedure ConfirmClick(Sender: TObject);virtual;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  f_Instorelogout: Tf_Instorelogout;

implementation
  uses data,main;
{$R *.dfm}
//取消按钮的单击事件
procedure Tf_Instorelogout.CancelClick(Sender: TObject);
begin
  inherited;
  FromDate.DateTime := Now; //初始化时间段
  ToDate.DateTime := Now;
  StorageID.Checked := True; //设置默认的查询条件
  Date.Checked := False;
  InregID.Clear;  //清空入库票号
  InregID.SetFocus;
  t_data.Query1.Close; //关闭数据集
  Confirm.Enabled := False; //确定按钮不可用
end;
//查询按钮的单击事件
procedure Tf_Instorelogout.QueryClick(Sender: TObject);
begin
  inherited;
  if (Storageid.Checked = True)or(Date.Checked = True) then //判断是否设置了查询条件
  begin
    if (Storageid.Checked)and(not Date.Checked) then  //只按票号查询
    begin
      if Trim(InRegid.Text)<>'' then
      begin
        With t_data.Query1 do
        begin
          Close;
          SQL.Clear;
          //从视图中查询入库信息
          SQL.Add('select * from v_instorequery where regid = :regid');
          Parameters.ParamByName('regid').Value := Trim(inregid.Text);
          Open;
        end;
      end
      else
      begin
        Application.MessageBox('请输入票号.','提示',64);
        Exit;
      end;
    end
    else if (not storageid.Checked)and(date.Checked) then //按时间段查询
    begin
      with t_data.Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select * from v_instorequery where');
        SQL.Add(' TimeDate >= :FromDate and Timedate < :ToDate');
        Parameters.ParamByName('FromDate').Value := Trunc(FromDate.DateTime);
        Parameters.ParamByName('ToDate').Value := Trunc(ToDate.DateTime)+1;
        Open;
      end;
    end
    else //按入库票号和时间段查询
    begin
      if Trim(Inregid.Text)<>'' then
      begin
        With t_data.Query1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select * from v_instorequery where Regid = :Regid and TimeDate >= :FromDate and Timedate < :ToDate');
          Parameters.ParamByName('FromDate').Value := Trunc(FromDate.DateTime);
          Parameters.ParamByName('ToDate').Value := Trunc(ToDate.DateTime)+1;
          Parameters.ParamByName('Regid').Value := Trim(Inregid.Text);
          Open;
        end;
      end
      else
      begin
        Application.MessageBox('请输入票号.','提示',64);
        Exit;
      end;
    end;
    if t_data.Query1.RecordCount>0 then
    begin
      master.DataSet := t_data.Query1;
      Confirm.Enabled := True;
    end
    else
    begin
      t_data.Query1.Close;
      Confirm.Enabled := False;
      Application.MessageBox('没有找到符合条件的记录.','提示',64);
    end;
  end
  else
  begin
    Application.MessageBox('请设置查询条件.','提示',64);
  end;
end;

procedure Tf_Instorelogout.FormShow(Sender: TObject);
begin
  inherited;

  Cancel.Click;
end;
procedure Tf_Instorelogout.ConfirmClick(Sender: TObject);
var
  Connect1: TADOConnection;
  Query1,Query2: TADOQuery;
begin
  inherited;
  //提示是否进行票号冲销
  if Application.MessageBox(Pchar('确实要冲销票号为: '+ t_data.Query1.FieldByName('Regid').AsString+' 的入库信息吗?'),'提示',mb_yesno)= Id_Yes then
  begin
    Try
      //动态创建TADOConnection组件以进行事务控制
      Connect1 := TADOConnection.Create(Nil);
      Query1 := TADOQuery.Create(Nil);
      Query2 := TADOQuery.Create(nil);
      Connect1.ConnectionString := t_data.Connection1.ConnectionString;
      Connect1.LoginPrompt := False;
      Connect1.Open;
      Query1.Connection := Connect1;
      Query2.Connection := Connect1;
      Try
        Connect1.BeginTrans; //开始一个事务
        //修改库存
        With Query2 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select * from tb_storelist where regid = :regid');
          Parameters.ParamByName('regid').Value := Trim(t_data.Query1.FieldByName('regid').AsString);
          Open;
        end;
        while not Query2.Eof do
        begin
          With Query1 do
          begin
            Close;
            SQL.Clear;
            SQL.Add('update tb_comstorage set storesum = storesum - :sum where storagename = :storagename and storename = :storename');
            Parameters.ParamByName('sum').Value := Query2.FieldByName('storesum').AsFloat;
            Parameters.ParamByName('storagename').Value := Query2.FieldByName('storagename').AsString;
            Parameters.ParamByName('storename').Value := Query2.FieldByName('storename').AsString;
            ExecSQL;
          end;
          Query2.Next;
        end;
        //修改供应商结款信息
        With query1 do
        begin
          CLose;
          SQL.Clear;
          SQL.Add('update tb_providerpayment set paymoney = paymoney -:paymoney where providername = :providername');
          Parameters.ParamByName('paymoney').Value := t_data.Query1.FieldByName('paymoney').AsFloat- t_data.Query1.FieldByName('factmoney').AsFloat;
          Parameters.ParamByName('providername').Value := Trim(t_data.Query1.FieldByName('providername').AsString);
          ExecSQL;
        end;
        //删除入库票号历史记录
        With Query1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('delete from tb_storeregid where regid = :regid'); //会级联删除明细表中的数据(tb_storelist)
          Parameters.ParamByName('regid').Value := Trim(t_data.Query1.FieldByName('regid').AsString);
          ExecSQL;
        end;
        //执行存储过程保存冲销信息
        With Query1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('Exec Add_IDLogout :Id,:kind,:operator');
          Parameters.ParamByName('Id').Value := Trim(t_data.Query1.FieldByName('regid').AsString);
          Parameters.ParamByName('Kind').Value := Instore ;
          Parameters.ParamByName('operator').Value := Trim(t_main.Operatorname);
          ExecSQL;
        end;
        Connect1.CommitTrans;
        Cancel.Click;
        Application.MessageBox('操作成功.','提示',64);
      Except
        Connect1.RollbackTrans;
        Application.MessageBox('系统出错.','提示',64);
      end;
    Finally
      Connect1.Free;
      Query1.Free;
      Query2.Free;
    end;
  end;
end;

end.

⌨️ 快捷键说明

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