運行出錯,說'couldn't convert type of variant(string) into type of double'
我看數據庫的時候,發現一個cell已經导入到數據表單中了.怎麼解決上面的問題啊
分已經散完了,只有 這麼多了unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ADODB,
  Dialogs, DB, DBTables, StdCtrls, ComCtrls, Grids, DBGrids, ExtCtrls,Excel2000, OleServer,Comobj;
type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    DataSource1: TDataSource;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    ADOTable1: TADOTable;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var          eclApp,WorkBook :variant ;
             xlsFileName :string;
             a_FiledCount:integer;       //數据表中的列數
             b_filedCount:integer;      //excel 文件中的 列數
             b_row :integer;           // excel 文件的行數
             i,j :integer;
             a_flag :boolean;
begin          Form1.OpenDialog1.InitialDir :=ExtractFilePath(Application.ExeName );
          if    (Form1.OpenDialog1.Execute )
          then   xlsFileName :=ExtractFileName(Form1.OpenDialog1.FileName)
          else   exit;          try
               eclApp := CreateOleObject('Excel.Application');
               WorkBook :=CreateOleObject('Excel.Sheet');
          except
                 showmessage('您系統未安裝MS-EXCEL');
                 exit;
          end;
          try
              workBook :=eclApp.WorkBooks.add ;
              eclApp.workBooks.open(Form1.OpenDialog1.FileName );
          except
                on  EOleException do
                    begin
                             WorkBook.close;
                             eclApp.quit;
                             eclApp:=Unassigned;
                             exit;
                    end;
          end;
         eclApp.visible :=false;
          try   //try ..finally
            try //try  ..except
                 With  adotable1 do
                    begin
                         close ;
                         tablename:='joy';                         active:=true;
                         a_FiledCount :=FieldCount;                   end;                   b_filedCount :=eclApp.ActiveSheet.UsedRange.columns.Count;//返回excel 表中的列?
                   b_row :=eclApp.activesheet.UsedRange.rows.count;        //返回excel 表中的行?                   if    (a_FiledCount <>b_FiledCount)     //??据 表和?入的excel表中的列?不一?,?明?入的excel文件不是正确的
                   then  begin
                          showmessage('您???入的excel文件??'+#13+#10+'?您重新??');
                          WorkBook.close;
                          eclApp.quit;
                          eclApp:=Unassigned;
                          exit;
                         end
                   else   begin  //列?正确,但是?要??判?每列的字段名是否一致
                             for  i :=1 to  b_filedCount do
                                begin
                                     //showmessage(eclApp.activesheet.cells.item[1,i].value);
                                     //showmessage(DataMod.ADO_basic.Fields.Fields[i-1].FieldName );                                     if    eclApp.activesheet.cells.item[2,i].value<>adotable1.Fields[i-1].FieldName  //判?字段名是否相等
                                     //if    eclApp.activesheet.cells.item[1,i].value<>DataMod.ADO_basic.Fields.Fields[i-1].FieldName   //判?中文title.caption 是否相等
                                     then  begin
                                                   showmessage('您所輸入的excel文件錯誤'+#13+#10+'請您重新導入');
                                                   WorkBook.close;
                                                   eclApp.quit;
                                                   eclApp:=Unassigned;
                                                  adotable1.Close ;
                                                   exit;
                                           end;
                                end; //for   i:=.....
                        end;     //end with  else                  for  i :=3 to  b_row do            //行
                      begin
                            a_flag :=adotable1.Locate(eclApp.activesheet.cells.item[2,1],eclApp.activesheet.cells.item[i,1],[loCaseInsensitive]);
                                      if    (a_flag =true)
                                      then  begin
                                               showmessage('該紀錄已經存在');
                                               adotable1.Next ;
                                               continue;
                                            end;                            With  adotable1  do
                               begin
                                     close ;
                                      tablename:='joy';
                                     active :=true;
                                     Append;
                               end;
                            For j :=1 to b_filedCount do    //列
                               begin     //?始?入?据?
                                     //showmessage(eclApp.activesheet.cells.item[1,j]);//.Value);
                                     ////showmessage(eclApp.activesheet.cells.item[i,j].value);
                                     //showmessage(eclApp.activesheet.cells[i,j].value);                                     adotable1.FieldByName(eclApp.activesheet.cells.item[2,j]).Value:=eclApp.activesheet.cells[i,j].value;                               end ;      //end with For j :=1 to    b_filedCount do
                         adotable1.Post ;
                         adotable1.Refresh ;
                  end;
                 showmessage('導入數据成功');
            except
                   WorkBook.close;
                   eclApp.quit;
                   eclApp:=Unassigned;
                  adotable1.Close ;
            end;   //end  try  except
          finally  //操作??,退出
                   WorkBook.close;
                   eclApp.quit;
                   eclApp:=Unassigned;
                   adotable1.Close ;
          end;
end;end.