С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/64: Рейтинг темы: голосов - 64, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25

Подскажите, как сделать так, чтоб при открытии Формы поля были пустыми

13.05.2015, 15:24. Показов 12769. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется Форма, поля в которой фильтруются в соответствии с выбранным значением в поле со списком. При открытии формы ячейка в поле со списком пустая, т.е. ничего еще не выбрано, но все поля в ней уже заполнены первой записью из таблицы. Как сделать так, чтоб при открытии Формы поля были пустыми?
Буду очень признателен за помощь! Спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2015, 15:24
Ответы с готовыми решениями:

Как сделать так чтоб поля были не по вертикали, а по горизонтале?
Как сделать так чтоб поля были не по вертикали а по горизонтале?

Как при открытии табличной формы показать всплывающую подсказку из выбранного поля?
Как при открытии табличной формы показать всплывающую подсказку из выбранного поля? Почему у меня не отображаются всплывающие подсказки в...

Как сделать так чтобы при открытии формы, автоматически нажалась кнопка на форме?
Всем привет. Народ, подскажите, как сделать так чтобы при открытии формы, автоматически активировалась кнопка на форме?

23
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.05.2015, 15:46
Решение зависит от задачи. Непример, если форма предназначена только для ввода данных, то можно задать в конструкторе формы (или программно при выполнении) свойству Ввод данных (DataEntry) = Да.

Если же форма без источника, то поля формы и так будут пустыми. Если конечно, для них не задано значение по умолчанию
1
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
13.05.2015, 15:53  [ТС]
mobile, Форма предназначена только для того, чтоб отображать записи в соответствии со значением введенным в поле со списком (фильтр).
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.05.2015, 15:58
Еще вариант с учетом:
Цитата Сообщение от Mitya69 Посмотреть сообщение
При открытии формы ячейка в поле со списком пустая, т.е. ничего еще не выбрано, но все поля в ней уже заполнены первой записью из таблицы.
Можно связать набор данных в форме с выбранным значением в поле со списком. В процедуре на событии После обновления (AfterUpdate) комбо, можно задать фильтр для набора данных формы. Типа такого
Visual Basic
1
Me.RecordSource="select * from Таблица where ПолеТаблицы=" & Me.МоеПолеСоСписком
А на событии Загрузка (Load) формы написать
Visual Basic
1
Me.RecordSource="select * from Таблица where 1=0" 'Заведомо ложное условие
0
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
13.05.2015, 16:49  [ТС]
mobile, Прости, не совсем понял Первый код вводить надо в условия для макроса "Применитьфильтр" в поле После обновления в событиях Формы или поля со списком?
PureBasic
1
Me.RecordSource="select * from Таблица where ПолеТаблицы=" & Me.МоеПолеСоСписком
- здесь указывается таблица откуда берется информация для формы? И поле таблицы то по которому идет фильтр в поле со списком?

Добавлено через 36 минут
mobile, Вот сделал как понял к Форме в событиях прописал:
Visual Basic
1
2
3
4
5
6
7
8
9
Option Compare Database
 
Private Sub Form_AfterUpdate()
Me.RecordSource = "select * from [Описание_площадей] were [Номер_площадки]" & Me.Выбор
End Sub
 
Private Sub Form_Load()
Me.RecordSource = "select * from [Описание_площадей] were 1=0" 'Заведомо ложное условие
End Sub
При открытии формы выскакивает сообщение 3131 "Ошибка синтаксиса в предложении FROM"
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.05.2015, 17:00
Лучший ответ Сообщение было отмечено Mitya69 как решение

Решение

Несколько ошибок:
- Нет в скл ключевого слова "were". Есть "where"
- не поставлен знак равенства между полем в скл и значением с формы
Если поля прописаны верно и [Номер площадки] числовой, то так
Visual Basic
1
2
3
4
5
6
7
Private Sub Form_AfterUpdate()
Me.RecordSource = "select * from [Описание_площадей] where [Номер_площадки]=" & Me.Выбор
End Sub
 
Private Sub Form_Load()
Me.RecordSource = "select * from [Описание_площадей] where 1=0" 'Заведомо ложное условие
End Sub
Если же [Номер_площадки] текстовое поле, то надо показать этот факт компилятору
Visual Basic
1
Me.RecordSource = "select * from [Описание_площадей] where [Номер_площадки]='" & Me.Выбор & "'"
1
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
14.05.2015, 14:03  [ТС]
mobile, Исправил. Теперь ошибка не выскакивает. При запуске формы поля все действительно пустые. НО они остаются пустыми даже когда в поле со списком выбираешь любое значение, по которому должен проходить фильтр и в полях должна отображаться инфа. Что не так?..

Добавлено через 20 часов 49 минут
mobile, м? В чем может быть проблема?
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
14.05.2015, 18:31
Mitya69, имеет смысл Вам выложить фрагмент БД с обозначенной проблемой. При этом точно указать какая форма, что и где надо нажимать, что ввести, чтобы получить представление о проблеме.
1
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
15.05.2015, 10:58  [ТС]
mobile, Вот прикрепил фрагмент БД (все данные вымышленные). Запускаем форму "Сводка". Сразу после запуска все поля уже заполнены записями, в то время как поле "Введите номер" еще пустое. Хотелось бы чтоб при запуске формы все поля были пустыми и заполнялись только после того как в поле со списком выбран тот или иной номер площади.
Вложения
Тип файла: rar Сводка.rar (23.0 Кб, 32 просмотров)
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.05.2015, 11:30
Mitya69, смотрите вложение. Вместо макроса использованы процедуры ВБА
Вложения
Тип файла: rar Сводка.rar (23.9 Кб, 70 просмотров)
1
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
15.05.2015, 13:28  [ТС]
mobile, Огромное спасибо! Работает как надо. А как быть если в форме присутствуют еще и запросы? Напримере вот этого варианта (он изменен), покажите пожалуйста.
Вложения
Тип файла: rar Сводка.rar (38.0 Кб, 15 просмотров)
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.05.2015, 15:34
Разница с предыдущей версией невелика, только в самом тексте запроса
Вложения
Тип файла: rar Сводка1.rar (28.4 Кб, 37 просмотров)
1
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
15.05.2015, 15:42  [ТС]
mobile, Отлично, Спасибо!!! Только вот сразу вопрос. Почему при запуске формы поля вообще не отображаются теперь? Они появляются заполненные только когда выберешь какое-то значение в списке. В первом варианте, что вы кидали, при запуске формы все поля есть на местах, просто они пустые - как надо. А в этом варианте при запуске формы полей нет, только поле со списком.
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.05.2015, 16:18
Цитата Сообщение от Mitya69 Посмотреть сообщение
Почему при запуске формы поля вообще не отображаются теперь?
Потому что запрос-источник формы необновляемый. А в первый раз был обновляемый.
1
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
15.05.2015, 19:03  [ТС]
mobile, А нельзя сделать все тоже самое, но так чтоб поля при запуске формы все же были (пустые)?

Добавлено через 2 часа 33 минуты
mobile, У меня тут БД гораздо больше, большое количество таблиц и полей. Я запутаюсь. Подскажите как сделать тогда так, что при запуске формы в списке с фильтром стояла цифра 1? Ну т.е. пускай все будет как в первоначальном варианте, т.е. при запуске формы все поля в ней заполнены для 1-ой записи, но чтоб поле со списком было не пустое, а чтоб показывало также цифру 1 при запуске.
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.05.2015, 19:56
В процедуре на событии загрузки формы (Form_Load) напишите перед строкой Me.RecordSource = s
Visual Basic
1
2
3
Me.Выбор=Me.Выбор.Itemdata(0)
Выбор_AfterUpdate
s = SQL
А строку s = SQL & " where 1=0" в этой же процедуре, удалите совсем
1
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
15.05.2015, 21:32  [ТС]
mobile, Еще раз спасибо! Я так и не разобрался с процедурой на событии загрузки формы (Form_Load).. У меня постоянно выскакивает ошибка оператора INNER JOIN. Уж не знаю что я делаю не так. все вроде по аналогии. просто у меня таблиц больше, а ошибка выскакивает((
Еще такрой вопрос. Возможно ли как-то ограничить возможный набор значений для поля со списком (фильтр)?? т.е. чтоб туда можно было вводить только значения от 1 до 6 (на примере той базы, что мы тут для примера используем). Просто если ввести например 7, то все поля исчезают. А хотелось бы чтоб поля не исчезали, а просто становились пустыми. У меня в базе поле со списком находится в Области данных формы, соответственно оно тоже исчезает.
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
16.05.2015, 01:02
Еще версия. Запрос-источник формы не пишется в тексте, а берется из Recordsource формы. И сохраняется в Tag формы, чтобы его можно было менять или дополнять. Так надежней. Публичная переменная или переменная уровня формы при ошибках погибают, а свойства формы, в том числе Tag, нет.

Чтобы не было пустой формы при вводе недопустимых значений в комбобокс номера, в афтерапдейте проверяется форма на "пустоту". Если рекордсет формы пуст, то юнионом вводится пустая строка и вся форма видна.
Можно было, конечно задать свойству комбо Ограничиться списком=Нет, но в этом случае будет выскакивать системное сообщение о невозможном значении. Кроме того, не исключено ведь, что спустя некоторое время будет больше номеров. Так что сегодняшнее решение может быть и неплохим.
Вложения
Тип файла: rar Сводка1.rar (29.0 Кб, 17 просмотров)
1
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
18.05.2015, 14:34  [ТС]
mobile, Спасибо! Пытаюсь перенести тоже самое на свою базу. Что-то не получается. При вводе несуществующего значения в поле со списком все поля по-прежнему исчезают.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Form_Load()
    Me.Выбор = Me.Выбор.ItemData(0)
    Me.Tag = Replace(Me.RecordSource, ";", "")
    Выбор_AfterUpdate
    Me.RecordSource = Me.Tag
End Sub
 
Private Sub Выбор_AfterUpdate()
    Dim s
    s = Me.Tag & " where [Описание_площадей].[Номер_площадки]=" & Me.Выбор
    Me.RecordSource = s
    If Me.Recordset.EOF And Me.Recordset.BOF Then
        s = s & " union all select top 1 null,null,null,null,null,null,null,null,null,null,null,null " _
        & " from msysobjects"
    End If
    Me.RecordSource = s
End Sub
Я так понимаю null,null,null,null,null,null,null,null, null,null,null,null - количество null равно количеству полей в форме? У меня в форме полей много, есть рисунок, а так же два поля в которых рассчитываются средние, эти два поля постоянны и не изменяются. И еще обязательно ли чтоб поле Выбор было в области заголовка? У меня оно в Области данных.

Добавлено через 2 часа 36 минут
mobile, Я вроде разобрался. Все получилось, как надо! Спасибо Вам огромное за терпение и помощь!
0
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 25
25.05.2015, 13:05  [ТС]
mobile, У меня тут опять возникла проблема. Нужна Ваша помощь. Вот прикрепил пример базы данных. Запускается главная форма, жмем на кнопку "Кнопка", попадаем в форму Площади, здесь в списке выбираем любые значения - все работает фильтруется, затем жмем кнопку "на главную и после чего при попытку закрыть базу всегда вылетают ошибки ( В чем может быть проблема??
Миниатюры
Подскажите, как сделать так, чтоб при открытии Формы поля были пустыми  
Вложения
Тип файла: rar База.rar (36.7 Кб, 7 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2015, 13:05
Помогаю со студенческими работами здесь

как в программе при открытии формы сделать так, чтобы сразу выводился текстовый файл в memo?
как в программе при открытии формы сделать так, чтобы сразу выводился текстовый файл в memo?

Как сделать чтоб рисовался не неоднородный граф, а однородный ? Т.е. чтоб были стрелочки)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids,...

Подскажите как сделать так чтоб в код проигрывателя вставить свой кликандер?
Подскажите как сделать так чтоб в код проигрывателя вставить свой кликандер? Код от плеера Летитбит <object...

Как сделать так чтобы страничка при увеличения разрешения не двигалась в разные стороны, и как сделать чтобы при открытии в опере и в других браузерах
все обьекты на странице не двигались в разные стороны???

Как сделать что бы в тесте не нажималась кнопка далее или выходило сообщение если поля формы (а их 4 )не были заполнены?
Здравствуйте уважаемые программисты!У меня к вам просьба можете мне написать,как сделать что бы в тесте написанном на php не нажималась...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru