(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Обновление данных в форме

Источник: msdatabase

Обновление данных на форме методом Refresh
В проектах ADP обновление формы методом Refresh проявляет себя так же, как и Requery

В качестве альтернативы можно выбрать один из способов

  • Обновление одной, текущей записи
    Me.Recordset.Resync adAffectCurrent, adResyncAllValues
    (Предварительно нужно корректно указать свойства «Однозначная таблица» UniqueTable и «Команда синхронизации» ResyncCommand)
  • Обновление всего набора с последуещей установкой текущей записи

    On error Resume Next
    Dim bm
    ' запоминаем положение указателя формы
    bm = Me.Bookmark
    Me.Requery
    ' Ждем пока закончится загрузка данных в рекордсет
    Do WhileMe.RecordsetClone.State And adStateFetching
    DoEvents
    Loop
    Me.Bookmark = bm

  • вариант более безглючный
    On error Resume Next
    Dim bm
    ' запоминаем положение указателя формы
    bm = Me.Bookmark
    Me.Requery
    ' Ждем пока закончится загрузка данных в рекордсет
    Dim rs
    'хитро но так надо для безглючности
    set rs = me.recordsetclone.clone

    WaitEndOfRequery RS 'Процедура приведена ниже

    Me.Bookmark = bm
    rs.close
    setrs = Nothing

  • Использовать пользовательскую функцию

    Обновление набора записей другими способами

    (формы, подчиненной формы, элементов управления список и поля со списком)

    Одно из:

  • Me.Requery
  • Me.Recordset.Requery
  • Me.Recordsource = Me.Recordsource
  • DoCmd.RunCommand acCmdRefresh
  • обновление значения главного поля для подчиненной формы
  • обновление значения поля - являющегося источником входного параметра

    после любого обновления желательно дождаться загрузки всех записей:
    Стандартный вариант:
    Do WhileMe.Recordset.State And adStateFetching
    DoEvents
    Loop

    Продвинутый вариант, работающий на медленных соединениях:(by Latuk)

    Public Sub WaitEndOfRequery(rs AsADODB.Recordset, Optional SleepTime Asinteger = 33)
    'Дождатся заполнения рекордсета
    'Public Declare Sub Sleep Lib "kernel32"(ByVal dwMilliseconds As Long)
    DimT As Single
    T = Timer
    Do
    DoEvents
    Sleep SleepTime
    Loop Until(rs.State = adStateOpen) OrTimer - T > GetOption("OLE/DDE Timeout (sec)")

    End Sub

    Прим. : не во всех случаях корректно выполняется обновление подчиненной формы без установки на нее фокуса. Поэтому всегда перед вызовом метода обновление объекта - установите на него фокус. Для подчиненных форм , которые вложены друг в друга фокус нужно устанавливать на все объекты последовательно 1 Главная форма.Setfocus, подчиненная главной формы.Setfocus , подчиенная подчиненной.Setfocus

  •  

    Ссылки по теме


     Распечатать »
     Правила публикации »
      Написать редактору 
     Рекомендовать » Дата публикации: 05.12.2007 
     

    Магазин программного обеспечения   WWW.ITSHOP.RU
    Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
    Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
    Microsoft 365 Business Basic (corporate)
    Microsoft 365 Apps for business (corporate)
    Microsoft Windows Professional 10, Электронный ключ
     
    Другие предложения...
     
    Курсы обучения   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Магазин сертификационных экзаменов   WWW.ITSHOP.RU
     
    Другие предложения...
     
    3D Принтеры | 3D Печать   WWW.ITSHOP.RU
     
    Другие предложения...
     
    Новости по теме
     
    Рассылки Subscribe.ru
    Информационные технологии: CASE, RAD, ERP, OLAP
    Безопасность компьютерных сетей и защита информации
    Новости ITShop.ru - ПО, книги, документация, курсы обучения
    CASE-технологии
    Программирование на Microsoft Access
    eManual - электронные книги и техническая документация
    Мир OLAP и Business Intelligence: новости, статьи, обзоры
     
    Статьи по теме
     
    Новинки каталога Download
     
    Исходники
     
    Документация
     
     



        
    rambler's top100 Rambler's Top100