Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Загрузка данных в форму (ADP) / 13 сообщений из 13, страница 1 из 1
31.03.2003, 15:01
    #32130224
Nick987
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных в форму (ADP)
Имеется табличная форма со списком клиентов, основанная на хранимой процедуре. Желательно при открытии этой формы попадать на того клиента, с которым закончил работать ранее. Проблема в том, как отследить момент, когда все данные уже загружены и можно приступить к поиску требуемого клиента.
...
Рейтинг: 0 / 0
31.03.2003, 15:38
    #32130266
ДиД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных в форму (ADP)
docmd.FindRecord
...
Рейтинг: 0 / 0
31.03.2003, 18:32
    #32130484
Nick987
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных в форму (ADP)
2 Дид
Проблема не в том, чтобы найти, а в том когда найти: FindRecord не найдет запись, если она еще не загрузилась.
...
Рейтинг: 0 / 0
31.03.2003, 19:11
    #32130507
MVN
MVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных в форму (ADP)
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
31.03.2003, 19:31
    #32130521
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных в форму (ADP)
Да запхать все в SQL. Пусть хранимая процедура и помнит кто был последний.
...
Рейтинг: 0 / 0
01.04.2003, 02:48
    #32130575
SM
SM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных в форму (ADP)
--Пусть хранимая процедура и помнит кто был последний.

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


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

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

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

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

или же

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


ЗЫ. Что такое смайлик, нужно объяснять?
...
Рейтинг: 0 / 0
04.04.2003, 18:36
    #32133955
Nick987
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных в форму (ADP)
2 SM
А если не ёрничать?
...
Рейтинг: 0 / 0
08.04.2003, 17:30
    #32136032
Nick987
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных в форму (ADP)
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
08.04.2003, 17:53
    #32136049
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Загрузка данных в форму (ADP)
>Но вопрос: как обновить набор записей для этой формы из другой формы?
Раньше писал что-то типа Forms![Клиенты].[СписокКлиентов].Form.Requery

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


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