powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Номер записи в форме работает, но медленно.
12 сообщений из 12, страница 1 из 1
Номер записи в форме работает, но медленно.
    #39838123
Игорь С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗВ (Здравствуйте все). Аксесс 2010, файл формата 2003.
Вывести в поле номер записи в форме с помощью функции в поле данных:

Код: vbnet
1.
2.
3.
4.
5.
6.
Private Function GetN(N) As Long 'N As Long) As Long

Me.RecordsetClone.FindFirst "[COD]=" & N
GetN = Me.RecordsetClone.AbsolutePosition + 1

End Function



работает медленно. (N-уникальный код записи в глобальной таблице.)
Нельзя ли предложить более быстрый алгоритм в форме или в соответствующем запросе?
Заранее благодарен.
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39838135
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь С,

Что мы знаем про каунтеры (aka счетчики)

Так-то не понятно в какой форме это будет использоваться... Есть ещё сво-во формы CurrentRecord
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39838155
Фотография Tarasios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь С, а можно уточнить вопрос? Что именно и как вы хотите получить от "Вывести в поле номер записи в форме"?
Вам нужно именно функцией это сделать, согласно задания, или просто получить номер записи?
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39838217
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Form_Current()
Dim mynum
mynum = my(Me)
End Sub

Function my(frm As Form)
my = frm.CurrentRecord
End Function

Private Sub Form_Current()
Me.ctl = Me.currentRecord
End Sub
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39838228
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39838264
Игорь С, у вас форма простая или ленточная/табличная?
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39838284
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь С...Вывести в поле номер записи в форме с помощью функции в поле данных:
Чё-то я совсем не понял ваш скрин.Событие Current происходит при переходах по записям. При открытии формы фокус в её первой записи. При переходах по записям CurrentRecord принимает значение = номеру текущей(активной,в которой курсор) записи в форме. Что не так? кстати эта циферка выводится в окошке между кнопками переходов на форме
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39838292
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot sdku]
Или так- с использованием функции в общем модуле и процедуры в модуле формы
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Form_Current()
Dim mynum
mynum = my(Me)
End Sub

Function my(frm As Form)
my = frm.CurrentRecord
End Function

Или так без функции-в модуле формы
Код: vbnet
1.
2.
3.
Private Sub Form_Current()
Me.ctl = Me.currentRecord
End Sub

Или так в модуле формы
Код: vbnet
1.
2.
3.
4.
Private Sub Form_Current()
Dim a
a = Me.currentRecord
End Sub
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39838365
sdku Или так- с использованием функции в общем модуле и процедуры в модуле формы
Код: vbnet
1.
2.
3.
4.
Private Sub Form_Current()
Dim mynum
mynum = my(Me)
End Sub

Переменная mynum объявлена в этой процедуре и нигде не используется. Смысл?
sdku Или так в модуле формы
Код: vbnet
1.
2.
3.
4.
Private Sub Form_Current()
Dim a
a = Me.currentRecord
End Sub

Аналогично...
sdku Или так без функции-в модуле формы
Код: vbnet
1.
2.
3.
Private Sub Form_Current()
Me.ctl = Me.currentRecord
End Sub

Это сработает только в простой форме.

ТС не отвечает, но я уверен, что у него ленточная/табличная форма. Там можно попробовать такой вариант:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Function GetN(N)
 If Not IsNull(N) Then
  With Me.RecordsetClone
     .Bookmark = Me.Bookmark
     GetN = .AbsolutePosition + 1
  End With
 End If
End Function

Функция пишется в модуле формы, а в поле указывается так: =GetN([Имя уникального поля])+0. Без +0 выравнивание будет по левому краю.
Такой вариант должен быть быстрее варианта с поиском.

ЗЫ. Считаю, что нумерация в форме (а особенно в запросе) - архитектурное излишество.
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39838383
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолийsdku Или так- с использованием функции в общем модуле и процедуры в модуле формы
Код: vbnet
1.
2.
3.
4.
Private Sub Form_Current()
Dim mynum
mynum = my(Me)
End Sub

Переменная mynum объявлена в этой процедуре и нигде не используется. Смысл?Так виднее?
Кривцов АнатолийЭто сработает только в простой форме.
ТС не отвечает, но я уверен, что у него ленточная/табличная форма.
Сработает везде-не надо изобретать велосипед...
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39841730
Игорь С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tarasios,

Нужно получить номер записи в ленточной форме
...
Рейтинг: 0 / 0
Номер записи в форме работает, но медленно.
    #39841732
Игорь С
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
Извините за задержку, сейчас попробую
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Номер записи в форме работает, но медленно.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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