If OpenDialog1.FileName <>'' Then
  begin
    //dm_Data.ADOConn_Excel.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+'Data Source='+OpenDialog1.FileName+';Extended Properties= Excel 8.0';
    dm_Data.ADOConn_Excel.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0; Data Source=' + OpenDialog1.FileName + ';Extended Properties=Excel 8.0;Persist Security Info=True';
  end;
  with ADOQ_ZPJH do
  begin
  ADOQ_ZPJH.Close;
  ADOQ_ZPJH.SQL.Clear;
  //ADOQ_ZPJH.SQL.Add('Select 序号,物料编码,流水号,选用本体,车型及配置,任务号,计生号,合同号,交货期,装配计划号,备注 From  [Sheet1$]');
  ADOQ_ZPJH.Prepared;
  ADOQ_ZPJH.Open;
/////
with ADOQ_DRZPJH do
           begin
             Close;
             SQL.Clear;                           
             SQL.Add('insert into ZZP_SCBZPJH(zsxh,zpjhh,pxzpjhh,wlbm,lsh,xybt,cxjpz,rwh,jsh,hth,jhq,sfff,bz)');
             SQL.Add('values(:zsxh,:zpjhh,:pxzpjhh,:wlbm,:lsh,:xybt,:cxjpz,:rwh,:jsh,:hth,:jhq,:sfff,:bz)');
             Parameters.ParamByName('zsxh').Value:=StrToFloat(ADOQ_ZPJH.FieldByName('序号').AsString);
             Parameters.ParamByName('zpjhh').Value:=trim(ADOQ_ZPJH.FieldByName('装配计划号').AsString)+'-'+trim(ADOQ_ZPJH.FieldByName('序号').AsString);
             Parameters.ParamByName('pxzpjhh').Value:=trim(ADOQ_ZPJH.FieldByName('装配计划号').AsString);
             Parameters.ParamByName('wlbm').Value:=trim(ADOQ_ZPJH.FieldByName('物料编码').AsString);
             Parameters.ParamByName('lsh').Value:=trim(ADOQ_ZPJH.FieldByName('流水号').AsString);
             Parameters.ParamByName('xybt').Value:=trim(ADOQ_ZPJH.FieldByName('选用本体').AsString);
             Parameters.ParamByName('cxjpz').Value:=trim(ADOQ_ZPJH.FieldByName('车型及配置').AsString);
             Parameters.ParamByName('rwh').Value:=trim(ADOQ_ZPJH.FieldByName('任务号').AsString);
             Parameters.ParamByName('jsh').Value:=trim(ADOQ_ZPJH.FieldByName('计生号').AsString);
             Parameters.ParamByName('hth').Value:=trim(ADOQ_ZPJH.FieldByName('合同号').AsString);
             //if trim(ADOQ_ZPJH.FieldByName('交货期').AsString)='' then
             if ADOQ_ZPJH.FieldByName('交货期').AsDateTime=0 then
             begin
               application.MessageBox('交货期可能为空或数据格式错误,请检查修改后再导入!!!','提示');
               exit;
             end;
             Parameters.ParamByName('jhq').Value:=ADOQ_ZPJH.FieldByName('交货期').AsDateTime;
             Parameters.ParamByName('sfff').Value:=0;
             Parameters.ParamByName('bz').Value:=trim(ADOQ_ZPJH.FieldByName('备注').AsString);
             Prepared;
             try
               ExecSQL;
             except
               application.MessageBox('数据格式错误,请检查修改后再导入!!!','提示');
               exit;
             end;
           end;
         end;
         ADOQ_ZPJH.Next;
出错,序号又是为空,日期有的也出现空值;但EXCEL中明显有值,且序号为常规格式,日期为日期格式。到底怎么办呢?急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!

解决方案 »

  1.   

    1、建议楼主写程序注意严格缩格
    2、建议楼主在CSDN发代码选择“插入源代码”格式
    3、楼主以上程式没有循环,只插入了一条数据,报此错可能说明ADOQ_ZPJH里没有数据,
    可在“ Close; ”栏打断点,按Ctrl+F7,输入ADOQ_ZPJH.RecordCount是否大于0
      

  2.   

    Parameters.ParamByName( 'zsxh ').Value:=ADOQ_ZPJH.FieldByName( '序号 ').AsFloat; 
    EXCEL文件内不注意时会在正常有数据行的后面增加很多空行,在EXCEL中是不容易发现的,你要注意一下;
    进入调试,查看每个取值是否正确。