С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 25.03.2016
Сообщений: 37
1

Не получается создать запрос с условием between, при использовании VBA

31.03.2016, 11:28. Показов 1251. Ответов 6

Author24 — интернет-сервис помощи студентам
Всем привет. Снова я нуб, и снова по делу. На этот раз прикладываю базу данных и пояснение.
У меня есть форма "Задачи_форма". В ней выбираю сотрудника, показывать ли цикличные дела, и диапазон дат от "Поле0" до "Поле2", по которому мне выдаст задачи.

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

В процедуре обработки событий, для нажатия по полю Да/Нет прописал следующее условие запроса для поля "Срок_задачи":

Visual Basic
1
2
3
4
5
6
7
Private Sub Код_день_месяца_Click() 'показывать записи с датой и без
    Поле36 = "Between #" & Me.Поле0 & "# And #" & Me.Поле2 & "# Or Is Null"
End Sub
 
Private Sub Код_день_месяца_DblClick(Cancel As Integer) ' показывать только записи, где присутствует дата
    Поле36 = "Between #" & Me.Поле0 & "# And #" & Me.Поле2 & "#"
End Sub
А в запросе, в условие отбора, указал "[Формы]![Задачи_форма]![Поле36]". Но он ругается, и выдает следующую ошибку:

Выражение неверно введено или является сложным для расчета. Например, числовое выражение может содержать слишком много сложных элементов. Попробуйте упростить выражение, определив его части как переменные.
Если копирую условие из поля, в условие запроса (в ручную в смысле), то все работает. То бишь, условие правильно составлено.
Вложения
Тип файла: zip db1.zip (51.7 Кб, 6 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2016, 11:28
Ответы с готовыми решениями:

нужно создать запрос с условием
Здравствуйте помогите пожалуйста мне нужно создать запрос с условием "все кроме" Спасибо

Создать запрос с условием, которое вводит пользователь
Вот делаю лабораторную, такое задание 4. Перечислить поставщиков, поставляющих хотя бы одну...

При работе с условием if,then,else, не получается найти ошибку в коде
При нажатии на кнопку выполняется следующий код procedure TForm16.Button1Click(Sender: TObject);...

Глючит VBA при использовании в Outlook 2013
Всем привет. Реализовал скрипт на VBA, работающий по следующей схеме: - каждый день, один раз в...

6
2 / 2 / 0
Регистрация: 25.03.2016
Сообщений: 37
31.03.2016, 12:38  [ТС] 2
Нашел решение! До гениального - просто! Просто об этом я не знал.
В VBA существующему запросу присваиваем SQL-запрос, и все:
Visual Basic
1
2
3
4
Private Sub Кнопка3_Click()
s = s & "SELECT Задачи.Код_задача, Задачи.Задача, Задачи.Текст_задачи, Задачи.Комментарий_исполнителя, Задачи.Срок_задачи, Задачи.Дата_завершения, Задачи.Код_приоритет, Задачи.Код_программа, Задачи.Код_статус_работ, Задачи.Код_тэг, Задачи.Код_день_месяца, Задачи.Код_день_недели, Задачи.День_месяца, Задачи.День_недели FROM Задачи WHERE (((Задачи.Срок_задачи) Between [формы]![Form1]![Поле0] And [Формы]![Form1]![Поле2] Or (Задачи.Срок_задачи) Is Null));"
CurrentDb.Querydefs("Просмотр_задач").SQL = s
End Sub
"Просмотр_задач" это и есть существующий запрос. На основе него и будет будущая форма. )
1
шапоклякистка 8-го дня
3680 / 2240 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
31.03.2016, 13:03 3
Daidred, поздравляю! Очень рада, что вы нешли ответ на свой вопрос. Хотя так и не поняла, в чем он состоял, даже после чтения ответа

Можете теперь по секрету рассказать, что должно было дать присвоение Полю36 текста "Between #что-то# and #что-то# Or Is Null"?
Цитата Сообщение от Daidred Посмотреть сообщение
Visual Basic
1
Поле36 = "Between #" & Me.Поле0 & "# And #" & Me.Поле2 & "# Or Is Null"
0
547 / 274 / 50
Регистрация: 03.04.2015
Сообщений: 926
31.03.2016, 14:16 4
Почему сразу в форму не засунуть запрос?
Visual Basic
1
Me.RecordSource = s
0
2 / 2 / 0
Регистрация: 25.03.2016
Сообщений: 37
31.03.2016, 14:56  [ТС] 5
В поле 36 записалось бы условие отбора: "Between "Дата1" and "Дата2" is null" для записей с цикличными задачами, и "Between "Дата1" and "Дата2"" для задач со сроком выполнения. И это условие подставилось бы в запрос. )
Получается, в условие отбора в запросе я написал бы конструкцию: "Формы!Задачи_форма!Поле36", и он подставил бы мне вычисленное условие.

Добавлено через 2 минуты
А тут нет особой разницы, кидать sql-запрос в форму, или в сам запрос. В Запрос даже лучше, потому что форма открывается после нажатия кнопки. В общем, уже раз 15-20 я переделывал, на основании найденного решения. )
0
шапоклякистка 8-го дня
3680 / 2240 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
31.03.2016, 15:22 6
Цитата Сообщение от Daidred Посмотреть сообщение
В поле 36 записалось бы условие отбора: "Between "Дата1" and "Дата2" is null" для записей с цикличными задачами, и "Between "Дата1" and "Дата2"" для задач со сроком выполнения. И это условие подставилось бы в запрос. )
В зпросе у вас получилось бы вот что:

SQL
1
WHERE Задачи.Срок_задачи="Between #Дата1# and #Дата2# Or Is Null"
т.е. поле типа ДатаВремя вы собирались сравнивать с текстовой строкой. У вас бы просто запрос ругался на несоответствие типов.
0
2 / 2 / 0
Регистрация: 25.03.2016
Сообщений: 37
31.03.2016, 16:15  [ТС] 7
Примерно так дело и обстояло, он и ругался на меня, мол, дурдом творю. Буду знать) Спасибо!
0
31.03.2016, 16:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2016, 16:15
Помогаю со студенческими работами здесь

Ошибка при использовании DLL, написанной на VBA
Добрый день Подскажите пожалуйста. Я пытаюсь вызвать метод класса Gatherer.RelSetAgeDay(5)...

Как создать запрос с условием выбора определенного столбца из таблицы
Существует таблица, названия столбцов : персонал,январь, февраль, ... декабрь. При формировании...

Не получается создать запрос
Доброго времени суток! С аксес познакомился совсем недавно, поскольку в институте начались лабы...

Не получается создать запрос
С помощью запросов "Приход-расход (запрос)" и "Движение инвентаря (запрос)" Рассчитать количество...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru