📄 untpseed.pas
字号:
var
Mid:String;
BDS:TDate;
begin
BDS:=StrToDate('1900-09-09');
Result:=False;
Mid:=Quotedstr(Earid);
with Data.Common do
begin
Close;
CommandText:='select max(Childbirthdate) as MaxD from t_birth where MEarid='+MID;
open;
if not VarisNull(Fieldbyname('maxd').Value) then
BDS:=Fieldbyname('maxd').Value;
Close;
end;
if BDS>BD then Result:=True;
end;
procedure TP_Seed.FormClose(Sender: TObject; var Action: TCloseAction);
begin
data.procs.Filtered:=false;
Action:=CaFree;
Main.DelSubMenu(self);
end;
procedure TP_Seed.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if DBGridEh1.ReadOnly then
ColorDBGrid(DBGridEh1,data.Pigbaseinf,Rect,DataCol,Column,State)
else
begin
with DBGridEh1.DataSource.DataSet do
begin
if (fieldbyname('earid').AsString='') or
(fieldbyname('embryonum').AsString='') or
(fieldbyname('sourcekind').AsString='') or
(fieldbyname('line').AsString='') or
(fieldbyname('room').AsString='') or
(fieldbyname('phase').AsString='') or
(fieldbyname('fearid').AsString='') or
(fieldbyname('mearid').AsString='') or
(fieldbyname('sex').AsString='') or
(fieldbyname('borndate').AsDateTime>fieldbyname('indate').AsDateTime) or
(fieldbyname('breed').AsString='') then
DBGridEh1.Canvas.Brush.Color:=$00A4FFFF;
end;
DBGridEh1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
end;
procedure TP_Seed.FormShow(Sender: TObject);
begin
//设置DBGridEh外观
DBGridEhFace(DBGridEh1);
DBGridEhFace(DBGridEh2);
DBGridEhFace(DBGridEh3);
DBGridEhFace(DBGridEh4);
DBGridEhFace(DBGridEh5);
DBGridEhFace(DBGridEh6);
DBGridEhFace(DBGridEh8);
DBGridEhFace(DBGridEh7);
DBGridEhFace(DBGridEh9);
DBGridEhFace(DBGridEh10);
DBGridEhFace(DBGridEh11);
DBGridEhFace(DBGridEh12);
DBGridEhFace(DBGridEh15);
DBGridEhFace(DBGridEh16);
with data.procs do
begin
filtered:=false;
filter:='(id<>''07'') and (id<>''08'') and (id<>''12'')';
filtered:=true;
end;
end;
procedure TP_Seed.ToolButton1Click(Sender: TObject);
begin
DBGridEh1.ReadOnly:=False;
with Data.AppPigbaseinf do
begin
if not active then open;
EmptyDataSet;
end;
Datasource1.DataSet:=Data.AppPigbaseinf;
Datasource1.DataSet.Append;
end;
procedure TP_Seed.ToolButton3Click(Sender: TObject);
var
j,K:integer;
phase:String;
BK:TBookMark;
begin
with data.common do
begin
close;
commandtext:='select count(*) from t_seedpiginf';
open;
if (not Main.RegFlag) and (fields[0].asinteger>200) then
begin
Showinfo('您还没有注册,只能保存200头种猪资料!');
exit;
end;
end;
//修改保存
if TabSheet15.Enabled then
begin
Data.pigbaseinf.ApplyUpdates(0);
Pnl_Edit.Color:=clBtnFace;
TabSheet15.Enabled:=false;
exit;
end;
if DBGridEh1.ReadOnly then exit;
//新增保存
// j:=0;
K:=0;
try
with Data.AppPigbaseinf do
begin
BK:=GetBookmark;
DisableControls;
First;
While not eof do
begin
{ //if FieldByName('indate').AsDateTime>FieldByName('enterdate').AsDateTime then Inc(j,1);
if FieldByName('borndate').AsDateTime>FieldByName('indate').AsDateTime then Inc(j,1);
//if FieldByName('borndate').AsDateTime>FieldByName('enterdate').AsDateTime then Inc(j,1);
if j>0 then
begin
Showinfo('种猪出生日期大于入场日期违反逻辑!');
Inc(K,1);
Break;
end; }
if (fieldbyname('earid').AsString='') or
(fieldbyname('embryonum').AsString='') or
(fieldbyname('sourcekind').AsString='') or
(fieldbyname('line').AsString='') or
(fieldbyname('room').AsString='') or
(fieldbyname('phase').AsString='') or
(fieldbyname('fearid').AsString='') or
(fieldbyname('mearid').AsString='') or
(fieldbyname('sex').AsString='') or
(fieldbyname('breed').AsString='') then
begin
Showinfo('有记录填写不完整,请首先删除或者修改不完整记录!');
Inc(K,1);
Break;
end;
if (fieldbyname('borndate').AsDateTime>fieldbyname('indate').AsDateTime) then
begin
showinfo('存在记录:出生日期大于入场日期,逻辑上存在矛盾,请仔细检查!');
inc(k,1);
break;
end;
if not varisnull(fieldbyname('enterdate').Value) then
begin
if (fieldbyname('borndate').AsDateTime>fieldbyname('enterdate').AsDateTime) then
begin
showinfo('存在记录:出生日期大于入群日期,逻辑上存在矛盾,请仔细检查!');
inc(k,1);
break;
end;
if (fieldbyname('indate').AsDateTime>fieldbyname('enterdate').AsDateTime) then
begin
showinfo('存在记录:入场日期大于入群日期,逻辑上存在矛盾,请仔细检查!');
inc(k,1);
break;
end;
end;
if not (state in [dsedit,dsinsert]) then Edit;
Post;
Next;
end;
Gotobookmark(BK);
Freebookmark(BK);
EnableControls;
end;
if K>0 then Exit;
Data.pigbaseinf.AppendData(Data.AppPigbaseinf.Delta,False);
Data.AppPigbaseinf.ApplyUpdates(0);
Except
on E:Exception do
Showinfo(E.Message);
end;
Datasource1.DataSet:=Data.pigbaseinf;
DBGridEh1.ReadOnly:=True;
//保存后马上查询输入的记录
dtp_start.date:=Data.AppPigbaseinf.fieldbyname('indate').AsDateTime-15;
dtp_end.date:=Data.AppPigbaseinf.fieldbyname('indate').AsDateTime+15;
sbSeedP.click;
end;
procedure TP_Seed.ToolButton2Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=0;
Pnl_Edit.Color:=$00D9FFEC;
TabSheet15.Enabled:=true;
Data.pigbaseinf.Edit;
end;
procedure TP_Seed.ToolButton8Click(Sender: TObject);
begin
Datasource1.DataSet.Cancel;
if TabSheet15.Enabled then
begin
data.pigbaseinf.Cancel;
// data.pigbaseinf.EmptyDataSet;
Pnl_Edit.Color:=clBtnFace;
TabSheet15.Enabled:=false;
exit;
end;
DBGridEh1.ReadOnly:=True;
Datasource1.DataSet:=Data.pigbaseinf;
end;
procedure TP_Seed.ToolButton6Click(Sender: TObject);
begin
try
Data.pigbaseinf.Refresh;
except
exit;
end;
end;
procedure TP_Seed.DBGridEh6DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if Eh6flag then //新增
begin
with data.Amphimixis do
begin
if (fieldbyname('mearid').AsString='') or
(fieldbyname('amdorm').AsString='') or
(fieldbyname('ammode').AsString='') or
(fieldbyname('amboar').AsString='') or
((fieldbyname('amdate').AsDateTime>main.EndDate) and (not checkbox1.Checked)) then
DBGridEh6.Canvas.Brush.Color:=$00A4FFFF;
end;
DBGridEh6.DefaultDrawColumnCell(rect,datacol,column,state);
end
else //默认
ColorDBGrid(DBGridEh6,data.Amphimixis,Rect,DataCol,Column,State);
end;
procedure TP_Seed.SpeedButton1Click(Sender: TObject);
begin
with Data.amphimixis do
begin
Close;
CommandText:='select * from t_amphimixis where amdate>=:SD and amdate<=:ED order by amdate';
Params.ParamByName('Sd').AsDate:=Dtstart.Date;
Params.ParamByName('ED').AsDate:=Dtend.Date;
Open;
end;
DBGridEh6.Font.Size:=9;
DBGridEh6.ReadOnly:=true;
Eh6Flag:=false;
end;
procedure TP_Seed.ToolButton13Click(Sender: TObject);
var
i,j:integer;
BM:TBookMark;
begin
i:=0;
j:=0;
with Data.amphimixis do
begin
DisableControls;
BM:=GetBookmark;
//检查记录
first;
while not eof do
begin
if (fieldbyname('amdate').AsDateTime>main.EndDate) and (not checkbox1.Checked) then
begin
showinfo('存在操作时间不在本业务期间内的记录,本业务间时间为'+Datetimetostr(main.StartDate)+
'至'+Datetimetostr(main.EndDate));
inc(i,1);
break;
end;
if (fieldbyname('mearid').AsString='') or (fieldbyname('amboar').AsString='')
or (fieldbyname('amdorm').AsString='') or (fieldbyname('ammode').AsString='') then
begin
showinfo('有记录填写不完整,请首先删除不完整记录!');
inc(j,1);
break;
end;
if (fieldbyname('amboariii').AsString<>'') and ((fieldbyname('amboar').AsString='') or
(fieldbyname('ammodeii').AsString='')) then
begin
showinfo('存在逻辑错误:输入了三配公猪,却没有输入首配和二配公猪!');
inc(j,1);
break;
end;
if (fieldbyname('amboarii').AsString<>'') and (fieldbyname('amboar').AsString='') then
begin
showinfo('存在逻辑错误:输入了二配公猪,却没有输入首配公猪!');
inc(j,1);
break;
end;
next;
end;
EnableControls;
GotoBookMark(BM);
FreeBooKmark(bm);
if (i>0) or (j>0) then exit;
//保存记录
if not (State in [dsinsert,dsedit]) then edit;
Post;
ApplyUpdates(0);
showinfo('保存完毕!');
end;
DBGridEh6.ReadOnly:=true;
DBGridEh6.Font.Size:=9;
Eh6Flag:=false;
//更改公猪、母猪状态 用触发器处理
end;
procedure TP_Seed.ToolButton18Click(Sender: TObject);
begin
try
Data.Amphimixis.Refresh;
except
exit;
end;
end;
procedure TP_Seed.ToolButton11Click(Sender: TObject);
begin
//更改DBGridEh
DBGridEh6.Font.Size:=12;
DBGridEh6.ReadOnly:=false;
Eh6Flag:=true;
data.Amphimixis.EmptyDataSet;
data.Amphimixis.Append;
DBGridEh6.SetFocus;
end;
procedure TP_Seed.ToolButton14Click(Sender: TObject);
begin
DBGridEh6.Font.Size:=9;
DBGridEh6.ReadOnly:=true;
Eh6Flag:=false;
data.Amphimixis.Cancel;
end;
//---------------------------------------------------------------
//---------------------检查配种信息输入的合法性------------------
//---------------------------------------------------------------
procedure TP_Seed.DBGridEh6ColExit(Sender: TObject);
Var
ExcNum,Exctype,ExcCount:OleVariant;
begin
if DBGridEh6.ReadOnly then exit;
data.DataEdit(DBGridEh6.datasource.DataSet);
//检查母猪耳号的合法性--------------------------------- ---------------------
if dbgrideh6.SelectedField.FieldName='MEarID' then
if dbgrideh6.SelectedField.Text<>'' then
begin
if checkbox1.Checked then
begin
if not apig.checkearid(dbgrideh6.selectedfield.text,'0') then
begin
ShowInfo('母猪耳号不存在,请重新输入!');
dbgrideh6.SelectedField.Clear;
abort;
end;
end
else
begin
if (not apig.CheckEarID(dbgrideh6.SelectedField.text,'0','01')) and
(not apig.CheckEarID(dbgrideh6.SelectedField.text,'0','03')) then
begin
ShowInfo('母猪耳号不正确,请重新输入!'+char(13)+'不正确的原因有:'+char(13)+'1:耳号不存在'+char(13)+'2:母猪现在的状态不能行配种');
dbgrideh6.SelectedField.Clear;
abort;
end;
end;
//取得母猪品种
MBreed:=apig.Breed;
//取得位置(只管理到栋),胎次并填入到对应的位置
data.Amphimixis.FieldByName('AmDorm').AsString:=apig.Room;
dbgrideh6.FieldColumns['EmbryoNum'].Field.AsInteger:=apig.EmbryoNum;
end;//母猪合法性检查结束
//检查公猪的合法性----------------------------------------------------------------------------
if (dbgrideh6.SelectedField.FieldName='AmBoar') or
(dbgrideh6.SelectedField.FieldName='AmBoarII') or
(dbgrideh6.SelectedField.FieldName='AmBoarIII') then
begin
if dbgrideh6.SelectedField.Text='' then exit;
with data.Common do
begin
//判断基本资料表中耳号是否存在
//耳号不存在
if not apig.CheckEarID(dbgrideh6.SelectedField.text,'1') then
begin //
//判断外购精液表中耳号是否存在
close;
commandtext:='select * from t_buyjism '
+'where vearid='+quotedstr(dbgrideh6.SelectedField.text);
open;
//耳号不存在
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -