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

Вопрос 2:
Как оптимальнее организовать в табличной форме:
1)строка ВСЕГО пользователь не заполняет (код строки -1)
2)после обновления остальных полей (код строк со 2 по 6) в поле ВСЕГО обновляется сумма остальных полей.
...
Рейтинг: 0 / 0
24.08.2004, 16:02:02
    #32663356
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли перевести курсор по TabIndex-у?
Control.SetFocus
...
Рейтинг: 0 / 0
24.08.2004, 16:07:16
    #32663371
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли перевести курсор по TabIndex-у?
Вопрос 2:
1. В табличной форме это не получится сделать.
Зато возможно в ленточной. Строку ВСЕГО помещаеш в заголовок формы и блокируеш возможность внесения изменений.
2. field.Requery
...
Рейтинг: 0 / 0
24.08.2004, 16:22:50
    #32663400
toly_m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли перевести курсор по TabIndex-у?
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
24.08.2004, 16:28:13
    #32663413
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли перевести курсор по TabIndex-у?
Как ты считаеш сумму (VBA или SQL), где ты ее отображаеш и покажи рекордсурс формы
...
Рейтинг: 0 / 0
24.08.2004, 16:59:47
    #32663501
toly_m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли перевести курсор по TabIndex-у?
Сумма считается так:
Код: 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
24.08.2004, 17:06:39
    #32663516
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли перевести курсор по TabIndex-у?
Во-первых, это не тот случай, когда нужно использовать рекордсеты.
Лучше так:
Запрос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
24.08.2004, 17:09:05
    #32663523
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли перевести курсор по TabIndex-у?
Блин!
Не подойдет :(
В этом случае нельзя будет правку осуществлять.
--
Все таки нужна ленточная форма, либо делай главную форму, в которой будеш считать сумму, и подчиненную форму-таблицу
...
Рейтинг: 0 / 0
24.08.2004, 17:20:25
    #32663546
toly_m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли перевести курсор по TabIndex-у?
Vsevolod V ... либо делай главную форму, в которой будеш считать сумму, и подчиненную форму-таблицу

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


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