📄 checkmore.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 + -