|
|
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
Имеется табличная форма со списком клиентов, основанная на хранимой процедуре. Желательно при открытии этой формы попадать на того клиента, с которым закончил работать ранее. Проблема в том, как отследить момент, когда все данные уже загружены и можно приступить к поиску требуемого клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2003, 15:01 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
docmd.FindRecord ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2003, 15:38 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
2 Дид Проблема не в том, чтобы найти, а в том когда найти: FindRecord не найдет запись, если она еще не загрузилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2003, 18:32 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2003, 19:11 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
Да запхать все в SQL. Пусть хранимая процедура и помнит кто был последний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2003, 19:31 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
--Пусть хранимая процедура и помнит кто был последний. И чтобы сама хранимая процедура твою форму отскроллила на запомненную запись. :-) Для таких вещей обычно делают спец. сервисные таблицы UserSettings где хранят самую разнообразную инфу применительно к пользователю. Кроме того, можно использовать свойства самого проекта CurrentProject.Propertires ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 02:48 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
я сказал то, что нужно. docmd.FindRecord сработает тогда, когда ВСЕ записи загрузятся на форму. можно, конечно, использовать события рекордсета, но форма на основе рекордсета, предназначенная для редактирования, глючит и вышибает аксесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 10:14 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
Вот ета команда загрузит все данные в форму DoCmd.GoToRecord , , acLast а дальше делайте поиск, но все таки поиск лучше делать на сервере... Зачем грузить все? Если 100 000 клиентов или другой пользователь добавил клиента - тогда что постоянно обновлять список? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 11:10 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
2 MVN: Да, это самый правильный метод. Проблема в том, что придется много чего переделывать в других местах, которые обновляют эту форму при редактировании-добавлении клиентов :-( 2 SM: "И чтобы сама хранимая процедура твою форму отскроллила на запомненную запись. :-) " Это как? Каким образом MSSQL будет скроллировать Аксессовскую форму? 2 Дид: "можно, конечно, использовать события рекордсета, но форма на основе рекордсета, предназначенная для редактирования, глючит и вышибает аксесс" Сталкивался я с таким явлением, когда пытался редактировать этот рекордсет, пришлость сделать его ридонли, а все процедуры добавления-редактирования делать через свои формы. Но в данном случае, надеюсь только у меня, аксесс вышибло именно командой FindRecord. 2 V. Motchulsky: У каждого юзера получается примерно 1000 клиентов (уже не так страшно) у каждого клиента 8 параметров по которым их сортируют, группируют, ищут, плющат... Заранее сказать что именно понадобиться не представляется возможным, запихнуть в форму все варианты выбора тоже нереально... Поэтому грузим всех клиентов с которыми работает данный юзер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 12:07 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
2Nick987 --Это как? Каким образом MSSQL будет скроллировать Аксессовскую форму? Очень просто. С помошью "магического кода". Есть такая недокументированная фича в Access Docmd.HowTo а далее пишешь латинскими буквами что тебе нужно сделать. Пример: DoCmd.HowTo "KAK OTSKROLLIT FORMU?" или же Docmd.SolveMyProblem - та же идея. ЗЫ. Что такое смайлик, нужно объяснять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2003, 19:40 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
2 SM А если не ёрничать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2003, 18:36 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
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 общедоступным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2003, 17:30 |
|
||
|
Загрузка данных в форму (ADP)
|
|||
|---|---|---|---|
|
#18+
>Но вопрос: как обновить набор записей для этой формы из другой формы? Раньше писал что-то типа Forms![Клиенты].[СписокКлиентов].Form.Requery Делай загрузку рекодсета в отдельной общедоступной процедуре на уровне модуля формы. Ее и вызывай из другой программы. Но думаю есть способ и проще (я, если честно, не использую в источниках форм рекордсеты, поэтому за советы не ручаюсь). Т.е. нужно каким-то вызвать повторное открытие рекордсета и присаивание его форме. (Me.refresh/requyry, me.recordsource=me.recordsource и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2003, 17:53 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32130521&tid=1681879]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 325ms |

| 0 / 0 |
