请教各位高人,关于DELPHI操作SQL CE的一些问题!!!在线急等!!!!(100)

V

vclsaga

Unregistered / Unconfirmed
GUEST, unregistred user!
1、开发工具:DELPHI72、控件:SSDAC.components.v4.35.full.source,XLSReadWriteII23、数据库:Microsoft SQL Server Compact Edition 3.1实现:有EXCEL文件,内容大概有10000多条记录,我想将EXCEL文件导入到数据库SDF中;问题:数据只能导入946条码,然后报错:The specified buffer size is not valid代码片段如下:
代码:
procedure TMainForm.Instdb;var  conn, fpath, sSQL, qSQL: string;  i, Max, j: Integer;  Msg: string;begin  qSQL := 'SELECT 设备名称 FROM INFO WHERE 设备编号=:设备编号';  sSQL := 'INSERT INTO INFO (设备名称, 产品型号, 单位, 设备编号, 。。。。。。 备注信息, 附件信息, 状态)'+             'VALUES (:设备名称, :产品型号, :单位, :设备编号, 。。。。。。, :备注信息, :附件信息,:状态)';  fpath := ExtractFilePath(Application.ExeName)+'db.sdf';  conn := 'Provider=MICROSOFT.SQLSERVER.MOBILE.OLEDB.3.0;'+          'Data Source="'+fpath+'"';  if OpenDialog1.Execute then  begin    try      MSConnection1.ConnectString := conn;      MSConnection1.Database := fpath;      if MSConnection1.Connected then        MSConnection1.Close;      MSConnection1.Open;    except      MessageBox(Handle, '数据库打开失败!', '提示:', MB_OK or MB_ICONERROR);      Exit;    end;    XLS.Filename := OpenDialog1.FileName;    xls.Read;    Max := XLS.Sheet[0].LastRow;    RzProgressStatus1.TotalParts := Max;    RzProgressStatus1.NumSegments := 1;    j := 0;    for i:=1 to Max do    begin      Update;      Application.ProcessMessages;      RzProgressStatus1.PartsComplete := i;      with MSQuery1 do      begin        SQL.Clear;        SQL.Add(qSQL);        Params.ParamByName('设备编号').DataType := ftVariant;        Params.ParamByName('设备编号').Value := XLS.Sheet[0].AsString[3,i];[color=#FF0000]//断点追踪,有时i的值为946时在此处报错[/color]        Open;        if RecordCount>0 then        begin          Close;          inc(j);          Continue;        end;        Close;      end;      with MSQuery1 do      begin        SQL.Clear;        SQL.Add(sSQL);        Params.ParamByName('设备名称').DataType := ftVariant;        Params.ParamByName('设备名称').Value := XLS.Sheet[0].AsString[0,i];        Params.ParamByName('产品型号').DataType := ftVariant;        Params.ParamByName('产品型号').Value :=  XLS.Sheet[0].AsString[1,i];        Params.ParamByName('单位').DataType := ftVariant;        Params.ParamByName('单位').Value :=  XLS.Sheet[0].AsString[2,i];        Params.ParamByName('设备编号').DataType := ftVariant;        Params.ParamByName('设备编号').Value := XLS.Sheet[0].AsString[3,i];        Params.ParamByName('附件信息').DataType := ftVariant;        。。。。。。        Params.ParamByName('附件信息').Value := XLS.Sheet[0].AsString[33,i];        Params.ParamByName('状态').DataType := ftVariant;        Params.ParamByName('状态').Value := '未普查';        Execute; [color=#FF0000]//断点追踪,有时i的值为947时此处报错[/color]      end;    end;    with MSQuery1 do    begin      SQL.Clear;      SQL.Add('SELECT *FROM INFO');      Open;    end;    Msg := '共有数据:' + IntToStr(Max);    Msg := Msg + #13 + '有效数据为:' + IntToStr(Max - j);    Msg := Msg + #13 + '重复数据为:' + IntToStr(j);    Msg := '数据导入完成!' + #13 + Msg;    MessageBox(Handle, PChar(Msg), '提示:', MB_OK or MB_ICONINFORMATION);    RzProgressStatus1.TotalParts := 0;  end;end;
请教各位高人,是什么原因???谢谢!!!
代码:
 
自己顶一下!!!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
714
import
I
I
回复
0
查看
758
import
I
I
回复
0
查看
579
import
I
顶部