Фон: Я использую Access 2010 для управления и отслеживания налоговых счетов, которые исследуются и оплачиваются. Они получены в формате Excel и импортируются в базу данных, затем у меня есть куча запросов, которые я запускаю, чтобы идентифицировать элементы исследования. В любой момент времени есть тысячи счетов на разных этапах, но самая большая часть - это те, которые просто готовы платить. Я автоматизировал его, чтобы записи, помеченные как «номер партии» (идентификатор группы счетов в программной системе моей компании), выбранные из раскрывающегося списка, экспортируются в правильном формате для нашего программного обеспечения для оплаты. Из-за ограничений налогового органа округа я могу заплатить только 1500 счетов за раз.Обновление поля на основе указанного количества записей меньше итогового (например, 1000 из 5000 записей)
Вопрос/Проблема: Мне нужен [лучший] способ обновить «номер партии» на 1500 записей (или меньше) за раз, из набора записей, который намного больше. В принципе, я хочу иметь возможность вводить число и создавать группу (основанную на обновлении «номера партии») с помощью множества счетов в ней.
Пример: Если общее количество счетов, готовых платить 3900, то я хотел бы сделать следующее:
- ПАРТИЯ-001 - 1500 счетов
- ПАРТИЯ-002 - 1500 купюр
- ПАРТИЯ-003 - 900 законопроектов
Что я пробовал: я гугле как сумасшедший, и удалось залатать вместе что-то, что делает, но с большим количеством записей он блокирует мой компьютер ... неудивительно, учитывая то, что он делает, но я должен был дать ему шанс! Он выполняет итерацию по всем записям и помещает логическое поле в значение True до тех пор, пока счет не будет достигнут. Затем я использую это логическое поле для фильтрации запроса обновления. Смотри ниже.
Private Sub cmdCreateBatch_Click()
DoCmd.SetWarnings False
Dim intRecordNum As Integer
Dim intBatchSize As Integer
Me.Recordset.MoveFirst
intBatchSize = Me.txtBatchSize
intRecordNum = Me.CurrentRecord
If intRecordNum < intBatchSize Then
Do Until intRecordNum > intBatchSize
Me.chkInclude = True
Me.Recordset.MoveNext
intRecordNum = Me.CurrentRecord
Loop
End If
DoCmd.OpenQuery "qryUpdateBatchNumber", acViewNormal, acEdit
DoCmd.OpenQuery "qryUpdateCheckBoxtoFalse", acViewNormal, acEdit
Me.Requery
MsgBox "Bill batch has been created."
DoCmd.SetWarnings True
End Sub
Я все еще новичок в VBA, но с готовностью изучаю все, что могу! Я ценю любую помощь.
Кто Дат, [** SKIPPY **] (HTTPS://en.wikipedia.org/wiki/Skippy_(peanut_butter)), [** SKIPPY **] (https://en.wikipedia.org/wiki/Skippy_ (peanut_butter)), ya !! –
Я надеялся указать способ указать число в случае, если я хочу сделать менее 1500 по какой-либо причине; однако, я думаю, что это будет работать достаточно хорошо, и я всегда могу вручную создать пакет в этих случайных случаях. Спасибо за помощь. –
Я думаю, что вы должны иметь возможность использовать свою переменную ввода в элементе '(select top {intBatchSize} BillID ...'). – Skippy