起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 176|回复: 9

【结贴】Excel导入数据个数不对**

[复制链接]
发表于 2009-4-20 15:21:30 | 显示全部楼层 |阅读模式
procedure TKHformdoc.saveExcel( AFile:string);
var
  lDataSet :TADODataSet;
  lQuery :TQuery;
begin
  lDataSet :=TADODataSet.Create( nil) ;
  lQuery :=TQuery.Create( nil) ;
  try
    //初始化保存。。。
    lQuery.ConnectionString :='DATABASEURL=Biz:\SHJXT\SJK.Database' ;
    lQuery.CommandText :=' select * from ASSESS where 1<>1 ' ;
    lQuery.Open ;

    lDataSet.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
                                 AFile+ ';Extended Properties=''Excel 8.0'' ersist Security Info=False';
    lDataSet.CommandText :=' select * from [考核情况$] ';
    lDataSet.Open ;

    try
      lDataSet.First ;
      while not lDataSet.Eof do
      begin
        lQuery.Append ;
        lQuery.FieldByName('id').AsString :=JSCommon.CreateGUIDStr ;
        lQuery.FieldByName('basicCondition_id').AsString :=lDataSet.FieldByName('设奖').AsString ;
        lQuery.FieldByName('registerCertificate_id').AsString :=lDataSet.FieldByName('登记证书编号').AsString ;
        lQuery.FieldByName('theYear').AsString :=lDataSet.FieldByName('年度').AsString ;
        lQuery.FieldByName('assessWay').AsString :=lDataSet.FieldByName('考核方式').AsString ;
        lQuery.FieldByName('asessConclusion').AsString :=lDataSet.FieldByName('考核结论').AsString ;
        lQuery.FieldByName('mark').AsString :=lDataSet.FieldByName('备注').AsString ;

        //录入人,录入日期
        lQuery.FieldByName('created').AsDateTime :=getDate;
        lQuery.FieldByName('createdby').AsString :=getCurrentOperatorID ;

        lDataSet.Next ;
      end;

      if lQuery.UpdatesPending then
        lQuery.ApplyUpdates ;
      JSDialogs.ShowMsg( '导入成功','提示') ;
    Except
      on e:Exception do
      begin
        JSDialogs.ShowMsg( e.Message,'导入失败') ;
      end;
    end;
  finally
    lQuery.Free ;
    lDataSet.Free ;
  end;

我Excel中只有两条数据,但是导入了100条左右的记录,怎么回事?
版本:3108
回复

使用道具 举报

发表于 2009-4-20 15:34:24 | 显示全部楼层
设个断点跟下,lDataSet这个数据集有几条记录
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-20 15:48:21 | 显示全部楼层
lDataSet.RecordCount =102,
实际Excel中只有4条数据,

同时发现在2617中 :lDataSet.CommandText :=' [考核情况$] '; 写不报错,
在3108中报错,

在2617中数据个数是对着呢。
回复 支持 反对

使用道具 举报

发表于 2009-4-20 16:01:03 | 显示全部楼层
excel在无数据区域有垃圾空行,你把下面的空行全部删除就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-20 16:07:57 | 显示全部楼层
这些垃圾空行是怎么产生的?
回复 支持 反对

使用道具 举报

发表于 2009-4-20 16:09:21 | 显示全部楼层
我刚测试的用DATAGRID导出的数据就是这样,和你说的一个现象,不知你是否是用X3的控件导出的EXCEL
如果是手动录入的就没问题!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-20 16:11:32 | 显示全部楼层
不知你是否是用X3的控件导出的EXCEL  
对,就是用X3控件导出Excel的
回复 支持 反对

使用道具 举报

发表于 2009-4-20 16:21:09 | 显示全部楼层
你用2617版本也是这么做的吗,是用X3的控件导出的EXCEL ?
回复 支持 反对

使用道具 举报

发表于 2009-4-20 16:33:14 | 显示全部楼层
我们先确认下是不是新版本的问题,你这边先收工删除空行处理下!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-20 17:15:16 | 显示全部楼层
好的,结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-22 06:53 , Processed in 0.048930 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表