|
|
|
Unbound forms и свойство Recordset
|
|||
|---|---|---|---|
|
#18+
Люди! Помогите, пожалуйста, кто знает! Есть аппликация на Акцессе, работающая с базой данных на SQL. В аппликации есть большая форма с кучей линкованных подформ. Есть опасение, что в организации, куда будем ставить, медленная сеть. Поскольку линкованные подформы создают много подключений по сети (может, это неверно?!) , решили сделать формы Unbound с помощью свойства форм - Recordset , ADO и транзакций. Сделала для примера одну главную форму с подформой. На кнопку Edit начала транзакцию, на кнопку OK - подтвердила, на кнопку Cancel сделала Rolback. Изменения на сервер действительно не послались. Но в результате всяких комбинаций Requery главная форма и подформа нормально не обновляются и дальше начинаются глюки. Единственный способ - закрыла и заново открыла ADO рекордсеты, которые сидят под обеими формами. Это время! Может есть другой, более умный способ? Ведь подформ будет штук 5.... Кроме этого, как быть с периодическим обновлением данных в формах ? Ведь если в опциях Акцесса поставить определенный ODBC refresh interval - работать он не будет, т.к. под формами нет RecordSource?!?!?! Значит, периодически снова открывать и закрывать рекордсеты, и через какой интервал??? В общем, если не совсем надоела, приведу кусок кода... Private Sub Form_Load() Set cn = New ADODB.Connection ......... Set f_main = New ADODB.Recordset f_main.CursorLocation = adUseClient f_main.Open "Select * from titles Order By title_no", cn, adOpenKeyset, adLockOptimistic Set Me.Recordset = f_main ''''''''Code for SubForm Set f_authors = New ADODB.Recordset f_authors.CursorLocation = adUseClient f_authors.Open "Select * FROM authors INNER JOIN [titlesauthors] ON authors.author_no = [titlesauthors].author_no", cn, adOpenKeyset, adLockOptimistic Set Me.subAuthors.Form.Recordset = f_authors Me.subAuthors.Form.UniqueTable = "authors" fl_load = 1 End Sub Private Sub Form_Current() If fl_load = 1 Then f_authors.Filter = "title_no_pass = " & Me!txtTitle_no Set Me.subAuthors.Form.Recordset = f_authors f_authors.Filter = adFilterNone End If End Sub Private Sub comEdit_Click() ..... cn.BeginTrans End Sub Private Sub comOK_Click() Dim rs As ADODB.Recordset, rs1 As ADODB.Recordset Me.Recordset!title = Me.txtTitle Me.Recordset.Update Me.subAuthors.Form.Recordset!author_name = Me.subAuthors.Form.txtauthor_name Me.subAuthors.Form.Recordset.Update cn.CommitTrans ....... End Sub Private Sub comCancel_Click() cn.RollbackTrans bkm = Me.Recordset.Bookmark f_main.Close f_authors.Close f_main.Open "Select * from titles Order By title_no", cn, adOpenDynamic, adLockOptimistic f_authors.Open "Select * FROM authors INNER JOIN [titlesauthors] ON authors.author_no = [titlesauthors].author_no", cn, adOpenKeyset, adLockOptimistic Set Me.Recordset = f_main Me.Bookmark = bkm End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2004, 14:11:22 |
|
||
|
Unbound forms и свойство Recordset
|
|||
|---|---|---|---|
|
#18+
Простой совет... 1. не тащить на клиента все записи.... (set rowcount ...) 2. использовать в к-ве источников sp с параметрами ограничивающими кол-во возвр-х записей(типа фильтры) 3. накой бедному userу видеть все ваши подформы и другой хлам... это только будет его(польз.) раздражать при реальной работе ... (открывать при необходимости... кнопка detail - хлюп - открылась форма с дет-ой инфой по записи ... ) 4. каждому действу - своя процедура.... (I/U/D) и, если возможно - форма... 5. от вашей работы с транзакциями волосы начинают шевелиться... везде... этот метод хорош для однопользовательской работы... Не обижайтесь... Скорее всего я где-то не прав... А Unbound формы - действительно хорошо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2004, 18:32:47 |
|
||
|
Unbound forms и свойство Recordset
|
|||
|---|---|---|---|
|
#18+
Спасибо, попробую сделать по другому, как то ограничить количество записей... Но тогда придется каждый раз менять RecordSource формы - это время... Или сделаю под подформами временные таблицы... А подформы, к сожалению, убрать не могу - слишком много на этом завязано - как святое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2004, 19:02:58 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1604&tid=1673555]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 319ms |

| 0 / 0 |
