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

📄 ycbhs.~pas

📁 这是用Delphi编写的中小企业管理系统
💻 ~PAS
字号:
unit ycbhs;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ToolWin, Buttons, ExtCtrls, Grids, DBGrids, DB, 
  ADODB, ComCtrls;

type
  Tf_cbhs = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    kgy: TEdit;
    Label3: TLabel;
    DataSource1: TDataSource;
    lb: TListBox;
    sj: TDateTimePicker;
    procedure kgyKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn1Click(Sender: TObject);
    procedure lbKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure lbDblClick(Sender: TObject);
    procedure lbExit(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    Procedure SelectTable;
    Procedure selectycbhs;
    Procedure Showycbhs;
    Procedure SetListPos(WinControl: TWinControl);
    { Public declarations }
  end;

var
  f_cbhs: Tf_cbhs;

implementation
  uses DataModal;
{$R *.dfm}

procedure Tf_cbhs.kgyKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Next then
  begin
    SelectTable;
    SetListPos(kgy);
    lb.Visible := True;
    lb.SetFocus;
  end
end;

procedure Tf_cbhs.SelectTable;
begin
  with Data.Query2 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select ygmc from t_employee where bmmc = ''库存部''');
    Open;
  end;
  lb.Clear;
  while Not Data.Query2.Eof do
  begin
    lb.Items.Add(Data.Query2.Fields[0].Asstring);
    Data.Query2.Next;
  end;
  if lb.Items.Count>0 then
    lb.ItemIndex := 0;
end;

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

procedure Tf_cbhs.BitBtn1Click(Sender: TObject);
begin
  if Trim(kgy.Text)='' then
  begin
    Application.MessageBox('请输入库管员.','提示',64);
    Exit;
  end
  else
  begin
    with Data.Query2 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from t_employee where ygmc = :a and bmmc = ''库存部''');
      ParamByName('a').AsString := Trim(kgy.Text);
      Open;
    end;
    if Data.Query2.RecordCount<1 then
    begin
      Application.MessageBox('该库管员不存在或没有权限.','提示',64);
      Exit;
    end;
  end;
  selectycbhs;
  if Data.Query1.RecordCount>0 then
  begin
    Application.MessageBox('该月已经进行了成本核算.','提示',64);
    Exit;
  end;
  Try
    with Data.Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select spdm,sum(je)/sum(sl) as cb from t_sprkjl group by spdm');
      Open;
    end;
    if Data.Query1.Fields[0].Value<>Null then
    while Not Data.Query1.Eof do
    begin
      with Data.Query2 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('insert t_ycbhs values(:a,:b,:c,:d)');
        ParamByName('a').AsString := Trim(Data.Query1.Fields[0].AsString);
        ParamByName('b').AsFloat := Data.Query1.Fields[1].AsFloat;
        ParamByName('c').AsString := Trim(kgy.Text);
       ParamByName('d').AsDate := sj.Date;
        ExecSQL;
      end;
      Data.Query1.Next;
    end;
    Showycbhs;
    if Data.Query1.RecordCount>0 then
      DataSource1.DataSet := Data.Query1;
    Application.MessageBox('操作成功.','提示',64);
  Except
    Application.MessageBox('操作失败.','提示',64);
  end;
end;

procedure Tf_cbhs.lbKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Return then
  begin
    kgy.Text := lb.Items[lb.ItemIndex];
    kgy.SetFocus;
  end;
end;

procedure Tf_cbhs.lbDblClick(Sender: TObject);
var
  Key: Word;
begin
  Key := vk_Return ;
  lb.OnKeyDown(sender,key,[ssleft]);
end;

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

procedure Tf_cbhs.selectycbhs;
var
  year,month,Day: Word;
  Days: Integer;//记录当前月的天数
begin
  DecodeDate(sj.DateTime,year,month,day);
  Days := 30;
  with Data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from t_ycbhs where sj>= :a and sj<=:b');
    ParamByName('a').AsFloat := Trunc(sj.Date)-Day+1-2; //取当前月初的整数值,减2是为了与SQL Server中的数值对应
    Case Month of
      1,3,5,7,8,10,12: Days := 31;
      2: begin
           if isLeapYear(Year)=True then
             Days :=29
           else
             Days := 28
         end;
      4,6,9: Days := 30;
    end;
    ParamByName('b').AsFloat :=Trunc(sj.Date)-Day+Days+0.998-2;//取当前月末的整数值,减2是为了与SQL Server中的数值对应
    Open;
  end;
end;

procedure Tf_cbhs.Showycbhs;
var      
  year,month,Day: Word;
  Days: Integer;//记录当前月的天数
begin
  Days := 30;
  DecodeDate(sj.DateTime,year,month,day);
  with Data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select a.*,b.spmc from t_ycbhs a inner join t_spjcxx b on a.spdm = b.spdm and  (sj>= :a and sj<=:b)');
    ParamByName('a').AsFloat := Trunc(sj.Date)-Day+1-2; //取当前月初的整数值,减2是为了与SQL Server中的数值对应
    Case Month of
      1,3,5,7,8,10,12: Days := 31;
      2: begin
           if isLeapYear(Year)=True then
             Days :=29
           else
             Days := 28
         end;
      4,6,9: Days := 30;
    end;
    ParamByName('b').AsFloat :=Trunc(sj.Date)-Day+Days+0.998-2;//取当前月末的整数值,减2是为了与SQL Server中的数值对应
    Open;
  end;
end;

procedure Tf_cbhs.FormShow(Sender: TObject);
begin
  sj.DateTime := Now;
end;

end.

⌨️ 快捷键说明

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