create   table   t1(A   varchar(10),B   varchar(50),C   varchar(50),D   int,E   varchar(50),F   varchar(50),G   varchar(50)   )       
                                      insert   t1   select       
'aa ', 'aa001 ', 'aa100 ',100   , 'SS ', 'DD ', 'FF '       insert   t1   select       
'aa ', 'aa101 ', 'aa200 ',100, 'FF ', 'GG ', 'DD '     insert   t1   select   
'cc ', 'cc101 ', 'cc200 ',100, 'FF ', 'GG ', 'DD '   insert   t1   select   
'aa ', 'aa201 ', 'aa300 ',100, 'FF ', 'GG ', 'DD '   insert   t1   select   
'cc ', 'cc201 ', 'cc300 ',100, 'FF ', 'GG ', 'DD ' 
  create   table   t2   (A   varchar(10),B   varchar(50),C   varchar(50),D   int   )         
                                          insert   t2   select       
'aa ', 'aa001 ', 'aa200 ',200   insert   t2   select     
'cc ', 'cc101 ', 'cc200 ',100   
我用的是VB6.0 
怎么写一个程序在MSHFlexGrid或DataGrid显示这样结果: 
    A,B,C,D 
+   aa,aa001,aa200,200   't2的内容 
+   cc,cc101,cc200,100 
... 
'+ '这个符号下面的内容是t1的符合t2条件的内容: 
点击aa的 '+ '显示的内容是: 
aa,aa001,aa100,100,SS,DD,FF 
aa,aa101,aa200,100,FF,GG,DD 
点击cc的 '+ '显示的内容是: 
cc,cc101,cc200,100,FF,GG,DD 
这样的实现怎么实现啊?/求救啊!!!

解决方案 »

  1.   

    TDBRidSHAPE { select a,b,c,d from ##t1 } APPEND ({ select a,b,c,d from ##t2 } RELATE [a] TO [a] ) AS Detail
      

  2.   

    旁通法:
    你做兩個查詢,放兩個GRID控件
    第一個GRID正常顯示在Form上,第二個GRID先隱藏起來
    第一個查詢的內容顯示在第一個GRID上,並在行首畫+號
    前點擊行首時去執行第二個查詢,並把結果顯示在第二個GRID上,且置第二個GRID為可見,還要記得調整顯示的位置
    有一點難道,但可以實現
      

  3.   

    用3楼的shape分层语句就行了,不过绑定时用控件MSHflexgrid
      

  4.   

    SHAPE {select * from t2} APPEND ({select * from t1} AS chapter RELATE a TO a)
      

  5.   

    如果想实现复杂灵活的报表,下载个formula one 6.0控件学习一下吧,甚至可以做到用户都可以自己定义报表.
      

  6.   

    SHAPE   {   select   a,b,c,d   from   ##t1   }   APPEND   ({   select   a,b,c,d   from   ##t2   }   RELATE   [a]   TO   [a]   )   AS   Detail解释?MSDN都有,我复出来.显示层次结构记录集
     MSHFlexGrid 控件的一个主要特性是它能显示层次结构记录集—以层次结构方式显示的关系表。创建层次结构记录集的最容易的方法是使用数据环境设计器并把 MSHFlexGrid 控件的 DataSource 属性赋给数据环境。您也可以用 Shape 命令作为 ADO Data Control 的 RecordSource 在代码中创建层次结构记录,如下面的示例:' 创建 ConnectionString.
    Dim strCn As String
    strCn = "Provider=MSDataShape.1;Data Source=Nwind;" & _
    "Connect Timeout=15;Data Provider=MSDASQL"' 创建 Shape 命令.
    Dim strSh As String
    strSh = "SHAPE {SELECT * FROM `Customers`}  AS Customers " & _
    "APPEND ({SELECT * FROM `Orders`}  AS Orders RELATE " & _
    "CustomerID TO CustomerID) AS Orders"' 把 ConnectionString 赋给 ADO Data Control 的
    ' ConnectionString 属性, Shape 命令以及
    ' 控件的 RecordSource 属性.
    With Adodc1
       .ConnectionString = strCn
       .RecordSource = strSh
    End With
    ' 把 HflexGrid 控件的 DataSource 属性设置到 
    ' ADO Data 控件。
    Set HFlexGrid1.DataSource = Adodc1
      

  7.   

    SHAPE       {       select       a,b,c,d       from       ##t1       }       APPEND       ({       select       a,b,c,d       from       ##t2       }       RELATE       [a]       TO       [a]       )       AS       Detail 分层
      

  8.   

    一定是要在+号下面显示吗?
    如果不是的话,可以用子报表的形式或者楼上的有建议用水晶报表的比较方便。这是vb类的,但是vb里面好像没有这样直接在下面显示的控件,除了那个treeview。
    如果可以的话,放两个listview控件,上面的一个显示t2的值,点击其中一条记录后将t1中满足某些条件的记录显示在下面的listview中。