powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / В ходе исключения записей и сортировки подчиненная форма не должна дергаться
25 сообщений из 28, страница 1 из 2
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041582
jakobs_himmel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые программеры!
Помогите, пожалуйста.

Задача такая: в подчиненной форме, сделанной на основе запроса, при снятии флажка запись исключается из запроса. Соответственно при AfterUpdate флажка к форме применяется Requery. Проблема в том, что форма дергается и переходит на первую запись, а нужно, чтобы она оставалась там же, где была исключена запись. Искал на форуме, все прочитал, не могу понять, как это сделать.

Нашел такой код, но как применить не знаю:

Private Sub PhoneCall_AfterUpdate()
Dim NM As String
Me.Dirty = False
NM = Me.Name
With Forms("Form General")![subInvitationRequest].Form
.Requery
With Forms("Form General")![subInvitationRequest].Form
.OrderBy = "CompanyName"
.OrderByOn = True
End With
.RecordsetClone.FindFirst "[Name]=" & NM
.Bookmark = .RecordsetClone.Bookmark
End With
End Sub

Выдает такую ошибку:

<Имя> не распознается ядром базы данных Microsoft Jet как допустимое имя поля или выражение. (Ошибка 3070)

В <Имя> подставляет Объект-источник данных подчиненной формы (то есть той самой, которую нужно обновить, чтобы она не дергалась). Помогите, пожалуйста.

subInvitationRequest - имя контейнера подчиненной формы
Name - поле - Фамилия


Заранее спасибо!
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041586
jakobs_himmel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще такой момент. Попробовал немного изменить код, если ставить апострофы,например, так:

.RecordsetClone.FindFirst '"[Name]="' & NM

Выдает другую ошибку:

Ошибочный аргумент. (Ошибка 3001)
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041587
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jakobs_himmelУважаемые программеры!
Помогите, пожалуйста.

Задача такая: в подчиненной форме, сделанной на основе запроса, при снятии флажка запись исключается из запроса. Соответственно при AfterUpdate флажка к форме применяется Requery. Проблема в том, что форма дергается и переходит на первую запись, а нужно, чтобы она оставалась там же, где была исключена запись. Искал на форуме, все прочитал, не могу понять, как это сделать.

Нашел такой код, но как применить не знаю:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub PhoneCall_AfterUpdate()
    Dim NM As String
    Me.Dirty = False
    NM = Me.Name
    With Forms("Form General")![subInvitationRequest].Form
        .Requery
        With Forms("Form General")![subInvitationRequest].Form
        .OrderBy = "CompanyName"
        .OrderByOn = True
        End With
        .RecordsetClone.FindFirst "[Name]=" & NM
        .Bookmark = .RecordsetClone.Bookmark
    End With
End Sub



Выдает такую ошибку:

<Имя> не распознается ядром базы данных Microsoft Jet как допустимое имя поля или выражение. (Ошибка 3070)

В <Имя> подставляет Объект-источник данных подчиненной формы (то есть той самой, которую нужно обновить, чтобы она не дергалась). Помогите, пожалуйста.

subInvitationRequest - имя контейнера подчиненной формы
Name - поле - Фамилия


Заранее спасибо!
зачем тут 2-а раза With Forms("Form General")![subInvitationRequest].Form ?
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041591
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jakobs_himmelИ еще такой момент. Попробовал немного изменить код, если ставить апострофы,например, так:
Код: vbnet
1.
.RecordsetClone.FindFirst '"[Name]="' & NM



Выдает другую ошибку:

Ошибочный аргумент. (Ошибка 3001)
нуу ещё бы - такая бредятина, как тебе компилятор ещё не матом ответил, только, странно ...

код офорляй так что б его увидеть можно было !!
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041599
jakobs_himmel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwerty, два раза не нужно, косяк вышел. Но ведь это вряд ли вызывает ошибку?

[/quot] зачем тут 2-а раза With Forms("Form General")![subInvitationRequest].Form ?[/quot]
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041607
jakobs_himmel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112, подскажите, пожалуйста, как именно?
Я - полный чайник, а базу делать нужно...
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041609
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jakobs_himmel,

Код: vbnet
1.
.RecordsetClone.FindFirst "[Name]='" & NM & "'"


http://www.sql.ru/faq/faq_topic.aspx?fid=157
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041725
jakobs_himmel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
С FAQ познакомился.
Теперь ошибок не выдает, но дергается все равно ((
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041834
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jakobs_himmel,

забудь ине обращай внимения, это пока тебе не по-зубам.
но если еть большое желание - штудируй форум тут выкладывались решения.
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38041842
jakobs_himmel With Forms("Form General")![subInvitationRequest].Form
.Requery
.OrderBy = "CompanyName"
.OrderByOn = True
.RecordsetClone.FindFirst "[Name]=" & NM
If Not .RecordsetClone.NoMatch Then .Bookmark = .RecordsetClone.Bookmark
End With
В вашем коде Requery лишний, т.к. выполнение сортировки и так делает перезапрос, а результат поиска всегда надо проверять.
На чем построена ваша форма? Если на запросе, и в нем указана сортировка по CompanyName, то, наоборот, нужно применить Requery, а сортировать не нужно. И в этом случае ваша проблема решается просто.
Вместо всего вашего кода выполните одну строчку:
Forms("Form General")![subInvitationRequest].Requery
Или (правильнее):
Me.Parent![subInvitationRequest].Requery

Заметьте, без .Form перед .Requery. Результат тот же, но визуально выделенная запись остается на месте (если их достаточно).
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38042119
jakobs_himmel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ), спасибо, буду пробовать!

Вадя, я бы с удовольствием оставил так, но тем, кто с этим работает, очень не нравится дергающаяся форма, и я их понимаю.


Надеюсь, получится )
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38044114
jakobs_himmel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий, извините, приходится Вас еще побеспокоить:

При работе такого кода:

Private Sub PhoneCall_AfterUpdate()
Me.Parent![subInvitationRequest].Requery
End Sub

выдает ошибку:

Error 2118 - Необходимо сохранить поле перед обновлением

Прочитал все, что нашел на форуме, об этой ошибке. Не могу понять, в чем дело.

Форма создана из запроса, а поле PhoneCall - флажок, после снятия которого необходимо обновить форму (снятием флажка убираются записи, которые в форме не нужны: то есть заново выполняется запрос, отбирающий из таблицы записи с флажком).

Помогите, пожалуйста.
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38044151
Private Sub PhoneCall_AfterUpdate()
Me.Dirty = False
Me.Parent![subInvitationRequest].Requery
End Sub
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38044548
AlexIv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jakobs_himmelне нравится дергающаяся форма
Вот так не дергается:
Forms!Форма!ПодчФорма.Form.Recordset.Requery
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38044568
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы форма не дергалась надо
0 запретить прорисовку формы
1 определить первую видимую строку
1а определиться на какую запись должен указывать указатель (на передыдущую перед удаляемой, или на последующую после удаляемой. оба варианта имеют право жить)
1б запомнить её
2 запомнить первую видимую запись
----удалить запись
3 обновить
4 найти запомненную строку (первую видимую)
5 перейти на неё
6 перейти на запись по п.1б
7 разрешить прорисовку
8 прорисовать

возможно произвести такое с помощюь скрола, но гемора будет не меньше +api
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045054
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадя0 запретить прорисовку формы
1 определить первую видимую строку
1а определиться на какую запись должен указывать указатель (на передыдущую перед удаляемой, или на последующую после удаляемой. оба варианта имеют право жить)
1б запомнить её
2 запомнить первую видимую запись
----удалить запись
3 обновить
4 найти запомненную строку (первую видимую)
5 перейти на неё
6 перейти на запись по п.1б
7 разрешить прорисовку
8 прорисовать
Извиняюсь за глупый вопрос: каким образом можно определить первую видимую строку?
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045146
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос не тупой
в этом и заключается одна из сложностей.
к сожалению я не помню как это делается, давно это делал.

может Анатолий ( Киев ) или Бенедикт помогут...
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045171
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вадяможет Анатолий ( Киев ) или Бенедикт помогут...
Спасибо за ответ. Будем надеяться на помощь указанных специалистов
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045207
Справку А97 русСвойство SelTop позволяет указать или определить строку (запись), являющуюся верхней строкой в выделенном блоке в таблице, запросе или в режиме таблицы, или выделенных записей в ленточной форме. Для указания или определения крайнего левого столбца (поля) в текущем выделенном блоке используют свойство SelLeft. Например, если в таблице «Клиенты» выделен прямоугольный диапазон ячеек, то первую строку и первый столбец в выделенном блоке в режиме таблицы можно определить с помощью свойств SelTop и SelLeft.

Значения

Свойство SelTop. Значение типа Long Integer от 1 до числа записей в режиме таблицы или в ленточной форме. Вызов этого свойства устанавливает или возвращает номер верхней строки в выделенном блоке или номер выделенной записи в ленточной форме.
Свойство SelLeft. Значение типа Long Integer от 1 до числа столбцов в таблице. Вызов этого свойства устанавливает или возвращает номер столбца слева в выделенном блоке.

Свойства SelTop и SelLeft недоступны в режиме конструктора. Данные свойства используются только в макросах и в программах Visual Basic.

Дополнительные сведения

При отсутствии выделения данные свойства принимают значения номеров строки и столбца ячейки, находящейся в фокусе.

В случае выделения в таблице одной или более записей (с использованием области выделения), изменение значения свойства SelLeft невозможно. В случае выделения одного или более столбцов (с использованием их заголовков), изменение значения свойства SelTop невозможно.

Вместе со свойствами SelHeight и SelWidth данные свойства позволяют указать или определить размеры выделенного блока. Свойства SelTop и SelLeft определяют положение верхнего левого угла выделенного блока. Координаты правого нижнего угла выделенного блока относительно его верхнего левого угла определяют свойства SelHeight и SelWidth. ЗЫ. Выделенное синим - исправленная мной погрешность перевода в оригинале.
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045286
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСвойство SelTop. Значение типа Long Integer от 1 до числа записей в режиме таблицы или в ленточной форме. Вызов этого свойства устанавливает или возвращает номер верхней строки в выделенном блоке или номер выделенной записи в ленточной форме.
Попробовал:
Код: vbnet
1.
2.
3.
Private Sub Form_Current()
MsgBox (Me.SelTop)
End Sub


Но возвращает именно номер строки, считая от самой первой, а не от верхнего края формы.
В таблице 10 записей, на форме умещается, например, только четыре.
Выделена 9 запись - выдается значение 10
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045292
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатка, читать:
Выделена 9 запись - выдается значение 9
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045468
ИВПВыделена 9 запись - выдается значение 9
Судя по вашей картинке в контейнере субформы вмещается 5 записей.
Код: vbnet
1.
2.
?9 mod 5
 4

9-я запись будет 4-й на экране, поэтому когда после Requery вы ее нашли и выделили, надо выполнить:
Код: vbnet
1.
2.
Me.Recordset.Move -3  
Me.Recordset.Move 3

После этого текущая запись опять 4-я на экране.
В более общем случае кол-во записей, вмещающихся на экране, можно определить как результат цеорчисленного деления высоты контейнера на высоту области данных.
В еще более общем случае можно с помощью API запомнить, а затем восстановить положение вертикального скрола, но это не всегда дает желаемый результат (если удалено или добавлено много записей).

Посмотрите эту статью .
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045473
jakobs_himmel, где вы пропали?
примерPrivate Sub PhoneCall_AfterUpdate()
Me.Dirty = False
Me.Parent![subInvitationRequest].Requery
End Sub Это помогло?
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045585
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев )!
Только что пришел из больнички (((((( Как только оклемаюсь, всё постараюсь проверить.
Спасибо огромное за быструю реакцию.
Спасибо за ссылку. Буду разбираться. По названию - похоже то самое.
...
Рейтинг: 0 / 0
В ходе исключения записей и сортировки подчиненная форма не должна дергаться
    #38045845
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё мелочь - не должно быть вычисляемых полей на такой форме...
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / В ходе исключения записей и сортировки подчиненная форма не должна дергаться
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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