0
我正在創建一個查詢,它將選擇一個隨機列表中的'x'個條目。我希望能夠在每次運行查詢時更改查詢返回的值的數量。提示輸入TOP值查詢
是否可以提示輸入TOP返回值而不必每次都打開查詢設計?
SELECT TOP 50 *
FROM [MyTableName]
ORDER BY Rnd([SomeNumber]);
我正在創建一個查詢,它將選擇一個隨機列表中的'x'個條目。我希望能夠在每次運行查詢時更改查詢返回的值的數量。提示輸入TOP值查詢
是否可以提示輸入TOP返回值而不必每次都打開查詢設計?
SELECT TOP 50 *
FROM [MyTableName]
ORDER BY Rnd([SomeNumber]);
不幸的是,它似乎是最明顯的方法,即...
PARAMETERS RowsToReturn Long;
SELECT TOP [RowsToReturn] *
FROM MyTableName
ORDER BY Rnd([SomeNumber]);
...將無法正常工作。 Access會抱怨SQL查詢無效。
我想接近它是創建一個小VBA函數類似以下內容,然後創建一個使用RunCode
行動來調用它
Public Function buildRandomTopN()
'
' assumes that the table has an AutoNumber primary key named [ID]
'
Dim rowsToReturn As Long, cdb As DAO.Database, qdf As DAO.QueryDef
Const queryName = "randomTopN" ' existing QueryDef to update
On Error Resume Next
rowsToReturn = CLng(InputBox("Number of rows to return"))
If Err.Number = 0 Then
On Error GoTo 0
If rowsToReturn > 0 Then
Set cdb = CurrentDb
' update the SQL statement for the query
Set qdf = cdb.QueryDefs(queryName)
qdf.SQL = "SELECT TOP " & rowsToReturn & " * FROM [MyTableName] " & _
"ORDER BY Rnd([ID])"
qdf.Close
Set qdf = Nothing
Set cdb = Nothing
' open the query
DoCmd.OpenQuery queryName
End If
End If
End Function
宏的方式