表A:表结构
cName:名称
cNum:数量
cWeight:重量
cOrigin:来源
cUnit:单位
cDate:日期表B:表记录
cName cNum cWeight cOrigin cUnit cDate
菠萝  3     160     海南   箱    2008-7-1  
香蕉  4     200     海南   箱    2008-7-2
咖啡  10    180     海南   箱    2008-7-2
DBGrid的标题是一个动态从A表中显示的。
DBGrid的具体表数据也是动态从表B中显示的方法:可以用查询语句将2个表组合。求其他办法。如何在DBGrid中,标题显示一个表。DBGrid列内容显示另一个表。
{动态显示标题
    with dbgrdh1 do
    begin
        Columns.Clear;   
        for   i:=0   to   ADOQuery1.FieldCount-1   do   
            with   Columns.Add   do   
            begin   
                FieldName:=ADOQuery1.Fields[i].FieldName;   
            end;
    end;
}
动态显示另一个表内容???

解决方案 »

  1.   


    begin
      //ADOQuery1取表头数据记录,已打开
      //ADOQuery2取列数据记录,已打开
      DBGrid1.Columns.Clear;
      while not ADOQuery1.Eof do
      begin
        with DBGrid1.Columns.Add do
        begin
          Caption必须和ADOQuery2的字段名对应
          Caption := ADOQuery1.Fields[i].AsString;
          FieldName := ADOQuery2.FieldByName(Caption).AsString;
        end;
        ADOQuery1.Next;
      end;
    end;
      

  2.   

    忽然发现, 只需要把表A设计好就行了
    字段名      标题名
    cName     名称 
    cNum      数量 
    cWeight   重量 
    cOrigin   来源 
    cUnit     单位 
    cDate     日期begin
      //ADOQuery1取表头数据记录,已打开
      //ADOQuery2取列数据记录,已打开
      DBGrid1.Columns.Clear;
      while not ADOQuery1.Eof do
      begin
        with DBGrid1.Columns.Add do
        begin
           Caption := ADOQuery1.FieldByName('字段名').AsString;
          FieldName := ADOQuery1.FieldByName('标题名').AsString;
        end;
        ADOQuery1.Next;
      end;
    end; 
      

  3.   

    to bdmh
    谢谢,还是不行! 
    这样只能显示标题了。表B的具体记录没有啊。最后显示结果:名称  数量  重量   来源  单位   日期
    菠萝  3    160    海南  箱    2008-7-1  
    香蕉  4    200    海南  箱    2008-7-2 
    咖啡  10   180    海南  箱    2008-7-2 
      

  4.   

    to starluck
    因为表A:表结构是用户可以修改的(增加,修改字段)
    表B录入数据是根据表A来的。显示表B title时肯定需要是中文字段。2个表都是动态的
      

  5.   

    全select出来,爱显示啥显示啥,全动态的,你也不知道哪个是哪啊
      

  6.   

    表A:表结构 
    cName:名称 
    cNum:数量 
    cWeight:重量 
    cOrigin:来源 
    cUnit:单位 
    cDate:日期 表B:
    KEYID,ID,字段名,值
    1     1   cName  菠罗
    2     1   cNum   3
    3     1   cweight 160
    4     1   corigin 海南
    5     1   cunit   箱
    6     1   cdate   2008-7-1然后根据表名生成列转行的临时表,再从表B中根据对应将其数据生成到临时表中。比较麻烦呀
      

  7.   

    不要用DBGrid1控件,它是数据感应控件,用StringGrid肯定行。