我在学习mysql的时候
想先把数据添加到一个临时的表中 xdf_lins  
全部数据添加完成后把xdf_lins的所有内容添加到xdf_list 这个表中我是这么写的过程,我这样写只能添加一条数据,不能完整把xdf_lins的表中的内容全部追加到
xdf_list中,我如果把 next 这句话注释掉可以添加一条 
但是如果把next这条语句加上 就保存如下图
求修改的代码 应该是next的位置写的位置 不对 求指正 感谢procedure TForm1.daorulins ;
var      /////导入临时表的内容
///  导入临时表的时候 不要忘了清空临时表
  i:integer;
  sname,stype,score,school,sdate,sre,iage:string;
begin
 with DataModule2.adoquery1 do
 begin
close;
sql.text:='select * from xdf_lins';  ///查询出来临时的表
open;while not eof do //循环
begin
 
  sname:=fieldByname('name').asstring ;
  iage:= fieldByname('age').asstring ;
  stype:=fieldByname('type').asstring ;
  score:=fieldByname('score').asstring ;
  school:=fieldByname('school').asstring ;
  sdate:= fieldByname('date').asstring ;
  sre:=fieldByname('re').asstring ;
  ///上面的代码得到了临时表的内容
  ///  下面是把内容添加到主表中
  close;
  sql.clear;
  sql.add('insert into xdf_list (name,age,type,score,school,date,re) values(:name,:age,:type,:score,:school,:date,:re)');
  parameters.paramByName('name').Value:=sname;
  parameters.paramByName('age').Value:=iage;
  parameters.paramByName('type').Value:= stype ;
  parameters.paramByName('score').Value:=score;
  parameters.paramByName('school').Value:=school;
  parameters.paramByName('date').Value:=sdate;
  parameters.paramByName('re').Value:=sre;
  try
  ExecSQL;
  finally
  Close;
 ///next ;
end;
///next;    next的位置不对
end;
end;
end;

解决方案 »

  1.   

     DataModule2.adoquery1 close;   
    sql.clear; 这个时候已经关闭了 DataModule2.adoquery1
    你需要用另外一个 DataModule2.adoquery2///上面的代码得到了临时表的内容   ///  下面是把内容添加到主表中   
    DataModule2.adoquery2.close;   
    DataModule2.adoquery2.sql.clear;   
    DataModule2.adoquery2.sql.add('insert into xdf_list (name,age,type,score,school,date,re) values(:name,:age,:type,:score,:school,:date,:re)');   DataModule2.adoquery2.parameters.paramByName('name').Value:=sname; 
    {以下依次类推}
     try  
    DataModule2.adoquery2.ExecSQL;   
    finally  DataModule2.adoquery2.Close; 
      

  2.   


    读取表的指针 往下移动这句话放在那里 就是 next ??
      

  3.   

    为什么我这里写了next 每次添加的数据还是第一行的数据?begin
    DataModule2.adoquery1.close;
    DataModule2.adoquery1.sql.text:='select * from xdf_lins';  ///查询出来临时的表
    DataModule2.adoquery1.open;
    while not DataModule2.adoquery1.eof do
    begin
      /////combobox2.items.add(fieldByname('uid').asstring);
      sname:=DataModule2.adoquery1.fieldByname('name').asstring ;
      iage:= DataModule2.adoquery1.fieldByname('age').asstring ;
      stype:=DataModule2.adoquery1.fieldByname('type').asstring ;
      score:=DataModule2.adoquery1.fieldByname('score').asstring ;
      school:=DataModule2.adoquery1.fieldByname('school').asstring ;
      sdate:= DataModule2.adoquery1.fieldByname('date').asstring ;
      sre:=DataModule2.adoquery1.fieldByname('re').asstring ;
      ///上面的代码得到了临时表的内容
      ///  下面是把内容添加到主表中
      DataModule2.adoquery1.next;
      DataModule2.adoquery2.close;
      DataModule2.adoquery2.sql.clear;
      DataModule2.adoquery2.sql.add('insert into xdf_list (name,age,type,score,school,date,re) values(:name,:age,:type,:score,:school,:date,:re)');
      DataModule2.adoquery2.parameters.paramByName('name').Value:=sname;
      DataModule2.adoquery2.parameters.paramByName('age').Value:=iage;
      DataModule2.adoquery2.parameters.paramByName('type').Value:= stype ;
      DataModule2.adoquery2.parameters.paramByName('score').Value:=score;
      DataModule2.adoquery2.parameters.paramByName('school').Value:=school;
      DataModule2.adoquery2.parameters.paramByName('date').Value:=sdate;
      DataModule2.adoquery2.parameters.paramByName('re').Value:=sre;
      try
      DataModule2.adoquery2.ExecSQL;
      finally