Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
depp.88

Нужно сделать переключатель для подчиненной формы, но только по датам

28.11.2011, 17:35. Показов 2835. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят пожалуйста, помогите решить ещё одну проблему. Нужно сделать переключатель для подчиненной формы, но только по датам. Например чтобы выбирал записи за 2008, 2009, 2010 года и т.д. У меня конечно ничего не получилось.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2011, 17:35
Ответы с готовыми решениями:

Сделать запрос на выбор записей из подчиненной таблицы по датам
В базе несколько таблиц, многие связаны между собой. мне нужно вывести в DBGrid запрос где записи должны выводиться в соответствии со...

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

Фильтр по датам в подчиненной форме
Добрый вечер! Прошу помочь разобраться и подсказать, что я делаю не так! Имеется форма "Заявки", в ней используется набор...

14
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
29.11.2011, 00:07
1. Добавить год:
1.1. Расположите на форме "Выборка" поле с именем "ГодВыполнения".
1.2. Добавьте в подпрограмму SubFrm_Filtr() ещё одно условие:

If Not IsNull(ГодВыполнения) Then sw = sw + " And Year([Год выполнения])=" & ГодВыполнения

2. Интерфейс:
2.1. Замените все Ваши группы переключателей на поля со списком - так Вы съэкономите место на форме.
2.2. Уберите все значения "Все": незаполненное поле (или поле со списком) означает все варианты. При это нужно будет переделать проверку типа

If Me!Группа <> 0 Then

на

If Not IsNull(Группа) Then
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
29.11.2011, 07:34
Цитата Сообщение от Михайло Посмотреть сообщение
2.1. Замените все Ваши группы переключателей на поля со списком - так Вы съэкономите место на форме.
+1
Всегда, когда заходил в этот топик, хотел высказать такую же мысль, но каждый раз вспоминалась и останавливала известная сентенция: "Инициатива наказуема исполнением"
Цитата Сообщение от Михайло Посмотреть сообщение
2.2. Уберите все значения "Все": незаполненное поле (или поле со списком) означает все варианты.
-1
Считаю, что пользователю понятнее и легче выбирать из списка, чем очищать поле. Причем пустое поле можно трактовать, как фильтрацию записей, у которых соответствующее поле пусто.
0
depp.88
29.11.2011, 18:36
Ребят, я access'ом пользуюсь первый месяц. Попробовал код, не получилось. Посмотрите пожалуйста, подскажите подробнее.
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
30.11.2011, 00:41
1. Давайте потренируемся на кошках (попробуем что-то более лёгкое).
В прилагаемом файле - пример реализации зависимых полей со списком и фильтрация в подчинённой форме.
2. Изучение MS Access настоятельно рекомендую начинать с версии из состава MS Office 97 - только здесь руссифицирована справка.
0
depp.88
30.11.2011, 13:17
По примеру Вашей базы сделал фильтр такой же по датам. Все фильтруется, но при фильтре остальные поля подчиненной таблицы принимают значение #Имя?. Вот код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Function filtr()  
Dim s As String
 
  If Not IsNull(ДатаВыполнения) Then s = s + " AND Выражение1=" & ДатаВыполнения
  If Len(s) > 6 Then s = " WHERE " + Mid(s, 6)
  Me![подчиненная Форма перечень].Form.RecordSource = "SELECT Запрос1.* FROM Запрос1" + s
 
End Function
 
Private Sub ДатаВыполнения_AfterUpdate()
 
Dim s As String
 
  filtr
   
  If Not IsNull(ДатаВыполнения) Then s = "WHERE Выражение1=" & ДатаВыполнения
 
End Sub
Подскажите, что не так?

ссылка на базу данных: http://zalil.ru/32165074
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
30.11.2011, 22:33
1. Файлы в формате accdb (MS Access 2007 и выше) используют только начинающие. Из тех, кто может помочь, эти файлы почти никто не может открыть (по причине отсутствия желания работать в этих версиях)...
2. Появление значения "#Имя?" свидетельствует о том, что Вы заполнили свойство «Данные» (ControlSource) соответствующего элемента управления (типа "поле" или "поле со списком") таким именем поля таблицы/запроса, которое отсутствует среди имён полей источника записей формы (свойство «Источник записей» [RecordSource]).
Свойство «Источник записей» [RecordSource] формы можно заполнить как в конструкторе, так и менять программно. У Вас в конструкторе - однин SQL-запрос, а в программе присваивается другой...
3. В случае даты нужно писать так:

If Not IsNull(ДатаВыполнения) Then s = s + " AND Выражение1=#" & ДатаВыполнения & "#"
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
02.12.2011, 07:50
Цитата Сообщение от Михайло Посмотреть сообщение
3. В случае даты нужно писать так:

If Not IsNull(ДатаВыполнения) Then s = s + " AND Выражение1=#" & ДатаВыполнения & "#"
Кроме того, что датный литерал должен быть заключен в решетки, еще он должен быть представлен в американском формате (mm/dd/yyyy) с прямым слешем в качестве разделителя частей даты.

If Not IsNull(ДатаВыполнения) Then s = s + " AND Выражение1=#" & Format(ДатаВыполнения,"mm\/dd\/yyyy") & "#"
0
depp.88
02.12.2011, 13:54
Спасибо большое, все получилось. Но поля со списками получились независимыми. Помогите решить эту проблему. Как их связать? Вот мой код для этих полей:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Public Function SubFrm_Filtr()
Dim sw$
  sw = "SELECT T.*, T1.[ФИО отца], T1.[ФИО матери], T1.[Дата постановки], T1.[Дата снятия], T1.[Текущее положение] FROM [Законные представители] T1 " + _
  "LEFT JOIN Перечень T ON T1.Код = T.[Номер контакта] WHERE (1=1)"
  
  If Nz(Me!FIO2, "<Все>") <> "<Все>" Then sw = sw & " And [ФИО отца]='" & Me!FIO2 & "'"
  Me![подчиненная Форма перечень].Form.RecordSource = sw
  
   If Nz(Me!FIO3, "<Все>") <> "<Все>" Then sw = sw & " And [ФИО матери]='" & Me!FIO3 & "'"
  Me![подчиненная Форма перечень].Form.RecordSource = sw
  
  If Nz(Me!FIO, "<Все>") <> "<Все>" Then sw = sw & " And ФИО='" & Me!FIO & "'"
  Me![подчиненная Форма перечень].Form.RecordSource = sw
 
If Nz(Me!TP, "<Все>") <> "<Все>" Then sw = sw & " And [Текущее положение]='" & Me!TP & "'"
  Me![подчиненная Форма перечень].Form.RecordSource = sw
  
End Function
 
 
Private Function filtr()    'фильтрация в подчинённой форме
Dim s As String
 
  If Not IsNull(ДатаВыполнения1) Then s = s + " AND Выражение1=" & ДатаВыполнения1
  If Len(s) > 6 Then s = " WHERE " + Mid(s, 6)
  Me![подчиненная Форма перечень].Form.RecordSource = "SELECT Запрос1.* FROM Запрос1" + s
 
 
End Function
 
 
Private Sub ДатаВыполнения1_AfterUpdate()
Dim s As String
 
  filtr   'фильтрация в подчинённой форме
  
  'зависимые поля со списком:
 
  If Not IsNull(ДатаВыполнения1) Then s = s + " AND Выражение1=#" & Format(ДатаВыполнения1, "mm\/dd\/yyyy") & "#"
 
 
End Sub
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
02.12.2011, 19:04
Так сложно что-либо понять - выкладывайте базу (сохранив её в формате M SAccess 2000)...
Насколько помнится, обновления груп переключателей было завязано на SubFrm_Filtr(). А Вы после ввода значения в поле ДатаВыполнения1 применяете фильтр только по условию даты [вызывается filtr()]. А все остальные элементы управления не опрашиваете...
0
depp.88
03.12.2011, 14:45
Вы все правильно поняли, проблема именно в этом. Вот ссылка на базу http://zalil.ru/32187068
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
03.12.2011, 17:35
Таблица с годами не нужна.
http://zalil.ru/32188247
0
depp.88
03.12.2011, 17:38
Не получается скачать, ссылка Not found.
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
03.12.2011, 17:57
Выложил сюда.
А как пользоватся zalil.ru?
0
depp.88
04.12.2011, 22:39
Михайло, спасибо тебе большое, все идеально работает, спасибо!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2011, 22:39
Помогаю со студенческими работами здесь

сделать, чтобы программа, помещенная в автозапуск запускалась только по определенным датам, например 31.12.2013
А можно сделать, чтобы программа, помещенная в автозапуск запускалась только по определенным датам, например 31.12.2013???

Нужно сделать права доступа только для скрипта
Мне нужно чтоб мой скрипт мог записывать и читать из определеново файла. Если я тому файлу даю эти права (+rw) для others, так чтоб скрипт...

Нужно сделать спойлер для формы авторизации
Всем привет, делаю страничку, на ней ссылка запрятана под описание, юзаю тег href, а сразу после описания нужно сделать кнопочку (показать)...

Подсчет количества записей в подчиненной форме из другой подчиненной формы
Форумчане, всем привет. На форме 2 подчиненной формы. При переходе по одной отображаются данные другой. Сделал кнопку...

Сумма из подчиненной формы, отмена записей в подчиненной форме
Нужна сразу помощь по четырем пунктам, форма КвитанцияСкупкиОбмена надо: 1. Суммирование поля Сумма в подчиненной форме с занесением в...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru