rt,怎么在delphi同一界面下显示不同报表的内容?
比如我有表a(id,姓名,性别)
表b(id,年龄),
给用户一个combobox,选择要查看的表a或b
选a查看a表内容,选b查看b表内容
需要怎么做好一些?
谢谢各位

解决方案 »

  1.   

    adoquery.sql 动态赋值。就可以了。不要在设计器指定。。运行期根据用户的选择动态生成。
      

  2.   

    动态给数据集赋SQL.
    看你给出来的例子,怎么觉得这两个表应该显示在一个报表中呢,用关联查询就行了.
      

  3.   


    query和DBgrid动态赋值也可以用两个DBgrid,选查看什么,就将对应的DBgrid的Visible设为True
      

  4.   

    用户选择combobox时,选择要查看的表a或b时,动态赋值给你的显示控件。选a赋值a表内容,选b赋值b表内容
      

  5.   

    一个query和一个dbgrid就可以解决的嘛,就查询语句换一下。。判断下嘛,if......
      

  6.   

    在commbox的onchange事件里面根据下拉值重新到数据库查询
      

  7.   

    {rt,怎么在delphi同一界面下显示不同报表的内容?
    比如我有表a(id,姓名,性别)
    表b(id,年龄),
    给用户一个 combobox,选择要查看的表a或b
    选a查看a表内容,选b查看b表内容
    需要怎么做好一些?
    谢谢各位假设是通过 点击按钮Button1来查询  ADOQuery1 关联数据
    }
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       if ADOQuery1.Active then
       ADOQuery1.Close;
       ADOQuery1.SQL.Clear;
       ADOQuery1.SQL.Text:=' '  ;
       if  combobox1.ItemIndex=0 then //a
       ADOQuery1.SQL.Text:=' select * from a'
       else if  combobox1.ItemIndex=1 then //b
       ADOQuery1.SQL.Text:=' select * from b' ;
       ADOQuery1.Open;
    end;
      

  8.   

    dbgrid的列名不一样啊,如何展示呢?
    如果我有10个表,写10个dbgrid?每次9个不显示?
      

  9.   

    將兩個表通過ID Join起來:select a.id,姓名,性别,年龄 from a
    inner join b
    on a.id = b.id
    DBGrid包含a,b的所有字段Button1的onclick事件中判断combobox是a还是b,将DBGrid中b,a的字段的Visible设为falseDBGrid1.Columns.Items[i].Visible := false;
      

  10.   

    可以用listview显示。在combobox的change事件中写
    var
      temp:TListItem;
    listview1.items.clear;
    if combobox1.ItemIndex=0 then
    begin 
      ssql:='select * from a ';
    end
    else if combobox1.ItemIndex=1 then
    begin
      ssql:='select * from 6 ';end;
    with adoquery1 do
    begin
      close;
      sql.clear;
      sql.add(ssql);
      open;
      while not eof do
      begin
        temp:=listview1.items.add;
        if combobox1.ItemIndex=0 then
        begin
          temp.caption:=fieldbyname('id').asstring;
          temp.SubItems.Add(fieldbyname('name').asstring);
          temp.SubItems.Add(fieldbyname('sex').asstring);
        end
        else if combobox1.ItemIndex=1 then
        begin
          temp.caption:=fieldbyname('id').asstring;
          temp.SubItems.Add(fieldbyname('age').asstring);    end;
        next;
      end;
    end;
      

  11.   

    可以用listview显示。在combobox的change事件中写
    var
      temp:TListItem;
    listview1.items.clear;
    if combobox1.ItemIndex=0 then
    begin  
      ssql:='select * from a ';
    end
    else if combobox1.ItemIndex=1 then
    begin
      ssql:='select * from b ';end;
    with adoquery1 do
    begin
      close;
      sql.clear;
      sql.add(ssql);
      open;
      while not eof do
      begin
        temp:=listview1.items.add;
        if combobox1.ItemIndex=0 then
        begin
          temp.caption:=fieldbyname('id').asstring;
          temp.SubItems.Add(fieldbyname('name').asstring);
          temp.SubItems.Add(fieldbyname('sex').asstring);
        end
        else if combobox1.ItemIndex=1 then
        begin
          temp.caption:=fieldbyname('id').asstring;
          temp.SubItems.Add(fieldbyname('age').asstring);    end;
        next;
      end;
    end;
      

  12.   

    如果你是想在DBGrid中显示这二个表的内容,那可以设置2个记录集,在combobox的选择事件中根据不同条件,将对应此表的DataSource进行重新定值即可显示不同的内容。
      

  13.   


     有10个表 就用10个IF  或者CASE什么的 
      

  14.   


    with ADOQuery1 do
      begin
        Close;
        SQL.Text := 'select top 1 * from '+ComboBox1.Text+' where 1 = 1';
        Open;
      end;