Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с фокусами / 7 сообщений из 7, страница 1 из 1
04.06.2004, 09:24
    #32547822
madg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с фокусами
Гдето здесь случайно наткнулся на похожую тему, но где и как запамятовал.
Если кто знает, дайте ссылочку, плииз!
Ситуевина такая, привожу код закрытия справочника, после которого значение
из справочника переносится в поле Kategoria1 формы Reestr, с этим не сложно,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub btCloze_Click()
    On Error GoTo Street_Err
Me.Refresh
    Dim A1 As String
A1 = Me.id
DoCmd.Close
Forms![Reestr]![Kategoria1].Requery
Forms![Reestr]![Kategoria1] = A1
Forms![Reestr]![Kategoria1].SetFocus
    Exit Sub

Street_Err:
MsgBox "данные не введены"
DoCmd.Close
End Sub

А как данные внести не в Kategoria1 а в поле где находился фокус при вызове справочника.

Спасибо!
...
Рейтинг: 0 / 0
04.06.2004, 09:30
    #32547832
Boroda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с фокусами
примерно так:

Public Ctr As Control ' описываешь в каком нибудь модуле
'---------------
set Ctr =Screen.ActiveControl ' перед вызовом справочника:

' заменяешь свой код
with Ctr
.Requery
.value = A1
.SetFocus
end with
...
Рейтинг: 0 / 0
04.06.2004, 09:32
    #32547837
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с фокусами
ИМХО

1. При вызове справочника надо запомнить контрол в котором находился фокус
(Справочник вызывается кнопкой, значит следует получить фокус контрола у которого был фокус до кнопки = Screen.PreviousControl в обработчике нажатия кнопки)
2. Не забывать проверять, что данный контрол является редактируемым, полем (а не, к примеру, другой кнопкой) и т.п.
...
Рейтинг: 0 / 0
04.06.2004, 10:20
    #32547935
madg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с фокусами
Коллективный разум сильная вещь!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Sub btCloze_Click()
    On Error GoTo Street_Err
Me.Refresh
    Dim A1 As String
A1 = Me.id
DoCmd.Close
With Ctr
.Requery
.Value = A1
.SetFocus
End With
Exit Sub

Street_Err:
MsgBox "Вы отказались от ввода данных"
DoCmd.Close
With Ctr
.Requery
.SetFocus
End With
End Sub

RE:paparome
> Не забывать проверять, что данный контрол является редактируемым, полем
Я и не знал, что такое вообще возможно!
И как.....?
...
Рейтинг: 0 / 0
04.06.2004, 11:35
    #32548182
Boroda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с фокусами
ctr.enabled= true
ctr.locked=false
...
Рейтинг: 0 / 0
04.06.2004, 12:10
    #32548274
madg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с фокусами
Сам от себя такого не ожидал!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Private Sub K66_Click()
On Error GoTo Data_Err
Set Ctr = Screen.PreviousControl
    If Ctr.Enabled = True Then
        If Ctr.Locked = False Then
Set Ctr = Screen.PreviousControl
Me.Refresh
DoCmd.OpenForm "Kategoria", acNormal, "", "", acAdd, acNormal
Dim ctlCurrentControl As Control
Dim strControlName As String
Set ctlCurrentControl = Screen.ActiveControl
strControlName = ctlCurrentControl.Name
Else
MsgBox "Не выбрано поле Категория"
GoTo Data_Err
End If
Else
MsgBox "Не выбрано поле Категория"
GoTo Data_Err
End If
Exit Sub
Data_Err:
    MsgBox "Ошибка ввода данных"
    Me.Kategoria1.SetFocus
End Sub

Может можно как нить проще?

PS
Всегда хочется что нибуть лучше!
...
Рейтинг: 0 / 0
04.06.2004, 12:30
    #32548330
madg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с фокусами
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub K66_Click()
On Error GoTo Data_Err
Set Ctr = Screen.PreviousControl
    If Ctr.Enabled = True Then
    If Ctr.Locked = False Then
Me.Refresh
DoCmd.OpenForm "Kategoria", acNormal, "", "", acAdd, acNormal
Dim ctlCurrentControl As Control
Dim strControlName As String
Set ctlCurrentControl = Screen.ActiveControl
strControlName = ctlCurrentControl.Name
End If
End If
Exit Sub
Data_Err:
    MsgBox "Ошибка ввода данных"
    Me.Kategoria1.SetFocus
End Sub

Если отключить обработчик ошибки, на оибочные значения перехода по IF нет,
выкидывает в дебуггер.
Ну не хочет, как хочет.
А жаль!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с фокусами / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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