📄 untaccamount.pas
字号:
unit untAccAmount;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Db, ADODB, ExtCtrls;
type
TfrmAccAmount = class(TForm)
Panel1: TPanel;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
edtAmount: TEdit;
edtCode: TEdit;
edtCustName: TEdit;
edtAddress: TEdit;
edtZip: TEdit;
edtCustID: TEdit;
uspTmp: TADOStoredProc;
btnOK: TBitBtn;
btnCancel: TBitBtn;
procedure btnOKClick(Sender: TObject);
procedure edtCustIDExit(Sender: TObject);
private
function SaveAllRecords: Boolean;
{ Private declarations }
public
function Execute: Boolean;
{ Public declarations }
end;
var
frmAccAmount: TfrmAccAmount;
implementation
uses untGoodsOrderDat, untGoodsOrder;
function TfrmAccAmount.Execute: Boolean;
var
sOrderID: string;
begin
// 初始化窗体显示的内容
edtCustID.Text := '';
edtAmount.Text := '';
edtCode.Text := '';
edtCustName.Text := '';
edtZip.Text := '';
edtAddress.Text := '';
// 显示窗体,并返回函数结果
Result := ShowModal = mrOK;
end;
function TfrmAccAmount.SaveAllRecords: Boolean;
var
dAmountBal: Currency;
dAmount:Extended;
nErrNo:Integer;
begin
result :=False;
with datGoodsOrder do begin
//开始事务提交
conGoodsOrder.BeginTrans;
try
//打开顾客表
qryCustomer.SQL.Text := 'SELECT * FROM Customer WHERE CustID=''' + Trim(edtCustID.Text) + '''';
qryCustomer.LockType := ltBatchOptimistic;
qryCustomer.CursorType := ctKeyset;
qryCustomer.open;
// 修改顾客记录
if not qryCustomer.IsEmpty then begin
//得到输入的金额,若为非数值型数据时,输入金额为0
Val(edtAmount.Text, dAmount, nErrNo);
if nErrNo <> 0 then dAmount := 0.0;
dAmountBal := qryCustomer.FieldByName('AmountBal').AsCurrency;
qryCustomer.Edit;
qryCustomer.FieldByName('AmountBal').AsCurrency := dAmountBal + dAmount;
qryCustomer.Post;
end;
// 批更新数据表
qryCustomer.UpdateBatch;
//事务提交
conGoodsOrder.CommitTrans;
Result := True;
except
//回滚事务
conGoodsOrder.RollbackTrans;
MessageDlg('保存数据失败!', mtError, [mbOK], 0);
Close;
end;
end;
end;
{procedure TfrmAccAmount.edtCustIDExit(Sender: Tobject);
var
sCustID: string;
begin
sCustID := Trim(edtCustID.Text);
//调用存储过程,得到新顾客号
uspTmp.Parameters.Clear;
uspTmp.ProcedureName := 'usp_GetCustInfo';
uspTmp.Parameters.CreateParameter('CustID', ftString, pdInput, 11, sCustID);
uspTmp.Parameters.CreateParameter('Find', ftSmallInt, pdOutput, 0, 0);
uspTmp.Parameters.CreateParameter('Code', ftString, pdOutput, 18, '');
uspTmp.Parameters.CreateParameter('CustName', ftString, pdOutput, 8, '');
uspTmp.Parameters.CreateParameter('Sex', ftString, pdOutput, 1, '');
uspTmp.Parameters.CreateParameter('Tel', ftString, pdOutput, 14, '');
uspTmp.Parameters.CreateParameter('Zip', ftString, pdOutput, 6, '');
uspTmp.Parameters.CreateParameter('Address', ftString, pdOutput, 50, '');
uspTmp.Parameters.CreateParameter('AmountBal', ftCurrency, pdOutput, 0, 0);
uspTmp.Parameters.CreateParameter('TotPur', ftCurrency, pdOutput, 0, 0);
uspTmp.Parameters.CreateParameter('TotAmount', ftCurrency, pdOutput, 0, 0);
uspTmp.ExecProc;
if uspTmp.Parameters.ParamByName('Find').Value = 1 then begin
edtCode.Text := uspTmp.Parameters.ParamByName('Code').Value;
edtCustName.Text := uspTmp.Parameters.ParamByName(' CustName').Value;
edtZip.Text := uspTmp.Parameters.ParamByName('Zip').Value;
edtAddress.Text := uspTmp.Parameters.ParamByName('Address').Value;
end;
end;}
{$R *.DFM}
procedure TfrmAccAmount.btnOKClick(Sender: TObject);
begin
SaveAllRecords;
end;
procedure TfrmAccAmount.edtCustIDExit(Sender: TObject);
var
sCustID: string;
begin
sCustID := Trim(edtCustID.Text);
//调用存储过程,得到新顾客号
uspTmp.Parameters.Clear;
uspTmp.ProcedureName := 'usp_GetCustInfo';
uspTmp.Parameters.CreateParameter('CustID', ftString, pdInput, 11, sCustID);
uspTmp.Parameters.CreateParameter('Find', ftSmallInt, pdOutput, 0, 0);
uspTmp.Parameters.CreateParameter('Code', ftString, pdOutput, 18, '');
uspTmp.Parameters.CreateParameter('CustName', ftString, pdOutput, 8, '');
uspTmp.Parameters.CreateParameter('Sex', ftString, pdOutput, 1, '');
uspTmp.Parameters.CreateParameter('Tel', ftString, pdOutput, 14, '');
uspTmp.Parameters.CreateParameter('Zip', ftString, pdOutput, 6, '');
uspTmp.Parameters.CreateParameter('Address', ftString, pdOutput, 50, '');
uspTmp.Parameters.CreateParameter('AmountBal', ftCurrency, pdOutput, 0, 0);
uspTmp.Parameters.CreateParameter('TotPur', ftCurrency, pdOutput, 0, 0);
uspTmp.Parameters.CreateParameter('TotAmount', ftCurrency, pdOutput, 0, 0);
uspTmp.ExecProc;
if uspTmp.Parameters.ParamByName('Find').Value = 1 then begin
edtCode.Text := uspTmp.Parameters.ParamByName('Code').Value;
edtCustName.Text := uspTmp.Parameters.ParamByName('CustName').Value;
edtZip.Text := uspTmp.Parameters.ParamByName('Zip').Value;
edtAddress.Text := uspTmp.Parameters.ParamByName('Address').Value;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -