excel 和数据库的表结构是一样的,我将excel数据插入access的时候,数字都好着呢,但是字符串就不行了,调试了 半天,我将excel该字段输出后发现已经不见了字符串,不知道是什么原因,请各位大侠给小弟指教啊!         
下面是我的代码段,这个字段在excel里面是text类型:with Data_Qry do
        begin
          SqlStr := 'Insert into mydata(a,b,c,aa,d'+
                    'values(:a,:b,:c,:aa,:d)';
          Close;
          SQL.Clear;
          SQL.Add(SqlStr);
          Parameters.ParamByName('a').Value:= Excel_Q.FieldByName('a').AsInteger;
          ...
         //messagedlg(Excel_Q.FieldByName('aa').AsString,mtconfirmation,[mbYes,mbNo],0);
          Parameters.ParamByName('aa').DataType:=ftString;
          Parameters.ParamByName('aa').Value:= Excel_Q.FieldByName('aa').AsString;
          ...

解决方案 »

  1.   

    直接读Excel的Cell,用ADO连问题挺多
      

  2.   

    Excel_Q.FieldByName('aa').Value; 用这个试一试
      

  3.   

    试了,不行啊,不知道还有什么方法,我刚才以为是长度不够,给字段指定了长度Parameters.ParamByName('aa').Size:=100; ,问题依旧,还是谢谢啊:)
      

  4.   

    我刚才把整个表drop了,然后重新写入,select * into [MS Access;Database=mydb.mdb].mytable from [mytable$],结果还是一样啊。
    我怀疑这个不是access的问题,因为我在写入数据库之前将这个字段输出了,输出结果就是空,郁闷啊,期待高手赶快现身啊
      

  5.   

    找到了问题,TADOQuery从Excel中读取字符串时读出的值为空,不知有没有人遇到过?
      

  6.   

    Excel_Q.FieldByName('aa').AsString你确定Excel首行有内容为aa的单元格吗?
      

  7.   

    问题解决了,excel导入时,由于连接excel的字符串写的不正确,经常会导致字符串读出来是null,原因是读取时excel会将后面的字段一前面字段的类型读取,在Extended Properties加入IMEX=1,意思是以文本进行内容的读取,Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+myexcelfie;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";详细的链接字符串大家可以参考connectionstring.com.
      

  8.   

    Excel的格式很复杂的,导放到SQL SERVER也会有这样的问题,经常会丢数据。
    但是用户的EXCEL模板格式你没有办法控制,所以我们一般是一条条的读取数据。这样比较安全