2013-10-01 3 views
0

Я использую Access уже около года и только недавно начал изучать VBA. Книги, которые я прочитал, и помощь, которую я читал в Интернете, похоже, не соответствуют мне, что мне нужно; или если они это сделают, то я должен быть слишком много новичком, чтобы заметить.Access 2010 VBA Loop query до запроса 0:

Мой проект - это личная финансовая база данных, и я работаю над тем, как прогнозировать движение денежных средств. У меня

  1. таблица повторяющихся операций называется «tbl_InitialPoint» (с колоннами Описание, количество, и частота (в днях)),

  2. запроса, который находит последнюю дату Описание в частности '', tbl_Register

  3. Append запроса для вставки повторяющихся операций с 'tbl_InitialPoint' к '' tbl_Register

    INSERT INTO Тб l_Register (постдатировать, Описание, Сумма) ВЫБОР qry_MaxDate.LastDate + tbl_InitialPoint.Frequency А.С. DateSeries, tbl_InitialPoint.Description, tbl_InitialPoint.Amount ИЗ tbl_InitialPoint INNER JOIN ON qry_MaxDate tbl_InitialPoint.Description = qry_MaxDate.Description ГДЕ qry_MaxDate.LastDate + tbl_InitialPoint.Frequency < = [Forms]! [HomePage]! [DateHorizon];

Что я не имею в виду, так это конкретная vba для запуска/циклического запроса этого запроса x количество раз, пока запрос не будет пустым или пустым.

Любые идеи?

ответ

0

Я полагаю, что вы используете таблицы локального доступа и соответствующие объекты DAO.

Вы должны использовать объект queryDef и его метод execute.

После выполнения запросаdef затем вы можете проверить свойство recordsAffected вашего экземпляра queryDef.

Если это значение равно нулю, это будет означать, что никакие записи не были вставлены в ваш запрос.

EDIT: после ваших комментариев, вы можете увидеть некоторые queryDef связанный код here, где вы будете в состоянии создать новый QueryDef и список свойств объекта, в том числе recordsAffected собственности.

+0

Извините, я не понимаю. Не могли бы вы привести мне пример того, как выглядит код. Я несколько раз пробовал использовать то, что вы описали выше, и я даже не могу заставить мой named queryDef выполнить один раз. –

+0

Вот что я до сих пор (я могу добавить цикл позже): Private Function InsertTransactionsBttn_Click() Dim дб As Database Dim MySQL As String Dim qdfNew Как QueryDef –

+0

Set дб = CurrentDb() Set MySQL = «INSERT ВО tbl_Register (постдатировать, описание, сумма) "& _ "SELECT qry_MaxDate.LastDate + tbl_InitialPoint.Frequency А.С. DateSeries, tbl_InitialPoint.Description, tbl_InitialPoint.Amount" & _ " ОТ tbl_InitialPoint INNER JOIN qry_MaxDate ПО tbl_InitialPoint.Description = qry_MaxDate.Description "& _ " WHERE qry_MaxDate.LastDate + tbl_InitialPoint.Frequency <= [Forms]![HomePage]! [DateHorizon]» Set qdfNew = CreateQueryDef ("NewQueryDef", _ MySQL) qdfNew.Execute End Function –