📄 untaccamount.pas
字号:
unit untAccAmount;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, ExtCtrls, Buttons;
type
TfrmAccAmount = class(TForm)
Panel1: TPanel;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
edtCustID: TEdit;
edtAmount: TEdit;
edtCode: TEdit;
edtCustName: TEdit;
edtZip: TEdit;
edtAddress: TEdit;
uspTmp: TADOStoredProc;
btnOK: TBitBtn;
btnCancel: TBitBtn;
procedure edtCustIDExit(Sender: TObject);
procedure btnOKClick(Sender: TObject);
private
function SaveAllRecords: Boolean;
{ Private declarations }
public
function Execute: Boolean;
{ Public declarations }
end;
var
frmAccAmount: TfrmAccAmount;
implementation
uses untGoodsOrderDat;
{$R *.dfm}
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;
procedure TfrmAccAmount.btnOKClick(Sender: TObject);
begin
SaveAllRecords;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -