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

📄 untaccamount.pas

📁 数据库实习个人作品
💻 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 + -