两个数据集field一样的,但是处于两个不同的数据库中
procedure CopyDataSet(CD:TClientDataSet;SD:TSimpleDataSet)
var
AData:OleVariant;
arr:Array of TVarRec; //???
I:Integer;
begin
CD.Open;
SD.Open;
AData:=CD.Data; for i := VarArrayLowBound(AData, 1) to VarArrayHighBound(AData, 1) do
begin
arr:=VarArrayGet(AData,I); //这是错的,我是想取一整行数据
SD.AppendRecord(arr); //这是错的,我想插入一整行数据
end;
// 或者
for i:=0 to CD.RecordCount do
begin
CD.xxxxx //这里想取一整行数据
SD.AppendRecord(xxx); //这里插入一整行数据
CD.next
end; CD.Close;
end反正我想一次从TClientDataSet取一整行数据插入到TSimpleDataSet,
如果是POWERBUILDER就非常好做DELPHI我研究几天搞不定。。快崩溃了
重分求教高手
procedure CopyDataSet(CD:TClientDataSet;SD:TSimpleDataSet)
var
AData:OleVariant;
arr:Array of TVarRec; //???
I:Integer;
begin
CD.Open;
SD.Open;
AData:=CD.Data; for i := VarArrayLowBound(AData, 1) to VarArrayHighBound(AData, 1) do
begin
arr:=VarArrayGet(AData,I); //这是错的,我是想取一整行数据
SD.AppendRecord(arr); //这是错的,我想插入一整行数据
end;
// 或者
for i:=0 to CD.RecordCount do
begin
CD.xxxxx //这里想取一整行数据
SD.AppendRecord(xxx); //这里插入一整行数据
CD.next
end; CD.Close;
end反正我想一次从TClientDataSet取一整行数据插入到TSimpleDataSet,
如果是POWERBUILDER就非常好做DELPHI我研究几天搞不定。。快崩溃了
重分求教高手
解决方案 »
- 请问大家一个问题 关于DELPHI与89S51单片机的通信的
- dephi串口通信的问题!急!!
- 求助:rave做报表不显示数据表的字段
- 求助:Delphi 6 做的东西,用了 QReport,怎么转换成 Delphi 7 的 rave 报表?
- 在线请教关于小屏幕控制问题!!!!
- 请教数据库问题
- 有关web页面与其它应用程序(如delphi写的程序)通讯的问题?
- 如何用纯Api实现透明桌面图标
- 怎样控制控件的顺序
- 真奇怪,我的程序的运行时有是会突然完全没掉,有时候又不会。。。而且不一定发生在某个固定操作上。请教高手,为什么?又:
- 如何 动态创建 菜单???
- 呵呵,我有两个问题需要请教DELPHI和MS SQL 方面的高手。
抛砖引玉:{方法一}
var
FieldArr : Variant;
I : Integer;
begin
FieldArr := VarArrayCreate([0,DataSet2.Fieldcount],VarVariant);
for I := 0 to DataSet2.FieldCount-1 do
FieldArr[I] := DataSet2.Fields[I].Value;
DataSet1.Insert;
for I := 0 to DataSet1.FieldCount-1 do
DataSet1.Fields[I].Value := FieldArr[I];
DataSet1.Post;
end;{方法二}
DataSet1.InsertRecord([DataSet2.Fields[0].Value, {...所有字段...}]);{方法三}
用SQL语句,Insert Into...
{方法一}
我现在就是这样做 for i=0 to ds1.recordcount
begin
ds2.append;
for j=0 to ds2.fieldcount
ds2.field[j].value:=ds1.field[j].value
ds2.post;
end
{方法二}
DataSet1.InsertRecord([DataSet2.Fields[0].Value, {...所有字段...}]);//这里不能动态写FieldCount{方法三}
用SQL语句,Insert Into 表1 Select * from 表2 ... //两个不在同一地方的数据库 例如一个在北京一个在上海
{方法一}
我现在就是这样做 for i=0 to ds1.recordcount
begin
ds2.append;
for j=0 to ds2.fieldcount
ds2.field[j].value:=ds1.field[j].value
ds2.post;
end
{方法二}
DataSet1.InsertRecord([DataSet2.Fields[0].Value, {...所有字段...}]);//这里不能动态写FieldCount {方法三}
用SQL语句,Insert Into 表1 Select * from 表2 ... //两个不在同一地方的数据库 例如一个在北京一个在上海
这些都是不错的方法 你可以试一下
ll_num = ds_1.retrieve()
ll_num=ds_1.rowscopy(1,ll_num,primary!,ds_2,1,primary!)
ds_2.update()PB用4秒搞定1500条数据下面是DELPHI 做同样的工作
ds1.open; //这是ClientDataSet 向远程取数据
for i=0 to ds1.recordcount
begin
ds2.append;
for j=0 to ds2.fieldcount
ds2.field[j].value:=ds1.field[j].value
ds2.post;
end
ds2.AppendData(-1);
DELPHI 用了10秒左右
这什么不用这个方法呢?-------------------------------------------------------------------------
Duplicates another dataset in the calling componentprocedure Clone(Source: TCustomADODataSet; LockType: TLockType = ltUnspecified); adoquery1.Clone();-----------------------------------------------------------------------
Shares the data belonging to another client dataset.procedure CloneCursor(Source :TCustomClientDataSet; Reset: Boolean; KeepSettings: Boolean = False); virtual;
ClientDataSet1.CloneCursor();
搞这种问题首先考虑引用外部数据库,直接用一条SQL语句搞定,然后考虑DTS Package调用。