Вложенный цикл для итерации значений из / из 2 полей со списком - PullRequest
1 голос
/ 04 октября 2019

Я делаю систему управления поступлением в колледж;Есть 2 таблицы с именами категорий и групп.

Категория содержит поле с именем Category, которое содержит значения, такие как «Служба в армии», Army Retired, Civilian и т. Д., В то время как таблица групп имеет поле с именем Group, содержащее такие значения, как Pre-Engineering, Pre-Medical и т. Д.

Я успешно могу просмотреть все списки по отдельности, выбрав категорию и группу из комбинированных полей в форме, и я также могу создать список заслуг студентов, которые имеют необходимые оценки для зачисления.

Теперь я хочу автоматизировать ее, например кнопки 'Generate All' и 'Create All', которые будут генерировать все списки заслуг в соответствии с их категорией и группой.

Здесь: GroupVal - этоимя группы ComboBox, а QuotaVal - это имя категории ComboBox.

Я пробовал этот код, но он возвращает разные ошибки каждый раз, когда я исправляю одну ошибку.

Private Sub CreateAllKey_Click()

Dim QuotaList As String
Dim GroupList As String
Set QuotaList = Tables!Categories!Category
Set GroupList = Tables!Groups!Group
For Each QuotaList In QuotaVal
    For Each GroupList In GroupVal
        DoCmd.OpenQuery "Merit List Generator", acViewNormal, acEdit
    Next
Next

MsgBox "All Lists Successfully Cleated", vbOKOnly, "Merit List Created!"

End Sub

И это следующееКод возвращает только 1 значение .. означает, что он работает только с одним значением и выдает только 1 значение;


    Dim QuotaList As Integer
    Dim GroupList As Integer

    For QuotaList = 0 To Me.QuotaVal.ListCount - 1
        If QuotaList = 0 Then
            Me.QuotaVal.Value = "AR"
        End If
        If QuotaList = 1 Then
            Me.QuotaVal.Value = "AS"
        End If
        If QuotaList = 2 Then
            Me.QuotaVal.Value = Null
        End If
        If QuotaList = 3 Then
            Me.QuotaVal.Value = "DP"
        End If
        If QuotaList = 4 Then
            Me.QuotaVal.Value = "FGEI"
        End If
        If QuotaList = 5 Then
            Me.QuotaVal.Value = "RFGEI"
        End If
        For GroupList = 0 To Me.GroupVal.ListCount - 1
            If GroupList = 0 Then
                Me.GroupVal.Value = "Gen-Sci-I"
            End If
            If GroupList = 1 Then
                Me.GroupVal.Value = "Gen-Sci-II"
            End If
            If GroupList = 2 Then
                Me.GroupVal.Value = "Gen-Sci-III"
            End If
            If GroupList = 3 Then
                Me.GroupVal.Value = "Humanities"
            End If
            If GroupList = 4 Then
                Me.GroupVal.Value = "Pre-Engg"
            End If
            If GroupList = 5 Then
                Me.GroupVal.Value = "Pre-Med"
            End If
            DoCmd.OpenQuery ("Merit List Creator")
        Next
    Next

End Sub

Например;Я хочу что-то вроде этого:

'Create lists of numbers and letters
Dim numbers() As Integer = {1, 4, 7}
Dim letters() As String = {"a", "b", "c"}

'Iterate through the list by using nested loops.
For Each number As Integer In numbers
    For Each letter As String In letters
        Debug.Write(number.ToString & letter & " ")
    Next
Next
Debug.WriteLine("")
'Output: 1a 1b 1c 4a 4b 4c 7a 7b 7c

Рассмотрим значения Numbers в качестве таблицы категорий здесь и значения алфавитов в качестве таблицы групп и запускайте «Генератор списка заслуг» при каждом выборе значений вместо печати ». 1a, 1b, 1c, 4a, 4b, ••• '

Имейте в виду, что все формулы запросов верны и работают .. они работают, когда я генерирую один список, когда я ввожу свою собственную категорию и группузначения.

Ошибки, которые я получаю после исправления одной или другой ошибки: 'Can't Assign Value' 'Object Required' 'Data Mismatch' Ничего не работает! Если кто-то написал такой код, пожалуйста, пришлите мне ... Это более сложно, чем запутанный наушник. XD

1 Ответ

0 голосов
/ 04 октября 2019

То, что вы описываете, звучит как декартовый запрос. Если в запросе отсутствует предложение JOIN, каждая запись каждой таблицы будет связана с каждой записью другой таблицы. Результатом является любая возможная комбинация пар.

SELECT Category, Group FROM Categories, Groups;

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