【delphi开源代码栏目提醒】:网学会员,鉴于大家对delphi开源代码十分关注,论文会员在此为大家搜集整理了“instorelogout.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.
上一篇:
instorefind.pas
下一篇:
一个人晕着也能去看病打针