Мне нужно создать макрос Access, который будет выбирать определенное количество строк из одной из моих таблиц.
Макрос будет запускаться ежедневно, для этого нужно выбрать определенное количество записей.Для каждой записи в столбце 't1' необходимо выбрать только определенное количество строк из столбца 'Sample Size'.Если в базе данных нет записи, пропустите и перейдите к следующей.
Моя таблица выглядит следующим образом:
Я попытался использовать приведенный ниже макрос для определения количества запрашиваемых строк, чтобы выбрать, и это, кажется, успешно.Тем не менее, я не могу понять, как связать первую часть с другой частью сценария и как изменить ее так, чтобы она выбирала только требуемые результаты в цикле (в настоящее время это настройка для выбора 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
Любая помощь будет принята с благодарностью. Заранее спасибо