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

📄 untpseed.pas

📁 养猪精液采集模块的相关大夫吗对方法对付法对
💻 PAS
📖 第 1 页 / 共 5 页
字号:
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 + -