hpedit.pas

来自「IT业进销存管理系统源代码Delphi」· PAS 代码 · 共 254 行

PAS
254
字号
unit HpEdit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComEdit, StdCtrls, Buttons, Mask, DBCtrls, ExtCtrls, Grids, db;

type
  TfrmHpEdit = class(TfrmComEdit)
    Label3: TLabel;
    Label4: TLabel;
    DBEdit4: TDBEdit;
    Label5: TLabel;
    DBEdit5: TDBEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    DBEdit8: TDBEdit;
    Label9: TLabel;
    DBEdit9: TDBEdit;
    Label10: TLabel;
    DBEdit10: TDBEdit;
    Label11: TLabel;
    DBEdit11: TDBEdit;
    Label12: TLabel;
    DBEdit12: TDBEdit;
    DBLookupComboBox1: TDBLookupComboBox;
    DBLookupComboBox2: TDBLookupComboBox;
    Bevel2: TBevel;
    Bevel3: TBevel;
    Label13: TLabel;
    Bevel4: TBevel;
    sgSj: TStringGrid;
    Label14: TLabel;
    DBEdit2: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    Bevel5: TBevel;
    sgKc: TStringGrid;
    Label2: TLabel;
    DBEdit3: TDBEdit;
    procedure FormShow(Sender: TObject);override;
		procedure sDataChange(Sender: TObject; Field: TField);override;
		procedure dsOnNewRecord(DataSet: TDataSet);override;
		procedure dsAfterScroll(DataSet: TDataSet);override;
    procedure MyAfterApplyUpdates;override;
  private
    { Private declarations }
    blnQcjeChange: boolean;
  public
    { Public declarations }
  end;

var
  frmHpEdit: TfrmHpEdit;

implementation

uses dm, Common, ComFun;
{$R *.DFM}

procedure TfrmHpEdit.FormShow(Sender: TObject);
begin
  blnSetID := True;
  strKeyFields := 'BH;MC;HPHSFFID;HPLBID';
  if not Data.HPLB.Active then
    Data.HPLB.Open;
  if not Data.HPHSFF.Active then
    Data.HPHSFF.Open;
  inherited;
  dsAfterScroll(nil);
end;

procedure TfrmHpEdit.dsOnNewRecord(DataSet: TDataSet);
begin
  inherited;
  DataSet.FieldByName('HPHSFFID').AsInteger := 1;
end;

procedure TfrmHpEdit.sDataChange(Sender: TObject; Field: TField);
begin
  inherited;
  if (Field <> nil) and (TDataSource(Sender).State in [dsInsert,dsEdit]) then
  begin
    if (UpperCase(Field.FieldName) = 'HPHSFFID') then
      dsEdits.FieldByName('HPSXID').AsInteger :=
        Data.Hphsff.FieldByName('LB').AsInteger;
    if (UpperCase(Field.FieldName) = 'HPLBID') and (Field.AsString <> '') then
      with CurDs do
      begin
        CommandText := 'select MC from HPLB where ID = ' + Field.AsString;
        Open;
        if not IsEmpty then
          dsEdits['aHPLBMC'] := FieldValues['MC'];
        Close;
      end;
    if (UpperCase(Field.FieldName) = 'QCJE') then
      blnQcjeChange := True;
  end;
end;

procedure TfrmHpEdit.dsAfterScroll(DataSet: TDataSet);
begin
  blnQcjeChange := False;
  //KC
  with CurDs do
  begin
    Close;
    CommandText := 'select * from CK order by XH';
    Open;
    sgKc.RowCount := RecordCount;  //0 CKID  1 是否空  2原值
    sgKc.ColWidths[0] := 0;
    sgKc.ColWidths[1] := 0;
    sgKc.ColWidths[2] := 0;
    sgKc.ColWidths[3] := Trunc(sgKc.Width / 5 * 2.5);
    sgKc.ColWidths[4] := sgKc.Width - sgKc.ColWidths[0] - 4;
    while not Eof do
    begin
      sgKc.Cells[0, RecNo - 1] := FieldByName('ID').AsString;
      sgKc.Cells[3, RecNo - 1] := FieldByName('MC').AsString;
      if dsEdits.FieldByName('ID').AsString = '' then
      begin
        sgKc.Cells[1, RecNo - 1] := '1';
        sgKc.Cells[2, RecNo - 1] := '0';
        sgKc.Cells[4, RecNo - 1] := '';
      end
      else
      begin
        dm.Data.Tmp.Close;
        dm.Data.Tmp.CommandText := 'select QCS from HPKC ' +
          'where CKID=' + FieldByName('ID').AsString + ' ' +
          'and HPID=' + dsEdits.FieldByName('ID').AsString;
        dm.Data.Tmp.Open;
        if dm.Data.Tmp.IsEmpty then
        begin
          sgKc.Cells[1, RecNo - 1] := '1';
          sgKc.Cells[2, RecNo - 1] := '0';
          sgKc.Cells[4, RecNo - 1] := '';
        end
        else
        begin
          sgKc.Cells[1, RecNo - 1] := '0';
          sgKc.Cells[2, RecNo - 1] := FormatFloat('#,0.###', dm.Data.Tmp.FieldByName('QCS').AsFloat);
          sgKc.Cells[4, RecNo - 1] := sgKc.Cells[2, RecNo - 1];
        end;
      end;
      Next;
    end;
    Close;
  end;
  //SJ
  with CurDs do
  begin
    Close;
    CommandText := 'select * from SJZL order by XH';
    Open;
    sgSj.RowCount := RecordCount;  //0 CKID  1 是否空
    sgSj.ColWidths[0] := 0;
    sgSj.ColWidths[1] := 0;
    sgSj.ColWidths[2] := Trunc(sgSj.Width / 5 * 2.5);
    sgSj.ColWidths[3] := sgSj.Width - sgSj.ColWidths[0] - 4;
    while not Eof do
    begin
      sgSj.Cells[0, RecNo - 1] := FieldByName('ID').AsString;
      sgSj.Cells[2, RecNo - 1] := FieldByName('MC').AsString;
      if dsEdits.FieldByName('ID').AsString = '' then
      begin
        sgSj.Cells[1, RecNo - 1] := '1';
        sgSj.Cells[3, RecNo - 1] := '';
      end
      else
      begin
        dm.Data.Tmp.Close;
        dm.Data.Tmp.CommandText := 'select SJ from HPSJ ' +
          'where SJZLID=' + FieldByName('ID').AsString + ' ' +
          'and HPID=' + dsEdits.FieldByName('ID').AsString;
        dm.Data.Tmp.Open;
        if dm.Data.Tmp.IsEmpty then
        begin
          sgSj.Cells[1, RecNo - 1] := '1';
          sgSj.Cells[3, RecNo - 1] := '';
        end
        else
        begin
          sgSj.Cells[1, RecNo - 1] := '0';
          sgSj.Cells[3, RecNo - 1] := FormatFloat('#,0.###', dm.Data.Tmp.FieldByName('SJ').AsFloat);
        end;
      end;
      Next;
    end;
    Close;
  end;
end;

procedure TfrmHpEdit.MyAfterApplyUpdates;
var
  i: integer;
  dblQCSL, dblZKCL: Double;
begin
  //KC
  for i := 0 to sgKc.RowCount - 1 do
  begin
    sgKc.Cells[4, i] := Float2Str(Str2Float(sgKc.Cells[4, i]));
    if sgKc.Cells[1, i] = '1' then
      SqlExec('insert into HPKC (CKID, HPID, QCS, JCS) ' +
        'values (' + sgKc.Cells[0, i] + ', ' + dsEdits.FieldByName('ID').AsString + ', ' +
        sgKc.Cells[4, i] + ', ' + sgKc.Cells[4, i] + ')')
    else
      SqlExec('update HPKC set QCS = ' + sgKc.Cells[4, i] + ', ' +
        'JCS = JCS - ' + sgKc.Cells[2, i] + ' + ' + sgKc.Cells[4, i] + ' ' +
        'where CKID = ' + sgKc.Cells[0, i] + ' and ' +
        'HPID = ' + dsEdits.FieldByName('ID').AsString);
  end;
  //Set KC.ZKCL
  with CurDs do
  begin
    CommandText := 'select sum(QCS), sum(JCS) from HPKC where HPID=' +
      dsEdits.FieldByName('ID').AsString;
    Open;
    dblQCSL := Fields[0].AsFloat;
    dblZKCL := Fields[1].AsFloat;
    Close;
  end;
  if (dblZKCL <> dsEdits.FieldByName('aZKCL').AsFloat) or blnQcjeChange then
    with dsEdits do
    begin
      Edit;
      FieldByName('ITMP').AsInteger := FieldByName('ITMP').AsInteger + 1;
      if dblQCSL <> 0 then
      begin
        FieldByName('JQJ').AsFloat :=  RoundPlus(FieldByName('QCJE').AsFloat / dblQCSL, 2);
        FieldByName('QCJQJ').AsFloat :=  RoundPlus(FieldByName('QCJE').AsFloat / dblQCSL, 2);
      end;
      FieldByName('aZKCL').AsFloat := dblZKCL;
      Post;
      ApplyUpdates(0);
    end;
  //SJ
  for i := 0 to sgSj.RowCount - 1 do
  begin
    sgSj.Cells[3, i] := Float2Str(Str2Float(sgSj.Cells[3, i]));
    if sgSj.Cells[1, i] = '1' then
      SqlExec('insert into HPSJ (SJZLID, HPID, SJ) ' +
        'values (' + sgSj.Cells[0, i] + ', ' + dsEdits.FieldByName('ID').AsString + ', ' +
        sgSj.Cells[3, i] + ')')
    else
      SqlExec('update HPSJ set SJ = ' + sgSj.Cells[3, i] + ' ' +
        'where SJZLID = ' + sgSj.Cells[0, i] + ' and ' +
        'HPID = ' + dsEdits.FieldByName('ID').AsString);
  end;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?