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

摘要:
昨天程序突然想到,如果可以使用内存表,就不需要这个示例。作为参考,代码如下:_ DbSelectSQL//函数参数:varoClientDataSet:

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

//******************************************************************************
// 函数功能: 执行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;

免责声明:文章转载自《动态将ADOQuery数据移植到ClientDataSet通用函数》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java 根据 Map 的 key 的 ASCII 码从小到大排序winForm 打印预览下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

delphi各种用法

调用外部程序,等待外部程序运行完成,相当于Showmodal功能,呵呵 delphi代码1.function WinExecAndWait32(FileName: string; Visibility: Boolean): integer;   2.var  3.  zAppName: array[0..512] of char; //存放应用程序名  4...

DELPHI 解决DBGrid SHIFT键多选问题

在实际项目中,偶然遇到需要按下SHIFT键,在DBGrid中进行多选的情况,测试了几种方法,最终确定了一个比较好的解决方法,总结如下: procedure TTestFrame.TestDBGridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Inte...

linux命令---awk进阶

awk编程:    1.  变量:    在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表: 符号 含义 等价形式 = a = 5 a = 5 += a = a + 5 a += 5...

Delphi调用IE打开网页

//调用相应程序打开   uses ShellAPI;   procedure TForm1.Button1Click(Sender: TObject);   begin   //用IE打开   ShellExecute(Handle, 'open', 'IExplore.EXE', 'about:blank', nil, SW_SHOWNORMAL);...

LaTeX公式Markdown速查

1. 常用希腊字母 代码 渲染 代码 渲染 代码 渲染 代码 渲染 \alpha \(\alpha\) \beta \(\beta\) \gamma \(\gamma\) \delta \(\delta\) \epsilon \(\epsilon\) \varepsilon \(\varepsilon\) \zeta \(\zeta\) \e...

awk getline命令

转自:http://www.cnblogs.com/276815076/archive/2011/12/05/2276605.html awk输入命令getline getline为awk所提供的输入命令如果找到一条记录则getline返回1,如果到了文件结束(EOF)则返回0,如果错误则返回-1A.getline从整体上来说,应这么理解它的用法:当其左...