zoukankan      html  css  js  c++  java
  • (原)Lazarus 在 DataSet 转 MemDataSet

    Pascal下 DataSet中的内容是非离线的,就是说需要与数据库保持联机,这样很不好,会弄出很多连接出来,不喜欢。
    MemDataSet,是可以保存离线内容的,于是就有了这个方法。

    function TformMain.DataSet2MDataSet(dataSet:TDataSet):TMemDataSet;
    var
      i:Integer;
      strColumn,strType,strSize,strValue:string;
      mDataset:TMemDataSet;
    begin
      //初始化
      mDataSet:= TMemDataset.Create(nil);
      //字段
      with dataSet do
      for i := 0 to FieldCount-1 do
      begin
         strColumn:= dataSet.Fields[i].FieldName;
         strType:= GetEnumName(TypeInfo(TFieldType),integer(dataSet.Fields[i].DataType)) ;
         strSize:= IntToStr(dataSet.Fields[i].DataSize);
         if strColumn ='SUMNUMBER'then
         Application.MessageBox(Pchar(strType),'',0);
         if (strType ='ftString') or (strType ='ftBCD')then
            mDataSet.FieldDefs.Add(strColumn, TFieldType(GetEnumValue(TypeInfo(TFieldType), strType)),StrToInt(strSize))
         else
            mDataSet.FieldDefs.Add(strColumn, TFieldType(GetEnumValue(TypeInfo(TFieldType), strType)));
      end;
      mDataSet.CreateTable;
      mDataSet.Open;

      //数据
      dataSet.First;
      with dataSet do
        while not dataSet.eof do
         begin
           mDataSet.Append;
           for i := 0 to FieldCount-1 do
            begin
                strValue:= dataSet.Fields[i].AsString;
                mDataSet.Fields[i].AsString:=strValue;
           end;
           dataSet.Next;
         end;
      Result:=mDataSet;
    end;

  • 相关阅读:
    ASP.NET MVC3 系列教程 部署你的WEB应用到IIS 6.0
    ASP.NET MVC3 系列教程 控制器 & 视图
    Windows 8 如何安装到Virtual Box虚拟机上(x86)
    工具脚本(网络编码)
    c库的rand/random随机数产生函数性能差?
    shell脚本模版
    linux的IO调度算法和回写机制
    thrift安装脚本
    通用高效的c++内存池(特定类型)
    [转] NoSQL生态系统
  • 原文地址:https://www.cnblogs.com/spymaster/p/2126370.html
Copyright © 2011-2022 走看看