Intereting Posts
Рассчитать рабочее время между 2 датами в PostgreSQL Как использовать find_in_set (значение, столбец) с такими же значениями %% Является ли массовое обновление быстрее, чем одно обновление в db2? «Индекс 0 является отрицательным или превышенным числом строк» ​​ошибка C # Как заблокировать записи базы данных с Java? SQL: установить существующий столбец как первичный ключ в MySQL Когда следует использовать хранимые процедуры? Как получить фиктивное значение для пустого тега XML в таблице с использованием Oracle? Как защитить от SQL-инъекции, когда предложение WHERE динамически создается из формы поиска? Заказ По видам отличается от сортировки в SSIS (услуги интеграции) обновить mysql с условием if SQL-запрос для преобразования столбцов в графы строк Получить записи, количество совпадений которых соответствует max (count) для категории отделить имя файла от пути в postgres Какая разница между типами DATE, TIME, DATETIME и TIMESTAMP

Вставка каждой ДРУГИХ строк из одной таблицы в другую (VBA MS Access 2010)

Я работаю с вручную созданной пустой копией таблицы Products, которую я назвал Product_Backup. То, что я хочу сделать, – это вставить каждую другую строку из категории продуктов «Специи» в эту пустую таблицу Products_Backup, так как будет всего 6 строк из 12 строк, которые находятся в таблице «Продукты» в категории «Специи». Проблема в том, что я не знаю, как это сделать. Я попытался использовать оператор MOD для вновь созданного ProductID, но мой наставник сказал мне, что это не правильное решение, так как он может легко изменить значение этого ProductID, и я получаю нечетные строки, а не четные.

Private Sub CommandButton0_Click() Dim db As Database, rst As Recordset Dim I As Integer, s, s1 As String Set db = CurrentDb s = "SELECT Products.* FROM Products WHERE (((Products.CategoryNumber)=2));" ' This value is for Spices Set rst = db.OpenRecordset(s) I = 1 While Not rst.EOF s1 = "INSERT INTO Products_Backup (ProductName, ProductID, CategoryNumber, OrderedUnits) VALUES ('" & rst!ProductName & "', " & I & " , '" & rst!CategoryNumber & "', '" & rst!OrderedUnits & "');" MsgBox ("Record inserted") db.Execute s1 I = I + 1 rst.MoveNext If I Mod 10 = 0 Then MsgBox ("Inserted " & I & ".record") End If Wend rst.Close db.Close End Sub 

Таким образом, я могу вставить все 12 записей в Products_Backup, а MsgBox расскажет мне, когда была вставлена ​​10-я запись. Но я до сих пор не знаю, что делать, чтобы вставить каждую другую строку в Product_Backup, чтобы получить 6 записей.

 Dim booEveryOther as Boolean booEveryOther = False While Not rst.EOF If booEveryOther Then s1 = "INSERT INTO ... End If booEveryOther = Not booEveryOther 

Просто используйте логическое значение, которое для каждой новой записи установлено Not самим собой.

я думаю, это должно сделать это лучше

 While Not rst.EOF s1 = " INSERT INTO Products_Backup (ProductName, ProductID, CategoryNumber, OrderedUnits) " & _ " VALUES ('" & rst!ProductName & "', " & I & " , '" & rst!CategoryNumber & "', '" & rst!OrderedUnits & "');" db.Execute s1 If I Mod 10 = 0 Then MsgBox ("Inserted " & I & ".record") Else MsgBox ("Record inserted") End If I = I + 1 rst.MoveNext Wend