我通过Delphi程序向access数据库中某一张数据表中添加时,的问题如下

假如我有一张张Excel电子版的收货单,每张收货单都有多条记录。我通过Delphi程序向access数据库中某一张数据表中添加时,不想一个表中一条条的添加,有其他的好办法吗

关键示例代码:

        'INSERT INTO  aaa (prd_no, SPC, UT, DFU_UT, KND, IDX1, NAME, SUP1)' +
       ' SELECT' +
        ' prd_no, SPC, UT, DFU_UT, KND, IDX1, NAME, SUP1' +
        ' FROM [excel 8.0;database=' + xlspath + '].[PRDT$]';

 

相对完整的代码示例:


procedure TForm1.Button1Click(Sender: TObject);
var
  sSql, mdbpath, xlspath: string;
begin
  if (trim(edit1.Text) = '') or (trim(edit2.Text) = '') then
  begin
    MessageBox(GetActiveWindow(), '请正确选择相关路径!', '警告', MB_OK +
      MB_ICONWARNING);
    exit;
  end;
  mdbpath := trim(edit1.Text);          //MDB路径
  xlspath := trim(edit2.Text);          //Excel路径
  ADOConnection1.Connected := False;
  try
    ADOConnection1.ConnectionString :=
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
      mdbpath + ';Persist Security Info=False';
    ADOConnection1.Connected := true;
    try
      adoquery1.Close;
      adoquery1.SQL.Clear;
      sSql :=
        'INSERT INTO  aaa (prd_no, SPC, UT, DFU_UT, KND, IDX1, NAME, SUP1)' +  //prd_no, SPC, UT, DFU_UT, KND, IDX1, NAME, SUP1
      ' SELECT' +
        ' prd_no, SPC, UT, DFU_UT, KND, IDX1, NAME, SUP1' +
        ' FROM [excel 8.0;database=' + xlspath + '].[PRDT$]';
      adoquery1.Parameters.Clear;
      adoquery1.ParamCheck := false;
      adoquery1.SQL.Text := sSql;
      adoquery1.Execsql;
      MessageBox(GetActiveWindow(), '批量导入EXCEL成功!', '警告', MB_OK +
        MB_ICONWARNING);
      form2:=tform2.create(nil);
      with form2.ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Text:='SELECT * FROM AAA';
        Open;
      end;
      form2.ShowModal;
      form2.Free;
    except
      MessageBox(GetActiveWindow(), '批量导入EXCEL失败!', '警告', MB_OK +
        MB_ICONWARNING);
    end;
  except
    MessageBox(GetActiveWindow(), '连接ACCESS失败!', '警告', MB_OK +
      MB_ICONWARNING);
  end;
end;
温馨提示:答案为网友推荐,仅供参考
相似回答