高手请进……急急急!!! (100分)

  • 主题发起人 主题发起人 寻找
  • 开始时间 开始时间

寻找

Unregistered / Unconfirmed
GUEST, unregistred user!
我想把在另一个部门用ADODataSet1的SavetoFile将数据保存出来的数据,添加到总数据库
中的相信结构的表中。我试过用ADODataSet1的LoadfromFile失败。请问还有什么办法还
可以实现这一功能?
 
用一个ADODataSet把你的数据LoadFromFile,再用一个ADODataSet把你的总表
载入,然后用Delphi自已的Insert、Append之类的函数把它们逐条加入总表中。

LoadFromFile的主要问题是关键字冲突,如果你的一个部门一个表,用SaveToFile
和LoadFromFile还好,如果只有一个总表的话,还有上面法子安全。
 
Delphi自已的Insert、Append函数逐条加操作?速度如何?我一个月有近两千条的记录
啊!那Delphi自已的Insert、Append的函数如何使用?
 
DATASET.append;
dataset.fieldbyname(field1).value:=...
...
dataset.post;

或者使用SQL语句中的INSERT.
 
如果用SQL的innset语法是怎样的呢?[:)]
 
INSERT INTO tablename [field..] SELECT * FROM tablename
 
在Delphi中能这直接这样
INSERT INTO tablename [field..] SELECT * FROM tablename
的吗?
那tablename是什么?是ADODataSet中的数据?
 
tablename是指表名的.使用adoquery执行这个SQL语句就行了.
 
但我的数据不是在数据库中的表,而是ADODataSet1的数据。
 
adodataset1指定的表
 
adodataset1不是连到一个表中的,是用LoadFormFile的数据!
 
又开了一个帖子?
上面的回答是对的,你没有搞清楚。
再帖一遍!
你的意思是说在别处Save来的文件,到这里来load,而且两个数据表的结构相同,是不是?
这样做,你先用一个AdoTalbe来LoadFromFile,在用另一个AdoTable来连接你后台的
数据库表。然后一条一条添加就行了。 //就是杜宝的方法
procedure TForm1.Button1Click(Sender: TObject);
begin
//先连接你的Adotable2到后台要添加的数据库表。设计期设置好或写代码动态设置。
Adotable2.Open;
AdoTable1.LoadFromFile('temp.xml');//用一个adotable来load别处存的数据。
AdoTable1.First;
while not AdoTable1.Eof do
begin
AdoTable2.Insert;//一条一条添加,你的结构完全相同。
AdoTable2.FieldByName('id').Value := AdoTable1.FieldByName('id').value;
AdoTable2.FieldByName('name').value := AdoTable1.FieldByName('name').value;
//..............
Adotable2.Post;
AdoTable1.Next;
end;
Adotable2.Close
end;
或者使用Sql语句一次性添加所以Adotable1中的数据。
 
一条条写入,速度会慢得让人受不了,我曾经也试过,简直就我受不了![:(!][:(]
 
一两千条记录并不多!速度不该慢啊!
你的表里字段是什么类型?很多字段吗?
 
有一个主表有40多个字段!多为money型!
 
如果速度不可接受的话,你可以使用sql语句执行插入
不过需要构造Sql语句。先用Query连接数据源
AdoTable2.LoadFromFile('temp.xml');
AdoQuery1.Close;
AdoQuery1.SQL.Clear;
AdoTable2.First;
while not AdoTable2.Eof do
begin
S1 := inttoStr(AdoTable2.FieldByName('id').value);
S2 := AdoTable2.fieldbyname('Name').Value;
S3 := DateTimeToStr(AdoTable2.Fieldbyname('savedate').value);
SqlString :='insert into ' + AdoTable1.TableName + ' values(' + S1 + ',' + '''' + S2 + '''' + ',' + '''' + S3 +'''' +')';
//需要根据你的表字段类型构造相应的Sql语句,每条记录构造一个insert语句。
AdoQuery1.SQL.Add(SqlString);
AdoTable2.Next;
end;
// showmessage(Adoquery1.SQL.text);
AdoQuery1.ExecSQL;

你试试速度如何?
 
TO GanQuan
好的,我试试,但这样也太复习了吧?
能不能在程序中动态用SQL语吾备份和恢复SQL SERVER的数据表?
 
好像不行!Load文件之后表名不识别啊 :-(
要是有好方法,别忘告诉我一声! :-)
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部