📄 unit8.~pas
字号:
{入库}
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 + -