在一个函数中我创建了一个局部的 TADOQuery 对象,怎么复制这个对象? var
A1,A2:TADOQuery;
begin
//创建了 A1 A2
A1:=TADOQuery.Create(nil);
A2:=TADOQuery.Create(nil);
// .....在这取得了 A1 <<<<<<<<<<<<<<<<<<<<<<<<<==========
A2:=A1; //不行
A2.Assign(A2);//也不能,运行时错
......
A1.Free; //这个是一定要执行的,所以才想要再用一个临时的
end; 请问上面标记处<<<<<<<<<<<<<<<<<<<<<<<<<==========
应该怎么写?
解决方案 »
- int64如何转换为int32
- 招delphi人才了 地点:南昌
- 我想实现对一个图片的旋转加亮等操作功能,并且需要在一个窗口中同时可以加载2个图片,如何入手呢?
- 创建子窗口后,会申请内存,但在释放时,内存占用并没有降低。请教其中奥秘!
- 做个Console式界面的组件
- 为什么拦截不到封包??
- 请问InstallSheild怎样在开始菜单中加入卸载
- 如何写类似超级终端发送接收文件的程序?
- delphi里的例子程序csdemos 为什么用不了??
- 请问用 express 控件 打印预览 时, 如何汉化 打印预览 窗口?? 急!!!!
- 快来快来帮帮忙!
- 怎样做一个类似ie6/outlook express风格的工具条(toolbar)?
假设A1已经复制:
A2 := TADOQuery.create(nil);
A2.Clone(A1);
A1.Close;
A1.free;
A2.open;
A2.close;
TO: hotzhu(非洲白脸)
非常感谢,太谢谢了,下面的我写代码,你看有问题么(现在已正常运行了),或者能简化么?下来结帖。//执行 SQL 语句返回数据集
function TForm_Main.OpenSQL(SQL:string):TADOQuery;
var
ADOQuery:TADOQuery;
returnDataSet:TADOQuery;
begin
//下面联数据库
with DM do
begin
ADOQuery:=TADOQuery.Create(nil);
returnDataSet:=TADOQuery.Create(nil);
ADOConnection.Connected:=true;
ADOQuery.ConnectionString:=ADOConnection.ConnectionString;
ADOQuery.SQL.clear;
ADOQuery.SQL.Add(SQL);
ADOQuery.Open; //如果返回 表明没有更新数据,此时返回假
returnDataSet.Clone(ADOQuery);
ADOQuery.Close;
ADOConnection.Connected:=false;
end;
result:=returnDataSet;
end;
ADOConnection.Connected:=false;
end;
result:=returnDataSet;
end;改为
ADOConnection.Connected:=false;
end;
ADOQuery.Free; // 这一句崩溃
result:=returnDataSet;
end;为什么呀?
ADOQuery 是局部变量,用完后要释放的呀
//执行 SQL 语句返回数据集
function TForm_Main.OpenSQL(SQL:string):TADOQuery;
var
Query:TADOQuery;
returnDataSet:TADOQuery;
begin
//下面联数据库
Query:=TADOQuery.Create(nil);
with DM do
begin
returnDataSet:=TADOQuery.Create(nil);
ADOConnection.Connected:=true;
Query.ConnectionString:=ADOConnection.ConnectionString;
Query.SQL.clear;
Query.SQL.Add(SQL);
Query.Open;
returnDataSet.Clone(Query);
Query.Close;
ADOConnection.Connected:=false;
end;
Query.Free;
result:=returnDataSet;
end;