Ich versuche, ein Recordset zu erstellen, das nach einer Tabelle und der aktuellen Orderby-Eigenschaft eines bestimmten Formulars sortiert ist. Da sich die Orderby-Eigenschaft ändert, wenn die Benutzer sie ändern, habe ich eine Funktion erstellt, die nur das erste Feld in der Orderby-Eigenschaft erhält (und es mit mehr als 1 Feld anordnen kann) und damit ein geordnetes Recordset zu erstellen. Der Name des Feldes gegeben von der Funktion getField ist korrekt angegeben, aber ich nehme an, dass die Syntax von "Set rsAll = ..."
ist falsch, was ist, was ich denke, verursacht den Code zu stoppen.Instanziieren Sie Recordset mit ORDER BY Access VBA
Erstellen eines Recordsets in geordneter Weise.
Dim rsAll As DAO.Recordset
If Len(Forms("All Patient Sub").OrderBy) > 0 Then
Set rsAll = CurrentDb.OpenRecordset("SELECT * FROM [All Patient Info] ORDER BY " & getField(Forms("All Patient Sub").OrderBy)) 'code stops here
Else
Set rsAll = CurrentDb.OpenRecordset("All Patient Info")
End If
Die Funktion, die den Feldnamen aus der Eigenschaft SortiertNach gehört Form
Public Function getField(ByVal sorter As String) As String
Debug.Print "Started"
'i = 21 hence [All Patient Info].[ is skipped and starts from the field's name
For i = 21 To Len(sorter)
If Mid(sorter, i, 1) = "]" Then
getField = Mid(sorter, 21, i - 21)
Exit For
End If
Next i
Debug.Print getField
End Function
Wenn Sie sagen * "Code stoppt hier" *, nehme ich an, Sie meinen, dass es einen Fehler gibt. Wenn ja, was sagt die Fehlermeldung? Wenn Sie etwas anderes als einen Fehler meinten, was dann? Ich vermute, dass es nützlich sein könnte, zu sehen, was Ihnen das zeigt: 'Debug.Print" SELECT * FROM [Alle Patienteninformationen] ORDER BY "& getField (Formulare (" All Patient Sub "). OrderBy))' – HansUp
Auch was ist das? Ausgabe von 'Debug.Print getField'? – Andre
Sorry für das mehrdeutige Vokabular, ich meinte einen Fehler ist aufgetreten. Ich habe versucht 'Debug.Print" SELECT * FROM [Alle Patienten Info] ORDER BY "& getField (Formulare (" Alle Patienten Sub "). OrderBy))' und es hat nichts gedruckt und die Ausgabe von 'Debug.Print getField' kann abweichen von Zeit zu Zeit, aber lassen Sie uns seinen DOB sagen. – Kozero