2017-11-02 11 views
0

Ich habe ein Unterformular Datenblatt, dessen RecordSource variabel sein kann. Meine Datenbank erstellt eine SQL-Abfrage basierend auf Benutzerauswahlen (eine andere Sammlung von Spalten mit jeder Abfrage). Die resultierende Abfrage soll die RecordSource für ein Datenblatt in einem Unterformular sein. (Nur-Lese-Ansicht für Benutzer)MS Access: Unterformular Datenblatt - Variable RecordSources

Problem:

Die verschiedenen Anfragen produzieren die gewünschten Ergebnisse bei der Ausführung auf ihrem eigenen
eine resultierende Abfrage Einstellung, die als Datenherkunft Datenblatt kein Ergebnis produziert (keine Spalten/Zeilen)

Ich vermute, dass ich die Attribute der Abfrage in das Unterformular einfügen muss, um irgendwelche Ergebnisse zu sehen (ähnlich wie "Add Existing Fields" in der Menüleiste).

Frage:

Alle Zeiger mir Platz eins zu bekommen?

Vielen Dank! Hier

Antwort

1

Entfernen Sie das Datenblatt Formular aus Ihrem Unterformularobjekt und lassen Sie das Quellobjekt Eigenschaft leer. Erstellen Sie eine neue Abfrage (sql spielt keine Rolle) und nennen Sie es qryTemp (oder was auch immer Sie mögen). Wenn Sie dann die Quelle für das Unterformular festlegen möchten, verwenden Sie diese

CurrentDb.QueryDefs("qryTemp").SQL = "<your new sql here>" 
<yoursubformobject>.SourceObject = "Query.qryTemp". 
+0

AVG - Schön und einfach - danke! –

0

ist ein Beispiel verwende ich ein Unterformular zu füllen:

Private Sub cmdFind_DisplayName_Click() 
    Dim dbs As Database, rstPatient As Recordset 
    Dim txtDisplayName, strQuote As String 
    strQuote = Chr$(34) 
    On Error GoTo ErrorHandler 

    Me.OrderBy = "DISPLAYNAME" 
    Me.OrderByOn = True 

    Set dbs = CurrentDb 
    Set rstPatient = Me.RecordsetClone 
    txtDisplayName = Trim(InputBox("Please Enter Patient Name ", "Patient Find By Name")) 
    txtDisplayName = UCase(txtDisplayName) & "*" 
    If IsNull(txtDisplayName) Then 
     MsgBox ("No Patient Name Entered - Please Enter a Valid Patient Name") 
    Else 
     rstPatient.FindFirst "[DISPLAYNAME] Like " & strQuote & txtDisplayName & strQuote 
     If Not (rstPatient.NoMatch) Then 
      Me.Bookmark = rstPatient.Bookmark 
      Me.Refresh 
     Else 
      MsgBox ("Patient Not Found - Please Enter a New Patient Name") 
     End If 
    End If 

    GoTo Exit_cmdFind_Click 

    ErrorHandler: 
     MsgBox LTrim(RTrim(Me.NAME)) + "." + "Patient Find By Display Name - " + "Error: " + AccessError(Err.Number) 

    Exit_cmdFind_Click: 
     rstPatient.Close 
     Set dbs = Nothing 
     Set rstPatient = Nothing 
End Sub 
Verwandte Themen