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

📄 xggdzc.pas

📁 由delphi7.0+sql2000开发的固定资产管理程序
💻 PAS
字号:
unit xggdzc;

interface

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

type
  TForm9 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    ComboBox1: TComboBox;
    SpeedButton1: TSpeedButton;
    Panel3: TPanel;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label13: TLabel;
    Label27: TLabel;
    Label17: TLabel;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit2: TEdit;
    ComboBox4: TComboBox;
    Edit6: TEdit;
    Label28: TLabel;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    ComboBox5: TComboBox;
    Edit10: TEdit;
    Edit11: TEdit;
    Label16: TLabel;
    Edit5: TEdit;
    Label18: TLabel;
    DateTimePicker1: TDateTimePicker;
    Label19: TLabel;
    Label20: TLabel;
    Panel4: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    procedure FormShow(Sender: TObject);
    Procedure EditValue;
    procedure SpeedButton1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
    procedure ComboBox5Change(Sender: TObject);
    Procedure FindNext;
    Procedure FindPrior;
    procedure Edit10Change(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure Edit8Change(Sender: TObject);
    Function IsNull: Boolean;
    Function IsWF: Boolean;
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Edit8KeyPress(Sender: TObject; var Key: Char);
    procedure BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ComboBox2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    Procedure Clear;
    { Public declarations }
  end;

var
  Form9: TForm9;

implementation
  uses Dataz;
{$R *.dfm}

{ TForm9 }

procedure TForm9.Clear;
var
  i: Integer;
begin
  Label19.Caption := '';
  Label20.Caption := '';
  For i := 0 to Panel3.ControlCount-1 do
  begin
    if Panel3.Controls[i]is TEdit Then
      TEdit(Panel3.Controls[i]).Clear
    else if Panel3.Controls[i]is TComboBox Then
      TComboBox(Panel3.Controls[i]).Text := '';
  end;
end;
procedure TForm9.FormShow(Sender: TObject);
begin
  ComboBox1.Clear;
  with Daz.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select distinct 固定资产名称 From 固定资产信息表');
    Open;
  end;
  while Not Daz.ADOQuery1.Eof do
  begin
    ComboBox1.Items.Add(Daz.ADOQuery1.FieldByName('固定资产名称').Value);
    Daz.ADOQuery1.Next;
  end;
  ComboBox2.Clear;
  with Daz.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select  类别名称 From 固定资产类别表');
    Open;
  end;
  while Not Daz.ADOQuery1.Eof do
  begin
    ComboBox2.Items.Add(Daz.ADOQuery1.FieldByName('类别名称').Value);
    Daz.ADOQuery1.Next;
  end;
  ComboBox3.Clear;
  with Daz.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select 增加方式 From 固定资产增加方式表');
    Open;
  end;
  while Not Daz.ADOQuery1.Eof do
  begin
    ComboBox3.Items.Add(Daz.ADOQuery1.FieldByName('增加方式').Value);
    Daz.ADOQuery1.Next;
  end;
  ComboBox4.Clear;
  with Daz.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select 使用状况 From 固定资产使用状况表');
    Open;
  end;
  while Not Daz.ADOQuery1.Eof do
  begin
    ComboBox4.Items.Add(Daz.ADOQuery1.FieldByName('使用状况').Value);
    Daz.ADOQuery1.Next;
  end;
  BitBtn2.OnClick(Sender);
end;

procedure TForm9.SpeedButton1Click(Sender: TObject);
begin
  if Trim(ComboBox1.Text)<>'' then
  begin
    with Daz.ADOQuery2 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from 固定资产信息表 where 固定资产名称 = :a');
      Parameters.ParamByName('a').Value := Trim(ComboBox1.Text);
      Open;
    end;
    if Daz.ADOQuery2.RecordCount >0 then
    begin
      DataSource1.DataSet := Daz.ADOQuery2;
      EditValue;
      BitBtn1.Enabled := True;
    end
    else
    begin
      DataSource1.DataSet := Nil;
      Label19.Caption := '';
      Label20.Caption := '';
      BitBtn1.Enabled := False;
    end;
  end;
end;

procedure TForm9.BitBtn2Click(Sender: TObject);
begin
  Clear;
  DataSource1.DataSet := Nil;
end;

procedure TForm9.Edit4Change(Sender: TObject);
begin
  if Trim(Edit3.Text)<>'' then
  begin
    if (Trim(Edit10.Text)<>'')and(Trim(ComboBox5.Text)='年限平均法(1)') then
      Edit11.Text := Format('%15.2f',[StrToFloat(Edit3.Text)*StrToFloat(Edit10.Text)/100])
    else if  (Trim(Edit10.Text)<>'')and(Trim(ComboBox5.Text)='年限平均法(2)')then
    begin
      if (Trim(Edit4.Text)<>'')and(Trim(Edit7.Text)<>'')and(Trim(Edit8.Text)<>'')and(Trim(Edit9.Text)<>'')then
        Edit11.Text := Format('%15.2f',[(StrToFloat(Edit3.Text)-StrToFloat(Edit4.Text)-StrToFloat(Edit7.Text))/(StrToInt(Edit8.Text)-StrToInt(Edit9.Text))])
      else
        Edit11.Clear;
    end
    else
      Edit11.Clear;
  if Trim(Edit4.Text)<>''then
      Edit5.Text := Format('%15.2f',[StrToFloat(Edit3.Text)-StrToFloat(Edit4.Text)])
    else
      Edit5.Clear;
    if Trim(Edit6.Text)<>'' then
      Edit7.Text := Format('%15.2f',[StrToFloat(Edit3.Text)*StrToFloat(Edit6.Text)/100]);
  end
  else
  begin
    Edit5.Clear;
    Edit7.Clear;
    Edit11.Clear;
  end;
end;

procedure TForm9.Edit6Change(Sender: TObject);
begin
  if Trim(Edit6.Text)<>'' then
  begin
    if StrToFloat(Edit6.Text)>100 then
    begin
      Application.MessageBox('净残值率不能大于100。','提示',64);
      Edit6.Clear;
      Exit;
    end
    else if Trim(Edit3.Text)<>'' then
      Edit7.Text := Format('%15.2f',[StrToFloat(Edit3.Text)*StrToFloat(Edit6.Text)/100])
    else
      Edit7.Clear;
  end
  else
    Edit7.Clear;
  Edit8.OnChange(Sender);
end;

procedure TForm9.Edit7Change(Sender: TObject);
begin
   if Trim(ComboBox5.Text)='年限平均法(2)' then
  begin
    if (Trim(Edit3.Text)<>'')and(Trim(Edit4.Text)<>'')and (Trim(Edit7.Text)<>'')and(Trim(Edit8.Text)<>'')
      and(Trim(Edit9.Text)<>'') then
    begin
      if StrToFloat(Edit8.Text)>StrToFloat(Edit9.Text)then
        Edit11.Text := Format('%15.2f',[(StrToFloat(Edit3.Text)-StrToFloat(Edit4.Text)-StrToFloat(Edit7.Text))/(StrToInt(Edit8.Text)-StrToInt(Edit9.Text))])
      else
        Edit11.Clear;  
    end
    else
      Edit11.Clear;
  end;
end;

procedure TForm9.ComboBox5Change(Sender: TObject);
begin
  Edit7.OnChange(Sender);
  if (Trim(Edit8.Text)<>'')and(Trim(Edit6.Text)<>'')then
    Edit10.Text := Format('%8.4f',[(1- StrToFloat(Edit6.Text)/100)/StrToFloat(Edit8.Text)*100])
  else
    Edit10.Clear;
end;

procedure TForm9.Edit10Change(Sender: TObject);
begin
  if (Trim(Edit10.Text)<>'')and(Trim(ComboBox5.Text)='年限平均法(1)') then
    Edit11.Text := Format('%15.2f',[StrToFloat(Edit3.Text)*StrToFloat(Edit10.Text)/100])
end;

procedure TForm9.EditValue;
begin
  Label20.Caption := Daz.ADOQuery2.FieldByName('固定资产编号').Value;
  Label19.Caption := Daz.ADOQuery2.FieldByName('固定资产名称').Value;
  ComboBox2.Text :=  Daz.ADOQuery2.FieldByName('固定资产类别').Value;
  ComboBox3.Text :=  Daz.ADOQuery2.FieldByName('增加方式').Value;
  Edit3.Text := FloatToStr(Daz.ADOQuery2.FieldByName('入账原值').Value);
  Edit4.Text := FloatToStr(Daz.ADOQuery2.FieldByName('累计折旧').Value);
  Edit5.Text := FloatToStr(Daz.ADOQuery2.FieldByName('净值').Value);
  Edit2.Text := Daz.ADOQuery2.FieldByName('规格型号').Value;
  ComboBox4.Text := Daz.ADOQuery2.FieldByName('使用状况').Value;
  Edit6.Text := FloatToStr(Daz.ADOQuery2.FieldByName('预计净残值率').Value);
  Edit7.Text := FloatToStr(Daz.ADOQuery2.FieldByName('预计净残值').Value);
  DateTimePicker1.Date := Daz.ADOQuery2.FieldByName('入账日期').Value;
  Edit8.Text := IntToStr(Daz.ADOQuery2.FieldByName('预计使用月份').Value);
  Edit9.Text := IntToStr(Daz.ADOQuery2.FieldByName('已计提月份').Value);
  ComboBox5.Text := Daz.ADOQuery2.FieldByName('折旧方法').Value;
  Edit10.Text := Format('%8.4f',[Daz.ADOQuery2.FieldByName('月折旧率').AsFloat]);
  Edit11.Text := FloatToStr(Daz.ADOQuery2.FieldByName('月折旧额').Value);
end;

procedure TForm9.DBGrid1DblClick(Sender: TObject);
begin
  if Daz.ADOQuery2.Active = True then
    if Daz.ADOQuery2.RecordCount >0 then
      EditValue;
end;

procedure TForm9.Edit8Change(Sender: TObject);
begin
  Edit7.OnChange(Sender);
  if (Trim(Edit8.Text)<>'')and(Trim(Edit6.Text)<>'')then
    Edit10.Text := Format('%8.4f',[(1- StrToFloat(Edit6.Text)/100)/StrToFloat(Edit8.Text)*100])
  else
    Edit10.Clear;
end;

procedure TForm9.Edit3KeyPress(Sender: TObject; var Key: Char);
var
  mm: Boolean;
begin
  mm := (Key<#8)or(Key>#8)and(Key<#46)or(Key>#46)and(Key<#48)or(Key>#57);
  if mm then
    Key := #0;
end;

procedure TForm9.Edit8KeyPress(Sender: TObject; var Key: Char);
var
  nn: Boolean;
begin
  nn := (Key<#8)or(Key>#8)and(Key<#48)or(Key>#57);
  if nn then
    Key := #0;
end;

procedure TForm9.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  TBitBtn(Sender).Font.Color := clRed;
end;

procedure TForm9.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  TBitBtn(Sender).Font.Color := clBlue;
end;

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

procedure TForm9.FindPrior;
begin
  if FindNextControl(ActiveControl,False,False,False)is TEdit then
  begin
    if TEdit(FindNextControl(ActiveControl,False,False,False)).Enabled = True then
      TEdit(FindNextControl(ActiveControl,False,False,False)).SetFocus;
  end
  else if  FindNextControl(ActiveControl,False,False,False)is TComboBox then
     TComboBox(FindNextControl(ActiveControl,False,False,False)).SetFocus
  else if FindNextControl(ActiveControl,False,False,False)is TDateTimePicker then
    TDateTimePicker(FindNextControl(ActiveControl,False,False,False)).SetFocus;
end;

procedure TForm9.ComboBox2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_ReTurn then
    FindNext
  else if Key = VK_Shift then
    FindPrior;
end;

procedure TForm9.BitBtn1Click(Sender: TObject);
begin
  if Application.MessageBox('确实要修改原始数据吗?','提示',MB_YesNo)=ID_Yes then
  begin
    if IsNull = False then
    begin
      if IsWf = False then
      begin
        Try
          With Daz.ADOQuery2 do
          begin
            Edit;
            FieldByName('固定资产编号').Value := Trim(Label20.Caption);
            FieldByName('固定资产名称').Value := Trim(Label19.Caption);
            FieldByName('固定资产类别').Value := Trim(ComboBox2.Text);
            FieldByName('增加方式').Value := Trim(ComboBox3.Text);
            FieldByName('入账原值').Value := StrToFloat(Edit3.Text);
            FieldByName('累计折旧').Value := StrToFloat(Edit4.Text);
            FieldByName('净值').Value := StrToFloat(Edit5.Text);
            FieldByName('规格型号').Value := Trim(Edit2.Text);
            FieldByName('使用状况').Value := Trim(ComboBox4.Text);
            FieldByName('预计净残值率').Value := StrToFloat(Edit6.Text);
            FieldByName('预计净残值').Value := StrToFloat(Edit7.Text);
            FieldByName('入账日期').Value := DateTimePicker1.Date;
            FieldByName('预计使用月份').Value := StrToInt(Edit8.Text);
            FieldByName('已计提月份').Value := StrToInt(Edit9.Text);
            FieldByName('折旧方法').Value := Trim(ComboBox5.Text);
            FieldByName('月折旧率').Value := StrToFloat(Edit10.Text);
            FieldByName('月折旧额').Value := StrToFloat(Edit11.Text);
            Post;
          end;
          BitBtn2.OnClick(Sender);
          BitBtn1.Enabled := False;
          Application.MessageBox('修改成功。','提示',64);
        Except
          Application.MessageBox('修改失败。','提示',64);
          Close;
        end;
      end
      else
        Application.MessageBox('基础数据不能小于零。','提示',64);
    end
    else
      Application.MessageBox('基础数据不能为空。','提示',64);
  end;
end;

function TForm9.IsNull: Boolean;
begin
  IsNull := False;
  if (Trim(label19.Caption)='')or(Trim(Label20.Caption)='')or(Trim(ComboBox2.Text)='')or(Trim(ComboBox3.Text)='')or(Trim(Edit3.Text)='')or
   (Trim(Edit4.Text)='')or(Trim(Edit5.Text)='')or(Trim(ComboBox4.Text)='')or(Trim(Edit6.Text)='')or(Trim(Edit7.Text)='')or(Trim(Edit8.Text)='')or
   (Trim(Edit9.Text)='')or(Trim(ComboBox5.Text)='')or(Trim(Edit10.Text)='')or(Trim(Edit11.Text)='') then
     IsNull := True;
end;

function TForm9.IsWF: Boolean;
begin
  Iswf := False;
  if (StrToFloat(Edit3.Text)<0)or(StrToFloat(Edit4.Text)<0)or(StrToFloat(Edit5.Text)<0)or
    (StrToFloat(Edit6.Text)<0)or(StrToFloat(Edit7.Text)<0)or(StrToFloat(Edit10.Text)<0)or(StrToFloat(Edit11.Text)<0) then
      Iswf := True;
end;

end.

⌨️ 快捷键说明

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