动态将ADOQuery数据移植到ClientDataSet通用函数

昨天做程序突然想到的,如果您会使用内存表就不需要此例了,可以参考一下,代码如下:

//******************************************************************************
// 函数功能: 执行SQL查询语句,影响ClientDataSet控件
// 函数名称: cf_dbSelectSQL
// 函数参数: var oClientDataSet:TClientDataSet;          对象(ClientdataSet)
//           sSQL             String      SQL结构化语言
//           sCon             String      数据连接字符串
//   返回值: 返回是否操作成功(Boolean);
//******************************************************************************
function cf_dbSelectSQL(var oClientDataSet:TClientDataSet;sCon,sSQL: string): Boolean;overload;
var
oADOQuery:TADOQuery;
iField:Integer;
begin
Result:=False;
if (oClientDataSet=nil) then Exit;
if (Trim(sCon)='') or (Trim(sSql)='') then Exit;

try
oADOQuery:=TADOQuery.Create(nil);
oClientDataSet.Fields.Clear;
oADOQuery.SQL.Clear;
oADOQuery.SQL.Add(sSQL);
oADOQuery.ConnectionString:=sCon;
oADOQuery.Open;
    if oADOQuery.Fields.Count>0 then
    begin
       for iField:=0 to oADOQuery.Fields.Count-1 do
       begin
         with oClientDataSet.FieldDefs.AddFieldDef do
         begin
           Name:=oADOQuery.Fields[iField].DisplayName;
           DataType:=oADOQuery.Fields[iField].DataType;
         end;
       end;
         //建立结构。
         oClientDataSet.CreateDataSet;
         oClientDataSet.Open;
        if not oADOQuery.IsEmpty then
        begin
           //循环加入列表中
           oADOQuery.First;
           while not oADOQuery.Eof do
           begin
             oClientDataSet.Append;
             for iField:=0 to oADOQuery.Fields.Count-1 do
             begin
               oClientDataSet.FieldByName(oADOQuery.Fields[iField].DisplayName).AsString:=oADOQuery.FieldByName(oADOQuery.Fields[iField].DisplayName).AsString;
             end;
             oClientDataSet.Post;
            oADOQuery.Next;
           end;
        end;
    end;
    oClientDataSet.Open;
    Result:=True;
except
     Result:=False;
end;

end;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值