Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Как осуществить проход по записям ленточной формы?  [new]
drafty
Member

Откуда: Москва
Сообщений: 542
Имеется ленточная форма, источник данных задаётся посредством простого запроса на выборку из одной таблицы,т.е. Me.Recordsource="Select ..."
Каким образом можно "пробежаться" программно по записям формы(а не таблицы/запроса) и получить значение того или иного поля формы,или нет например сделать неактивным элемент 3-ей и 5-ой записей ленточной формы,такое возможно?
27 дек 19, 13:20    [22050059]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 446
drafty
Каким образом можно "пробежаться" программно по записям формы(а не таблицы/запроса) и получить значение того или иного поля формы

With Me.RecordsetClone
  If .RecordCount > 0 Then .MoveFirst
  Do Until .EOF
Debug.Print ![ИмяПоля]
    .MoveNext
  Loop
End With

У формы есть св-во
drafty
сделать неактивным элемент 3-ей и 5-ой записей ленточной формы,такое возможно?
Чем отличаются эти записи от других? Если наложить фильтр или сортировку, то другие записи станут 3-ей и 5-ой. И еще, "сделать неактивным элемент", когда запись текущая или вообще?
27 дек 19, 14:27    [22050148]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
drafty
Member

Откуда: Москва
Сообщений: 542
Кривцов Анатолий
drafty
Каким образом можно "пробежаться" программно по записям формы(а не таблицы/запроса) и получить значение того или иного поля формы

With Me.RecordsetClone
  If .RecordCount > 0 Then .MoveFirst
  Do Until .EOF
Debug.Print ![ИмяПоля]
    .MoveNext
  Loop
End With

У формы есть св-во
drafty
сделать неактивным элемент 3-ей и 5-ой записей ленточной формы,такое возможно?
Чем отличаются эти записи от других? Если наложить фильтр или сортировку, то другие записи станут 3-ей и 5-ой. И еще, "сделать неактивным элемент", когда запись текущая или вообще?

Премного благодарен!👍
27 дек 19, 14:30    [22050154]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
drafty
Member

Откуда: Москва
Сообщений: 542
Кривцов Анатолий
drafty
Каким образом можно "пробежаться" программно по записям формы(а не таблицы/запроса) и получить значение того или иного поля формы

With Me.RecordsetClone
  If .RecordCount > 0 Then .MoveFirst
  Do Until .EOF
Debug.Print ![ИмяПоля]
    .MoveNext
  Loop
End With

У формы есть св-во
drafty
сделать неактивным элемент 3-ей и 5-ой записей ленточной формы,такое возможно?
Чем отличаются эти записи от других? Если наложить фильтр или сортировку, то другие записи станут 3-ей и 5-ой. И еще, "сделать неактивным элемент", когда запись текущая или вообще?

Когда запись не текущая,но присутствует на форме
27 дек 19, 15:36    [22050281]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 446
drafty
Когда запись не текущая,но присутствует на форме
Вы не ответили на вопрос "Чем отличаются эти записи от других?".
Если "сделать неактивным элемент" зависит от его значения или значений других полей записи, и этот элемент - поле или поле со списком, то решение - условное форматирование.
27 дек 19, 17:30    [22050407]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
drafty
Member

Откуда: Москва
Сообщений: 542
With Me.RecordsetClone
  If .RecordCount > 0 Then .MoveFirst
  Do Until .EOF
Debug.Print ![ИмяПоля]
    .MoveNext
  Loop
End With

Вчера применил этот метод,и столкнулся с тем,что Movenext не срабатывает,т.е. переход не осущесвляется,на печать выводится только первая строка формы,хотя количество проходов соответствует количеству строк ленточной формы.
Поменял RecordsetClone на Recordset - тогда заработало как надо

Сообщение было отредактировано: 13 фев 20, 08:09
13 фев 20, 08:08    [22078950]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4603
drafty
With Me.RecordsetClone
  If .RecordCount > 0 Then .MoveFirst
  Do Until .EOF
Debug.Print .Fields("ИмяПоля") ' ![ИмяПоля]
    .MoveNext
  Loop
End With
Вчера применил этот метод,и столкнулся с тем,что Movenext не срабатывает,т.е. переход не осущесвляется,на печать выводится только первая строка формы,хотя количество проходов соответствует количеству строк ленточной формы.
Поменял RecordsetClone на Recordset - тогда заработало как надо
пиши как надо
13 фев 20, 09:40    [22078987]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
drafty
Member

Откуда: Москва
Сообщений: 542
Панург,
А каким образом можно сделать тоже самое,только в отчете?
Смотрю https://docs.microsoft.com/ru-ru/office/vba/api/access.report.recordset и вообще ничего не вижу...
13 фев 20, 10:14    [22079010]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4603
drafty
А каким образом можно сделать тоже самое,только в отчете?
зачем тебе?

Сообщение было отредактировано: 13 фев 20, 11:06
13 фев 20, 11:07    [22079052]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
drafty
Member

Откуда: Москва
Сообщений: 542
Панург
drafty
А каким образом можно сделать тоже самое,только в отчете?
зачем тебе?

Например делать какие-либо метки на полях записей по определенному критерию содержимого строк отчета.Ну например изменить значения поля1 Отчета1 с значения "Текст" на значение "ТекстМетка" где поле2 Формы1 равно=1 (при условии,что у формы1 и отчета1 одинаковый рекордсоурс)...
13 фев 20, 11:28    [22079078]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
drafty
Member

Откуда: Москва
Сообщений: 542
drafty
Панург
пропущено...
зачем тебе?

Например делать какие-либо метки на полях записей по определенному критерию содержимого строк отчета.Ну например изменить значения поля1 Отчета1 с значения "Текст" на значение "ТекстМетка" где поле2 Формы1 равно=1 (при условии,что у формы1 и отчета1 одинаковый рекордсоурс)...

Условное форматирование не всчет...
13 фев 20, 11:29    [22079081]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4603
drafty, ближе к телу! (с)
13 фев 20, 12:02    [22079123]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
drafty
Member

Откуда: Москва
Сообщений: 542
Кривцов Анатолий
drafty
Когда запись не текущая,но присутствует на форме
Вы не ответили на вопрос "Чем отличаются эти записи от других?".
Если "сделать неактивным элемент" зависит от его значения или значений других полей записи, и этот элемент - поле или поле со списком, то решение - условное форматирование.

Да,только что проэкспериментировал -это решение...
13 фев 20, 12:05    [22079133]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 446
drafty
With Me.RecordsetClone
  If .RecordCount > 0 Then .MoveFirst
  Do Until .EOF
Debug.Print ![ИмяПоля]
    .MoveNext
  Loop
End With

Вчера применил этот метод,и столкнулся с тем,что Movenext не срабатывает,т.е. переход не осущесвляется,на печать выводится только первая строка формы,хотя количество проходов соответствует количеству строк ленточной формы.
Поменял RecordsetClone на Recordset - тогда заработало как надо
На то он и RecordsetClone, что перемещение по записям никак не отражается на форме. Что бы перейти в форме на найденную запись, нужно выполнить Me.Bookmark = Me.RecordsetClone.Bookmark (внутри With Me.RecordsetClone просто Me.Bookmark = .Bookmark).
Если перемещаться по Recordset , то этого не нужно, и записи на форме будут двигаться синхронно, что не есть гуд.

Панург
Debug.Print .Fields("ИмяПоля") ' ![ИмяПоля]
пиши как надо
Панург, аргументируйте, что .Fields("ИмяПоля") - как надо, а ![ИмяПоля] - как не надо. Понятно, что в .Fields(...) можно применить строковую переменную или номер поля в коллекции, но это не тот случай.
13 фев 20, 12:23    [22079149]     Ответить | Цитировать Сообщить модератору
 Re: Как осуществить проход по записям ленточной формы?  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4603
Кривцов Анатолий
Панург, аргументируйте, что .Fields("ИмяПоля") - как надо, а ![ИмяПоля] - как не надо.
Не в одном холиваре уже обсуждалась применимость точки и восклицательного знака при обращении к коллекциям. И все оставались при своём мнении. Но уже два десятка лет как было рекомендовано (рекомендации происходили из MS) всё же использовать точку. Восклицательный знак оставили лишь в запросах (построитель). Мне не охота перечислять все аргументы, сошлюсь пожалуй на книгу Гетца&Со "Разработка настольных приложений...".
13 фев 20, 15:38    [22079335]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить