我要在俩个COMBOBOX下拉列表中显示俩个表中的俩个字段值,可是我的程序却在下拉列表中显示重复数据值,请帮我看看程序指出错误,写出正确的代码,谢谢。
procedure Tguest_wel.FormCreate(Sender: TObject);
var
   pdata:pFieldlist;
begin
      try
      with DataModule1.ShareQuery do
      begin
              close;                       //FIELDNAME
              sql.text:='select *   from R_Standard,dept';
              open ;
              CR_Standard.Items.Clear;
              CR_Dept.Items.Clear;
      end;
  
      while not (DataModule1.ShareQuery.Eof) do
      begin
              new(pdata);
              pdata.ID:=DataModule1.ShareQuery.fieldbyname('rs_id').AsString;
              pdata.Caption:=DataModule1.ShareQuery.fieldbyname('Rs_Standard').AsString;
              CR_Standard.Items.AddObject(DataModule1.ShareQuery.fieldbyname('Rs_Standard').AsString,tobject(pdata));              pdata.ID:=DataModule1.ShareQuery.fieldbyname('Dept_Id').AsString;
              pdata.Caption:=DataModule1.ShareQuery.fieldbyname('Dept_Name').AsString;
              CR_Dept.Items.AddObject(DataModule1.ShareQuery.fieldbyname('Dept_Name').AsString,tobject(pdata));
              DataModule1.ShareQuery.Next;
      end;//while
      finally            DataModule1.ShareQuery.Close;   end;

解决方案 »

  1.   

    select distinct xxx from ...
    combobox1.items.add(query1.fieldbyname('').asstring);
      

  2.   

    distinct的方法我试过了,但是不管用。
      

  3.   


          try
          with DataModule1.ShareQuery do
          begin
                  close;                       //FIELDNAME
                  sql.text:='select *   from R_Standard';
                  open ;
                  CR_Standard.Items.Clear;
         end;
      
          while not (DataModule1.ShareQuery.Eof) do
          begin
                  new(pdata);
                  pdata.ID:=DataModule1.ShareQuery.fieldbyname('rs_id').AsString;
                  pdata.Caption:=DataModule1.ShareQuery.fieldbyname('Rs_Standard').AsString;
                  CR_Standard.Items.AddObject(DataModule1.ShareQuery.fieldbyname('Rs_Standard').AsString,tobject(pdata));
            DataModule1.ShareQuery.Next;
          end;//while
          finally
                DataModule1.ShareQuery.Close;
      

  4.   

    还有这个呢!begin
          try
          with DataModule1.ShareQuery do
          begin
                  close;                       //FIELDNAME
                  sql.text:='select *   from dept';
                  open ;
                  CR_Dept.Items.Clear;
          end;
      
          while not (DataModule1.ShareQuery.Eof) do
          begin
                  new(pdata);
                  pdata.ID:=DataModule1.ShareQuery.fieldbyname('Dept_Id').AsString;
                  pdata.Caption:=DataModule1.ShareQuery.fieldbyname('Dept_Name').AsString;
                  CR_Dept.Items.AddObject(DataModule1.ShareQuery.fieldbyname('Dept_Name').AsString,tobject(pdata));
                  DataModule1.ShareQuery.Next;
          end;//while
          finally            DataModule1.ShareQuery.Close;   end;
      

  5.   

    楼上,你的意思是这样把,但是我运行的时候程序不正确procedure Tguest_wel.FormCreate(Sender: TObject);
    var
       pdata:pFieldlist;
    begin
          try
          with DataModule1.ShareQuery do
          begin
                  close;                       //FIELDNAME
                  sql.text:='select   *   from R_Standard';
                  open ;
                  CR_Standard.Items.Clear;
          end;//with
          //DataModule1.ADODEPT.first;
          while not (DataModule1.ShareQuery.Eof) do
          begin
                  new(pdata);
                  pdata.ID:=DataModule1.ShareQuery.fieldbyname('rs_id').AsString;
                  pdata.Caption:=DataModule1.ShareQuery.fieldbyname('Rs_Standard').AsString;
                  CR_Standard.Items.AddObject(DataModule1.ShareQuery.fieldbyname('Rs_Standard').AsString,tobject(pdata));
          end;//while
          finally            DataModule1.ShareQuery.Close;             try
          with DataModule1.ShareQuery do
          begin
                  close;                       //FIELDNAME
                  sql.text:='select   *   from dept';
                  open ;
                  CR_dept.Items.Clear;
          end;//with
          //DataModule1.ADODEPT.first;
          while not (DataModule1.ShareQuery.Eof) do
          begin
                  new(pdata);
                  pdata.ID:=DataModule1.ShareQuery.fieldbyname('dept_Id').AsString;
                  pdata.Caption:=DataModule1.ShareQuery.fieldbyname('dept_Name').AsString;
                  CR_Standard.Items.AddObject(DataModule1.ShareQuery.fieldbyname('dept_name').AsString,tobject(pdata));
          end;//while
          finally            DataModule1.ShareQuery.Close;
       end;//try