|
|
|
| Помогите новичку, пожалуйста. Я из формы с перечнем заявок открываю форму заявки. Вношу данные или изменяю имеющиеся и на закрытие вызываю метод .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
Подскажите, как правильно поступить | |
|
| |
|
|
|
| После Requery использовать сохраненный bookmark бессмысленно.
Но у вас же есть код. Найдите его в RecordsetClone (FindFirst) и выполните Me.Bookmark = Me.RecordsetClone.Bookmark | |
|
| |
|
|
|
| пошел по Вашему совету через глобальную переменную 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 из самой заявки, затем, закрываю ее, активируется форма со списком заявок, в которой вышенаписанный код и ... не работает, не понимаю ПОЧЕМУ? | |
|
| |
|
|
|
| может проблема в том, что табл. ODBC связаны на SQL Server? | |
|
| |
|
|
|
|
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
|
| |
|
| |
|
|
|
| большое спасибо, буду разбираться :) | |
|
| |
|
|
|
| Если вы в frmZayavk только редактируете запись (не удаляете и не добавляте), то вместо Requery используйте Refresh. Значения в полях обновятся, а запись останется та же. | |
|
| |
|
|
|
| Спасибо за совет, но предполагается, что из списка форм будут добавляться и новые формы, а не только редактироваться имеющиеся | |
|
| |