我做的一个添加用户的程序,其中EDIT是动态生成的,添加第一个用户的时候不会出错,顺利的注册用户同时给用户单独建立一个收件箱(一个单独以“用户名+收件箱”命名的表),添加完所有EDIT都清空(EDIT.text:='')。但是在继续添加的时候就出错了:前面根据EDIT.text里的值来判断用户名是否重复这里是正常的,能准确的判定;但是在生成用户的收件箱的时候却发现出错,原因是这里建立的收件箱还是以上一个用户名来命名的收件箱!求解!
判定用户名重复的程序如下:
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.sql.add('select * from 用户 where name=' +quotedstr(edit1.Text)) ;   
  ADOQuery2.Open;
  if ADOQuery2.RecordCount<>0 then
  begin
  messagebeep(0); //报警声
  MessageDlg('帐号已经被注册,请更换!',mtWarning,[mbok],0);
  exit;
  end注册收件箱的程序如下:
  ////////////////////////为用户创建收件箱
  ADOQuery1.close;
  ADOQuery1.sql.clear;
  ADOQuery1.SQL.add('Create Table "'+TRIM(edit1.Text)+'收信箱'+'" (ID bigint primary key identity,发信人 char(10),发信内容 varchar(5000),时间 datetime,已读 char(4))');
  ADOQuery1.ExecSQL;  ////////////////////////为用户创建发件箱
  ADOQuery1.close;
  ADOQuery1.sql.clear;
  ADOQuery1.SQL.add('Create Table "'+TRIM(edit1.Text)+'发信箱'+'" (ID bigint primary key identity,收信人 char(10),发信内容 varchar(5000),时间 datetime)');
  ADOQuery1.ExecSQL;错误如上图,提示出错那里的EDIT的值是我上一个添加的用户名,可是实际上这次我注册的用户名不是那个

解决方案 »

  1.   

    先查查数据库中是不是真有“gdf发信箱"的表,或其他的数据库对象。
      

  2.   

    的确是有的,因为那个gdf是我选前添加的用户名,就是说第一次添加的时候程序一切正常,就是第二次到创建发信箱的时候EDIT记录的不是第二次输入的值,而是第一次输入的
      

  3.   

    其他代码应该没什么问题,因为第一次添加的时候都很正常,很顺利的运行完。就是在继续添加的时候EDIT记录的还是第一次添加时候输入的值,而不是第二次输入的值