Поделиться через


Событие макроса "После вставки"

Область применения: Access 2013, Office 2013

Событие макроса После вставки возникает после добавления записи.

Примечание.

Событие После вставки доступно только в макросах данных.

Примечания

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

Вы можете использовать функцию Updated("Имя поля"), чтобы определить, изменилось ли поле. В следующем примере кода показано, как использовать инструкцию If, чтобы определить, изменилось ли поле PaidInFull.

 
If  Updated("PaidInFull")   Then 
 
    /* Perform actions based on changes to the field.   */ 
 
End If 
 

В следующей таблице перечислены макрокоманды, которые можно использовать в событии После вставки.

Тип команды

Команда

Управление

Оператор макроса "Примечание"

Управление

Оператор макроса "Группа"

Управление

Макроблок Если... То... Иначе

Блок данных

Макрокоманда "СоздатьЗапись"

Блок данных

Макрокоманда "ИзменитьЗапись"

Блок данных

Макрокоманда "ДляКаждойЗаписи"

Блок данных

Блок данных "НайтиЗапись"

Действия с данными

Макрокоманда "ОтменитьИзменениеЗаписи"

Действия с данными

Макрокоманда "УстранитьОшибкуМакроса"

Действия с данными

Макрокоманда "УдалитьЗапись"

Действия с данными

Макрокоманда "ВыходДляКаждойЗаписи"

Действия с данными

Макрокоманда "РегистрацияСобытия"

Действия с данными

Макрокоманда "ПриОшибке"

Действия с данными

Макрокоманда "ВыводОшибки"

Действия с данными

Макрокоманда "ЗапускМакросаДанных"

Действия с данными

Макрокоманда "ОтправитьПочту"

Действия с данными

Макрокоманда "ЗадатьПоле"

Действия с данными

Макрокоманда "ЗадатьЛокПеременную"

Действия с данными

Макрокоманда "ОстановитьВсеМакросы"

Действия с данными

Макрокоманда "ОстановитьМакрос"

Чтобы создать макрос данных, который записывает событие После вставки, выполните следующие действия:

  1. Откройте таблицу, для которой нужно записать событие После вставки.

  2. На вкладке Таблица в группе После событий щелкните После вставки.

В окне конструктора макросов отобразится пустой макрос данных.

Пример

В следующем примере кода используется событие После вставки для выполнения некоторой обработки при добавлении записи в таблицу Donations (Пожертвования). При добавлении записи сумма пожертвований добавляется в поле DonationsReceived таблицы Campaigns (Кампании) и TotalDonatedField таблицы Donors (Спонсоры).

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

Чтобы просмотреть этот пример в конструкторе макросов, выполните следующие действия:

  1. Откройте таблицу, для которой нужно записать событие После вставки.

  2. На вкладке Таблица в группе После событий щелкните После вставки.

  3. Выделите код в следующем примере и нажмите клавиши CTRL+C, чтобы скопировать его в буфер обмена.

  4. Активируйте окно конструктора макросов и нажмите клавиши CTRL+V.

    <DataMacros> 
      <DataMacro Event="AfterInsert"> 
        <Statements> 
          <Comment>This data macro increments the DonationsReceived field in Campaigns and theAmountCollected field in Pledges </Comment> 
          <Action Name="SetLocalVar"> 
            <Argument Name="Name">varAmount</Argument> 
            <Argument Name="Value">[Amount]</Argument> 
          </Action> 
          <ConditionalBlock> 
            <If> 
              <Condition>Not (IsNull([CampaignID]))</Condition> 
              <Statements> 
                <ForEachRecord> 
                  <Data> 
                    <Reference>Campaigns</Reference> 
                    <WhereCondition>[ID]=[Donations].[CampaignID]</WhereCondition> 
                  </Data> 
                  <Statements> 
                    <EditRecord> 
                      <Data /> 
                      <Statements> 
                        <Action Name="SetField"> 
                          <Argument Name="Field">[DonationsReceived]</Argument> 
                          <Argument Name="Value">[DonationsReceived]+[varAmount]</Argument> 
                        </Action> 
                      </Statements> 
                    </EditRecord> 
                  </Statements> 
                </ForEachRecord> 
              </Statements> 
            </If> 
          </ConditionalBlock> 
          <ConditionalBlock> 
            <If> 
              <Condition>Not (IsNull([DonorID]))</Condition> 
              <Statements> 
                <ForEachRecord> 
                  <Data> 
                    <Reference>Donors</Reference> 
                    <WhereCondition>[ID]=[Donations].[DonorID]</WhereCondition> 
                  </Data> 
                  <Statements> 
                    <EditRecord> 
                      <Data /> 
                      <Statements> 
                        <Action Name="SetField"> 
                          <Argument Name="Field">[TotalDonated]</Argument> 
                          <Argument Name="Value">[TotalDonated]+[varAmount]</Argument> 
                        </Action> 
                      </Statements> 
                    </EditRecord> 
                  </Statements> 
                </ForEachRecord> 
              </Statements> 
            </If> 
          </ConditionalBlock> 
        </Statements> 
      </DataMacro> 
    </DataMacros>
    SetLocalVar 
                  Name   varAmount 
            Expression   =[Amount] 
     
    If   Not (IsNull([CampaignID]))   Then 
     
         For Each Record In   Campaigns 
            Where Condition   =[ID]=[Donations].[CampaignID] 
                      Alias 
     
                 EditRecord 
                              Alias 
                     SetField 
                                 Name   [DonationsReceived] 
                                Value   =[DonationsReceived]+[varAmount] 
                End EditRecord 
    End If 
     
    If   Not (IsNull([DonorID]))   Then 
     
         For Each Record In  Donors 
            WhereCondition   =[ID]=[Donations].[DonorID] 
                     Alias 
     
                 EditRecord 
                              Alias 
                     SetField 
                                 Name   [TotalDonated] 
                                Value   =[TotalDonated]+[varAmount] 
                 End EditRecord 
    End If