回 帖 发 新 帖 刷新版面

主题:绝望求救!!!

各位哥哥好:
    请问如何把表一的每一条记录复制到表二?
    [em1][em10][em8]

回复列表 (共12个回复)

沙发


adoquery1.sql.add('insert into 表二(写表中所有字段名) ');
adoquery1.sql.add('select * from 表一');

板凳

设有表一、表二如下:

表一                            表二
         
姓名   月收入   月消费              姓名  月消费
张三   18888      0                 张三   5000
李四   1888       0            
王五   188        0


如何将表二张三的月消费记录加入表一,形成下表
姓名 月收入  月消费
张三  18888   5000
李四  1888     0
王王  188      0



3 楼

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 楼

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 楼

改成这样看看:
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 楼

老天太复杂了吧!通过移动指针好像比较容易解决!

7 楼

这是简单的,也是实用的,程序只要正确、易懂,不求把sql搞得很复杂。

8 楼

我想出一法,代码不长,今日不空,下次公布,敬请大家批评指正

9 楼

期待...

10 楼

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;

我来回复

您尚未登录,请登录后再回复。点此登录或注册