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

📄 checkmore.pas

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

unit checkmore;

interface

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

type
  Tf_checkmore = class(Tf_checklose)
    procedure SaveClick(Sender: TObject);override;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  f_checkmore: Tf_checkmore;

implementation

uses data;

{$R *.dfm}
//处理保存按钮单击事件
procedure Tf_checkmore.SaveClick(Sender: TObject);
var
  Connect1: TADOConnection;
  Query,Query1: TADOQuery;
  x: Integer;
begin
  Connect1 := nil;
  Query := nil;
  Query1 := nil;
  if EditIsNull = True then
  begin
    Application.MessageBox('信息不能为空.','提示',64);
    Exit;
  end;
  if EndRowIsNull= True then //判断最后一行是否为空
  begin
    if Reginfo.RowCount>2 then
    begin
      ClearEndRow; //请空最后一行
      Reginfo.RowCount := Reginfo.RowCount-1; //将行数减一
    end;
  end;
  if GridIsNull = True then //判断表格是否为空
  begin
    Application.MessageBox('表格中数据不能为空.','提示',64);
    Exit;
  end;
  Try
    //动态创建TADOConnection组件,进行事务控制
    Connect1 := TADOConnection.Create(nil);
    Connect1.ConnectionString := Trim(t_data.Connection1.ConnectionString);
    Connect1.LoginPrompt := False;
    Connect1.Connected := True;
    Query := TADOQuery.Create(nil);
    Query.Connection := Connect1;
    Query1 := TADOQuery.Create(nil);
    Query1.Connection := Connect1;
    Try
      Connect1.BeginTrans; //开始一个事务
      With Query do
      begin
        CLose;
        SQL.Clear;
        //调用存储过程添加报溢信息,并返回生成的报溢票号
        SQL.Add('Exec Add_checkmore  :principal,:operator,:storagename,:memo,:date ,:checkmoreid output');
        Parameters.ParamByName('principal').Value := Trim(principal.Text);
        Parameters.ParamByName('operator').Value := Trim(operator.Text);
        Parameters.ParamByName('storagename').Value := Trim(Storagename.Text);
        Parameters.ParamByName('memo').Value := Trim(Memo.Text);
        Parameters.ParamByName('date').Value := Trunc(Date.DateTime);
        Parameters.ParamByName('checkmoreid').Value := 'temporary';
        ExecSQL;
      end;
      for x := 1 to Reginfo.RowCount-1 do //利用循环的方式将表格中的信息添加到报溢明细表中,并修改物资库存
      begin
        With Query1 do
        begin
          CLose;
          SQL.Clear;
          SQL.Add('insert into tb_checkmorelist values(:checkmoreid,:storename,:num)');
          Parameters.ParamByName('checkmoreid').Value := Trim(query.Parameters.ParamByName('checkmoreid').Value);
          Parameters.ParamByName('storename').Value := Trim(Reginfo.Cells[storename,x]);
          Parameters.ParamByName('num').Value :=StrToFloat(Reginfo.Cells[num,x]);
          ExecSQL;
        end;
        With Query1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('update tb_comstorage set storesum = storesum + :num where storagename = :storagename and storename = :storename');
          Parameters.ParamByName('num').Value := StrToFloat(Reginfo.Cells[num,x]);
          Parameters.ParamByName('storagename').Value := Trim(Storagename.Text);
          Parameters.ParamByName('storename').Value := Trim(Reginfo.Cells[storename,x]);
          ExecSQL;
        end;
      end;
      Connect1.CommitTrans; //提交事务
      Application.MessageBox(Pchar('操作成功,票号为: '+Trim(query.Parameters.ParamByName('checkmoreid').Value)),'提示',64);
      Cancel.Click;
    Except
      //出现异常,则回滚事务
      Connect1.RollbackTrans;
      Application.MessageBox('操作失败.','提示',64);
    End;
  Finally
    Connect1.Free;
    Query.Free;
    Query1.Free;
  End;
end;

end.

⌨️ 快捷键说明

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