Disculpa la demora, tu sabes como son los usuarios, son lo mejores para halla excepciones.
Bueno, como te dije lo que considero debes hacer es llevar al SHAPE el where y no en el APPEND. Asi que tuve que mover tu codigo, copia y pegalo en el proyecto que me enviaste y una vez que lo pruebes y me captes lo que quise decir lo trasladas a tu proyecto. Este es el codigo:
Private Sub Command1_Click()
Dim rs As New ADODB.Recordset
Dim Query As String
Query = "SHAPE {SELECT c.idcat, c.nomcat FROM categoria c, producto p where c.idcat = p.idcat"
If Check1 Then
Query = Query & " AND idprod='" & Text1 & "' "
End If
Query = Query & "} AS LEVEL1 "
Query = Query & "APPEND ({SELECT idprod, nomprod, precio, idcat FROM producto "
Query = Query & "} AS LEVEL2 RELATE idcat TO idcat) AS LEVEL2"
Set rs = New ADODB.Recordset
rs.Open Query, cn
Set DataReport1.DataSource = rs
DataReport1.Show
End Sub
Lo he probado y va bien en la consulta con o sin el filtro. Espero haberte ayudado.