Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: получить положение курсора на исходной записи
 
 автор: AccsBegin   (10.11.2008 в 15:07)   личное сообщение
 
 

Помогите новичку, пожалуйста. Я из формы с перечнем заявок открываю форму заявки. Вношу данные или изменяю имеющиеся и на закрытие вызываю метод .requery, чтобы изменения отобразились на исходной форме-перечне. Курсор перемещается на первую запись в форме. Попытался воспользоваться свойством .bookmark, но ничего не получается:
при открытии формы-заявки передаю переменную с закладкой:

Public bmk As Variant
...
Set rst = Me.RecordsetClone
rst.MoveLast
rst.MoveFirst
If rst.Bookmarkable = True Then bmk = rst.Bookmark
    DoCmd.OpenForm "frmZayavk", , , "[код]= " & Me.Код, , , bmk

а потом не могу присвоить при закрытии формы-заявки
Forms!форма-перечень.bookmark=me.OpenArgs

Подскажите, как правильно поступить

  Ответить  
 
 автор: Bellerofont   (10.11.2008 в 15:22)   личное сообщение
 
 

После Requery использовать сохраненный bookmark бессмысленно.
Но у вас же есть код. Найдите его в RecordsetClone (FindFirst) и выполните Me.Bookmark = Me.RecordsetClone.Bookmark

  Ответить  
 
 автор: AccsBegin   (11.11.2008 в 15:32)   личное сообщение
 
 

пошел по Вашему совету через глобальную переменную idKod, попытался сделать так:

Private Sub Form_Activate()
Dim rst As Recordset
If Nz(idKod) <> 0 And Not IsEmpty(idKod) Then
Set rst = Me.RecordsetClone
rst.FindFirst "[Код] = '" & idKod & "'"
Me.Bookmark = rst.Bookmark
End If
End Sub

т.е. вызываю requery из самой заявки, затем, закрываю ее, активируется форма со списком заявок, в которой вышенаписанный код и ... не работает, не понимаю ПОЧЕМУ?

  Ответить  
 
 автор: AccsBegin   (12.11.2008 в 11:37)   личное сообщение
 
 

может проблема в том, что табл. ODBC связаны на SQL Server?

  Ответить  
 
 автор: osmor   (10.11.2008 в 15:31)   личное сообщение
 
 


Sub RequeryWFind(strFind As String)
'*********************************************************************
' Comments   :  Requery формы с востановлением положения курсора strFind -строка поиска
'  например "[КодФирмы]= 34"
'Пример вызова: RequeryWFind("[КодКлиента] = '" & me![КодКлиента] & "'") или RequeryWFind("[КодФирмы]= 34")
'********************************************************************    
Dim frmCurrent As Form
  Dim rstClone As dao.Recordset
  On Error GoTo RequeryWFind_ERR
  Set frmCurrent = Screen.ActiveForm
  Set rstClone = frmCurrent.RecordsetClone
  frmCurrent.Requery
  rstClone.FindFirst strFind
  frmCurrent.Bookmark = rstClone.Bookmark
  Set frmCurrent = Nothing
  Set rstClone = Nothing
RequeryWFind_EXIT:
  Exit Sub

RequeryWFind_ERR:
  Select Case Err.Number
      Case Else
          MsgBox Err.Description & "(" & Err.Number & ") in module RequeryWFind"
          Resume RequeryWFind_EXIT
  End Select

  Ответить  
 
 автор: AccsBegin   (10.11.2008 в 16:07)   личное сообщение
 
 

большое спасибо, буду разбираться :)

  Ответить  
 
 автор: Анатолий (Киев)   (10.11.2008 в 17:00)   личное сообщение
 
 

Если вы в frmZayavk только редактируете запись (не удаляете и не добавляте), то вместо Requery используйте Refresh. Значения в полях обновятся, а запись останется та же.

  Ответить  
 
 автор: AccsBegin   (11.11.2008 в 15:34)   личное сообщение
 
 

Спасибо за совет, но предполагается, что из списка форм будут добавляться и новые формы, а не только редактироваться имеющиеся

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList