MS Access - выберите конкретное количество строк на основе предопределенного условия с макрос - PullRequest
0 голосов
/ 11 июля 2019

Мне нужно создать макрос Access, который будет выбирать определенное количество строк из одной из моих таблиц.

Макрос будет запускаться ежедневно, для этого нужно выбрать определенное количество записей.Для каждой записи в столбце 't1' необходимо выбрать только определенное количество строк из столбца 'Sample Size'.Если в базе данных нет записи, пропустите и перейдите к следующей.

Моя таблица выглядит следующим образом:

enter image description here

Я попытался использовать приведенный ниже макрос для определения количества запрашиваемых строк, чтобы выбрать, и это, кажется, успешно.Тем не менее, я не могу понять, как связать первую часть с другой частью сценария и как изменить ее так, чтобы она выбирала только требуемые результаты в цикле (в настоящее время это настройка для выбора 25 лучших, но она выбирает только результаты из первойзапись в моей колонке - «System ANGEast». Я думаю, мне нужно было бы использовать оператор While Wend, но я не уверен, как использовать его в этом сценарии.

Sub DailyMacro()
Dim rs As DAO.Recordset
Dim tdf As TableDef
Dim fld As Field
Dim rst As Recordset
Dim strSQL As String
Dim strTableName As String

Set rs = CurrentDb.OpenRecordset("SELECT * FROM SampleF")

'Check to see if the recordset actually contains rows
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst 
Do Until rs.EOF = True

    'Save contact name into a variable
    Top = rs!Final_Daily_Sample_Size
    t2 = rs!t1

    'Move to the next record. Don't ever forget to do this.
    rs.MoveNext
Loop
Else
MsgBox "There are no records in the recordset."
End If
   rs.Close 'Close the recordset
   Set rs = Nothing 'Clean up

'Create a new temporary table containing the required fields

strSQL = "SELECT [30 Days Sample].[Account], [30 Days Sample].[Name], [30 Days Sample].[Last Name], [30 Days Sample].[Activity Date], [30 Days Sample].[Type], [30 Days Sample].[Returns], [30 Days Sample].[Amount], [30 Days Sample].[t1] " & _
"INTO [temp_table]" & _
"FROM [30 Days Sample];"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True

'Sort the data by the random number and move the top 25 into a new table

strTableName = "Final_Table" & Format(Date, "ddmmmyyyy")
strSQL = "SELECT TOP 25 [30 Days Sample].[Account], [30 Days Sample].[Name], [30 Days Sample].[Last Name], [30 Days Sample].[Activity Date], [30 Days Sample].[Type], [30 Days Sample].[Returns], [30 Days Sample].[Amount], [30 Days Sample].[t1] " & _
         "INTO " & strTableName & " " & _
         "FROM [temp_table]" & _
         "ORDER BY [temp_table].t1;"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True

End Sub

Любая помощь будет принята с благодарностью. Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...