a := StrToInt(VarToStr(EXCEL.WORKBOOKS[1].WORKSHEETS[1].EVALUATE('=COUNTIF($A:$A,"<>")')))
//開啟excel
try
    FOR h:=2 TO REC_rows1 DO
    BEGIN
        i := FEXCEL.WORKBOOKS[1].WORKSHEETS[1].CELLS[h,1] ;
        if a2.Active then
  a2.Close;
     a2.ParamByName('aaa').AsString := i;
     a2.Open;
    if not a.IsEmpty then
    begin
         aa := aa + i;
     end
     else
     a1.Applyupdates;
     end;
     if aa <> '' then
       MessageDlg('错误',mtWarning,[mbok],0);
....状况:table里没有值可以isnert
但会跳出MessageDlg
table里有值会跳出MessageDlg,不会insert
如何修正成↓
table里没有值的时候可以insert但""""不会""""跳出MessageDlg
table有值得时候会跳出MessageDlg,不会insert

解决方案 »

  1.   


    a := StrToInt(VarToStr(EXCEL.WORKBOOKS[1].WORKSHEETS[1].EVALUATE('=COUNTIF($A:$A,"<>")')))
    //開啟excel
    try
      FOR h:=2 TO REC_rows1 DO
      BEGIN
      i := FEXCEL.WORKBOOKS[1].WORKSHEETS[1].CELLS[h,1] ;
      if a2.Active then
    a2.Close;
      a2.ParamByName('aaa').AsString := i;
      a2.Open;
      if a2.RecordCount>0 then
      begin
      aa := aa + i;
      end
      else
      a1.Applyupdates;
      end;
      if aa <> '' then
      MessageDlg('错误',mtWarning,[mbok],0);
    ....
      

  2.   

    INSERT 前,先SELECT一下你的TABLE,如果记录不为0就跳过,为0就INSERT
      

  3.   

    a := StrToInt(VarToStr(EXCEL.WORKBOOKS[1].WORKSHEETS[1].EVALUATE('=COUNTIF($A:$A,"<>")')))
    //開啟excel
    try
      FOR h:=2 TO REC_rows1 DO
      BEGIN
      i := FEXCEL.WORKBOOKS[1].WORKSHEETS[1].CELLS[h,1] ;
      if a2.Active then
    a2.Close;
      a2.ParamByName('aaa').AsString := i;
      a2.Open;
      if not a.IsEmpty then
      begin
      MessageDlg('错误',mtWarning,[mbok],0);
      aa := aa + i;
      end
      else
      a1.Applyupdates;
      end;
      //if aa <> '' then
      
      

  4.   

    你你一个 ADOQuery  打开这 Append 前 先Locke 一把。
      

  5.   

    不建议楼主这样操作,直接操作excel控制代码费点劲可以写,但excel表没有索引,但效率很低的,如果数据量大一点,就等菜吧。delphi的优势在于数据管理。建议楼主把excel导入数据库,需要时再导出。