Как добавить в таблицу следом стоящую по списку строку через цикл?

Из списка хочу внести по порядку в таблицу id строк. Сделал цикл, но он добавляет во все строки таблицы первый id строки.
Private Sub Save_Click()
Dim criteriaSQL As String
With Me.criteria
        For i = 0 To .ListCount - 1
            If .ListCount > 0 Then
                .Selected(i) = True
                criteriaSQL = " Insert Into marks(userid, criteriaid, finalgrade) values ('" & Me.student & "', '" & Me.criteria & "', '" & Me.mark & "')"
                CurrentProject.Connection.Execute (criteriaSQL)
            End If
        Next
End With
MsgBox ("Added!")
End Sub

8cb4e03043e442eb898d5ac2628deb65.png8c879750103c49c1b9d8ffb35d2a9a4a.png
  • Вопрос задан
  • 339 просмотров
Пригласить эксперта
Ответы на вопрос 1
@current
Старайтесь делать такие процессы невидимыми для пользователя, избегайте Selected(i).
Если так хочется работать через VBA используйте
Dim mytab As ADODB.Recordset
Set mytab = New ADODB.Recordset
mytab.Open "Select..." '(тут ваш запрос)'
Do While mytab.EOF = False
'тут что хотите то и тврите с полями mytab!myField'
mytab.MoveNext
Loop

это один из способов в VBA

Другой способ через запросы:
создаете различные запросы на обновления, удаления, добавления. Можно какую то серию(транзакцию) запихать в один запрос но тогда уже не сможете пользоваться конструктором придется ручками(но это уже другой вопрос).
потом или сразу вешаете на кнопку исполнение запроса или если это серия запросов, создаете макрос исполняющий эту серию, и тогда уже вешаете макрос на кнопку.

В вашем случае нет нужды пробегать по строкам и для каждой делать insert так как данные не изменяются и вы не делаете ни каких проверок
сделайте один запрос типа
INSERT INTO ТаблицаДляВставки ( ПоляДляВставки через запятую )
SELECT ПоляДоноры
FROM ТаблицыДоноры
WHERE условия выборки можно тащить из формы 
ORDER BY сортировочка;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы