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

📄 unit8.~pas

📁 材料管理系统
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
{入库}
unit Unit8;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls,ADODB,DateUtils;

type
  Tfrmcailiaoruku = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    ComboBox1: TComboBox;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    DateTimePicker1: TDateTimePicker;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1DropDown(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    function IsNotNumric(const ScrString:string):boolean ;
  end;

var
  frmcailiaoruku: Tfrmcailiaoruku;
  guigexinghao:string;
implementation
uses Unit2,Unit4;

{$R *.dfm}
function TFrmcailiaoruku.IsNotNumric(const ScrString:string):boolean;
var
  c:string;
  i:integer;
  BoolResult:Boolean;
  cnt:integer;
begin
  cnt:=0;
  BoolResult := FALSE;
  if copy(ScrString,1,1)='.' then
    cnt:=1;
  for i := 2 to length(Scrstring) do
  begin
    //c:=PChar(copy(ScrString,i,1))^;
    c := Copy(ScrString,i,1);
    if c='-' then
    begin
      BoolResult:=true;
      break;
    end;
    if c = '.' then
    begin
      cnt:=cnt+1;
      if cnt>1 then
      begin
          boolResult:=true;
          break;
      end;
    end;

//    else
//      BoolResult:=false;
  end;
  Result := BoolResult;
end;


procedure Tfrmcailiaoruku.FormCreate(Sender: TObject);
begin
  datetimepicker1.DateTime := date;
end;

procedure Tfrmcailiaoruku.ComboBox1DropDown(Sender: TObject);
var
  Query1:TADOQuery;
begin
  Query1 := TADOQuery.Create(nil);
  Query1.ConnectionString := Frmmain.ADOConnection1.ConnectionString;
  with Query1 do
  begin
    close;
    SQL.Clear;
//    showmessage(clclass);
    SQL.Add('select * from cailiao where class='''+trim(clclass)+'''');
    open;
  end;
  Combobox1.Clear;
  Combobox1.Items.Clear;
  while not Query1.eof do
  begin
      combobox1.Items.Add(trim(Query1.FieldByName('cailiaoming').AsString));
      Query1.Next;
  end;
  if Combobox1.Items.Count >0 then
    Combobox1.ItemIndex := -1;
  FreeAndNil(Query1);
end;

procedure Tfrmcailiaoruku.ComboBox1Click(Sender: TObject);
var
  Query1:TADOQuery;
begin
  Query1 := TADOQuery.Create(nil);
  Query1.ConnectionString := Frmmain.ADOConnection1.ConnectionString;
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('select * from cailiao where class='''+trim(clclass)+''' and cailiaoming='''+trim(Combobox1.Text)+'''');
  Query1.Open;
//  showmessage(Query1.fieldbyname('danwei').AsString);
  Edit1.Text := Query1.FieldByName('danwei').AsString;    //取得材料的单位
  Edit2.Text := Query1.FieldByName('danjia').AsString;    //取得材料的单价
  guigexinghao := Query1.FieldByName('guigexinghao').AsString;
//  with Query1 do
//  begin
//    close;
//    SQL.Clear;
//    SQL.Add('select kucunshuliang from Weekhaocai where class='''+trim(clclass)+''' and cailiaoming='''+trim(Combobox1.Text)+'''');
//    Open;
//  end;
//  if not Query1.eof then
//  begin
//    if Application.MessageBox('请先注册原材料资料再操作!','信息',MB_OKCANCEL OR MB_ICONINFORMATION)=IDOK then
//    begin
//      Frmxincailiao.ShowModal;
//      self.close;
//    end;
//  end;
  FreeAndNil(Query1);
end;

procedure Tfrmcailiaoruku.Button2Click(Sender: TObject);
begin
  Combobox1.Clear;
  Edit1.Clear;
  Edit2.Clear;
  Edit3.Clear;
  Edit4.Clear;
end;

procedure Tfrmcailiaoruku.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',#8,'.'] ) then
    key:=#0;
//  if (Trim(Edit2.Text) = '') or (Trim(Edit3.Text) = '') then  Exit;

//  Edit4.Text := FloatToStr(StrToFloat(Edit2.Text)* StrToFloat(Edit3.Text));
end;

procedure Tfrmcailiaoruku.Edit3Change(Sender: TObject);
begin
  //if Trim(Edit3.Text) = '' then Exit;

  Edit4.Text := FloatToStr(StrToFloatDef(Edit2.Text,0)* StrToFloatDef(Edit3.Text,0));
end;

procedure Tfrmcailiaoruku.Button1Click(Sender: TObject);
var
  Query1:TADOQuery;
  Query2:TADOQuery;
  Query3:TADOQuery;
  zhou:Integer;
  nian:Integer;
  kucunshu:string;
  kucunjine:string;
  rukushu:string;
  rukujine:string;
  chukushu:string;
  chukujine:string;
  jiecunshu:string;
  jiecunjine:string;
  yue:Integer;
  LeftArea:string;
  RightArea:string;
begin
  if Combobox1.Text = '' then
  begin
    MessageBox(Frmcailiaoruku.Handle,'请选择材料名称!','提示',MB_OK OR MB_ICONINFORMATION);
    Exit;
  end;
  if (Trim(Edit3.Text) = '') or (StrToInt(Edit3.Text) = 0) then
  begin
    MessageBox(Frmcailiaoruku.Handle,'数量不能为空!','错误',MB_OK OR MB_ICONSTOP);
    Exit;
  end;
  if IsNotNumric(Edit3.Text) = True then
  begin
    MessageBox(Frmcailiaoruku.Handle,'请输入合法数字!','错误',MB_OK OR MB_ICONSTOP);
    Edit3.Text := '';
    Exit;
  end;             {以下开始加入数据,路径有两条:1. Date->WeekDataCache->WeekHaoCai
                      2. Date->YMDataCache->YMHaoCai}
  Query1 := TADOQuery.Create(NIL);    {判断HaoCai用}
  Query2 := TADOQuery.Create(NIL);    {提供给DateCache用}
  Query3 := TADOQuery.Create(NIL);    {提供给HaoCai用}
  Query1.ConnectionString := Frmmain.ADOConnection1.ConnectionString;
  Query2.ConnectionString := Frmmain.ADOConnection1.ConnectionString;
  Query3.ConnectionString := Frmmain.ADOConnection1.ConnectionString;
  zhou := WeekOfTheYear(DateTimePicker1.Date);         //return a word
  nian := YearOf(DateTimePicker1.Date);
  Query1.Close;           {防止操作本年前记录}
  Query1.SQL.Clear;
  Query1.SQL.Add('Select max(nian) as maxnian from WeekHaoCai where class='''+clclass+
    ''' and cailiaoming='''+ComboBox1.Text+'''');
  Query1.Prepared;
  Query1.Open;
  if nian < StrToIntDef(Query1.FieldByName('maxnian').AsString,0) then
  begin
    Application.MessageBox('为了防止记录出错,系统禁止操作!'+chr(13)+chr(10)+'请修改日期.','ERROR',MB_OK OR MB_ICONSTOP);
    Exit;
  end;
  {以下为防止这种情况,如2006-1-1为52周,但他在WeekHaoCai表Week和Nian必须为52和2005
  ,在MonthHaoCai和YearHaoCai中不需要考虑.为了避免混乱,不放在防错判断下面}
  if (MonthOfTheYear(DateTimePicker1.Date) <= 1) and (zhou >= 52) then
    nian := nian - 1;   //表示这周还是属于上年的周记录
//showmessage(IntToStr(nian));
  {为了防止输入过去的某周记录产生数据混乱,做以下处理}
  Query1.Close;
  Query1.SQL.Clear;
  query1.SQL.Add('select max(zhou) as maxzhou from WeekHaoCai where nian='+IntToStr(nian)+' and class='''+
    clclass+''' and cailiaoming='''+ComboBox1.Text+'''');
  Query1.Open;
//    showmessage(Query1.FieldByName('maxzhou').AsString);
//    showmessage(IntToStr(zhou));
//  Exit;
  if zhou <StrToIntDef(Query1.FieldByName('maxzhou').AsString,0) then
  begin
    Application.MessageBox('为了防止记录出错,系统禁止操作本周前的记录!'+chr(13)+chr(10)+'请修改日期为本周.','ERROR',MB_OK OR MB_ICONSTOP);
    Exit;
  end;

  {以下为判断本年本周WeekHaoCai是否存在记录,并依决定数据怎样放入WeekDateCache}
  try
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('select * from WeekHaoCai where nian='+IntToStr(nian)+'and zhou='+ IntToStr(zhou)+' and cailiaoming='''+
        ComboBox1.Text+''' and class='''+clclass+'''');
      Query1.Open;
    if Query1.Eof then        {不存在本年度本周记录}
    begin
      Query2.Close;            {新的一周}
      Query2.SQL.Clear;
      Query2.SQL.Add('select * from WeekDataCache where class='''+clclass+''' and cailiaoming='''+ComboBox1.Text+'''');
      Query2.Open;
      if Not Query2.Eof then     {WeekDataCache存在历史记录,WeekHaoCai中无记录,是以前的记录,需要统计}
      begin
        kucunshu   := Query2.FieldByName('kucunshu').AsString;
        kucunjine  := Query2.FieldByName('kucunjine').AsString;
        rukushu    := Query2.FieldByName('rukushu').AsString;
        rukujine   := Query2.FieldByName('rukujine').AsString;
        chukushu   := Query2.FieldByName('chukushu').AsString;
        chukujine  := Query2.FieldByName('chukujine').AsString;
        kucunshu   := FloatToStr(StrToFloat(kucunshu)+StrToFloat(rukushu)-StrToFloat(chukushu));     //统计上周库存
        kucunjine  := FloatToStr(StrToFloat(kucunjine)+StrToFloat(rukujine)-StrToFloat(chukujine));
        jiecunshu  := FloatToStr(StrToFloat(kucunshu)+StrToFloat(Edit3.Text)-0);      //新的一周出库数 0
        jiecunjine := FloatToStr(StrToFloat(kucunjine)+StrToFloat(Edit4.Text)-0);
        Query3.Close;
        Query3.SQL.Clear;            //input WeekDataCache
        Query3.SQL.Add('Update WeekDataCache set kucunshu='+ Format('%.2f',[StrToFloat(kucunshu)])+ ',kucunjine='+Format('%.2f',[StrToFloat(kucunjine)])+',rukushu='+Format('%.2f',[StrToFloat(Edit3.Text)])+
          ',rukujine='+Format('%.2f',[StrToFloat(Edit4.Text)])+',chukushu=0.00'+',chukujine=0.00'+' where class='''+clclass+''' and cailiaoming='''+ComboBox1.Text+'''');
        Query3.ExecSQL;
        {下面是同时写入WeekHaocai,这是一条新记录}
        Query3.Close;
        Query3.SQL.Clear;
        Query3.SQL.Add('Insert into WeekHaoCai values('''+ComboBox1.Text+''','''+clclass+''','''+Edit1.Text+''','''+Format('%.2f',[StrToFloat(Edit2.Text)])+''','''+Format('%.2f',[StrToFloat(kucunshu)])+''','''+
          Format('%.2f',[StrToFloat(kucunjine)])+''','''+Format('%.2f',[StrToFloat(Edit3.Text)])+''','''+Format('%.2f',[StrToFloat(Edit4.Text)])+''',''0.00'',''0.00'','''+'0.00'',''0.00'','''+'0.00'',''0.00'','''+'0.00'',''0.00'','''+'0.00'',''0.00'','''+
          '0.00'',''0.00'','''+'0.00'',''0.00'','''+'0.00'',''0.00'','''+'0.00'',''0.00'','''+'0.00'',''0.00'','''+Format('%.2f',[StrToFloat(jiecunshu)])+''','''+Format('%.2f',[StrToFloat(jiecunjine)])+''','+IntToStr(zhou)+','+IntToStr(nian)+')');
        Query3.ExecSQL;
        //{下面是判断本次入库是更新,还是另建一个'记录'}
      end
      else                     {WeekDataCache中不存在此材料的历史记录}
      begin                  {得出是新材料}
        Query3.Close;

⌨️ 快捷键说明

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