# Per VBA Daten an Bericht weitergeben und Vorschau öffnen!



## fonds (8. Oktober 2008)

Habe folgenden VBA-Code und möchte dass nicht die Abfrage anzeigt wird, sondern dass die Daten an einen Bericht weitergegeben werden und dieser in der Vorschau erscheint.
Wie kann ich das Problem lösen? Vielen Dank!

Option Compare Database

Option Explicit

Private Sub Befehl0_Click()
  Dim strSQL As String
  Dim strC1 As String, strC2 As String
  Dim Anz&, I&, tmp As Variant

  strSQL = "SELECT TOP 10 [Sales Zahlen].Fondsname, Sum([Sales Zahlen].AuM_) AS SummevonAuM_, Sum([Sales Zahlen].NetflowsMTD) AS SummevonNetflowsMTD, Sum([Sales Zahlen].NetflowsYTD) AS SummevonNetflowsYTD FROM [Sales Zahlen]"
  With Me.Liste0
    Anz = .ItemsSelected.Count
    If Anz <> 0 And Anz < .ListCount Then
        For Each tmp In .ItemsSelected
          strC1 = strC1 & "Country='" & .ItemData(tmp) & "' or "
        Next tmp
        strC1 = Left$(strC1, Len(strC1) - 4)
    End If
  End With
  With Me.Liste2
    Anz = .ItemsSelected.Count
    If Anz <> 0 And Anz < .ListCount Then
        For Each tmp In .ItemsSelected
          strC2 = strC2 & "Konzern='" & .ItemData(tmp) & "' or "
        Next tmp
        strC2 = Left$(strC2, Len(strC2) - 4)
    End If
  End With
  If strC1 <> "" And strC2 <> "" Then
    strSQL = strSQL & " where (" & strC1 & ") and (" & strC2 & ")"
  ElseIf strC1 <> "" Then
    strSQL = strSQL & " where " & strC1
  ElseIf strC2 <> "" Then
    strSQL = strSQL & " where " & strC2
  End If
  strSQL = strSQL & " GROUP BY [Sales Zahlen].Fondsname ORDER BY Sum([Sales Zahlen].AuM_) DESC;"
  'MsgBox strSQL
  CurrentDb.QueryDefs("Abfrage1").SQL = strSQL
  DoCmd.OpenQuery "Abfrage1", acViewNormal

End Sub


----------



## RavelinePower (8. Oktober 2008)

Hy Fonds

Viel Code  damit kann ich eh nichts anfangen, brauche dazu immer was zu sehen um zu drehen.

Mein Tipp:

DoCmd.OpenQuery "Abfrage1", acViewNormal  sollte man umändern in Öffne Bericht.(siehe unten)

Der Bericht und dessen Inhalt hat ja die Daten der Abfrage 1 und somit müsste es klappen.Und man kann dies im Code (siehe unten) nochmals angeben. 

DoCmd.OpenReport "DEIN BERICHT NAME ", acPreview, "Abfrage1", ""

Greatz RavelinePower


----------



## fonds (8. Oktober 2008)

Danke für deine schnelle Hilfe! Werde ich morgen im Büro gleich versuchen.


----------



## fonds (9. Oktober 2008)

Hat geklappt. Wenn ich nun versuche, eine weitere Abfage zu intergrieren mit folgendem Ansatz, bekomme ich Probleme. Wie kann ich weitere Abfrage am sinnvollsten hinzufügen? Alle Abfragen werden über Unterberichte dann in einen Masterbericht zusammengefügt! Besten Dank im Voraus?

Option Compare Database

Option Explicit

Private Sub Befehl0_Click()
Dim strSQL As String
Dim strC1 As String, strC2 As String
Dim Anz&, I&, tmp As Variant

strSQL = "SELECT TOP 10 [Sales Zahlen].Fondsname, Sum([Sales Zahlen].AuM_) AS SummevonAuM_, Sum([Sales Zahlen].NetflowsMTD) AS SummevonNetflowsMTD, Sum([Sales Zahlen].NetflowsYTD) AS SummevonNetflowsYTD FROM [Sales Zahlen]"
With Me.Liste0
Anz = .ItemsSelected.Count
If Anz <> 0 And Anz < .ListCount Then
For Each tmp In .ItemsSelected
strC1 = strC1 & "Country='" & .ItemData(tmp) & "' or "
Next tmp
strC1 = Left$(strC1, Len(strC1) - 4)
End If
End With
With Me.Liste2
Anz = .ItemsSelected.Count
If Anz <> 0 And Anz < .ListCount Then
For Each tmp In .ItemsSelected
strC2 = strC2 & "Konzern='" & .ItemData(tmp) & "' or "
Next tmp
strC2 = Left$(strC2, Len(strC2) - 4)
End If
End With
If strC1 <> "" And strC2 <> "" Then
strSQL = strSQL & " where (" & strC1 & ") and (" & strC2 & ")"
ElseIf strC1 <> "" Then
strSQL = strSQL & " where " & strC1
ElseIf strC2 <> "" Then
strSQL = strSQL & " where " & strC2
End If
strSQL = strSQL & " GROUP BY [Sales Zahlen].Fondsname ORDER BY Sum([Sales Zahlen].AuM_) DESC;"
'MsgBox strSQL
CurrentDb.QueryDefs("Abfrage1").SQL = strSQL



strSQL = "SELECT TOP 10 [Sales Zahlen].Fondsname, Sum([Sales Zahlen].AuM_) AS SummevonAuM_, Sum([Sales Zahlen].NetflowsMTD) AS SummevonNetflowsMTD, Sum([Sales Zahlen].NetflowsYTD) AS SummevonNetflowsYTD FROM [Sales Zahlen]"
With Me.Liste0
Anz = .ItemsSelected.Count
If Anz <> 0 And Anz < .ListCount Then
For Each tmp In .ItemsSelected
strC1 = strC1 & "Country='" & .ItemData(tmp) & "' or "
Next tmp
strC1 = Left$(strC1, Len(strC1) - 4)
End If
End With
With Me.Liste2
Anz = .ItemsSelected.Count
If Anz <> 0 And Anz < .ListCount Then
For Each tmp In .ItemsSelected
strC2 = strC2 & "Konzern='" & .ItemData(tmp) & "' or "
Next tmp
strC2 = Left$(strC2, Len(strC2) - 4)
End If
End With
If strC1 <> "" And strC2 <> "" Then
strSQL = strSQL & " where (" & strC1 & ") and (" & strC2 & ")"
ElseIf strC1 <> "" Then
strSQL = strSQL & " where " & strC1
ElseIf strC2 <> "" Then
strSQL = strSQL & " where " & strC2
End If
strSQL = strSQL & " GROUP BY [Sales Zahlen].Fondsname ORDER BY Sum([Sales Zahlen].NetflowsMTD) DESC;"
'MsgBox strSQL
CurrentDb.QueryDefs("Abfrage2").SQL = strSQL



DoCmd.OpenReport "Master", acViewPreview


End Sub


----------

