var sqlstr:string; while not query1.eof do begin sqlstr:='insert into aa(......) values '+query1.fieldbyname('dddd').asstring..... end这样???数据多的话会很慢????
选择的也可以啊,如果你查询出来结果是单表的,那就将这个表的ROWID也Select出来,将选择的行记住ROWID,保存的时候用ROWID in ('rowid1', 'rowid2','rowid3',...)如果查询的结果是单条件多个表,则要记住主表的查询栏位,然后保存的时候对主表那个栏位用一个IN。如果查询的结果是多条件多个表,则要记住每个表的关键栏位,然后保存的时候每个表一个IN。
举个简单的例子,选择Emp表,emp表的主要栏位为EMP_NO 在用户选择完,点保存的时候,我先将用户选择的每笔数据的EMP_NO保存到一个string里面 s := '(empno1, empno2, empno3,...)'然后在保存的时候用SQL := 'Insert into newtable select * from emp where emp_no in ' + s;
是的话直接用一个Insert into MyNewTable + 你查询的SQL就可以了
while not query1.eof do
begin
sqlstr:='insert into aa(......) values '+query1.fieldbyname('dddd').asstring.....
end这样???数据多的话会很慢????
我的数据不是直接选择出来的,是左边dbgrid一些待处理的数据,选择到右边的已选中dbgrid,在前台改很麻烦。而且对其他的功能不太清楚,我想把最后的这些数据导入表中。在后台处理,这样的话我其他部分的程序我就不用看了。
选择的也可以啊,如果你查询出来结果是单表的,那就将这个表的ROWID也Select出来,将选择的行记住ROWID,保存的时候用ROWID in ('rowid1', 'rowid2','rowid3',...)如果查询的结果是单条件多个表,则要记住主表的查询栏位,然后保存的时候对主表那个栏位用一个IN。如果查询的结果是多条件多个表,则要记住每个表的关键栏位,然后保存的时候每个表一个IN。
在用户选择完,点保存的时候,我先将用户选择的每笔数据的EMP_NO保存到一个string里面 s := '(empno1, empno2, empno3,...)'然后在保存的时候用SQL := 'Insert into newtable select * from emp where emp_no in ' + s;
有人说,我是查询所得到本地数据,我想将这个查询结果保存起来,以后用啊!这就更没有必要了,因为你要再看查询结果,可以再用同样的SQL语句查询一次嘛,何必要保存呢?这是一种无效劳动,浪费硬盘空间!