用了第一次提问时别人提供的代码,显出来了数据表username所有的字段内容,但是不能即时更新,比如我在pagecontrol组件的"员工数据"页面,向那个字段中添加了一些新数据,打开"设备数据"这个页面,这个combobox.item却不能更新,下面是上次提示时,别人写的打开"设备数据"页面时的代码procedure Tuser.PageControl1Change(Sender: TObject);
begin
  adoquery.Active:=true;
  adoquery.first;
  while not adoquery.eof do
  begin
    combobox1.Items.Add(adoquery.fieldbyname('username').AsString);
    adoquery.next;
  end;
end;
这是"员工数据"页面,添加至数据表的代码procedure Tuser.Button1Click(Sender: TObject);
begin
 adoquery1.Insert;
 if (Trim(edit2.Text)='') or  (Trim(edit3.Text)='')or (Trim(edit4.Text)='') or  (Trim(edit5.Text)='') then
   begin
   showmessage('信息不完整!');
   exit
   end
   else
   ADOQuery1userID.Value:=edit2.text;
   adoquery1username.value:=edit3.Text;
   adoquery1sex.Value:=edit4.text;
   adoquery1tel.Value:=edit5.Text;
   edit2.Text:='';
   edit3.text:='';
   edit4.Text:='';
   edit5.Text:='';
end;大家看看这是怎么回事呀?谢谢!

解决方案 »

  1.   

    如果你要即时刷新可以用以下方法
    1.数据控件
    2.重新遍历数据集
    3.在combox中添加记录时,保存记录的主键值,修改记录后,在combox中定位到主键值为所修改记录主键值的item,然后修改内容
    4.如果你是update更新数据的话,那你就重新遍历吧
      

  2.   

    不是人家的問題,這個地方你應該變通下。procedure Tuser.AddData;
    begin 
      combobox1.clear;
      adoquery.Active:=true;
      adoquery.first;
      while not adoquery.eof do
      begin
        combobox1.Items.Add(adoquery.fieldbyname('username').AsString);
        adoquery.next;
      end;
    end;procedure Tuser.PageControl1Change(Sender: TObject);
    begin
      AddData;
    end;
    procedure Tuser.Button1Click(Sender: TObject);
    begin
     adoquery1.Insert;
     if (Trim(edit2.Text)='') or  (Trim(edit3.Text)='')or (Trim(edit4.Text)='') or  (Trim(edit5.Text)='') then
       begin
       showmessage('信息不完整!');
       exit
       end
       else
       ADOQuery1userID.Value:=edit2.text;
       adoquery1username.value:=edit3.Text;
       adoquery1sex.Value:=edit4.text;
       adoquery1tel.Value:=edit5.Text;
       edit2.Text:='';
       edit3.text:='';
       edit4.Text:='';
       edit5.Text:='';  AddData;//  這裏要重新加載一次。
    end;
      

  3.   

    同意楼上的方法,你应该在"员工数据"页面加了新页面后,再重新加载一次combobox1.
      

  4.   

    procedure Tuser.AddData;
    begin 
      combobox1.clear;
      adoquery.Active:=false;
      adoquery.active := True;
      adoquery.requery;
      adoquery.first;
      while not adoquery.eof do
      begin
        combobox1.Items.Add(adoquery.fieldbyname('username').AsString);
        adoquery.next;
      end;
    end;procedure Tuser.PageControl1Change(Sender: TObject);
    begin
      AddData;
    end;
    procedure Tuser.Button1Click(Sender: TObject);
    begin
     adoquery1.Insert;
     if (Trim(edit2.Text)='') or  (Trim(edit3.Text)='')or (Trim(edit4.Text)='') or  (Trim(edit5.Text)='') then
       begin
       showmessage('信息不完整!');
       exit
       end
       else
       ADOQuery1userID.Value:=edit2.text;
       adoquery1username.value:=edit3.Text;
       adoquery1sex.Value:=edit4.text;
       adoquery1tel.Value:=edit5.Text;
       edit2.Text:='';
       edit3.text:='';
       edit4.Text:='';
       edit5.Text:='';  AddData;//  這裏要重新加載一次。
    end;
      

  5.   

    谢谢大哥,就缺少一个adoquery.requery;现在应该已经完美了!向各位大哥学习,从零出发!