主题:绝望求救!!!
xiulin
[专家分:200] 发布于 2006-05-25 20:06:00
各位哥哥好:
请问如何把表一的每一条记录复制到表二?
[em1][em10][em8]
回复列表 (共12个回复)
沙发
lzahn [专家分:50] 发布于 2006-05-26 04:50:00
adoquery1.sql.add('insert into 表二(写表中所有字段名) ');
adoquery1.sql.add('select * from 表一');
板凳
xiulin [专家分:200] 发布于 2006-05-28 20:50:00
设有表一、表二如下:
表一 表二
姓名 月收入 月消费 姓名 月消费
张三 18888 0 张三 5000
李四 1888 0
王五 188 0
如何将表二张三的月消费记录加入表一,形成下表
姓名 月收入 月消费
张三 18888 5000
李四 1888 0
王王 188 0
3 楼
lzahn [专家分:50] 发布于 2006-05-31 00:48:00
adoquery1.close
adoquery1.sql.clear
adoquery1.sql.add('insert into 表一(月消费)');
adoquery1.sql.add('select 月消费 from 表二 where 姓名='''+写你要的姓名+'''');
adoquery1.execsql;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from 表一');
adoquery1.open;
不好意思。。。这两天没有上网没有看见你回贴子。。
你试试这样做看行不行。。。
4 楼
xiulin [专家分:200] 发布于 2006-05-31 16:24:00
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('insert into 表一(月消费)');
adoquery1.sql.add('select 月消费 from 表二 where 表一.姓名=表二.姓名');
adoquery1.execsql;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from 表一');
adoquery1.open;
让他改成让两表的姓名相同的自动加入,不相同的则不加,
但如果向我这样加,会出现错误,,
5 楼
sxd099 [专家分:220] 发布于 2006-05-31 17:58:00
改成这样看看:
adoquery2.close;
adoquery2.sql.clear;
adoquery2.sql.add('select * from 表二');
adoquery2.Prepare;
adoquery2.Open;
while not adoquery2.Eof do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from 表一 where 姓名='''+adoquery2.fieldbyname("姓名").asString+'''');
adoquery1.prepare;
adoquery1.open;
if adoquery1.eof then
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('insert into 表一 values ');
adoquery1.sql.add('(''+adoquery2.fieldbyname("姓名").asString+''',0,'+adoquery2.fieldbyname("月消费").asString+')');
adoquery1.prepare;
adoquery1.execsql;
end
else
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('update 表一 set 月消费=');
adoquery1.sql.add(adoquery2.fieldbyname("月消费").asString+' where 姓名=''+adoquery2.fieldbyname("姓名").asString+'''');
adoquery1.prepare;
adoquery1.execsql;
end;
adoquery2.Next;
end;
adoquery2.close;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from 表一');
adoquery1.open;
6 楼
xiulin [专家分:200] 发布于 2006-05-31 18:06:00
老天太复杂了吧!通过移动指针好像比较容易解决!
7 楼
sxd099 [专家分:220] 发布于 2006-05-31 18:13:00
这是简单的,也是实用的,程序只要正确、易懂,不求把sql搞得很复杂。
8 楼
xiulin [专家分:200] 发布于 2006-05-31 18:21:00
我想出一法,代码不长,今日不空,下次公布,敬请大家批评指正
9 楼
sxd099 [专家分:220] 发布于 2006-05-31 18:47:00
期待...
10 楼
xiulin [专家分:200] 发布于 2006-06-01 17:28:00
var
fee,xm,sqlstr :string;
begin
adodataset1.Close;
adodataset1.CommandText:='select * from 表二';
adodataset1.Open;
if adodataset1.recordset.recordcount>0 then
begin
while not adodataset1.eof do
begin
fee:=floattostr(adodataset1.fieldbyname('月消费').ascurrency);
xm:=adodataset1.fieldbyname('姓名').asstring;
sqlstr:='update 表一 set 月消费='''+fee+''' where 姓名='''+xm+''' ';
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.Add(sqlstr);
adoquery1.execsql;
adodataset1.Next;
end;
end;
我来回复