2015-06-22 47 views
-1

好的,所以我一直在這裏查找幾天(和其他一些網站),而我已經修改我的代碼很好找到一個解決方案,它仍然不起作用。我需要幫助設置VBA函數中的報表的RecordSource

我有四個source查詢,我想將我的報告的記錄源設置爲基於以不同形式選擇的選項的四個查詢之一。但無論如何,功能如下:

Function PrintMod() 

    DoCmd.OpenReport "PrntRep", acViewPreview 

    Dim Source As String 
    If Forms![Search Form]!Subform1.SourceObject = "Query.SearchQuery" Then 
     Source = "SELECT * FROM SearchQuery" 
    ElseIf Forms![Search Form]!Subform1.SourceObject = "Query.Part Number Query" Then 
     Source = "SELECT * FROM [Part Number Query]" 
    ElseIf Forms![Search Form]!Subform1.SourceObject = "Query.Keyword Query" Then 
     Source = "SELECT * FROM [Keyword Query]" 
    ElseIf Forms![Search Form]!Subform1.SourceObject = "Query.ROP Query" Then 
     Source = "SELECT * FROM [ROP Query]" 
    Else 
     Source = "SELECT * FROM Inventory" 
    End If 

    CurrentDb.QueryDefs("ReportSource").SQL = Source 


End Function 

什麼它應該做的是開放的PrntRep報告,設置Source變量,然後設置報表的記錄源。

+1

你的描述聽起來,但代碼更改名爲* ReportSource *保存查詢的SQL屬性。你有什麼作爲報告的記錄來源?當代碼不起作用時,會發生什麼情況?有錯誤嗎?如果不是,請解釋它的作用和你想要做的之間的區別。 – HansUp

+0

我意識到在發佈此內容後大約一分鐘,但是離線了一下。我自從設置記錄源到ReportSource查詢就像我的意思,並應用下面建議的修復,我已經得到它的工作。謝謝 – santh821

回答

1

您需要洗牌的順序:像你想改變報表的記錄源屬性

Function PrintMod() 

    Dim Source As String 

    Select Case Forms![Search Form]!Subform1.SourceObject 
     Case "Query.SearchQuery" 
      Source = "SELECT * FROM SearchQuery" 
     Case "Query.Part Number Query" 
      Source = "SELECT * FROM [Part Number Query]" 
     Case "Query.Keyword Query" 
      Source = "SELECT * FROM [Keyword Query]" 
     Case "Query.ROP Query" 
      Source = "SELECT * FROM [ROP Query]" 
     Case Else 
      Source = "SELECT * FROM Inventory" 
    End Select 

    CurrentDb.QueryDefs("ReportSource").SQL = Source 

    DoCmd.OpenReport "PrntRep", acViewPreview 

End Function 
+0

有了這個,我意識到我犯了一個愚蠢的錯誤,我解決了這個問題。我也沒有設置報告的記錄來源。謝謝。 – santh821