我要投稿
  • 您当前的位置:365bet官方 -> 技术教程 -> 软件开发教程 -> Delphi教程 -> 教程内容
  • [ 收藏本页教程 ]
  • 用AdoDataSet实现数据表的导入导出Delphi教程

    教程作者:佚名    教程来源:不详   教程栏目:Delphi教程    收藏本页
     
    Delphi中的AdoDataSet是支持ADO访问的主要组件,它支持从数据表直接获取数据,支持用SQL语句获取数据。最重要的是,它定义和实现了两个重要的例程:



      procedure LoadFromFile(const FileName: WideString);它从文件中加载数据集。

      procedure SaveToFile(const FileName: String = ''; Format: TPersistFormat = pfADTG);它将数据集保存到文件中。Format确定文件中数据集的保存格式,可以使用的有pfADTG (Advanced Data Tablegram format)、pfXML(Extendable Markup Language)。

      因此AdoDataSet是实现导入导出的良好的基础。

      1.数据表的导出

      导出数据表的操作如下:

      1)打开数据表,设置需要导出的条件;

      2)使用AdoDataSet,调用SaveToFile导出记录;

      下面是一个导出操作的示例(假定导出指定数据表的全部记录)。


      procedure  ExportData(strFileName, strTableName: string);

      begin

      with AdoDataSet1 do

      begin

      Close;

      CommandText := ‘select * from ’ + strTableName;

      Open;

      SaveToFile(strFileName);

      Close;

      end;

      end;

     

    [page]


    2.数据表的导入

      下面是一个导入操作的示例(假定存在相同主键记录时更新目的表;假定数据表为单主键字段,且其字段类型为字符串型)。


      Procedure  ImportData(strFileName, strTableName, strKeyFieldName: string);

      begin

      with AdoDataSet1 do

      begin

      Close;

      LoadFromFile(strFileName);

      First;

      While not eof do

      begin

      StrKeyValue := FieldByName(strKeyFieldName).AsString;

      If RecordInDest(strTableName, strKeyFieldName, strKeyValue) then

      begin

      AdoDataDest.Close;

      AdoDataSetDest.CommandText := Format(‘select * from %s where %s=%s’,[strTableName, strKeyFieldName, QuotedStr(strKeyValue)]);

      AdoDataSetDest.Open;

      AdoDataSetDest.First;

      AdoDataSetDest.Edit;

      for I:=0 to FieldList.Count-1 do

      AdoDataSetDest.Fields[I] := Fields[I];

      AdoDataSetDest.Post;

      end

    [page]



      else         // 添加记录

      begin

      AdoDataDest.Close;

      AdoDataSetDest.CommandText := Format(‘select * from %s where 1=0’,[strTableName]);  // 获取字段列表

      AdoDataSetDest.Open;

      AdoDataSetDest.Insert;

      for i:=0 to FieldList.Count-1 do

      AdoDataSetDest.Fields[i] := Fields[i];

      AdoDataSetDest.Post;

      end;

      Next;

      end;

      end;

      // 判断指定主键值的记录在表中是否存在

      function RecordInDest(strTableName, strKeyFieldName, strKeyValue: string): boolean;

      begin

      with AdoQuery1 do

      begin

      Close;

      SQL.Clear;

      SQL.Add(Format(‘select count(*) from %s where %s=%s, [strTableName, strKeyFieldName, QuotedStr(strKeyValue)]));

      Open;

      result := Fields[0].AsInteger > 0;

      Close;

      end;

      end;

      如果对数据表的情况进行进一步的考虑,并结合更周密的导入导出方案,比如导入指定字段、导入指定字段、导入指定记录等等,对导入导出过程进行更详细的控制,就可以实现强大的、通用的数据表的导入导出工具。

     
    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.ct131.com All Rights Reserved.365bet官方 版权所有