powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли перевести курсор по TabIndex-у?
9 сообщений из 9, страница 1 из 1
Можно ли перевести курсор по TabIndex-у?
    #32663348
toly_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В табличной форме после обновления числового поля для вычисления строки ВСЕГО запускается код, пробегающий по строкам этого же поля, при этом суммирует значения остальных строк и записывает сумму в строку ВСЕГО , после чего возвращяется на ту же строку, из которого был запущен код.
Проблема: курсор после обновления остается на той же ячейке, что несколько неудобно.
Нужно, чтобы курсор перешел на другое поле, например по TabIndex-у (следующий TabIndex после TabIndex-а данного поля) или как-то иначе.

Вопрос 2:
Как оптимальнее организовать в табличной форме:
1)строка ВСЕГО пользователь не заполняет (код строки -1)
2)после обновления остальных полей (код строк со 2 по 6) в поле ВСЕГО обновляется сумма остальных полей.
...
Рейтинг: 0 / 0
Можно ли перевести курсор по TabIndex-у?
    #32663356
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Control.SetFocus
...
Рейтинг: 0 / 0
Можно ли перевести курсор по TabIndex-у?
    #32663371
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос 2:
1. В табличной форме это не получится сделать.
Зато возможно в ленточной. Строку ВСЕГО помещаеш в заголовок формы и блокируеш возможность внесения изменений.
2. field.Requery
...
Рейтинг: 0 / 0
Можно ли перевести курсор по TabIndex-у?
    #32663400
toly_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vsevolod V Control.SetFocus
Но форма табличная! И там только три поля:
сode, name, data, курсор и так находится все время в поле data (первые две заблокированы), и нужно перемещаться по записям одного Control-а:
Код: plaintext
1.
2.
3.
4.
  1   Всего     5 
  2   Красные   2 
  3   Желтые    1 
  4   Синие     1 
Допустим пользователь в строке Желтые ввел поверх 1 число 2 и нажал Tab или стрелку Вниз.
В этот момент происходит событие обновление поля data и запускается код, где курсор пробегает по строкам 2-4 этого же поля, суммирует их значения, идет на строку 1, записывает туда полученную сумму (в данном случае-6) и возвращяется на строку желтые, после чего ... там и остается :(
А по логике пользователя он должен был переместиться на строку Синие, а если он обновит поле Красные и нажмет стрелку вниз, курсор должен оказаться на строке Желтые, ну и т.д.
Ну и Вопрос 2 остается на повестке.
...
Рейтинг: 0 / 0
Можно ли перевести курсор по TabIndex-у?
    #32663413
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как ты считаеш сумму (VBA или SQL), где ты ее отображаеш и покажи рекордсурс формы
...
Рейтинг: 0 / 0
Можно ли перевести курсор по TabIndex-у?
    #32663501
toly_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сумма считается так:
Код: 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.
26.
27.
28.
29.
30.
Private Sub Ctl12y_AfterUpdate()
    Dim rst As DAO.Recordset
    Dim lngSum As Long
    Dim bytI As Byte
    Dim strOldBookmark As String

    strOldBookmark = Me.Bookmark
    
    Set rst = Me.RecordsetClone
    rst.FindFirst "code = " &  2 
    If rst.NoMatch Then
          MsgBox "..."
    Else
          Me.Bookmark = rst.Bookmark
    End If
    
        bytI =  2 
        lngSum =  0 
        While bytI <  8 
               lngSum = lngSum + Nz(Screen.ActiveControl)
               DoCmd.GoToRecord , , acNext
               bytI = bytI +  1 
        Wend
        rst.Close
    
        DoCmd.GoToRecord , , acFirst
        Screen.ActiveControl.Value = lngSum
        
        Me.Bookmark = strOldBookmark
End Sub

Рекордсус:
Код: plaintext
SELECT id, name, code, total, [12y], [13y], [14y], [15y] FROM tbl_data;

Отображается сумма строк каждый в своем поле (сумма по полю [12y] в поле [12y]), только в первой строке (code=1).
Для уточнения: в режиме конструктора формы есть только область данных, в ней только 8 полей для: id, name, code, total, [12y], [13y], [14y], [15y], форма - табличная.

Обсуждая здесь проблему подумал, может после
Код: plaintext
strOldBookmark = Me.Bookmark
запомнить еще code (bytCode = Me!code), чтобы в конце процедуры написать вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Me.Bookmark = strOldBookmark

    rst.FindFirst "code = " & bytCode+ 1 
    If rst.NoMatch Then
          MsgBox "..."
    Else
          Me.Bookmark = rst.Bookmark
    End If
чтобы курсор перешел на нижнюю следующюю строку (ячейку)?
Но опять же возникают 1 момент: а если пользователь вместо стрелки Вниз нажал после обновления Tab, то нужно перейти на соседнюю правую ячейку(следующее поле - [13y] в дпанном случае, а если обновил там и нажал Tab, то далее на соседнюю [15y]. Есть еще другие мелкие моменты (если стоит на последней записи и хочет перейти вниз на пустую строку).
С учетом этого всего мне очень кажется, что весь вариант не хорош и нужно использовать ленточную форму (спасибо за подсказку), а табличная форма была бы хороша :(
...
Рейтинг: 0 / 0
Можно ли перевести курсор по TabIndex-у?
    #32663516
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, это не тот случай, когда нужно использовать рекордсеты.
Лучше так:
Запрос1:
Код: plaintext
SELECT "" as id, "" as name, "" as code, "" as total, sum([12y]) as 12y, sum([13y]) as 13y, sum([14y]) as 14y, sum([15y]) as 15y FROM tbl_data;
Запрос2:
Код: plaintext
SELECT id, name, code, total, [12y], [13y], [14y], [15y] FROM tbl_data;

Рекордсурс формы:
Код: plaintext
1.
2.
select * from Запрос1
UNION ALL
select * from Запрос2
...
Рейтинг: 0 / 0
Можно ли перевести курсор по TabIndex-у?
    #32663523
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин!
Не подойдет :(
В этом случае нельзя будет правку осуществлять.
--
Все таки нужна ленточная форма, либо делай главную форму, в которой будеш считать сумму, и подчиненную форму-таблицу
...
Рейтинг: 0 / 0
Можно ли перевести курсор по TabIndex-у?
    #32663546
toly_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vsevolod V ... либо делай главную форму, в которой будеш считать сумму, и подчиненную форму-таблицу

Этот вариант думаю решит эти переходы курсора, ведь тогда не нужно будет пробегать по строкам и ворачиваться в исходную, сумма будет считаться отдельным запросом,
Спасиб :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли перевести курсор по TabIndex-у?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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