powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Загрузка данных в форму (ADP)
13 сообщений из 13, страница 1 из 1
Загрузка данных в форму (ADP)
    #32130224
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется табличная форма со списком клиентов, основанная на хранимой процедуре. Желательно при открытии этой формы попадать на того клиента, с которым закончил работать ранее. Проблема в том, как отследить момент, когда все данные уже загружены и можно приступить к поиску требуемого клиента.
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32130266
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
docmd.FindRecord
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32130484
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Дид
Проблема не в том, чтобы найти, а в том когда найти: FindRecord не найдет запись, если она еще не загрузилась.
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32130507
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Option Compare Database
Option Explicit
Private WithEvents R As ADODB.Recordset

Private Sub Form_Open(Cancel As Integer)
Set R = New ADODB.Recordset
R.CursorLocation = adUseClient
R.Open "SELECT * FROM table", CurrentProject.Connection, adOpenStatic, adLockOptimistic, adCmdText+adAsyncFetchNonBlocking
Set Me.Recordset = R
End Sub

Private Sub R_FetchComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
MsgBox "Вот я и поймал это событие!"
End Sub
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32130521
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да запхать все в SQL. Пусть хранимая процедура и помнит кто был последний.
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32130575
SM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Пусть хранимая процедура и помнит кто был последний.

И чтобы сама хранимая процедура твою форму отскроллила на запомненную запись. :-)


Для таких вещей обычно делают спец. сервисные таблицы UserSettings где хранят самую разнообразную инфу применительно к пользователю.

Кроме того, можно использовать свойства самого проекта CurrentProject.Propertires
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32130663
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я сказал то, что нужно. docmd.FindRecord сработает тогда, когда ВСЕ записи загрузятся на форму.
можно, конечно, использовать события рекордсета, но форма на основе рекордсета, предназначенная для редактирования, глючит и вышибает аксесс.
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32130712
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот ета команда загрузит все данные в форму
DoCmd.GoToRecord , , acLast
а дальше делайте поиск, но все таки поиск лучше делать на сервере...
Зачем грузить все? Если 100 000 клиентов или другой пользователь добавил клиента - тогда что постоянно обновлять список?
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32130800
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 MVN:
Да, это самый правильный метод. Проблема в том, что придется много чего переделывать в других местах, которые обновляют эту форму при редактировании-добавлении клиентов :-(
2 SM:
"И чтобы сама хранимая процедура твою форму отскроллила на запомненную запись. :-) " Это как? Каким образом MSSQL будет скроллировать Аксессовскую форму?
2 Дид:
"можно, конечно, использовать события рекордсета, но форма на основе рекордсета, предназначенная для редактирования, глючит и вышибает аксесс"
Сталкивался я с таким явлением, когда пытался редактировать этот рекордсет, пришлость сделать его ридонли, а все процедуры добавления-редактирования делать через свои формы. Но в данном случае, надеюсь только у меня, аксесс вышибло именно командой FindRecord.
2 V. Motchulsky:
У каждого юзера получается примерно 1000 клиентов (уже не так страшно) у каждого клиента 8 параметров по которым их сортируют, группируют, ищут, плющат... Заранее сказать что именно понадобиться не представляется возможным, запихнуть в форму все варианты выбора тоже нереально...
Поэтому грузим всех клиентов с которыми работает данный юзер.
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32131358
SM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Nick987

--Это как? Каким образом MSSQL будет скроллировать Аксессовскую форму?

Очень просто. С помошью "магического кода". Есть такая недокументированная фича в Access
Docmd.HowTo а далее пишешь латинскими буквами что тебе нужно сделать.
Пример:
DoCmd.HowTo "KAK OTSKROLLIT FORMU?"

или же

Docmd.SolveMyProblem - та же идея.


ЗЫ. Что такое смайлик, нужно объяснять?
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32133955
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 SM
А если не ёрничать?
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32136032
Nick987
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ok, решил делать так:

Option Compare Database
Option Explicit
Private WithEvents R As ADODB.Recordset

Private Sub Form_Open(Cancel As Integer)
Set R = New ADODB.Recordset
R.CursorLocation = adUseClient
R.Open "SELECT * FROM table", CurrentProject.Connection, adOpenStatic, adLockOptimistic, adCmdText+adAsyncFetchNonBlocking
Set Me.Recordset = R
End Sub

Private Sub R_FetchComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
MsgBox "Вот я и поймал это событие!"
End Sub

Но вопрос: как обновить набор записей для этой формы из другой формы?
Раньше писал что-то типа Forms![Клиенты].[СписокКлиентов].Form.Requery
А теперь как? Делать Recordset R общедоступным?
...
Рейтинг: 0 / 0
Загрузка данных в форму (ADP)
    #32136049
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Но вопрос: как обновить набор записей для этой формы из другой формы?
Раньше писал что-то типа Forms![Клиенты].[СписокКлиентов].Form.Requery

Делай загрузку рекодсета в отдельной общедоступной процедуре на уровне модуля формы. Ее и вызывай из другой программы. Но думаю есть способ и проще (я, если честно, не использую в источниках форм рекордсеты, поэтому за советы не ручаюсь). Т.е. нужно каким-то вызвать повторное открытие рекордсета и присаивание его форме. (Me.refresh/requyry, me.recordsource=me.recordsource и т.п.)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Загрузка данных в форму (ADP)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]