VB中使用水晶报表,怎么记录会重复出现?
一、环境:
1. 数据库:有两个表,Order和OrderDetail,一条Order记录对应若干条OrderDetail记录;
2. 报表:以Order的ID作为Group,把OrderDetail的一些字段放在Detail的Section中;
3. VB:一个Designer,一个带有CRViewer的窗体,代码如下
Dim Report As New CrystalReport1
Dim oConn As New ADODB.Connection
Dim oRecordset As New ADODB.Recordset
Private Sub Form_Load()
Dim sql As String
oConn.ConnectionString = "DRIVER=SQL SERVER;SERVER=xxx;UID=sa;PWD=;DATABASE=abc"
oConn.Open
sql = "SELECT * FROM Order, OrderDetail " & _
"WHERE Order.ID = OrderDetail.OrderID AND " & _
"Order.ID = '2004050401'"
oRecordset.ActiveConnection = oConn
oRecordset.Open sql
Report.Database.SetDataSource oRecordset
Screen.MousePointer = vbHourglass
CRViewer91.ReportSource = Report
CRViewer91.ViewReport
Screen.MousePointer = vbDefault
End Sub
二、目的:想在程序中动态指定显示某张订单的内容。
三、现象:
1. 如果不用“Report.Database.SetDataSource oRecordset”这句的话,就显示全部订单的内容,是正确的;
2. 但用了上面那句企图限定某张订单的话,OrderDetail会重复出现!例如:
OrderID: 2004050401
ProductID: 001 ProductName: abc
ProductID: 002 ProductName: def
...
ProductID: 001 ProductName: abc
ProductID: 002 ProductName: def
...
ProductID: 001 ProductName: abc
ProductID: 002 ProductName: def
有多少条OrderDetail就重复多少次,真是 faint 啊!
请高手指教!