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

📄 csjk.pas

📁 已经给出使用的每个SQL Server数据库
💻 PAS
字号:
unit csjk;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons;

type
  Tf_csjk = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label6: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    jkph: TEdit;
    sj: TDateTimePicker;
    csmc: TEdit;
    fkr: TEdit;
    fkhj: TEdit;
    jkzr: TEdit;
    jkje: TEdit;
    ljyfk: TEdit;
    Panel1: TPanel;
    lb: TListBox;
    Label9: TLabel;
    qcsk: TEdit;
    tj: TBitBtn;      
    bc: TBitBtn;
    qx: TBitBtn;
    tc: TBitBtn;
    procedure jkphKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure tjClick(Sender: TObject);
    procedure qxClick(Sender: TObject);
    procedure csmcKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure csmcExit(Sender: TObject);
    procedure fkrExit(Sender: TObject);
    procedure fkrKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure lbDblClick(Sender: TObject);
    procedure lbKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure lbExit(Sender: TObject);
    procedure bcClick(Sender: TObject);
    procedure fkhjKeyPress(Sender: TObject; var Key: Char);
    procedure jkzrChange(Sender: TObject);
    procedure jkzrEnter(Sender: TObject);
    procedure fkhjChange(Sender: TObject);
    procedure ljyfkChange(Sender: TObject);
    procedure ljyfkKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    Procedure FindNext;
    Function  IsNull: Boolean;
    Procedure SetListPos(WinControl: TWinControl);
    { Public declarations }
  end;

var
  f_csjk: Tf_csjk;

implementation

uses DataModal;

{$R *.dfm}

{ Tf_csjk }

procedure Tf_csjk.FindNext;
begin
  if FindNextControl(ActiveControl,True,True,True)is TEdit then
    TEdit(FindNextControl(ActiveControl,True,True,True)).SetFocus
  else if FindNextControl(ActiveControl,True,True,True)is TDateTimePicker then
    TDateTimePicker(FindNextControl(ActiveControl,True,True,True)).SetFocus
  else if FindNextControl(ActiveControl,True,True,True)is TComboBox then
    TComboBox(FindNextControl(ActiveControl,True,True,True)).SetFocus;
end;

procedure Tf_csjk.jkphKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Return then
    FindNext;
end;

procedure Tf_csjk.FormCreate(Sender: TObject);
begin
  sj.DateTime := Now();
end;

procedure Tf_csjk.tjClick(Sender: TObject);
var
  s,m: String;
  i: integer;
begin
  s:= 'PH'+ FormatDateTime('yyyymmdd',sj.Date);
  With Data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select max(jkph) as ss From t_csjkjl where sj>=:a and sj <:b');
    ParamByName('a').AsDate := Trunc(sj.Date);
    ParamByName('b').AsDate := Trunc(sj.Date)+1;
    Open;
  end;
  If Data.Query1.FieldByName('ss').Value = null then
    s := s + '001'
  else
  begin
    m:= Trim(Data.Query1.FieldByName('ss').Value) ;
    i:= StrToInt(Trim(Copy(m,11,8))) ;
    if i<9 then
      s:= s + '00'+ InttoStr(i +1)
    else if i<99 then
      s:= s + '0'+ InttoStr(i +1)
    else
      s:= s +InttoStr(i +1);
  end;
  jkph.Text := s;
  csmc.SetFocus;
  sj.Enabled := False;
end;

procedure Tf_csjk.qxClick(Sender: TObject);
begin
  jkph.Clear;
  csmc.Clear;
  fkr.Clear;
  fkhj.Text := '0.0';
  jkzr.Text := '0.0';
  ljyfk.Text := '0.0';
  qcsk.Clear;
  sj.DateTime := Now;
  sj.Enabled := True;
  csmc.SetFocus;
end;

procedure Tf_csjk.csmcKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Next then
  begin
    lb.Clear;
    with Data.Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select csmc from t_csjk');
      Open;
    end;
    if Data.Query1.RecordCount>0 then
    begin
      while Not Data.Query1.Eof do
      begin
        lb.Items.Add(Trim(Data.Query1.FieldByName('csmc').AsString));
        Data.Query1.Next;
      end;
      SetListPos(csmc);
      lb.Visible := True;
      lb.SetFocus;
      lb.Tag := 1;
      lb.ItemIndex := 0;
    end;
  end
  else if Key = vk_ReTurn then
    jkph.OnKeyDown(sender,key,shift);
end;

procedure Tf_csjk.csmcExit(Sender: TObject);
begin
  if Trim(csmc.Text)<>'' then
  begin
    with Data.Query2 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from t_csjk where csmc = :a');
      ParamByName('a').AsString := Trim(csmc.Text);
      Open;
      if RecordCount<1 then
      begin
        Application.MessageBox('该厂商信息不存在.','提示',64);
        csmc.Clear;
      end
      else
        qcsk.Text := Format('%8.4f',[Data.Query2.FieldByName('yfje').AsFloat]);
    end;
  end;
end;

procedure Tf_csjk.fkrExit(Sender: TObject);
begin
  if Trim(fkr.Text)<>'' then
  begin
    with Data.Query2 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from t_employee where ygmc = :a and bmmc = :b ');
      ParamByName('a').AsString := Trim(fkr.Text);
      ParamByName('b').AsString := '财会部';
      Open;
      if RecordCount<1 then
      begin
        Application.MessageBox('该员工不存在或没有该职权.','提示',64);
        fkr.Clear;
      end;
    end;
  end;
end;

procedure Tf_csjk.fkrKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Next then
  begin
    lb.Clear;
    with Data.Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select ygmc from t_employee where bmmc =:a');
      ParamByName('a').AsString := '财会部';
      Open;
    end;
    if Data.Query1.RecordCount>0 then
    begin
      while Not Data.Query1.Eof do
      begin
        lb.Items.Add(Trim(Data.Query1.FieldByName('ygmc').AsString));
        Data.Query1.Next;
      end;
      SetListPos(fkr);
      lb.Visible := True;
      lb.SetFocus;
      lb.Tag := 2;
      lb.ItemIndex := 0;
    end;
  end
  else if Key = vk_ReTurn then
    jkph.OnKeyDown(sender,key,shift);
end;

procedure Tf_csjk.lbDblClick(Sender: TObject);
begin
  Case lb.Tag of
    1: begin
         csmc.Text := lb.Items[lb.ItemIndex];
         csmc.SetFocus;
       end;
    2: begin
         fkr.Text := lb.Items[lb.ItemIndex];
         fkr.SetFocus;
       end;
  end;
  lb.Visible := False;
end;

procedure Tf_csjk.lbKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Return then
    lb.OnDblClick(Sender);
end;

procedure Tf_csjk.lbExit(Sender: TObject);
begin
  lb.Visible := False;
end;

procedure Tf_csjk.SetListPos(WinControl: TWinControl);
begin
  lb.Top := WinControl.Top;
  lb.Left := WinControl.Left+(WinControl.Width-lb.Width);
  lb.Visible := True;
  lb.SetFocus;
end;

function Tf_csjk.IsNull: Boolean;
var
  i: Integer;
begin
  Result := False;
  For i:= 0 to ControlCount-1 do
  if Controls[i]is TEdit then
  begin
    if Trim(TEdit(Controls[i]).Text) ='' then
    begin
      Result := True;
      Break;
    end;
  end
  else if Controls[i]is TComboBox then
  begin
    if Trim(TComboBox(Controls[i]).Text) ='' then
    begin
      Result := True;
      Break;
    end;
  end;
end;

procedure Tf_csjk.bcClick(Sender: TObject);
begin
  if IsNull = False then
  begin
    Try
      Data.Database.StartTransaction;
      with Data.Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('insert t_csjkjl values(:a,:b,:c,:d,:e,:f,:g,:h)');
        ParamByName('a').AsString := Trim(jkph.Text);
        ParamByName('b').AsString := Trim(csmc.Text);
        ParamByName('c').AsFloat := StrToFloat(fkhj.Text);
        ParamByName('d').AsFloat := StrToFloat(jkzr.Text);
        ParamByName('e').AsFloat := StrToFloat(ljyfk.Text);
        ParamByName('f').AsFloat := StrToFloat(jkje.Text);
        ParamByName('g').AsString := Trim(fkr.Text);
        ParamByName('h').AsDate := sj.DateTime;
        ExecSQL;
      end;
      with Data.Query1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('update t_csjk set yfje = yfje-:a where csmc = :b');
        ParamByName('a').AsFloat := StrToFloat(jkje.Text);
        ParamByName('b').AsString := Trim(csmc.Text);
        ExecSQL;
      end;
      if StrToFloat(ljyfk.Text)>0 then
      begin
        with Data.Query1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('update t_csyfk set yfje = 0  where csmc = :a');
          ParamByName('a').AsString := Trim(csmc.Text);
          ExecSQL;
        end;
      end;
      Data.Database.Commit;
      Application.MessageBox('操作成功.','提示',64);
      qx.OnClick(Sender);
    Except
      Data.Database.Rollback;
      Application.MessageBox('系统出错.','提示',64);
    End;
  end;
end;

procedure Tf_csjk.fkhjKeyPress(Sender: TObject; var Key: Char);
var
  i: Boolean;
begin
  i := (Key<#8)or(Key>#8)and(Key<#46)or(Key>#46)and(Key<#48)or(key>#57);
  if i then
    Key := #0;
end;

procedure Tf_csjk.jkzrChange(Sender: TObject);
begin
  if Trim(jkzr.Text)<>'' then
  begin
    if StrToFloat(jkzr.Text)>StrToFloat(fkhj.Text) then
    begin
      Application.MessageBox('结款折让不能大于付款合计.','提示',64);
      jkzr.Text := '0.0';
      jkzr.SelectAll;
      Exit;
    end;
    jkje.Text := Format('%8.4f',[StrToFloat(fkhj.Text)+StrToFloat(jkzr.Text)+StrToFloat(ljyfk.Text)]);
  end
  else
  begin
    jkzr.Text := '0.0';
    jkzr.SelectAll;
  end;
end;

procedure Tf_csjk.jkzrEnter(Sender: TObject);
begin
  jkzr.SelectAll;
end;

procedure Tf_csjk.fkhjChange(Sender: TObject);
begin
  jkzr.Text := '0.0';
  if Trim(fkhj.Text)<>'' then
  begin
    jkje.Text := Format('%8.4f',[StrToFloat(fkhj.Text)+StrToFloat(jkzr.Text)+StrToFloat(ljyfk.Text)]);
  end
  else
  begin
    fkhj.Text := '0.0';
    fkhj.SelectAll;
  end;

end;

procedure Tf_csjk.ljyfkChange(Sender: TObject);
begin
  jkje.Text := Format('%8.4f',[StrToFloat(fkhj.Text)+StrToFloat(jkzr.Text)+StrToFloat(ljyfk.Text)]);
end;

procedure Tf_csjk.ljyfkKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_next then
  begin
    if Trim(csmc.Text)<>'' then
    begin
      with Data.Query2 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('select yfje from t_csyfk where csmc = :a');
        ParamByName('a').AsString := Trim(csmc.Text);
        Open;
      end;
      if Data.Query2.RecordCount>0 then
        ljyfk.Text := Format('%8.4f',[Data.Query2.FieldByName('yfje').AsFloat]);
    end;
  end;
end;

end.

⌨️ 快捷键说明

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