旧的入库程序 MaterialOutStock 对excel文件操作

procedure TForm1.BitBtn1Click(Sender: TObject); //导入Excel文件
var
  OpenExcelfile: TOpenDialog;
  i, j: Integer;
  MsExcel: Variant;
  MsExcelWorkBook: Variant;
begin
  i :=1;
  OpenExcelfile := TOpenDialog.Create(self);  //创建打开对话框
  OpenExcelfile.InitialDir := ExtractFilePath(GetCurrentDir + '\');
  OpenExcelfile.DefaultExt := 'xls';
  OpenExcelfile.Filter := 'All Files(*.xls)|*.xls';
  if OpenExcelFile.Execute then
  begin
    try
      MsExcel := CreateOleObject('Excel.Application');  //使用CreateOleObject将启动Office,然后以Ole方式对Office进行控制
      MsExcelworkBook := MsExcel.WorkBooks.Open(OpenExcelFile.FileName);
      StringGrid1.Cells[0, 0] := Trim(MsExcelworkBook.Worksheets[1].Cells[11, 2]);
      StringGrid1.Cells[1, 0]:= Trim(MsExcelworkBook.Worksheets[1].Cells[11, 3]);
      StringGrid1.Cells[2, 0] := Trim(MsExcelworkBook.Worksheets[1].Cells[11, 7]);
      StringGrid1.Cells[3, 0] := Trim(MsExcelworkBook.Worksheets[1].Cells[11, 6]);
      StringGrid1.Cells[4, 0] := Trim(MsExcelworkBook.Worksheets[1].Cells[11, 8]);
      StringGrid1.Cells[5, 0] := Trim(MsExcelworkBook.Worksheets[1].Cells[11, 4]);
 
      for J := 2 to 1000 do
      begin

        if (Trim(MsExcelworkBook.Worksheets[1].Cells[J+11, 3]) = '')  then
          break
        else
        begin
         // sss:=StrToFloat(Trim(MsExcelworkBook.Worksheets[1].Cells[J+9, 9]));
          if Trim(MsExcelworkBook.Worksheets[1].Cells[J+11, 6])<>'0' then
          begin
            StringGrid1.Cells[0, i] := inttostr(i);
            StringGrid1.Cells[1, i] := Trim(MsExcelworkBook.Worksheets[1].Cells[J+11, 3]);
            StringGrid1.Cells[2, i] := Trim(MsExcelworkBook.Worksheets[1].Cells[J+11, 7]);
            StringGrid1.Cells[3, i] := Trim(MsExcelworkBook.Worksheets[1].Cells[J+11, 6]);
            StringGrid1.Cells[4, i] := Trim(MsExcelworkBook.Worksheets[1].Cells[J+11, 8]);
            StringGrid1.Cells[5, i] := Trim(MsExcelworkBook.Worksheets[1].Cells[J+11, 4]);
            i:=i+1;
          end;
        end;
      end;
      StringGrid1.RowCount := i ;
      i:=1;

      edt_InsertMo.Text:=Trim(MsExcelworkBook.Worksheets[1].Cells[3, 5]);
      lbl_model.Caption:=Trim(MsExcelworkBook.Worksheets[1].Cells[6, 5]);
      lbl_Count.Caption:=Trim(MsExcelworkBook.Worksheets[1].Cells[7, 5]);
      try
        MsExcel.Quit;
        MsExcel := 'null';
      except
      end

    except
      begin
        {MSNPopUp1.Title := '提示';
        MSNPopUp1.Text := 'Can''t Open Excel!!';
        MSNPopUp1.ShowPopUp; }
        PanelMSG.Caption:='Can''t Open Excel!';
      end;
    end;
  end;
  OpenExcelfile.Free;

end;

procedure TForm1.btnImportClick(Sender: TObject); //将StringGrid 数据插入到数据库
var
  i: integer;
  tempnowtime:TDateTime;

begin
  if edt_InsertMo.Text<>'mo' then
  begin
    Qry_in.Close;
    Qry_in.SQL.Clear;
    Qry_in.SQL.Add('select * from sfism4.r_sap_molist_t where MO_NAME=:mo_name ');
    Qry_in.ParamByName('mo_name').AsString :=edt_InsertMo.Text;
    Qry_in.Prepare;
    Qry_in.Open;
    if Qry_in.RecordCount = 0  then
    begin
       try
          database1.StartTransaction;
          tempnowtime:=Now;
          for i := 1 to StringGrid1.RowCount - 1 do
          begin
              Qry_in.Close;
              Qry_in.SQL.Clear;
              Qry_in.SQL.Add('insert into sfism4.r_sap_molist_t (mo_name,item,kp,sloc,qty,flag,emp_no,in_date,bun,description) ' +
                ' values (:MO_NAME,:ITEM,:KP,:SLOC,:QTY,''N'',:EMP_NO,:IN_DATE,:BUn,:DESCRIPTION) ');
              Qry_in.ParamByName('MO_NAME').AsString := trim(edt_InsertMo.Text);
              Qry_in.ParamByName('ITEM').AsInteger :=StrToInt(StringGrid1.Cells[0, i]) ;
              Qry_in.ParamByName('KP').AsString := StringGrid1.Cells[1, i];
              Qry_in.ParamByName('SLOC').AsString :=StringGrid1.Cells[2, i];
              Qry_in.ParamByName('QTY').AsFloat := StrToFloat(StringGrid1.Cells[3, i]);
              Qry_in.ParamByName('BUn').AsString :=StringGrid1.Cells[4, i];


              Qry_in.ParamByName('EMP_NO').AsString := trim(emp_no);
              Qry_in.ParamByName('IN_DATE').AsDateTime :=tempnowtime; //FormatDateTime('YYYYMMDDHHMM', NOW);
              Qry_in.ParamByName('description').AsString :=StringGrid1.Cells[5, i];
              Qry_in.ExecSQL;
              PanelMSG.Caption:='SAP 工单插入数据库成功 ';
          end;
          database1.Commit;
       except
          on e: exception do
          begin
            database1.Rollback;
            {MSNPopUp1.Title := '提示';
            MSNPopUp1.Text := e.Message;
            MSNPopUp1.ShowPopUp; }
            showmessage('插入异常!'+e.Message);
          end;
       end;
    end
    else
    begin
      //提示已经存在工单
      showmessage('此工单已经存在,请确认是否要修改');
    end;
  end
  else
    PanelMSG.Caption:='请先导入Excel工单!';
end;

  

posted @ 2015-04-28 17:56  海蓝7  阅读(151)  评论(0编辑  收藏  举报