unit Unit3;
interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, ComCtrls, ExtCtrls, DB, ADODB, Buttons,strutils,
  Grids, DBGrids,Printers;type
    Tzffm=class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    Label6: TLabel;
    Edit6: TEdit;
    Label7: TLabel;
    DateTimePicker1: TDateTimePicker;
    GroupBox1: TGroupBox;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn1: TBitBtn;
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    Label8: TLabel;
    Edit7: TEdit;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure Edit1DblClick(Sender: TObject);
  //procedure FormKeyPress(Sender: TObject; var Key: Char);
    private
    { Private declarations }
  public    //procedure add(s:integer);
    { Public declarations }
    end;
var
  zffm: Tzffm;
implementationuses Unit5,unit4;
{$R *.dfm}procedure Tzffm.Edit1DblClick(Sender: TObject);
var
i,p,q:integer;
temp1,temp2:integer;begin  datamodule5.ADOquery1.Close;
  datamodule5.adoquery1.sql.clear;
  datamodule5.ADOquery1.SQL.Add('select * from parts where part_no='''+Edit1.text+'''');
  datamodule5.ADOquery1.Open;
  if datamodule5.adoquery1.RecordCount=0 then
   begin
   showmessage('该品番不存在,请仔细检查是否书写错误');
   exit;
   end;
  edit2.text:=datamodule5.adoquery1.FieldValues['bin_loc'];
  datamodule5.ADOquery2.Close;
  datamodule5.adoquery2.sql.clear;
  datamodule5.ADOquery2.SQL.Add('select * from zf_data where 品番='''+Edit1.text+'''');
  datamodule5.ADOquery2.Open;
  if datamodule5.adoquery2.RecordCount=0 then
   begin
   showmessage('该品番暂放器具没有固定,请返回数据库设置!');
   exit;
   end;
  edit4.text:=datamodule5.adoquery2.FieldValues['额定收容数'];
  edit5.text:=datamodule5.adoquery2.FieldValues['暂放器具'];
  if (edit5.text='HU') or (edit5.text='U') then
  begin
  datamodule5.adoquery3.close;
  datamodule5.adoquery3.sql.clear;
  datamodule5.adoquery3.sql.add('select * from zf_table where loc_key='''+(leftstr(edit2.text,6)+'X1')+'''');
  datamodule5.adoquery3.Open;
  if datamodule5.adoquery3.RecordCount=0 then
     begin
       i:=2133;
    end
       else
  i:=strtoint(datamodule5.adoquery3.fieldvalues['ip']);
  p:=i;
  datamodule5.adoquery3.close;
  datamodule5.adoquery3.sql.clear;
  datamodule5.adoquery3.sql.add('select * from zf_table where ip= '''+inttostr(p)+''' and part_no is null');
  datamodule5.adoquery3.Open;
  temp1:=datamodule5.adoquery3.recordcount;
  temp2:=datamodule5.adoquery3.recordcount;
  while temp1<>1
   do
     begin
     p:=p+1;
     datamodule5.adoquery3.close;
     datamodule5.adoquery3.sql.clear;
     datamodule5.adoquery3.sql.add('select * from zf_table where ip= '''+inttostr(p)+''' and part_no is null');
     datamodule5.adoquery3.Open;
     temp1:=datamodule5.adoquery3.recordcount;
     datamodule5.adoquery3.Next;
     end;
     q:=i;
     while temp2<>1
     do
     begin
     //向下查找空货位
     datamodule5.adoquery3.close;
     datamodule5.adoquery3.sql.clear;
     datamodule5.adoquery3.sql.add('select * from zf_table where ip= '''+inttostr(q)+'''');
     datamodule5.adoquery3.Open;
     temp2:=datamodule5.adoquery3.recordcount;
     datamodule5.adoquery3.next;
     q:=q-1;
     end;
     if   i-q<=p-i+18   then
     begin
     datamodule5.adoquery3.close;
     datamodule5.adoquery3.sql.clear;
     datamodule5.adoquery3.sql.add('select * from zf_table where ip= '''+inttostr(q)+'''');
     datamodule5.adoquery3.Open;
     edit3.text:=datamodule5.adoquery3.fieldvalues['loc_key'];
     exit;
     end;
     if   i-q>p-i+18  then
     begin
     datamodule5.adoquery3.close;
     datamodule5.adoquery3.sql.clear;
     datamodule5.adoquery3.sql.add('select * from zf_table where ip= '''+inttostr(p)+'''');
     datamodule5.adoquery3.Open;
     edit3.text:=datamodule5.adoquery3.fieldvalues['loc_key'];
     exit;
     end;
  end;
     if (edit5.text<>'HU') and (edit5.text<>'U') then
     begin
     showmessage('对不起,该功能未开放,请手动输入!');
     end;  end;
procedure Tzffm.BitBtn1Click(Sender: TObject);
begin
     Application.Terminate;
end;procedure Tzffm.BitBtn2Click(Sender: TObject);
begin   //reportfm.QRLabel2.BiDiMode;
   //reportfm.QRLabel2.AutoSize:=true;
   reportfm.QRLabel2.Caption:=leftstr(zffm.Edit1.Text,5)+'-'+rightstr(zffm.Edit1.Text,5);
   reportfm.QRLabel4.Caption:=leftstr(zffm.Edit2.Text,2)+'-'+midstr(zffm.Edit2.Text,3,2)+'-'+midstr(zffm.Edit2.Text,5,2)+'-'+rightstr(zffm.Edit2.Text,2);
   reportfm.QRLabel6.Caption:=leftstr(zffm.Edit3.Text,2)+'-'+midstr(zffm.Edit3.Text,3,2)+'-'+midstr(zffm.Edit3.Text,5,2)+'-'+rightstr(zffm.Edit3.Text,2);
   reportfm.QRLabel8.Caption:=zffm.Edit4.Text;
   reportfm.QRLabel10.Caption:=datetostr(zffm.DateTimePicker1.date);
   reportfm.QRLabel12.Caption:=zffm.Edit6.Text;
   reportfm.QRLabel14.Caption:=zffm.Edit5.Text;
   reportfm.QuickRep1.Preview;
end;procedure Tzffm.BitBtn3Click(Sender: TObject);
var i,q:integer;
begin
    i:=strtoint(edit7.Text);
    q:=1;
    while q<=i
     do
      begin
        dy(zffm.Edit1.OnDblClick(sender));
        reportfm.QRLabel2.Caption:=leftstr(zffm.Edit1.Text,5)+'-'+rightstr(zffm.Edit1.Text,5);
        reportfm.QRLabel4.Caption:=leftstr(zffm.Edit2.Text,2)+'-'+midstr(zffm.Edit2.Text,3,2)+'-'+midstr(zffm.Edit2.Text,5,2)+'-'+rightstr(zffm.Edit2.Text,2);
        reportfm.QRLabel6.Caption:=leftstr(zffm.Edit3.Text,2)+'-'+midstr(zffm.Edit3.Text,3,2)+'-'+midstr(zffm.Edit3.Text,5,2)+'-'+rightstr(zffm.Edit3.Text,2);
        reportfm.QRLabel8.Caption:=zffm.Edit4.Text;
        reportfm.QRLabel10.Caption:=datetostr(zffm.DateTimePicker1.date);
        reportfm.QRLabel12.Caption:=zffm.Edit6.Text;
        reportfm.QRLabel14.Caption:=zffm.Edit5.Text;
        reportfm.QuickRep1.Print;
        with datamodule5.adoquery3 do
           begin
           Close;
           datamodule5.adoquery3.sql.Clear;
           datamodule5.adoquery3.Sql.add('UPDATE [zf_table] SET [part_no]='''+trim(edit1.text)+''',[bin_loc]='''+trim(edit2.text)+''',[zf_nu]='''+trim(edit4.text)+''',[zf_tool]='''+trim(edit5.text)+''',[time]='''+trim(datetostr(datetimepicker1.date))+''',[id]='''+trim(edit6.text)+''' WHERE [loc_key]='''+trim(edit3.text)+'''');
            execsql;
          end;
          q:=q+1;
     end;
end;{procedure Tzffm.FormKeyPress(Sender: TObject; var Key: Char);
  begin   if key=#13 then edit1.OnDblClick(sender);
 end; }
end.