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



        
    rambler's top100 Rambler's Top100