select 国家,min(地区) from tb group by 国家 union select '',地区 from tb where 国家 + '-' + 地区 not in (select b.国家 + '-' + 地区 from (select 国家,min(地区) from tb group by 国家) b ) order by 国家
如果是crystal report就用子报表
以下是对ACCESS表操作 Set db = Workspaces(0).OpenDatabase("d:\temp\db1.mdb") Set rb = db.OpenRecordset("select 国家,地区 from 表1 order by 国家", dbOpenDynaset)
rb.MoveFirst k = 1 Do While Not rb.EOF flag = False strTmp = rb!国家 strTmp1 = rb!地区 rb.MoveNext k = k + 1 strTmp2 = rb!国家 strTmp3 = rb!地区 If strTmp = strTmp2 Then Do While Not strTmp <> strTmp2 rb.edit rb!国家 = " " rb.Update rb.MoveNext k = k + 1 strTmp2 = rb!国家 flag = True Loop End If If flag = flase Then k = k + 1 rb.MoveNext End If Loop
我用的是activereport,谁能给讲讲子报表的功能和用法?谢谢
我会了,其实特简单,放在groupheader里就行了
你在传SQL语句的时候就加一个DISTINCT就可以了比如说:select distinct * from 表名
这个使用SQL语句是不能够解决的。
activereport没问题,但是我不知道如何在datareport中做到
谁说用SQL语句不能解决,你运行我这个试试: select 国家,min(地区) from tb group by 国家 union select '',地区 from tb where 国家 + '-' + 地区 not in (select b.国家 + '-' + 地区 from (select 国家,min(地区) from tb group by 国家) b ) order by 国家
union
select '',地区 from tb
where 国家 + '-' + 地区 not in
(select b.国家 + '-' + 地区 from (select 国家,min(地区) from tb group by 国家) b )
order by 国家
Set db = Workspaces(0).OpenDatabase("d:\temp\db1.mdb")
Set rb = db.OpenRecordset("select 国家,地区 from 表1 order by 国家", dbOpenDynaset)
rb.MoveFirst
k = 1
Do While Not rb.EOF
flag = False
strTmp = rb!国家
strTmp1 = rb!地区
rb.MoveNext
k = k + 1
strTmp2 = rb!国家
strTmp3 = rb!地区
If strTmp = strTmp2 Then
Do While Not strTmp <> strTmp2
rb.edit
rb!国家 = " "
rb.Update
rb.MoveNext
k = k + 1
strTmp2 = rb!国家
flag = True
Loop
End If
If flag = flase Then
k = k + 1
rb.MoveNext
End If
Loop
select 国家,min(地区) from tb group by 国家
union
select '',地区 from tb
where 国家 + '-' + 地区 not in
(select b.国家 + '-' + 地区 from (select 国家,min(地区) from tb group by 国家) b )
order by 国家