Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/33: Рейтинг темы: голосов - 33, средняя оценка - 4.61
 Аватар для WiLex
78 / 78 / 1
Регистрация: 22.08.2010
Сообщений: 212

Открыть форму на выбраной записи не применяя фильтры

01.05.2011, 17:03. Показов 6572. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть 2 формы (Форма1 и Форма2)
нужно вызвать из формы1 форму2 на выбранной записи, но не применяя к ней фильтров
я делаю так:
Visual Basic
1
2
3
Private Sub txtBoxИндекс_Click()
        DoCmd.OpenForm "Форма2", acNormal, "", "[Индекс]=[Forms]![Внедренный0]![подФорма1].[Form]![txtBoxИндекс]", , acNormal
End Sub
это приводит к желаемому результату открытия, но применяет фильтр, т.е. навигация по остальным записям уже невозможна, а в Форме2 есть список для навигации и он приводит к ошибке "Record not found" как от этого избавиться?
конечно как вариант можно дописать на событие клик по списку такую строку
Visual Basic
1
    DoCmd.RunCommand acCmdRemoveAllFilters
но в этом случае необходимо дописывать проверку условия применяются ли фильтры в момент клика по форме

мне кажется, что все же должен быть способ открыть форму без таких сложностей!

Добавлено через 30 минут
пока решил вопрос так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub lstBoxSel_AfterUpdate()
    
    If Me.FilterOn = True Then DoCmd.RunCommand acCmdRemoveAllFilters
    
    Dim rst As Recordset
    Dim strSearchName As String
 
    Set rst = Me.RecordsetClone
    strSearchName = lstBoxSel
    rst.FindFirst "Ключ = " & strSearchName
        If rst.NoMatch Then
            MsgBox "Record not found"
        Else
            Me.Bookmark = rst.Bookmark
        End If
    rst.Close
End Sub
добавил проверку условия применения фильтра в форме2

но вопрос остается открытым!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.05.2011, 17:03
Ответы с готовыми решениями:

Узнать номер записи в DataTable по выбраной записи в DataGridView
Начнем по порядку: есть главная форма, на ней грид заполненный из датасета через биндинг Есть вторая форма из которой производится...

Открыть форму на заданной записи
Добрый день, форумчане! Решил изменить форму в БД-ЗаказыКонтрагентов. Нужно, чтобы две другие формы,вызываемые на форме...

Открыть форму на определенной записи
Уважаемые форумчане, помогите справиться с проблемой. Есть главная форма, на которой висит подчинненная - из нее нужно открывать другую...

7
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
02.05.2011, 00:20
не очень понятно, зачем фильтр накладывать, а потом с этим бороться?
файла примера нет, поэтому выкладываю свой.
все сделано почти как у вас, открывается форма и курсор устанавливается на нужную запись.
код формы1
Visual Basic
1
2
3
Private Sub Кнопка5_Click()
    DoCmd.OpenForm "Форма2", acFormDS, , , , , Me![Код]
End Sub
код формы2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form_Load()
    Dim rst As Recordset
    Set rst = Me.RecordsetClone
    rst.FindFirst "Код = " & OpenArgs
        If rst.NoMatch Then
            MsgBox "Record not found"
        Else
            Me.Bookmark = rst.Bookmark
        End If
    rst.Close
End Sub

Не по теме:

если я правильно понял...

Вложения
Тип файла: zip db4.zip (14.4 Кб, 165 просмотров)
2
1 / 1 / 0
Регистрация: 30.07.2011
Сообщений: 65
08.12.2011, 00:11
А подскажите пожалуйста, как обойти вот этот код формы2
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form_Load()
    Dim rst As Recordset
    Set rst = Me.RecordsetClone
    rst.FindFirst "Код = " & OpenArgs
        If rst.NoMatch Then
            MsgBox "Record not found"
        Else
            Me.Bookmark = rst.Bookmark
        End If
    rst.Close
End Sub
если я открываю форму не по выбраной предварительно номеру записи.
В противном случае он ругается "Ошибка синтаксиса (пропущен оператор) в выражение."

Как можно это исправить! Надо чтобы запускалось в двух вариантах.
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
08.12.2011, 07:52
Лучший ответ Сообщение было отмечено как решение

Решение

можно "спрятать" операцию в If
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Form_Load()
If Not OpenArgs Then
    Dim rst As Recordset
    Set rst = Me.RecordsetClone
    rst.FindFirst "Êîä = " & OpenArgs
        If rst.NoMatch Then
            MsgBox "Record not found"
        Else
            Me.Bookmark = rst.Bookmark
        End If
    rst.Close
End If
End Sub
Добавлено через 6 минут
или вынести код из события Load
Visual Basic
1
2
3
4
5
'код формы1
Private Sub Êíîïêà5_Click()
    DoCmd.OpenForm "Ôîðìà2", acFormDS, , , , , Me![Êîä]
    Form_Ôîðìà2.MySub
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'код формы2
Sub MySub()
 
    Dim rst As Recordset
    Set rst = Me.RecordsetClone
    rst.FindFirst "Êîä = " & OpenArgs
        If rst.NoMatch Then
            MsgBox "Record not found"
        Else
            Me.Bookmark = rst.Bookmark
        End If
    rst.Close
 
End Sub
Добавлено через 7 часов 24 минуты
Цитата Сообщение от ironegg Посмотреть сообщение
можно "спрятать" операцию в If
Visual Basic
1
2
3
Private Sub Form_Load()
If Not OpenArgs Then
'...
я тут подумал... при таком условии будет некорректно обрабатываться значение OpenArgs = False
лучше так
Visual Basic
1
If OpenArgs <> Null Then
3
1 / 1 / 0
Регистрация: 30.07.2011
Сообщений: 65
08.12.2011, 14:23
Спасибо, помогло!
0
 Аватар для ironegg
1905 / 782 / 31
Регистрация: 11.02.2010
Сообщений: 1,567
25.12.2011, 10:42
вот такой код для формы2 работает столь же успешно без клонирования рекордсета.
Visual Basic
1
2
3
4
Private Sub Form_Load()
    Recordset.FindFirst "Êîä = " & OpenArgs
    If Recordset.NoMatch Then MsgBox "Record not found"
End Sub
хотя, мастер форм создает именно код похожий на первый вариант(с RecordsetClone).
возможно, только лишь из за того, что такой код более универсален для дополнения... или есть "подводные камни" о которых я не знаю?
0
0 / 0 / 0
Регистрация: 12.05.2016
Сообщений: 15
30.11.2018, 14:10
А скажите пожалуйста, как сделать, чтобы при данном коде форма открывалась в режиме формы, а не в режиме таблицы?
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
30.11.2018, 14:20
Цитата Сообщение от Родион_Волков Посмотреть сообщение
чтобы ... форма открывалась в режиме формы, а не в режиме таблицы?
Visual Basic
1
DoCmd.OpenForm "ИмяФормы", acNormal
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2018, 14:20
Помогаю со студенческими работами здесь

Открыть форму для редактирования записи
Добрый вечер, нужно открыть форму для редактирования текущей записи без возможности добавления новых записей. Исплользую код ...

Открыть форму на записи с возможностью навигации
Открыть форму на записи это просто ... DoCmd.OpenForm &quot;Employees&quot;, , ,&quot;LastName = 'King'&quot; Так у меня открывается простая форма. Но...

Открыть форму в режиме добавления записи
Доброе время суток Имею проблему как перевести форму в режим записи? то есть симулировать нажатие кнопки со звездочкой????? ...

Отчёт по выбраной записи (FastReport)
Есть таблица записей, нужно сделать вывод отчёта по выбранной записи. Вот есть код: procedure TFKadru.BitBtn3Click(Sender:...

Открыть форму на редактирование записи с параметром (Forms)
Есть две формы, одна это список физ. лиц, другая это добавление и редактирование. По нажатию кнопки редактирования вызывается форма методом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru